From: S.Çağlar Onur Date: Thu, 11 Mar 2010 01:36:32 +0000 (+0000) Subject: Broadcom NetXtremeII 10Gb support X-Git-Tag: linux-2.6-22-45~4 X-Git-Url: http://git.onelab.eu/?p=linux-2.6.git;a=commitdiff_plain;h=616f2f44872f0780fc80213c99223cdcd553b6bd Broadcom NetXtremeII 10Gb support --- diff --git a/kernel-2.6.spec b/kernel-2.6.spec index 882f69c03..140f06cfb 100644 --- a/kernel-2.6.spec +++ b/kernel-2.6.spec @@ -157,6 +157,7 @@ Patch000: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-%{rpmversion}.bz2 Patch010: linux-2.6-010-e1000e.patch Patch015: linux-2.6-015-igb.patch +Patch016: linux-2.6-016-bnx2x.patch Patch020: linux-2.6-020-build-id.patch Patch030: linux-2.6-030-netns.patch Patch040: linux-2.6-040-i_mutex-check.patch @@ -390,6 +391,7 @@ KERNEL_PREVIOUS=vanilla %ApplyPatch 10 %ApplyPatch 15 +%ApplyPatch 16 %ApplyPatch 20 # NetNS patch for VINI diff --git a/linux-2.6-016-bnx2x.patch b/linux-2.6-016-bnx2x.patch new file mode 100644 index 000000000..8ea158bde --- /dev/null +++ b/linux-2.6-016-bnx2x.patch @@ -0,0 +1,67574 @@ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_compat.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_compat.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_compat.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_compat.h 2010-03-10 20:22:55.202896096 -0500 +@@ -0,0 +1,570 @@ ++#ifndef __BNX2X_COMPAT_H__ ++#define __BNX2X_COMPAT_H__ ++ ++#ifndef __VMKLNX__ ++#define VMWARE_ESX_DDK_VERSION 0 ++#endif ++ ++#if (LINUX_VERSION_CODE < 0x02061e) ++#define skb_record_rx_queue(skb, index) ++#endif ++ ++#if (LINUX_VERSION_CODE < 0x020618) && (VMWARE_ESX_DDK_VERSION < 40000) ++#define napi_complete(napi) netif_rx_complete(dev) ++#define napi_schedule(napi) netif_rx_schedule(bp->dev) ++#endif ++ ++#ifndef BNX2X_MULTI_QUEUE ++#define netif_tx_wake_all_queues netif_wake_queue ++#define netif_tx_start_all_queues netif_start_queue ++#endif ++ ++#if (LINUX_VERSION_CODE < 0x020618) ++#define skb_copy_from_linear_data_offset(skb, pad, new_skb_data, len) \ ++ memcpy(new_skb_data, skb->data + pad, len) ++#endif ++ ++#if (LINUX_VERSION_CODE < 0x020616) ++/* skb_buff accessors */ ++#define ip_hdr(skb) (skb)->nh.iph ++#define ipv6_hdr(skb) (skb)->nh.ipv6h ++#define ip_hdrlen(skb) (ip_hdr(skb)->ihl * 4) ++#define tcp_hdr(skb) (skb)->h.th ++#define tcp_hdrlen(skb) (tcp_hdr(skb)->doff * 4) ++#define udp_hdr(skb) (skb)->h.uh ++#define skb_mac_header(skb) ((skb)->mac.raw) ++#define skb_network_header(skb) ((skb)->nh.raw) ++#define skb_transport_header(skb) ((skb)->h.raw) ++#endif ++ ++ ++#ifndef CHECKSUM_PARTIAL ++#define CHECKSUM_PARTIAL CHECKSUM_HW ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020600) ++#define might_sleep() ++ ++#define num_online_cpus() 1 ++ ++#define dev_info(dev, format, args...) \ ++ printk(KERN_INFO "bnx2x: " format, ##args) ++ ++#define dev_err(dev, format, args...) \ ++ printk(KERN_ERR "bnx2x: " format, ##args) ++ ++static inline int dma_mapping_error(dma_addr_t mapping) ++{ ++ return 0; ++} ++ ++#define synchronize_irq(X) synchronize_irq() ++#define flush_scheduled_work() ++#endif ++ ++ ++#ifndef SET_MODULE_OWNER ++#define SET_MODULE_OWNER(dev) ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020604) ++#define MODULE_VERSION(version) ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020605) ++static inline void pci_dma_sync_single_for_device(struct pci_dev *dev, ++ dma_addr_t map, size_t size, ++ int dir) ++{ ++} ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020547) ++#define pci_set_consistent_dma_mask(X, Y) (0) ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020607) ++#define msleep(x) \ ++ do { \ ++ current->state = TASK_UNINTERRUPTIBLE; \ ++ schedule_timeout((HZ * (x)) / 1000); \ ++ } while (0) ++ ++#ifndef ADVERTISE_1000XPAUSE ++static inline struct mii_ioctl_data *if_mii(struct ifreq *rq) ++{ ++ return (struct mii_ioctl_data *)&rq->ifr_ifru; ++} ++#endif ++ ++#define pci_enable_msix(X, Y, Z) (-1) ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020609) ++#define msleep_interruptible(x) \ ++ do{ \ ++ current->state = TASK_INTERRUPTIBLE; \ ++ schedule_timeout((HZ * (x)) / 1000); \ ++ } while (0) ++ ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x02060b) ++#define pm_message_t u32 ++#define pci_power_t u32 ++#define PCI_D0 0 ++#define PCI_D3hot 3 ++#define pci_choose_state(pdev, state) state ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x02060e) ++#define touch_softlockup_watchdog() ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020612) ++static inline struct sk_buff *netdev_alloc_skb(struct net_device *dev, ++ unsigned int length) ++{ ++ struct sk_buff *skb = dev_alloc_skb(length); ++ ++ if (skb) ++ skb->dev = dev; ++ return skb; ++} ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020614) ++#define PCI_VDEVICE(vendor, device) \ ++ PCI_VENDOR_ID_##vendor, (device), \ ++ PCI_ANY_ID, PCI_ANY_ID, 0, 0 ++#endif ++ ++#if (LINUX_VERSION_CODE < 0x020615) ++#define vlan_group_set_device(vg, vlan_id, dev) vg->vlan_devices[vlan_id] = dev ++#endif ++ ++ ++#ifndef IRQ_RETVAL ++typedef void irqreturn_t; ++#define IRQ_HANDLED ++#define IRQ_NONE ++#endif ++ ++ ++#ifndef IRQF_SHARED ++#define IRQF_SHARED SA_SHIRQ ++#endif ++ ++ ++#ifndef NETIF_F_GSO ++static inline void netif_tx_lock(struct net_device *dev) ++{ ++ spin_lock(&dev->xmit_lock); ++ dev->xmit_lock_owner = smp_processor_id(); ++} ++ ++static inline void netif_tx_unlock(struct net_device *dev) ++{ ++ dev->xmit_lock_owner = -1; ++ spin_unlock(&dev->xmit_lock); ++} ++#endif ++ ++ ++#ifndef skb_shinfo ++#define skb_shinfo(SKB) ((struct skb_shared_info *)(skb_end_pointer(SKB))) ++#endif ++ ++ ++#ifdef NETIF_F_TSO ++#ifndef NETIF_F_GSO ++ ++static inline int skb_is_gso(const struct sk_buff *skb) ++{ ++ return skb_shinfo(skb)->tso_size; ++} ++ ++#define gso_size tso_size ++ ++#endif /* NETIF_F_GSO */ ++ ++#ifndef NETIF_F_GSO_SOFTWARE ++#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO) ++#endif ++ ++#endif /* NETIF_F_TSO */ ++ ++#ifndef NETIF_F_TSO_ECN ++#define NETIF_F_TSO_ECN 0 ++#endif ++ ++ ++#if !defined(mmiowb) ++#define mmiowb() ++#endif ++ ++#if !defined(__iomem) ++#define __iomem ++#endif ++ ++#ifndef noinline ++#define noinline ++#endif ++ ++#if !defined(INIT_WORK) ++#define INIT_WORK INIT_TQUEUE ++#define schedule_work schedule_task ++#define work_struct tq_struct ++#endif ++ ++#if !defined(HAVE_NETDEV_PRIV) && (LINUX_VERSION_CODE != 0x020603) && (LINUX_VERSION_CODE != 0x020604) && (LINUX_VERSION_CODE != 0x020605) ++#define netdev_priv(dev) (dev)->priv ++#endif ++ ++/* Missing defines */ ++#ifndef SPEED_2500 ++#define SPEED_2500 2500 ++#endif ++ ++#ifndef SUPPORTED_Pause ++#define SUPPORTED_Pause (1 << 13) ++#endif ++#ifndef SUPPORTED_Asym_Pause ++#define SUPPORTED_Asym_Pause (1 << 14) ++#endif ++ ++#ifndef ADVERTISED_Pause ++#define ADVERTISED_Pause (1 << 13) ++#endif ++ ++#ifndef ADVERTISED_Asym_Pause ++#define ADVERTISED_Asym_Pause (1 << 14) ++#endif ++ ++#ifndef NETDEV_TX_BUSY ++#define NETDEV_TX_BUSY 1 /* driver tx path was busy */ ++#endif ++ ++#ifndef NETDEV_TX_OK ++#define NETDEV_TX_OK 0 /* driver took care of packet */ ++#endif ++ ++#ifndef DMA_BIT_MASK ++#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) ++#endif ++ ++#ifndef PCI_CAP_ID_EXP ++#define PCI_CAP_ID_EXP 0x10 ++#endif ++ ++#ifndef PCI_EXP_DEVCTL ++#define PCI_EXP_DEVCTL 8 /* Device Control */ ++#endif ++ ++#ifndef PCI_EXP_DEVCTL_PAYLOAD ++#define PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ ++#endif ++ ++#ifndef PCI_EXP_DEVCTL_READRQ ++#define PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020618) ++ ++#ifndef NETIF_F_HW_CSUM ++#define NETIF_F_HW_CSUM 8 ++#endif ++ ++static inline int bnx2x_set_tx_hw_csum(struct net_device *dev, u32 data) ++{ ++ if (data) ++ dev->features |= NETIF_F_HW_CSUM; ++ else ++ dev->features &= ~NETIF_F_HW_CSUM; ++ return 0; ++} ++#endif ++ ++ ++/* If mutex is not available, use semaphore */ ++#ifndef __LINUX_MUTEX_H ++#define mutex semaphore ++#define mutex_lock(x) down(x) ++#define mutex_unlock(x) up(x) ++#define mutex_init(x) sema_init(x,1) ++#endif ++ ++ ++#ifndef KERN_CONT ++#define KERN_CONT "" ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x020619) ++#define le16_add_cpu(var, val) *var = cpu_to_le16(le16_to_cpup(var) + val) ++#define le32_add_cpu(var, val) *var = cpu_to_le32(le32_to_cpup(var) + val) ++#endif ++ ++ ++#if (LINUX_VERSION_CODE < 0x02061b) || defined(BNX2X_DRIVER_DISK) || defined(__VMKLNX__) ++ ++/* ++ * This is the CRC-32C table ++ * Generated with: ++ * width = 32 bits ++ * poly = 0x1EDC6F41 ++ * reflect input bytes = true ++ * reflect output bytes = true ++ */ ++ ++static u32 crc32c_table[256] = { ++ 0x00000000L, 0xF26B8303L, 0xE13B70F7L, 0x1350F3F4L, ++ 0xC79A971FL, 0x35F1141CL, 0x26A1E7E8L, 0xD4CA64EBL, ++ 0x8AD958CFL, 0x78B2DBCCL, 0x6BE22838L, 0x9989AB3BL, ++ 0x4D43CFD0L, 0xBF284CD3L, 0xAC78BF27L, 0x5E133C24L, ++ 0x105EC76FL, 0xE235446CL, 0xF165B798L, 0x030E349BL, ++ 0xD7C45070L, 0x25AFD373L, 0x36FF2087L, 0xC494A384L, ++ 0x9A879FA0L, 0x68EC1CA3L, 0x7BBCEF57L, 0x89D76C54L, ++ 0x5D1D08BFL, 0xAF768BBCL, 0xBC267848L, 0x4E4DFB4BL, ++ 0x20BD8EDEL, 0xD2D60DDDL, 0xC186FE29L, 0x33ED7D2AL, ++ 0xE72719C1L, 0x154C9AC2L, 0x061C6936L, 0xF477EA35L, ++ 0xAA64D611L, 0x580F5512L, 0x4B5FA6E6L, 0xB93425E5L, ++ 0x6DFE410EL, 0x9F95C20DL, 0x8CC531F9L, 0x7EAEB2FAL, ++ 0x30E349B1L, 0xC288CAB2L, 0xD1D83946L, 0x23B3BA45L, ++ 0xF779DEAEL, 0x05125DADL, 0x1642AE59L, 0xE4292D5AL, ++ 0xBA3A117EL, 0x4851927DL, 0x5B016189L, 0xA96AE28AL, ++ 0x7DA08661L, 0x8FCB0562L, 0x9C9BF696L, 0x6EF07595L, ++ 0x417B1DBCL, 0xB3109EBFL, 0xA0406D4BL, 0x522BEE48L, ++ 0x86E18AA3L, 0x748A09A0L, 0x67DAFA54L, 0x95B17957L, ++ 0xCBA24573L, 0x39C9C670L, 0x2A993584L, 0xD8F2B687L, ++ 0x0C38D26CL, 0xFE53516FL, 0xED03A29BL, 0x1F682198L, ++ 0x5125DAD3L, 0xA34E59D0L, 0xB01EAA24L, 0x42752927L, ++ 0x96BF4DCCL, 0x64D4CECFL, 0x77843D3BL, 0x85EFBE38L, ++ 0xDBFC821CL, 0x2997011FL, 0x3AC7F2EBL, 0xC8AC71E8L, ++ 0x1C661503L, 0xEE0D9600L, 0xFD5D65F4L, 0x0F36E6F7L, ++ 0x61C69362L, 0x93AD1061L, 0x80FDE395L, 0x72966096L, ++ 0xA65C047DL, 0x5437877EL, 0x4767748AL, 0xB50CF789L, ++ 0xEB1FCBADL, 0x197448AEL, 0x0A24BB5AL, 0xF84F3859L, ++ 0x2C855CB2L, 0xDEEEDFB1L, 0xCDBE2C45L, 0x3FD5AF46L, ++ 0x7198540DL, 0x83F3D70EL, 0x90A324FAL, 0x62C8A7F9L, ++ 0xB602C312L, 0x44694011L, 0x5739B3E5L, 0xA55230E6L, ++ 0xFB410CC2L, 0x092A8FC1L, 0x1A7A7C35L, 0xE811FF36L, ++ 0x3CDB9BDDL, 0xCEB018DEL, 0xDDE0EB2AL, 0x2F8B6829L, ++ 0x82F63B78L, 0x709DB87BL, 0x63CD4B8FL, 0x91A6C88CL, ++ 0x456CAC67L, 0xB7072F64L, 0xA457DC90L, 0x563C5F93L, ++ 0x082F63B7L, 0xFA44E0B4L, 0xE9141340L, 0x1B7F9043L, ++ 0xCFB5F4A8L, 0x3DDE77ABL, 0x2E8E845FL, 0xDCE5075CL, ++ 0x92A8FC17L, 0x60C37F14L, 0x73938CE0L, 0x81F80FE3L, ++ 0x55326B08L, 0xA759E80BL, 0xB4091BFFL, 0x466298FCL, ++ 0x1871A4D8L, 0xEA1A27DBL, 0xF94AD42FL, 0x0B21572CL, ++ 0xDFEB33C7L, 0x2D80B0C4L, 0x3ED04330L, 0xCCBBC033L, ++ 0xA24BB5A6L, 0x502036A5L, 0x4370C551L, 0xB11B4652L, ++ 0x65D122B9L, 0x97BAA1BAL, 0x84EA524EL, 0x7681D14DL, ++ 0x2892ED69L, 0xDAF96E6AL, 0xC9A99D9EL, 0x3BC21E9DL, ++ 0xEF087A76L, 0x1D63F975L, 0x0E330A81L, 0xFC588982L, ++ 0xB21572C9L, 0x407EF1CAL, 0x532E023EL, 0xA145813DL, ++ 0x758FE5D6L, 0x87E466D5L, 0x94B49521L, 0x66DF1622L, ++ 0x38CC2A06L, 0xCAA7A905L, 0xD9F75AF1L, 0x2B9CD9F2L, ++ 0xFF56BD19L, 0x0D3D3E1AL, 0x1E6DCDEEL, 0xEC064EEDL, ++ 0xC38D26C4L, 0x31E6A5C7L, 0x22B65633L, 0xD0DDD530L, ++ 0x0417B1DBL, 0xF67C32D8L, 0xE52CC12CL, 0x1747422FL, ++ 0x49547E0BL, 0xBB3FFD08L, 0xA86F0EFCL, 0x5A048DFFL, ++ 0x8ECEE914L, 0x7CA56A17L, 0x6FF599E3L, 0x9D9E1AE0L, ++ 0xD3D3E1ABL, 0x21B862A8L, 0x32E8915CL, 0xC083125FL, ++ 0x144976B4L, 0xE622F5B7L, 0xF5720643L, 0x07198540L, ++ 0x590AB964L, 0xAB613A67L, 0xB831C993L, 0x4A5A4A90L, ++ 0x9E902E7BL, 0x6CFBAD78L, 0x7FAB5E8CL, 0x8DC0DD8FL, ++ 0xE330A81AL, 0x115B2B19L, 0x020BD8EDL, 0xF0605BEEL, ++ 0x24AA3F05L, 0xD6C1BC06L, 0xC5914FF2L, 0x37FACCF1L, ++ 0x69E9F0D5L, 0x9B8273D6L, 0x88D28022L, 0x7AB90321L, ++ 0xAE7367CAL, 0x5C18E4C9L, 0x4F48173DL, 0xBD23943EL, ++ 0xF36E6F75L, 0x0105EC76L, 0x12551F82L, 0xE03E9C81L, ++ 0x34F4F86AL, 0xC69F7B69L, 0xD5CF889DL, 0x27A40B9EL, ++ 0x79B737BAL, 0x8BDCB4B9L, 0x988C474DL, 0x6AE7C44EL, ++ 0xBE2DA0A5L, 0x4C4623A6L, 0x5F16D052L, 0xAD7D5351L ++}; ++ ++/* ++ * Steps through buffer one byte at at time, calculates reflected ++ * crc using table. ++ */ ++ ++static inline u32 /*__attribute_pure__*/ ++crc32c_le(u32 seed, unsigned char const *data, size_t length) ++{ ++ __le32 crc = __cpu_to_le32(seed); ++ ++ while (length--) ++ crc = crc32c_table[(crc ^ *data++) & 0xFFL] ^ (crc >> 8); ++ ++ return __le32_to_cpu(crc); ++} ++#endif ++ ++/* Taken from drivers/net/mdio.c */ ++#if (LINUX_VERSION_CODE < 0x02061f) ++#include ++ ++/* MDIO Manageable Devices (MMDs). */ ++#define MDIO_MMD_AN 7 /* Auto-Negotiation */ ++ ++/* Generic MDIO registers. */ ++#define MDIO_AN_ADVERTISE 16 /* AN advertising (base page) */ ++#define MDIO_AN_LPA 19 /* AN LP abilities (base page) */ ++ ++/* Device present registers. */ ++#define MDIO_DEVS_PRESENT(devad) (1 << (devad)) ++#define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN) ++ ++/** ++ * struct mdio_if_info - Ethernet controller MDIO interface ++ * @prtad: PRTAD of the PHY (%MDIO_PRTAD_NONE if not present/unknown) ++ * @mmds: Mask of MMDs expected to be present in the PHY. This must be ++ * non-zero unless @prtad = %MDIO_PRTAD_NONE. ++ * @mode_support: MDIO modes supported. If %MDIO_SUPPORTS_C22 is set then ++ * MII register access will be passed through with @devad = ++ * %MDIO_DEVAD_NONE. If %MDIO_EMULATE_C22 is set then access to ++ * commonly used clause 22 registers will be translated into ++ * clause 45 registers. ++ * @dev: Net device structure ++ * @mdio_read: Register read function; returns value or negative error code ++ * @mdio_write: Register write function; returns 0 or negative error code ++ */ ++struct mdio_if_info { ++ int prtad; ++ u32 __bitwise mmds; ++ unsigned mode_support; ++ ++ struct net_device *dev; ++ int (*mdio_read)(struct net_device *dev, int prtad, int devad, ++ u16 addr); ++ int (*mdio_write)(struct net_device *dev, int prtad, int devad, ++ u16 addr, u16 val); ++}; ++ ++#define MDIO_PRTAD_NONE (-1) ++#define MDIO_DEVAD_NONE (-1) ++#define MDIO_EMULATE_C22 4 ++ ++/* Mapping between MDIO PRTAD/DEVAD and mii_ioctl_data::phy_id */ ++ ++#define MDIO_PHY_ID_C45 0x8000 ++#define MDIO_PHY_ID_PRTAD 0x03e0 ++#define MDIO_PHY_ID_DEVAD 0x001f ++#define MDIO_PHY_ID_C45_MASK \ ++ (MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD) ++ ++static inline int mdio_phy_id_is_c45(int phy_id) ++{ ++ return (phy_id & MDIO_PHY_ID_C45) && !(phy_id & ~MDIO_PHY_ID_C45_MASK); ++} ++ ++static inline __u16 mdio_phy_id_prtad(int phy_id) ++{ ++ return (phy_id & MDIO_PHY_ID_PRTAD) >> 5; ++} ++ ++static inline __u16 mdio_phy_id_devad(int phy_id) ++{ ++ return phy_id & MDIO_PHY_ID_DEVAD; ++} ++ ++#define MDIO_SUPPORTS_C22 1 ++#define MDIO_SUPPORTS_C45 2 ++ ++/** ++ * mdio_mii_ioctl - MII ioctl interface for MDIO (clause 22 or 45) PHYs ++ * @mdio: MDIO interface ++ * @mii_data: MII ioctl data structure ++ * @cmd: MII ioctl command ++ * ++ * Returns 0 on success, negative on error. ++ */ ++static inline int mdio_mii_ioctl(const struct mdio_if_info *mdio, ++ struct mii_ioctl_data *mii_data, int cmd) ++{ ++ int prtad, devad; ++ u16 addr = mii_data->reg_num; ++ ++ /* Validate/convert cmd to one of SIOC{G,S}MIIREG */ ++ switch (cmd) { ++ case SIOCGMIIPHY: ++ if (mdio->prtad == MDIO_PRTAD_NONE) ++ return -EOPNOTSUPP; ++ mii_data->phy_id = mdio->prtad; ++ cmd = SIOCGMIIREG; ++ break; ++ case SIOCGMIIREG: ++ break; ++ case SIOCSMIIREG: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EPERM; ++ break; ++ default: ++ return -EOPNOTSUPP; ++ } ++ ++ /* Validate/convert phy_id */ ++ if ((mdio->mode_support & MDIO_SUPPORTS_C45) && ++ mdio_phy_id_is_c45(mii_data->phy_id)) { ++ prtad = mdio_phy_id_prtad(mii_data->phy_id); ++ devad = mdio_phy_id_devad(mii_data->phy_id); ++ } else if ((mdio->mode_support & MDIO_SUPPORTS_C22) && ++ mii_data->phy_id < 0x20) { ++ prtad = mii_data->phy_id; ++ devad = MDIO_DEVAD_NONE; ++ addr &= 0x1f; ++ } else if ((mdio->mode_support & MDIO_EMULATE_C22) && ++ mdio->prtad != MDIO_PRTAD_NONE && ++ mii_data->phy_id == mdio->prtad) { ++ /* Remap commonly-used MII registers. */ ++ prtad = mdio->prtad; ++ switch (addr) { ++ case MII_BMCR: ++ case MII_BMSR: ++ case MII_PHYSID1: ++ case MII_PHYSID2: ++ devad = __ffs(mdio->mmds); ++ break; ++ case MII_ADVERTISE: ++ case MII_LPA: ++ if (!(mdio->mmds & MDIO_DEVS_AN)) ++ return -EINVAL; ++ devad = MDIO_MMD_AN; ++ if (addr == MII_ADVERTISE) ++ addr = MDIO_AN_ADVERTISE; ++ else ++ addr = MDIO_AN_LPA; ++ break; ++ default: ++ return -EINVAL; ++ } ++ } else { ++ return -EINVAL; ++ } ++ ++ if (cmd == SIOCGMIIREG) { ++ int rc = mdio->mdio_read(mdio->dev, prtad, devad, addr); ++ if (rc < 0) ++ return rc; ++ mii_data->val_out = rc; ++ return 0; ++ } else { ++ return mdio->mdio_write(mdio->dev, prtad, devad, addr, ++ mii_data->val_in); ++ } ++} ++#endif ++ ++#endif /* __BNX2X_COMPAT_H__ */ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_dump.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_dump.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_dump.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_dump.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,542 @@ ++/* bnx2x_dump.h: Broadcom Everest network driver. ++ * ++ * Copyright (c) 2009 Broadcom Corporation ++ * ++ * Unless you and Broadcom execute a separate written software license ++ * agreement governing use of this software, this software is licensed to you ++ * under the terms of the GNU General Public License version 2, available ++ * at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (the "GPL"). ++ * ++ * Notwithstanding the above, under no circumstances may you combine this ++ * software in any way with any other Broadcom software provided under a ++ * license other than the GPL, without Broadcom's express prior written ++ * consent. ++ * ++ * Written by: Yitchak Gertner ++ */ ++ ++ ++/* This struct holds a signature to ensure the dump returned from the driver ++ * match the meta data file inserted to grc_dump.tcl ++ * The signature is time stamp, diag version and grc_dump version ++ */ ++ ++#ifndef BNX2X_DUMP_H ++#define BNX2X_DUMP_H ++ ++ ++struct dump_sign { ++ u32 time_stamp; ++ u32 diag_ver; ++ u32 grc_dump_ver; ++}; ++ ++#define TSTORM_WAITP_ADDR 0x1b8a80 ++#define CSTORM_WAITP_ADDR 0x238a80 ++#define XSTORM_WAITP_ADDR 0x2b8a80 ++#define USTORM_WAITP_ADDR 0x338a80 ++#define TSTORM_CAM_MODE 0x1b1440 ++ ++#define RI_E1 0x1 ++#define RI_E1H 0x2 ++#define RI_ONLINE 0x100 ++ ++#define RI_E1_OFFLINE (RI_E1) ++#define RI_E1_ONLINE (RI_E1 | RI_ONLINE) ++#define RI_E1H_OFFLINE (RI_E1H) ++#define RI_E1H_ONLINE (RI_E1H | RI_ONLINE) ++#define RI_ALL_OFFLINE (RI_E1 | RI_E1H) ++#define RI_ALL_ONLINE (RI_E1 | RI_E1H | RI_ONLINE) ++ ++#define MAX_TIMER_PENDING 200 ++#define TIMER_SCAN_DONT_CARE 0xFF ++ ++ ++struct dump_hdr { ++ u32 hdr_size; /* in dwords, excluding this field */ ++ struct dump_sign dump_sign; ++ u32 xstorm_waitp; ++ u32 tstorm_waitp; ++ u32 ustorm_waitp; ++ u32 cstorm_waitp; ++ u16 info; ++ u8 idle_chk; ++ u8 reserved; ++}; ++ ++struct reg_addr { ++ u32 addr; ++ u32 size; ++ u16 info; ++}; ++ ++struct wreg_addr { ++ u32 addr; ++ u32 size; ++ u32 read_regs_count; ++ const u32 *read_regs; ++ u16 info; ++}; ++ ++ ++#define REGS_COUNT 558 ++static const struct reg_addr reg_addrs[REGS_COUNT] = { ++ { 0x2000, 341, RI_ALL_ONLINE }, { 0x2800, 103, RI_ALL_ONLINE }, ++ { 0x3000, 287, RI_ALL_ONLINE }, { 0x3800, 331, RI_ALL_ONLINE }, ++ { 0x8800, 6, RI_E1_ONLINE }, { 0xa000, 223, RI_ALL_ONLINE }, ++ { 0xa388, 1, RI_ALL_ONLINE }, { 0xa398, 1, RI_ALL_ONLINE }, ++ { 0xa39c, 7, RI_E1H_ONLINE }, { 0xa3c0, 3, RI_E1H_ONLINE }, ++ { 0xa3d0, 1, RI_E1H_ONLINE }, { 0xa3d8, 1, RI_E1H_ONLINE }, ++ { 0xa3e0, 1, RI_E1H_ONLINE }, { 0xa3e8, 1, RI_E1H_ONLINE }, ++ { 0xa3f0, 1, RI_E1H_ONLINE }, { 0xa3f8, 1, RI_E1H_ONLINE }, ++ { 0xa400, 69, RI_ALL_ONLINE }, { 0xa518, 1, RI_ALL_ONLINE }, ++ { 0xa520, 1, RI_ALL_ONLINE }, { 0xa528, 1, RI_ALL_ONLINE }, ++ { 0xa530, 1, RI_ALL_ONLINE }, { 0xa538, 1, RI_ALL_ONLINE }, ++ { 0xa540, 1, RI_ALL_ONLINE }, { 0xa548, 1, RI_ALL_ONLINE }, ++ { 0xa550, 1, RI_ALL_ONLINE }, { 0xa558, 1, RI_ALL_ONLINE }, ++ { 0xa560, 1, RI_ALL_ONLINE }, { 0xa568, 1, RI_ALL_ONLINE }, ++ { 0xa570, 1, RI_ALL_ONLINE }, { 0xa580, 1, RI_ALL_ONLINE }, ++ { 0xa590, 1, RI_ALL_ONLINE }, { 0xa5a0, 1, RI_ALL_ONLINE }, ++ { 0xa5c0, 1, RI_ALL_ONLINE }, { 0xa5e0, 1, RI_E1H_ONLINE }, ++ { 0xa5e8, 1, RI_E1H_ONLINE }, { 0xa5f0, 1, RI_E1H_ONLINE }, ++ { 0xa5f8, 10, RI_E1H_ONLINE }, { 0x10000, 236, RI_ALL_ONLINE }, ++ { 0x103bc, 1, RI_ALL_ONLINE }, { 0x103cc, 1, RI_ALL_ONLINE }, ++ { 0x103dc, 1, RI_ALL_ONLINE }, { 0x10400, 57, RI_ALL_ONLINE }, ++ { 0x104e8, 2, RI_ALL_ONLINE }, { 0x104f4, 2, RI_ALL_ONLINE }, ++ { 0x10500, 146, RI_ALL_ONLINE }, { 0x10750, 2, RI_ALL_ONLINE }, ++ { 0x10760, 2, RI_ALL_ONLINE }, { 0x10770, 2, RI_ALL_ONLINE }, ++ { 0x10780, 2, RI_ALL_ONLINE }, { 0x10790, 2, RI_ALL_ONLINE }, ++ { 0x107a0, 2, RI_ALL_ONLINE }, { 0x107b0, 2, RI_ALL_ONLINE }, ++ { 0x107c0, 2, RI_ALL_ONLINE }, { 0x107d0, 2, RI_ALL_ONLINE }, ++ { 0x107e0, 2, RI_ALL_ONLINE }, { 0x10880, 2, RI_ALL_ONLINE }, ++ { 0x10900, 2, RI_ALL_ONLINE }, { 0x12000, 1, RI_ALL_ONLINE }, ++ { 0x14000, 1, RI_ALL_ONLINE }, { 0x16000, 26, RI_E1H_ONLINE }, ++ { 0x16070, 18, RI_E1H_ONLINE }, { 0x160c0, 27, RI_E1H_ONLINE }, ++ { 0x16140, 1, RI_E1H_ONLINE }, { 0x16160, 1, RI_E1H_ONLINE }, ++ { 0x16180, 2, RI_E1H_ONLINE }, { 0x161c0, 2, RI_E1H_ONLINE }, ++ { 0x16204, 5, RI_E1H_ONLINE }, { 0x18000, 1, RI_E1H_ONLINE }, ++ { 0x18008, 1, RI_E1H_ONLINE }, { 0x20000, 24, RI_ALL_ONLINE }, ++ { 0x20060, 8, RI_ALL_ONLINE }, { 0x20080, 138, RI_ALL_ONLINE }, ++ { 0x202b4, 1, RI_ALL_ONLINE }, { 0x202c4, 1, RI_ALL_ONLINE }, ++ { 0x20400, 2, RI_ALL_ONLINE }, { 0x2040c, 8, RI_ALL_ONLINE }, ++ { 0x2042c, 18, RI_E1H_ONLINE }, { 0x20480, 1, RI_ALL_ONLINE }, ++ { 0x20500, 1, RI_ALL_ONLINE }, { 0x20600, 1, RI_ALL_ONLINE }, ++ { 0x28000, 1, RI_ALL_ONLINE }, { 0x28004, 8191, RI_ALL_OFFLINE }, ++ { 0x30000, 1, RI_ALL_ONLINE }, { 0x30004, 16383, RI_ALL_OFFLINE }, ++ { 0x40000, 98, RI_ALL_ONLINE }, { 0x40194, 1, RI_ALL_ONLINE }, ++ { 0x401a4, 1, RI_ALL_ONLINE }, { 0x401a8, 11, RI_E1H_ONLINE }, ++ { 0x40200, 4, RI_ALL_ONLINE }, { 0x40400, 43, RI_ALL_ONLINE }, ++ { 0x404b8, 1, RI_ALL_ONLINE }, { 0x404c8, 1, RI_ALL_ONLINE }, ++ { 0x404cc, 3, RI_E1H_ONLINE }, { 0x40500, 2, RI_ALL_ONLINE }, ++ { 0x40510, 2, RI_ALL_ONLINE }, { 0x40520, 2, RI_ALL_ONLINE }, ++ { 0x40530, 2, RI_ALL_ONLINE }, { 0x40540, 2, RI_ALL_ONLINE }, ++ { 0x42000, 164, RI_ALL_ONLINE }, { 0x4229c, 1, RI_ALL_ONLINE }, ++ { 0x422ac, 1, RI_ALL_ONLINE }, { 0x422bc, 1, RI_ALL_ONLINE }, ++ { 0x422d4, 5, RI_E1H_ONLINE }, { 0x42400, 49, RI_ALL_ONLINE }, ++ { 0x424c8, 38, RI_ALL_ONLINE }, { 0x42568, 2, RI_ALL_ONLINE }, ++ { 0x42800, 1, RI_ALL_ONLINE }, { 0x50000, 20, RI_ALL_ONLINE }, ++ { 0x50050, 8, RI_ALL_ONLINE }, { 0x50070, 88, RI_ALL_ONLINE }, ++ { 0x501dc, 1, RI_ALL_ONLINE }, { 0x501ec, 1, RI_ALL_ONLINE }, ++ { 0x501f0, 4, RI_E1H_ONLINE }, { 0x50200, 2, RI_ALL_ONLINE }, ++ { 0x5020c, 7, RI_ALL_ONLINE }, { 0x50228, 6, RI_E1H_ONLINE }, ++ { 0x50240, 1, RI_ALL_ONLINE }, { 0x50280, 1, RI_ALL_ONLINE }, ++ { 0x52000, 1, RI_ALL_ONLINE }, { 0x54000, 1, RI_ALL_ONLINE }, ++ { 0x54004, 3327, RI_ALL_OFFLINE }, { 0x58000, 1, RI_ALL_ONLINE }, ++ { 0x58004, 8191, RI_ALL_OFFLINE }, { 0x60000, 71, RI_ALL_ONLINE }, ++ { 0x60128, 1, RI_ALL_ONLINE }, { 0x60138, 1, RI_ALL_ONLINE }, ++ { 0x6013c, 24, RI_E1H_ONLINE }, { 0x60200, 1, RI_ALL_ONLINE }, ++ { 0x61000, 1, RI_ALL_ONLINE }, { 0x61004, 511, RI_ALL_OFFLINE }, ++ { 0x70000, 8, RI_ALL_ONLINE }, { 0x70020, 21496, RI_ALL_OFFLINE }, ++ { 0x85000, 3, RI_ALL_ONLINE }, { 0x8500c, 4, RI_ALL_OFFLINE }, ++ { 0x8501c, 7, RI_ALL_ONLINE }, { 0x85038, 4, RI_ALL_OFFLINE }, ++ { 0x85048, 1, RI_ALL_ONLINE }, { 0x8504c, 109, RI_ALL_OFFLINE }, ++ { 0x85200, 32, RI_ALL_ONLINE }, { 0x85280, 11104, RI_ALL_OFFLINE }, ++ { 0xa0000, 16384, RI_ALL_ONLINE }, { 0xb0000, 16384, RI_E1H_ONLINE }, ++ { 0xc1000, 7, RI_ALL_ONLINE }, { 0xc1028, 1, RI_ALL_ONLINE }, ++ { 0xc1038, 1, RI_ALL_ONLINE }, { 0xc1800, 2, RI_ALL_ONLINE }, ++ { 0xc2000, 164, RI_ALL_ONLINE }, { 0xc229c, 1, RI_ALL_ONLINE }, ++ { 0xc22ac, 1, RI_ALL_ONLINE }, { 0xc22bc, 1, RI_ALL_ONLINE }, ++ { 0xc2400, 49, RI_ALL_ONLINE }, { 0xc24c8, 38, RI_ALL_ONLINE }, ++ { 0xc2568, 2, RI_ALL_ONLINE }, { 0xc2600, 1, RI_ALL_ONLINE }, ++ { 0xc4000, 165, RI_ALL_ONLINE }, { 0xc42a0, 1, RI_ALL_ONLINE }, ++ { 0xc42b0, 1, RI_ALL_ONLINE }, { 0xc42c0, 1, RI_ALL_ONLINE }, ++ { 0xc42e0, 7, RI_E1H_ONLINE }, { 0xc4400, 51, RI_ALL_ONLINE }, ++ { 0xc44d0, 38, RI_ALL_ONLINE }, { 0xc4570, 2, RI_ALL_ONLINE }, ++ { 0xc4600, 1, RI_ALL_ONLINE }, { 0xd0000, 19, RI_ALL_ONLINE }, ++ { 0xd004c, 8, RI_ALL_ONLINE }, { 0xd006c, 91, RI_ALL_ONLINE }, ++ { 0xd01e4, 1, RI_ALL_ONLINE }, { 0xd01f4, 1, RI_ALL_ONLINE }, ++ { 0xd0200, 2, RI_ALL_ONLINE }, { 0xd020c, 7, RI_ALL_ONLINE }, ++ { 0xd0228, 18, RI_E1H_ONLINE }, { 0xd0280, 1, RI_ALL_ONLINE }, ++ { 0xd0300, 1, RI_ALL_ONLINE }, { 0xd0400, 1, RI_ALL_ONLINE }, ++ { 0xd4000, 1, RI_ALL_ONLINE }, { 0xd4004, 2559, RI_ALL_OFFLINE }, ++ { 0xd8000, 1, RI_ALL_ONLINE }, { 0xd8004, 8191, RI_ALL_OFFLINE }, ++ { 0xe0000, 21, RI_ALL_ONLINE }, { 0xe0054, 8, RI_ALL_ONLINE }, ++ { 0xe0074, 85, RI_ALL_ONLINE }, { 0xe01d4, 1, RI_ALL_ONLINE }, ++ { 0xe01e4, 1, RI_ALL_ONLINE }, { 0xe0200, 2, RI_ALL_ONLINE }, ++ { 0xe020c, 8, RI_ALL_ONLINE }, { 0xe022c, 18, RI_E1H_ONLINE }, ++ { 0xe0280, 1, RI_ALL_ONLINE }, { 0xe0300, 1, RI_ALL_ONLINE }, ++ { 0xe1000, 1, RI_ALL_ONLINE }, { 0xe2000, 1, RI_ALL_ONLINE }, ++ { 0xe2004, 2047, RI_ALL_OFFLINE }, { 0xf0000, 1, RI_ALL_ONLINE }, ++ { 0xf0004, 16383, RI_ALL_OFFLINE }, { 0x101000, 12, RI_ALL_ONLINE }, ++ { 0x10103c, 1, RI_ALL_ONLINE }, { 0x10104c, 1, RI_ALL_ONLINE }, ++ { 0x101050, 1, RI_E1H_ONLINE }, { 0x101100, 1, RI_ALL_ONLINE }, ++ { 0x101800, 8, RI_ALL_ONLINE }, { 0x102000, 18, RI_ALL_ONLINE }, ++ { 0x102054, 1, RI_ALL_ONLINE }, { 0x102064, 1, RI_ALL_ONLINE }, ++ { 0x102080, 17, RI_ALL_ONLINE }, { 0x1020c8, 8, RI_E1H_ONLINE }, ++ { 0x102400, 1, RI_ALL_ONLINE }, { 0x103000, 26, RI_ALL_ONLINE }, ++ { 0x103074, 1, RI_ALL_ONLINE }, { 0x103084, 1, RI_ALL_ONLINE }, ++ { 0x103094, 1, RI_ALL_ONLINE }, { 0x103098, 5, RI_E1H_ONLINE }, ++ { 0x103800, 8, RI_ALL_ONLINE }, { 0x104000, 63, RI_ALL_ONLINE }, ++ { 0x104108, 1, RI_ALL_ONLINE }, { 0x104118, 1, RI_ALL_ONLINE }, ++ { 0x104200, 17, RI_ALL_ONLINE }, { 0x104400, 64, RI_ALL_ONLINE }, ++ { 0x104500, 192, RI_ALL_OFFLINE }, { 0x104800, 64, RI_ALL_ONLINE }, ++ { 0x104900, 192, RI_ALL_OFFLINE }, { 0x105000, 7, RI_ALL_ONLINE }, ++ { 0x10501c, 1, RI_ALL_OFFLINE }, { 0x105020, 3, RI_ALL_ONLINE }, ++ { 0x10502c, 1, RI_ALL_OFFLINE }, { 0x105030, 3, RI_ALL_ONLINE }, ++ { 0x10503c, 1, RI_ALL_OFFLINE }, { 0x105040, 3, RI_ALL_ONLINE }, ++ { 0x10504c, 1, RI_ALL_OFFLINE }, { 0x105050, 3, RI_ALL_ONLINE }, ++ { 0x10505c, 1, RI_ALL_OFFLINE }, { 0x105060, 3, RI_ALL_ONLINE }, ++ { 0x10506c, 1, RI_ALL_OFFLINE }, { 0x105070, 3, RI_ALL_ONLINE }, ++ { 0x10507c, 1, RI_ALL_OFFLINE }, { 0x105080, 3, RI_ALL_ONLINE }, ++ { 0x10508c, 1, RI_ALL_OFFLINE }, { 0x105090, 3, RI_ALL_ONLINE }, ++ { 0x10509c, 1, RI_ALL_OFFLINE }, { 0x1050a0, 3, RI_ALL_ONLINE }, ++ { 0x1050ac, 1, RI_ALL_OFFLINE }, { 0x1050b0, 3, RI_ALL_ONLINE }, ++ { 0x1050bc, 1, RI_ALL_OFFLINE }, { 0x1050c0, 3, RI_ALL_ONLINE }, ++ { 0x1050cc, 1, RI_ALL_OFFLINE }, { 0x1050d0, 3, RI_ALL_ONLINE }, ++ { 0x1050dc, 1, RI_ALL_OFFLINE }, { 0x1050e0, 3, RI_ALL_ONLINE }, ++ { 0x1050ec, 1, RI_ALL_OFFLINE }, { 0x1050f0, 3, RI_ALL_ONLINE }, ++ { 0x1050fc, 1, RI_ALL_OFFLINE }, { 0x105100, 3, RI_ALL_ONLINE }, ++ { 0x10510c, 1, RI_ALL_OFFLINE }, { 0x105110, 3, RI_ALL_ONLINE }, ++ { 0x10511c, 1, RI_ALL_OFFLINE }, { 0x105120, 3, RI_ALL_ONLINE }, ++ { 0x10512c, 1, RI_ALL_OFFLINE }, { 0x105130, 3, RI_ALL_ONLINE }, ++ { 0x10513c, 1, RI_ALL_OFFLINE }, { 0x105140, 3, RI_ALL_ONLINE }, ++ { 0x10514c, 1, RI_ALL_OFFLINE }, { 0x105150, 3, RI_ALL_ONLINE }, ++ { 0x10515c, 1, RI_ALL_OFFLINE }, { 0x105160, 3, RI_ALL_ONLINE }, ++ { 0x10516c, 1, RI_ALL_OFFLINE }, { 0x105170, 3, RI_ALL_ONLINE }, ++ { 0x10517c, 1, RI_ALL_OFFLINE }, { 0x105180, 3, RI_ALL_ONLINE }, ++ { 0x10518c, 1, RI_ALL_OFFLINE }, { 0x105190, 3, RI_ALL_ONLINE }, ++ { 0x10519c, 1, RI_ALL_OFFLINE }, { 0x1051a0, 3, RI_ALL_ONLINE }, ++ { 0x1051ac, 1, RI_ALL_OFFLINE }, { 0x1051b0, 3, RI_ALL_ONLINE }, ++ { 0x1051bc, 1, RI_ALL_OFFLINE }, { 0x1051c0, 3, RI_ALL_ONLINE }, ++ { 0x1051cc, 1, RI_ALL_OFFLINE }, { 0x1051d0, 3, RI_ALL_ONLINE }, ++ { 0x1051dc, 1, RI_ALL_OFFLINE }, { 0x1051e0, 3, RI_ALL_ONLINE }, ++ { 0x1051ec, 1, RI_ALL_OFFLINE }, { 0x1051f0, 3, RI_ALL_ONLINE }, ++ { 0x1051fc, 1, RI_ALL_OFFLINE }, { 0x105200, 3, RI_ALL_ONLINE }, ++ { 0x10520c, 1, RI_ALL_OFFLINE }, { 0x105210, 3, RI_ALL_ONLINE }, ++ { 0x10521c, 1, RI_ALL_OFFLINE }, { 0x105220, 3, RI_ALL_ONLINE }, ++ { 0x10522c, 1, RI_ALL_OFFLINE }, { 0x105230, 3, RI_ALL_ONLINE }, ++ { 0x10523c, 1, RI_ALL_OFFLINE }, { 0x105240, 3, RI_ALL_ONLINE }, ++ { 0x10524c, 1, RI_ALL_OFFLINE }, { 0x105250, 3, RI_ALL_ONLINE }, ++ { 0x10525c, 1, RI_ALL_OFFLINE }, { 0x105260, 3, RI_ALL_ONLINE }, ++ { 0x10526c, 1, RI_ALL_OFFLINE }, { 0x105270, 3, RI_ALL_ONLINE }, ++ { 0x10527c, 1, RI_ALL_OFFLINE }, { 0x105280, 3, RI_ALL_ONLINE }, ++ { 0x10528c, 1, RI_ALL_OFFLINE }, { 0x105290, 3, RI_ALL_ONLINE }, ++ { 0x10529c, 1, RI_ALL_OFFLINE }, { 0x1052a0, 3, RI_ALL_ONLINE }, ++ { 0x1052ac, 1, RI_ALL_OFFLINE }, { 0x1052b0, 3, RI_ALL_ONLINE }, ++ { 0x1052bc, 1, RI_ALL_OFFLINE }, { 0x1052c0, 3, RI_ALL_ONLINE }, ++ { 0x1052cc, 1, RI_ALL_OFFLINE }, { 0x1052d0, 3, RI_ALL_ONLINE }, ++ { 0x1052dc, 1, RI_ALL_OFFLINE }, { 0x1052e0, 3, RI_ALL_ONLINE }, ++ { 0x1052ec, 1, RI_ALL_OFFLINE }, { 0x1052f0, 3, RI_ALL_ONLINE }, ++ { 0x1052fc, 1, RI_ALL_OFFLINE }, { 0x105300, 3, RI_ALL_ONLINE }, ++ { 0x10530c, 1, RI_ALL_OFFLINE }, { 0x105310, 3, RI_ALL_ONLINE }, ++ { 0x10531c, 1, RI_ALL_OFFLINE }, { 0x105320, 3, RI_ALL_ONLINE }, ++ { 0x10532c, 1, RI_ALL_OFFLINE }, { 0x105330, 3, RI_ALL_ONLINE }, ++ { 0x10533c, 1, RI_ALL_OFFLINE }, { 0x105340, 3, RI_ALL_ONLINE }, ++ { 0x10534c, 1, RI_ALL_OFFLINE }, { 0x105350, 3, RI_ALL_ONLINE }, ++ { 0x10535c, 1, RI_ALL_OFFLINE }, { 0x105360, 3, RI_ALL_ONLINE }, ++ { 0x10536c, 1, RI_ALL_OFFLINE }, { 0x105370, 3, RI_ALL_ONLINE }, ++ { 0x10537c, 1, RI_ALL_OFFLINE }, { 0x105380, 3, RI_ALL_ONLINE }, ++ { 0x10538c, 1, RI_ALL_OFFLINE }, { 0x105390, 3, RI_ALL_ONLINE }, ++ { 0x10539c, 1, RI_ALL_OFFLINE }, { 0x1053a0, 3, RI_ALL_ONLINE }, ++ { 0x1053ac, 1, RI_ALL_OFFLINE }, { 0x1053b0, 3, RI_ALL_ONLINE }, ++ { 0x1053bc, 1, RI_ALL_OFFLINE }, { 0x1053c0, 3, RI_ALL_ONLINE }, ++ { 0x1053cc, 1, RI_ALL_OFFLINE }, { 0x1053d0, 3, RI_ALL_ONLINE }, ++ { 0x1053dc, 1, RI_ALL_OFFLINE }, { 0x1053e0, 3, RI_ALL_ONLINE }, ++ { 0x1053ec, 1, RI_ALL_OFFLINE }, { 0x1053f0, 3, RI_ALL_ONLINE }, ++ { 0x1053fc, 769, RI_ALL_OFFLINE }, { 0x108000, 33, RI_ALL_ONLINE }, ++ { 0x108090, 1, RI_ALL_ONLINE }, { 0x1080a0, 1, RI_ALL_ONLINE }, ++ { 0x1080ac, 5, RI_E1H_ONLINE }, { 0x108100, 5, RI_ALL_ONLINE }, ++ { 0x108120, 5, RI_ALL_ONLINE }, { 0x108200, 74, RI_ALL_ONLINE }, ++ { 0x108400, 74, RI_ALL_ONLINE }, { 0x108800, 152, RI_ALL_ONLINE }, ++ { 0x109000, 1, RI_ALL_ONLINE }, { 0x120000, 347, RI_ALL_ONLINE }, ++ { 0x120578, 1, RI_ALL_ONLINE }, { 0x120588, 1, RI_ALL_ONLINE }, ++ { 0x120598, 1, RI_ALL_ONLINE }, { 0x12059c, 23, RI_E1H_ONLINE }, ++ { 0x120614, 1, RI_E1H_ONLINE }, { 0x12061c, 30, RI_E1H_ONLINE }, ++ { 0x12080c, 65, RI_ALL_ONLINE }, { 0x120a00, 2, RI_ALL_ONLINE }, ++ { 0x122000, 2, RI_ALL_ONLINE }, { 0x128000, 2, RI_E1H_ONLINE }, ++ { 0x140000, 114, RI_ALL_ONLINE }, { 0x1401d4, 1, RI_ALL_ONLINE }, ++ { 0x1401e4, 1, RI_ALL_ONLINE }, { 0x140200, 6, RI_ALL_ONLINE }, ++ { 0x144000, 4, RI_ALL_ONLINE }, { 0x148000, 4, RI_ALL_ONLINE }, ++ { 0x14c000, 4, RI_ALL_ONLINE }, { 0x150000, 4, RI_ALL_ONLINE }, ++ { 0x154000, 4, RI_ALL_ONLINE }, { 0x158000, 4, RI_ALL_ONLINE }, ++ { 0x15c000, 7, RI_E1H_ONLINE }, { 0x161000, 7, RI_ALL_ONLINE }, ++ { 0x161028, 1, RI_ALL_ONLINE }, { 0x161038, 1, RI_ALL_ONLINE }, ++ { 0x161800, 2, RI_ALL_ONLINE }, { 0x164000, 60, RI_ALL_ONLINE }, ++ { 0x1640fc, 1, RI_ALL_ONLINE }, { 0x16410c, 1, RI_ALL_ONLINE }, ++ { 0x164110, 2, RI_E1H_ONLINE }, { 0x164200, 1, RI_ALL_ONLINE }, ++ { 0x164208, 1, RI_ALL_ONLINE }, { 0x164210, 1, RI_ALL_ONLINE }, ++ { 0x164218, 1, RI_ALL_ONLINE }, { 0x164220, 1, RI_ALL_ONLINE }, ++ { 0x164228, 1, RI_ALL_ONLINE }, { 0x164230, 1, RI_ALL_ONLINE }, ++ { 0x164238, 1, RI_ALL_ONLINE }, { 0x164240, 1, RI_ALL_ONLINE }, ++ { 0x164248, 1, RI_ALL_ONLINE }, { 0x164250, 1, RI_ALL_ONLINE }, ++ { 0x164258, 1, RI_ALL_ONLINE }, { 0x164260, 1, RI_ALL_ONLINE }, ++ { 0x164270, 2, RI_ALL_ONLINE }, { 0x164280, 2, RI_ALL_ONLINE }, ++ { 0x164800, 2, RI_ALL_ONLINE }, { 0x165000, 2, RI_ALL_ONLINE }, ++ { 0x166000, 164, RI_ALL_ONLINE }, { 0x16629c, 1, RI_ALL_ONLINE }, ++ { 0x1662ac, 1, RI_ALL_ONLINE }, { 0x1662bc, 1, RI_ALL_ONLINE }, ++ { 0x166400, 49, RI_ALL_ONLINE }, { 0x1664c8, 38, RI_ALL_ONLINE }, ++ { 0x166568, 2, RI_ALL_ONLINE }, { 0x166800, 1, RI_ALL_ONLINE }, ++ { 0x168000, 270, RI_ALL_ONLINE }, { 0x168444, 1, RI_ALL_ONLINE }, ++ { 0x168454, 1, RI_ALL_ONLINE }, { 0x168800, 19, RI_ALL_ONLINE }, ++ { 0x168900, 1, RI_ALL_ONLINE }, { 0x168a00, 128, RI_ALL_ONLINE }, ++ { 0x16a000, 1, RI_ALL_ONLINE }, { 0x16a004, 1535, RI_ALL_OFFLINE }, ++ { 0x16c000, 1, RI_ALL_ONLINE }, { 0x16c004, 1535, RI_ALL_OFFLINE }, ++ { 0x16e000, 16, RI_E1H_ONLINE }, { 0x16e100, 1, RI_E1H_ONLINE }, ++ { 0x16e200, 2, RI_E1H_ONLINE }, { 0x16e400, 183, RI_E1H_ONLINE }, ++ { 0x170000, 93, RI_ALL_ONLINE }, { 0x170180, 1, RI_ALL_ONLINE }, ++ { 0x170190, 1, RI_ALL_ONLINE }, { 0x170200, 4, RI_ALL_ONLINE }, ++ { 0x170214, 1, RI_ALL_ONLINE }, { 0x178000, 1, RI_ALL_ONLINE }, ++ { 0x180000, 61, RI_ALL_ONLINE }, { 0x180100, 1, RI_ALL_ONLINE }, ++ { 0x180110, 1, RI_ALL_ONLINE }, { 0x180120, 1, RI_ALL_ONLINE }, ++ { 0x180130, 1, RI_ALL_ONLINE }, { 0x18013c, 2, RI_E1H_ONLINE }, ++ { 0x180200, 58, RI_ALL_ONLINE }, { 0x180340, 4, RI_ALL_ONLINE }, ++ { 0x180400, 1, RI_ALL_ONLINE }, { 0x180404, 255, RI_ALL_OFFLINE }, ++ { 0x181000, 4, RI_ALL_ONLINE }, { 0x181010, 1020, RI_ALL_OFFLINE }, ++ { 0x1a0000, 1, RI_ALL_ONLINE }, { 0x1a0004, 1023, RI_ALL_OFFLINE }, ++ { 0x1a1000, 1, RI_ALL_ONLINE }, { 0x1a1004, 4607, RI_ALL_OFFLINE }, ++ { 0x1a5800, 2560, RI_E1H_OFFLINE }, { 0x1a8000, 64, RI_ALL_OFFLINE }, ++ { 0x1a8100, 1984, RI_E1H_OFFLINE }, { 0x1aa000, 1, RI_E1H_ONLINE }, ++ { 0x1aa004, 6655, RI_E1H_OFFLINE }, { 0x1b1800, 128, RI_ALL_OFFLINE }, ++ { 0x1b1c00, 128, RI_ALL_OFFLINE }, { 0x1b2000, 1, RI_ALL_OFFLINE }, ++ { 0x1b2400, 64, RI_E1H_OFFLINE }, { 0x1b8200, 1, RI_ALL_ONLINE }, ++ { 0x1b8240, 1, RI_ALL_ONLINE }, { 0x1b8280, 1, RI_ALL_ONLINE }, ++ { 0x1b82c0, 1, RI_ALL_ONLINE }, { 0x1b8a00, 1, RI_ALL_ONLINE }, ++ { 0x1b8a80, 1, RI_ALL_ONLINE }, { 0x1c0000, 2, RI_ALL_ONLINE }, ++ { 0x200000, 65, RI_ALL_ONLINE }, { 0x200110, 1, RI_ALL_ONLINE }, ++ { 0x200120, 1, RI_ALL_ONLINE }, { 0x200130, 1, RI_ALL_ONLINE }, ++ { 0x200140, 1, RI_ALL_ONLINE }, { 0x20014c, 2, RI_E1H_ONLINE }, ++ { 0x200200, 58, RI_ALL_ONLINE }, { 0x200340, 4, RI_ALL_ONLINE }, ++ { 0x200400, 1, RI_ALL_ONLINE }, { 0x200404, 255, RI_ALL_OFFLINE }, ++ { 0x202000, 4, RI_ALL_ONLINE }, { 0x202010, 2044, RI_ALL_OFFLINE }, ++ { 0x220000, 1, RI_ALL_ONLINE }, { 0x220004, 1023, RI_ALL_OFFLINE }, ++ { 0x221000, 1, RI_ALL_ONLINE }, { 0x221004, 4607, RI_ALL_OFFLINE }, ++ { 0x225800, 1536, RI_E1H_OFFLINE }, { 0x227000, 1, RI_E1H_ONLINE }, ++ { 0x227004, 1023, RI_E1H_OFFLINE }, { 0x228000, 64, RI_ALL_OFFLINE }, ++ { 0x228100, 8640, RI_E1H_OFFLINE }, { 0x231800, 128, RI_ALL_OFFLINE }, ++ { 0x231c00, 128, RI_ALL_OFFLINE }, { 0x232000, 1, RI_ALL_OFFLINE }, ++ { 0x232400, 64, RI_E1H_OFFLINE }, { 0x238200, 1, RI_ALL_ONLINE }, ++ { 0x238240, 1, RI_ALL_ONLINE }, { 0x238280, 1, RI_ALL_ONLINE }, ++ { 0x2382c0, 1, RI_ALL_ONLINE }, { 0x238a00, 1, RI_ALL_ONLINE }, ++ { 0x238a80, 1, RI_ALL_ONLINE }, { 0x240000, 2, RI_ALL_ONLINE }, ++ { 0x280000, 65, RI_ALL_ONLINE }, { 0x280110, 1, RI_ALL_ONLINE }, ++ { 0x280120, 1, RI_ALL_ONLINE }, { 0x280130, 1, RI_ALL_ONLINE }, ++ { 0x280140, 1, RI_ALL_ONLINE }, { 0x28014c, 2, RI_E1H_ONLINE }, ++ { 0x280200, 58, RI_ALL_ONLINE }, { 0x280340, 4, RI_ALL_ONLINE }, ++ { 0x280400, 1, RI_ALL_ONLINE }, { 0x280404, 255, RI_ALL_OFFLINE }, ++ { 0x282000, 4, RI_ALL_ONLINE }, { 0x282010, 2044, RI_ALL_OFFLINE }, ++ { 0x2a0000, 1, RI_ALL_ONLINE }, { 0x2a0004, 1023, RI_ALL_OFFLINE }, ++ { 0x2a1000, 1, RI_ALL_ONLINE }, { 0x2a1004, 4607, RI_ALL_OFFLINE }, ++ { 0x2a5800, 2560, RI_E1H_OFFLINE }, { 0x2a8000, 64, RI_ALL_OFFLINE }, ++ { 0x2a8100, 960, RI_E1H_OFFLINE }, { 0x2a9000, 1, RI_E1H_ONLINE }, ++ { 0x2a9004, 7679, RI_E1H_OFFLINE }, { 0x2b1800, 128, RI_ALL_OFFLINE }, ++ { 0x2b1c00, 128, RI_ALL_OFFLINE }, { 0x2b2000, 1, RI_ALL_OFFLINE }, ++ { 0x2b2400, 64, RI_E1H_OFFLINE }, { 0x2b8200, 1, RI_ALL_ONLINE }, ++ { 0x2b8240, 1, RI_ALL_ONLINE }, { 0x2b8280, 1, RI_ALL_ONLINE }, ++ { 0x2b82c0, 1, RI_ALL_ONLINE }, { 0x2b8a00, 1, RI_ALL_ONLINE }, ++ { 0x2b8a80, 1, RI_ALL_ONLINE }, { 0x2c0000, 2, RI_ALL_ONLINE }, ++ { 0x300000, 65, RI_ALL_ONLINE }, { 0x300110, 1, RI_ALL_ONLINE }, ++ { 0x300120, 1, RI_ALL_ONLINE }, { 0x300130, 1, RI_ALL_ONLINE }, ++ { 0x300140, 1, RI_ALL_ONLINE }, { 0x30014c, 2, RI_E1H_ONLINE }, ++ { 0x300200, 58, RI_ALL_ONLINE }, { 0x300340, 4, RI_ALL_ONLINE }, ++ { 0x300400, 1, RI_ALL_ONLINE }, { 0x300404, 255, RI_ALL_OFFLINE }, ++ { 0x302000, 4, RI_ALL_ONLINE }, { 0x302010, 2044, RI_ALL_OFFLINE }, ++ { 0x320000, 1, RI_ALL_ONLINE }, { 0x320004, 1023, RI_ALL_OFFLINE }, ++ { 0x321000, 1, RI_ALL_ONLINE }, { 0x321004, 4607, RI_ALL_OFFLINE }, ++ { 0x325800, 2560, RI_E1H_OFFLINE }, { 0x328000, 64, RI_ALL_OFFLINE }, ++ { 0x328100, 536, RI_E1H_OFFLINE }, { 0x328960, 1, RI_E1H_ONLINE }, ++ { 0x328964, 8103, RI_E1H_OFFLINE }, { 0x331800, 128, RI_ALL_OFFLINE }, ++ { 0x331c00, 128, RI_ALL_OFFLINE }, { 0x332000, 1, RI_ALL_OFFLINE }, ++ { 0x332400, 64, RI_E1H_OFFLINE }, { 0x338200, 1, RI_ALL_ONLINE }, ++ { 0x338240, 1, RI_ALL_ONLINE }, { 0x338280, 1, RI_ALL_ONLINE }, ++ { 0x3382c0, 1, RI_ALL_ONLINE }, { 0x338a00, 1, RI_ALL_ONLINE }, ++ { 0x338a80, 1, RI_ALL_ONLINE }, { 0x340000, 2, RI_ALL_ONLINE } ++}; ++ ++ ++#define IDLE_REGS_COUNT 277 ++static const struct reg_addr idle_addrs[IDLE_REGS_COUNT] = { ++ { 0x2114, 1, RI_ALL_ONLINE }, { 0x2120, 1, RI_ALL_ONLINE }, ++ { 0x212c, 4, RI_ALL_ONLINE }, { 0x2814, 1, RI_ALL_ONLINE }, ++ { 0x281c, 2, RI_ALL_ONLINE }, { 0xa38c, 1, RI_ALL_ONLINE }, ++ { 0xa408, 1, RI_ALL_ONLINE }, { 0xa42c, 12, RI_ALL_ONLINE }, ++ { 0xa600, 5, RI_E1H_ONLINE }, { 0xa618, 1, RI_E1H_ONLINE }, ++ { 0xc09c, 1, RI_ALL_ONLINE }, { 0x103b0, 1, RI_ALL_ONLINE }, ++ { 0x103c0, 1, RI_ALL_ONLINE }, { 0x103d0, 1, RI_E1H_ONLINE }, ++ { 0x2021c, 11, RI_ALL_ONLINE }, { 0x202a8, 1, RI_ALL_ONLINE }, ++ { 0x202b8, 1, RI_ALL_ONLINE }, { 0x20404, 1, RI_ALL_ONLINE }, ++ { 0x2040c, 2, RI_ALL_ONLINE }, { 0x2041c, 2, RI_ALL_ONLINE }, ++ { 0x40154, 14, RI_ALL_ONLINE }, { 0x40198, 1, RI_ALL_ONLINE }, ++ { 0x404ac, 1, RI_ALL_ONLINE }, { 0x404bc, 1, RI_ALL_ONLINE }, ++ { 0x42290, 1, RI_ALL_ONLINE }, { 0x422a0, 1, RI_ALL_ONLINE }, ++ { 0x422b0, 1, RI_ALL_ONLINE }, { 0x42548, 1, RI_ALL_ONLINE }, ++ { 0x42550, 1, RI_ALL_ONLINE }, { 0x42558, 1, RI_ALL_ONLINE }, ++ { 0x50160, 8, RI_ALL_ONLINE }, { 0x501d0, 1, RI_ALL_ONLINE }, ++ { 0x501e0, 1, RI_ALL_ONLINE }, { 0x50204, 1, RI_ALL_ONLINE }, ++ { 0x5020c, 2, RI_ALL_ONLINE }, { 0x5021c, 1, RI_ALL_ONLINE }, ++ { 0x60090, 1, RI_ALL_ONLINE }, { 0x6011c, 1, RI_ALL_ONLINE }, ++ { 0x6012c, 1, RI_ALL_ONLINE }, { 0xc101c, 1, RI_ALL_ONLINE }, ++ { 0xc102c, 1, RI_ALL_ONLINE }, { 0xc2290, 1, RI_ALL_ONLINE }, ++ { 0xc22a0, 1, RI_ALL_ONLINE }, { 0xc22b0, 1, RI_ALL_ONLINE }, ++ { 0xc2548, 1, RI_ALL_ONLINE }, { 0xc2550, 1, RI_ALL_ONLINE }, ++ { 0xc2558, 1, RI_ALL_ONLINE }, { 0xc4294, 1, RI_ALL_ONLINE }, ++ { 0xc42a4, 1, RI_ALL_ONLINE }, { 0xc42b4, 1, RI_ALL_ONLINE }, ++ { 0xc4550, 1, RI_ALL_ONLINE }, { 0xc4558, 1, RI_ALL_ONLINE }, ++ { 0xc4560, 1, RI_ALL_ONLINE }, { 0xd016c, 8, RI_ALL_ONLINE }, ++ { 0xd01d8, 1, RI_ALL_ONLINE }, { 0xd01e8, 1, RI_ALL_ONLINE }, ++ { 0xd0204, 1, RI_ALL_ONLINE }, { 0xd020c, 3, RI_ALL_ONLINE }, ++ { 0xe0154, 8, RI_ALL_ONLINE }, { 0xe01c8, 1, RI_ALL_ONLINE }, ++ { 0xe01d8, 1, RI_ALL_ONLINE }, { 0xe0204, 1, RI_ALL_ONLINE }, ++ { 0xe020c, 2, RI_ALL_ONLINE }, { 0xe021c, 2, RI_ALL_ONLINE }, ++ { 0x101014, 1, RI_ALL_ONLINE }, { 0x101030, 1, RI_ALL_ONLINE }, ++ { 0x101040, 1, RI_ALL_ONLINE }, { 0x102058, 1, RI_ALL_ONLINE }, ++ { 0x102080, 16, RI_ALL_ONLINE }, { 0x103004, 2, RI_ALL_ONLINE }, ++ { 0x103068, 1, RI_ALL_ONLINE }, { 0x103078, 1, RI_ALL_ONLINE }, ++ { 0x103088, 1, RI_ALL_ONLINE }, { 0x10309c, 2, RI_E1H_ONLINE }, ++ { 0x104004, 1, RI_ALL_ONLINE }, { 0x104018, 1, RI_ALL_ONLINE }, ++ { 0x104020, 1, RI_ALL_ONLINE }, { 0x10403c, 1, RI_ALL_ONLINE }, ++ { 0x1040fc, 1, RI_ALL_ONLINE }, { 0x10410c, 1, RI_ALL_ONLINE }, ++ { 0x104400, 64, RI_ALL_ONLINE }, { 0x104800, 64, RI_ALL_ONLINE }, ++ { 0x105000, 3, RI_ALL_ONLINE }, { 0x105010, 3, RI_ALL_ONLINE }, ++ { 0x105020, 3, RI_ALL_ONLINE }, { 0x105030, 3, RI_ALL_ONLINE }, ++ { 0x105040, 3, RI_ALL_ONLINE }, { 0x105050, 3, RI_ALL_ONLINE }, ++ { 0x105060, 3, RI_ALL_ONLINE }, { 0x105070, 3, RI_ALL_ONLINE }, ++ { 0x105080, 3, RI_ALL_ONLINE }, { 0x105090, 3, RI_ALL_ONLINE }, ++ { 0x1050a0, 3, RI_ALL_ONLINE }, { 0x1050b0, 3, RI_ALL_ONLINE }, ++ { 0x1050c0, 3, RI_ALL_ONLINE }, { 0x1050d0, 3, RI_ALL_ONLINE }, ++ { 0x1050e0, 3, RI_ALL_ONLINE }, { 0x1050f0, 3, RI_ALL_ONLINE }, ++ { 0x105100, 3, RI_ALL_ONLINE }, { 0x105110, 3, RI_ALL_ONLINE }, ++ { 0x105120, 3, RI_ALL_ONLINE }, { 0x105130, 3, RI_ALL_ONLINE }, ++ { 0x105140, 3, RI_ALL_ONLINE }, { 0x105150, 3, RI_ALL_ONLINE }, ++ { 0x105160, 3, RI_ALL_ONLINE }, { 0x105170, 3, RI_ALL_ONLINE }, ++ { 0x105180, 3, RI_ALL_ONLINE }, { 0x105190, 3, RI_ALL_ONLINE }, ++ { 0x1051a0, 3, RI_ALL_ONLINE }, { 0x1051b0, 3, RI_ALL_ONLINE }, ++ { 0x1051c0, 3, RI_ALL_ONLINE }, { 0x1051d0, 3, RI_ALL_ONLINE }, ++ { 0x1051e0, 3, RI_ALL_ONLINE }, { 0x1051f0, 3, RI_ALL_ONLINE }, ++ { 0x105200, 3, RI_ALL_ONLINE }, { 0x105210, 3, RI_ALL_ONLINE }, ++ { 0x105220, 3, RI_ALL_ONLINE }, { 0x105230, 3, RI_ALL_ONLINE }, ++ { 0x105240, 3, RI_ALL_ONLINE }, { 0x105250, 3, RI_ALL_ONLINE }, ++ { 0x105260, 3, RI_ALL_ONLINE }, { 0x105270, 3, RI_ALL_ONLINE }, ++ { 0x105280, 3, RI_ALL_ONLINE }, { 0x105290, 3, RI_ALL_ONLINE }, ++ { 0x1052a0, 3, RI_ALL_ONLINE }, { 0x1052b0, 3, RI_ALL_ONLINE }, ++ { 0x1052c0, 3, RI_ALL_ONLINE }, { 0x1052d0, 3, RI_ALL_ONLINE }, ++ { 0x1052e0, 3, RI_ALL_ONLINE }, { 0x1052f0, 3, RI_ALL_ONLINE }, ++ { 0x105300, 3, RI_ALL_ONLINE }, { 0x105310, 3, RI_ALL_ONLINE }, ++ { 0x105320, 3, RI_ALL_ONLINE }, { 0x105330, 3, RI_ALL_ONLINE }, ++ { 0x105340, 3, RI_ALL_ONLINE }, { 0x105350, 3, RI_ALL_ONLINE }, ++ { 0x105360, 3, RI_ALL_ONLINE }, { 0x105370, 3, RI_ALL_ONLINE }, ++ { 0x105380, 3, RI_ALL_ONLINE }, { 0x105390, 3, RI_ALL_ONLINE }, ++ { 0x1053a0, 3, RI_ALL_ONLINE }, { 0x1053b0, 3, RI_ALL_ONLINE }, ++ { 0x1053c0, 3, RI_ALL_ONLINE }, { 0x1053d0, 3, RI_ALL_ONLINE }, ++ { 0x1053e0, 3, RI_ALL_ONLINE }, { 0x1053f0, 3, RI_ALL_ONLINE }, ++ { 0x108094, 1, RI_ALL_ONLINE }, { 0x1201b0, 2, RI_ALL_ONLINE }, ++ { 0x12032c, 1, RI_ALL_ONLINE }, { 0x12036c, 3, RI_ALL_ONLINE }, ++ { 0x120408, 2, RI_ALL_ONLINE }, { 0x120414, 15, RI_ALL_ONLINE }, ++ { 0x120478, 2, RI_ALL_ONLINE }, { 0x12052c, 1, RI_ALL_ONLINE }, ++ { 0x120564, 3, RI_ALL_ONLINE }, { 0x12057c, 1, RI_ALL_ONLINE }, ++ { 0x12058c, 1, RI_ALL_ONLINE }, { 0x120608, 1, RI_E1H_ONLINE }, ++ { 0x120808, 1, RI_E1_ONLINE }, { 0x12080c, 2, RI_ALL_ONLINE }, ++ { 0x120818, 1, RI_ALL_ONLINE }, { 0x120820, 1, RI_ALL_ONLINE }, ++ { 0x120828, 1, RI_ALL_ONLINE }, { 0x120830, 1, RI_ALL_ONLINE }, ++ { 0x120838, 1, RI_ALL_ONLINE }, { 0x120840, 1, RI_ALL_ONLINE }, ++ { 0x120848, 1, RI_ALL_ONLINE }, { 0x120850, 1, RI_ALL_ONLINE }, ++ { 0x120858, 1, RI_ALL_ONLINE }, { 0x120860, 1, RI_ALL_ONLINE }, ++ { 0x120868, 1, RI_ALL_ONLINE }, { 0x120870, 1, RI_ALL_ONLINE }, ++ { 0x120878, 1, RI_ALL_ONLINE }, { 0x120880, 1, RI_ALL_ONLINE }, ++ { 0x120888, 1, RI_ALL_ONLINE }, { 0x120890, 1, RI_ALL_ONLINE }, ++ { 0x120898, 1, RI_ALL_ONLINE }, { 0x1208a0, 1, RI_ALL_ONLINE }, ++ { 0x1208a8, 1, RI_ALL_ONLINE }, { 0x1208b0, 1, RI_ALL_ONLINE }, ++ { 0x1208b8, 1, RI_ALL_ONLINE }, { 0x1208c0, 1, RI_ALL_ONLINE }, ++ { 0x1208c8, 1, RI_ALL_ONLINE }, { 0x1208d0, 1, RI_ALL_ONLINE }, ++ { 0x1208d8, 1, RI_ALL_ONLINE }, { 0x1208e0, 1, RI_ALL_ONLINE }, ++ { 0x1208e8, 1, RI_ALL_ONLINE }, { 0x1208f0, 1, RI_ALL_ONLINE }, ++ { 0x1208f8, 1, RI_ALL_ONLINE }, { 0x120900, 1, RI_ALL_ONLINE }, ++ { 0x120908, 1, RI_ALL_ONLINE }, { 0x14005c, 2, RI_ALL_ONLINE }, ++ { 0x1400d0, 2, RI_ALL_ONLINE }, { 0x1400e0, 1, RI_ALL_ONLINE }, ++ { 0x1401c8, 1, RI_ALL_ONLINE }, { 0x140200, 6, RI_ALL_ONLINE }, ++ { 0x16101c, 1, RI_ALL_ONLINE }, { 0x16102c, 1, RI_ALL_ONLINE }, ++ { 0x164014, 2, RI_ALL_ONLINE }, { 0x1640f0, 1, RI_ALL_ONLINE }, ++ { 0x166290, 1, RI_ALL_ONLINE }, { 0x1662a0, 1, RI_ALL_ONLINE }, ++ { 0x1662b0, 1, RI_ALL_ONLINE }, { 0x166548, 1, RI_ALL_ONLINE }, ++ { 0x166550, 1, RI_ALL_ONLINE }, { 0x166558, 1, RI_ALL_ONLINE }, ++ { 0x168000, 1, RI_ALL_ONLINE }, { 0x168008, 1, RI_ALL_ONLINE }, ++ { 0x168010, 1, RI_ALL_ONLINE }, { 0x168018, 1, RI_ALL_ONLINE }, ++ { 0x168028, 2, RI_ALL_ONLINE }, { 0x168058, 4, RI_ALL_ONLINE }, ++ { 0x168070, 1, RI_ALL_ONLINE }, { 0x168238, 1, RI_ALL_ONLINE }, ++ { 0x1682d0, 2, RI_ALL_ONLINE }, { 0x1682e0, 1, RI_ALL_ONLINE }, ++ { 0x168300, 67, RI_ALL_ONLINE }, { 0x168410, 2, RI_ALL_ONLINE }, ++ { 0x168438, 1, RI_ALL_ONLINE }, { 0x168448, 1, RI_ALL_ONLINE }, ++ { 0x168a00, 128, RI_ALL_ONLINE }, { 0x16e200, 128, RI_E1H_ONLINE }, ++ { 0x16e404, 2, RI_E1H_ONLINE }, { 0x16e584, 70, RI_E1H_ONLINE }, ++ { 0x1700a4, 1, RI_ALL_ONLINE }, { 0x1700ac, 2, RI_ALL_ONLINE }, ++ { 0x1700c0, 1, RI_ALL_ONLINE }, { 0x170174, 1, RI_ALL_ONLINE }, ++ { 0x170184, 1, RI_ALL_ONLINE }, { 0x1800f4, 1, RI_ALL_ONLINE }, ++ { 0x180104, 1, RI_ALL_ONLINE }, { 0x180114, 1, RI_ALL_ONLINE }, ++ { 0x180124, 1, RI_ALL_ONLINE }, { 0x18026c, 1, RI_ALL_ONLINE }, ++ { 0x1802a0, 1, RI_ALL_ONLINE }, { 0x1a1000, 1, RI_ALL_ONLINE }, ++ { 0x1aa000, 1, RI_E1H_ONLINE }, { 0x1b8000, 1, RI_ALL_ONLINE }, ++ { 0x1b8040, 1, RI_ALL_ONLINE }, { 0x1b8080, 1, RI_ALL_ONLINE }, ++ { 0x1b80c0, 1, RI_ALL_ONLINE }, { 0x200104, 1, RI_ALL_ONLINE }, ++ { 0x200114, 1, RI_ALL_ONLINE }, { 0x200124, 1, RI_ALL_ONLINE }, ++ { 0x200134, 1, RI_ALL_ONLINE }, { 0x20026c, 1, RI_ALL_ONLINE }, ++ { 0x2002a0, 1, RI_ALL_ONLINE }, { 0x221000, 1, RI_ALL_ONLINE }, ++ { 0x227000, 1, RI_E1H_ONLINE }, { 0x238000, 1, RI_ALL_ONLINE }, ++ { 0x238040, 1, RI_ALL_ONLINE }, { 0x238080, 1, RI_ALL_ONLINE }, ++ { 0x2380c0, 1, RI_ALL_ONLINE }, { 0x280104, 1, RI_ALL_ONLINE }, ++ { 0x280114, 1, RI_ALL_ONLINE }, { 0x280124, 1, RI_ALL_ONLINE }, ++ { 0x280134, 1, RI_ALL_ONLINE }, { 0x28026c, 1, RI_ALL_ONLINE }, ++ { 0x2802a0, 1, RI_ALL_ONLINE }, { 0x2a1000, 1, RI_ALL_ONLINE }, ++ { 0x2a9000, 1, RI_E1H_ONLINE }, { 0x2b8000, 1, RI_ALL_ONLINE }, ++ { 0x2b8040, 1, RI_ALL_ONLINE }, { 0x2b8080, 1, RI_ALL_ONLINE }, ++ { 0x2b80c0, 1, RI_ALL_ONLINE }, { 0x300104, 1, RI_ALL_ONLINE }, ++ { 0x300114, 1, RI_ALL_ONLINE }, { 0x300124, 1, RI_ALL_ONLINE }, ++ { 0x300134, 1, RI_ALL_ONLINE }, { 0x30026c, 1, RI_ALL_ONLINE }, ++ { 0x3002a0, 1, RI_ALL_ONLINE }, { 0x321000, 1, RI_ALL_ONLINE }, ++ { 0x328960, 1, RI_E1H_ONLINE }, { 0x338000, 1, RI_ALL_ONLINE }, ++ { 0x338040, 1, RI_ALL_ONLINE }, { 0x338080, 1, RI_ALL_ONLINE }, ++ { 0x3380c0, 1, RI_ALL_ONLINE } ++}; ++ ++#define WREGS_COUNT_E1 1 ++static const u32 read_reg_e1_0[] = { 0x1b1000 }; ++ ++static const struct wreg_addr wreg_addrs_e1[WREGS_COUNT_E1] = { ++ { 0x1b0c00, 192, 1, read_reg_e1_0, RI_E1_OFFLINE } ++}; ++ ++ ++#define WREGS_COUNT_E1H 1 ++static const u32 read_reg_e1h_0[] = { 0x1b1040, 0x1b1000 }; ++ ++static const struct wreg_addr wreg_addrs_e1h[WREGS_COUNT_E1H] = { ++ { 0x1b0c00, 256, 2, read_reg_e1h_0, RI_E1H_OFFLINE } ++}; ++ ++ ++static const struct dump_sign dump_sign_all = { 0x49aa93ee, 0x40835, 0x22 }; ++ ++ ++#define TIMER_REGS_COUNT_E1 2 ++static const u32 timer_status_regs_e1[TIMER_REGS_COUNT_E1] = ++ { 0x164014, 0x164018 }; ++static const u32 timer_scan_regs_e1[TIMER_REGS_COUNT_E1] = ++ { 0x1640d0, 0x1640d4 }; ++ ++ ++#define TIMER_REGS_COUNT_E1H 2 ++static const u32 timer_status_regs_e1h[TIMER_REGS_COUNT_E1H] = ++ { 0x164014, 0x164018 }; ++static const u32 timer_scan_regs_e1h[TIMER_REGS_COUNT_E1H] = ++ { 0x1640d0, 0x1640d4 }; ++ ++ ++#endif /* BNX2X_DUMP_H */ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_fw_defs.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_fw_defs.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_fw_defs.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_fw_defs.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,589 @@ ++/* bnx2x_fw_defs.h: Broadcom Everest network driver. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ */ ++ ++ ++#define CSTORM_ASSERT_LIST_INDEX_OFFSET \ ++ (IS_E1H_OFFSET ? 0x7000 : 0x1000) ++#define CSTORM_ASSERT_LIST_OFFSET(idx) \ ++ (IS_E1H_OFFSET ? (0x7020 + (idx * 0x10)) : (0x1020 + (idx * 0x10))) ++#define CSTORM_DEF_SB_HC_DISABLE_C_OFFSET(function, index) \ ++ (IS_E1H_OFFSET ? (0x8622 + ((function>>1) * 0x40) + \ ++ ((function&1) * 0x100) + (index * 0x4)) : (0x3562 + (function * \ ++ 0x40) + (index * 0x4))) ++#define CSTORM_DEF_SB_HC_DISABLE_U_OFFSET(function, index) \ ++ (IS_E1H_OFFSET ? (0x8822 + ((function>>1) * 0x80) + \ ++ ((function&1) * 0x200) + (index * 0x4)) : (0x35e2 + (function * \ ++ 0x80) + (index * 0x4))) ++#define CSTORM_DEF_SB_HOST_SB_ADDR_C_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8600 + ((function>>1) * 0x40) + \ ++ ((function&1) * 0x100)) : (0x3540 + (function * 0x40))) ++#define CSTORM_DEF_SB_HOST_SB_ADDR_U_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8800 + ((function>>1) * 0x80) + \ ++ ((function&1) * 0x200)) : (0x35c0 + (function * 0x80))) ++#define CSTORM_DEF_SB_HOST_STATUS_BLOCK_C_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8608 + ((function>>1) * 0x40) + \ ++ ((function&1) * 0x100)) : (0x3548 + (function * 0x40))) ++#define CSTORM_DEF_SB_HOST_STATUS_BLOCK_U_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8808 + ((function>>1) * 0x80) + \ ++ ((function&1) * 0x200)) : (0x35c8 + (function * 0x80))) ++#define CSTORM_FUNCTION_MODE_OFFSET \ ++ (IS_E1H_OFFSET ? 0x11e8 : 0xffffffff) ++#define CSTORM_HC_BTR_C_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0x8c04 + (port * 0xf0)) : (0x36c4 + (port * 0xc0))) ++#define CSTORM_HC_BTR_U_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0x8de4 + (port * 0xf0)) : (0x3844 + (port * 0xc0))) ++#define CSTORM_ISCSI_CQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6680 + (function * 0x8)) : (0x25a0 + \ ++ (function * 0x8))) ++#define CSTORM_ISCSI_CQ_SQN_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x66c0 + (function * 0x8)) : (0x25b0 + \ ++ (function * 0x8))) ++#define CSTORM_ISCSI_EQ_CONS_OFFSET(function, eqIdx) \ ++ (IS_E1H_OFFSET ? (0x6040 + (function * 0xc0) + (eqIdx * 0x18)) : \ ++ (0x2410 + (function * 0xc0) + (eqIdx * 0x18))) ++#define CSTORM_ISCSI_EQ_NEXT_EQE_ADDR_OFFSET(function, eqIdx) \ ++ (IS_E1H_OFFSET ? (0x6044 + (function * 0xc0) + (eqIdx * 0x18)) : \ ++ (0x2414 + (function * 0xc0) + (eqIdx * 0x18))) ++#define CSTORM_ISCSI_EQ_NEXT_PAGE_ADDR_OFFSET(function, eqIdx) \ ++ (IS_E1H_OFFSET ? (0x604c + (function * 0xc0) + (eqIdx * 0x18)) : \ ++ (0x241c + (function * 0xc0) + (eqIdx * 0x18))) ++#define CSTORM_ISCSI_EQ_NEXT_PAGE_ADDR_VALID_OFFSET(function, eqIdx) \ ++ (IS_E1H_OFFSET ? (0x6057 + (function * 0xc0) + (eqIdx * 0x18)) : \ ++ (0x2427 + (function * 0xc0) + (eqIdx * 0x18))) ++#define CSTORM_ISCSI_EQ_PROD_OFFSET(function, eqIdx) \ ++ (IS_E1H_OFFSET ? (0x6042 + (function * 0xc0) + (eqIdx * 0x18)) : \ ++ (0x2412 + (function * 0xc0) + (eqIdx * 0x18))) ++#define CSTORM_ISCSI_EQ_SB_INDEX_OFFSET(function, eqIdx) \ ++ (IS_E1H_OFFSET ? (0x6056 + (function * 0xc0) + (eqIdx * 0x18)) : \ ++ (0x2426 + (function * 0xc0) + (eqIdx * 0x18))) ++#define CSTORM_ISCSI_EQ_SB_NUM_OFFSET(function, eqIdx) \ ++ (IS_E1H_OFFSET ? (0x6054 + (function * 0xc0) + (eqIdx * 0x18)) : \ ++ (0x2424 + (function * 0xc0) + (eqIdx * 0x18))) ++#define CSTORM_ISCSI_HQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6640 + (function * 0x8)) : (0x2590 + \ ++ (function * 0x8))) ++#define CSTORM_ISCSI_NUM_OF_TASKS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6004 + (function * 0x8)) : (0x2404 + \ ++ (function * 0x8))) ++#define CSTORM_ISCSI_PAGE_SIZE_LOG_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6002 + (function * 0x8)) : (0x2402 + \ ++ (function * 0x8))) ++#define CSTORM_ISCSI_PAGE_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6000 + (function * 0x8)) : (0x2400 + \ ++ (function * 0x8))) ++#define CSTORM_SB_HC_DISABLE_C_OFFSET(port, cpu_id, index) \ ++ (IS_E1H_OFFSET ? (0x811a + (port * 0x280) + (cpu_id * 0x28) + \ ++ (index * 0x4)) : (0x305a + (port * 0x280) + (cpu_id * 0x28) + \ ++ (index * 0x4))) ++#define CSTORM_SB_HC_DISABLE_U_OFFSET(port, cpu_id, index) \ ++ (IS_E1H_OFFSET ? (0xb01a + (port * 0x800) + (cpu_id * 0x80) + \ ++ (index * 0x4)) : (0x401a + (port * 0x800) + (cpu_id * 0x80) + \ ++ (index * 0x4))) ++#define CSTORM_SB_HC_TIMEOUT_C_OFFSET(port, cpu_id, index) \ ++ (IS_E1H_OFFSET ? (0x8118 + (port * 0x280) + (cpu_id * 0x28) + \ ++ (index * 0x4)) : (0x3058 + (port * 0x280) + (cpu_id * 0x28) + \ ++ (index * 0x4))) ++#define CSTORM_SB_HC_TIMEOUT_U_OFFSET(port, cpu_id, index) \ ++ (IS_E1H_OFFSET ? (0xb018 + (port * 0x800) + (cpu_id * 0x80) + \ ++ (index * 0x4)) : (0x4018 + (port * 0x800) + (cpu_id * 0x80) + \ ++ (index * 0x4))) ++#define CSTORM_SB_HOST_SB_ADDR_C_OFFSET(port, cpu_id) \ ++ (IS_E1H_OFFSET ? (0x8100 + (port * 0x280) + (cpu_id * 0x28)) : \ ++ (0x3040 + (port * 0x280) + (cpu_id * 0x28))) ++#define CSTORM_SB_HOST_SB_ADDR_U_OFFSET(port, cpu_id) \ ++ (IS_E1H_OFFSET ? (0xb000 + (port * 0x800) + (cpu_id * 0x80)) : \ ++ (0x4000 + (port * 0x800) + (cpu_id * 0x80))) ++#define CSTORM_SB_HOST_STATUS_BLOCK_C_OFFSET(port, cpu_id) \ ++ (IS_E1H_OFFSET ? (0x8108 + (port * 0x280) + (cpu_id * 0x28)) : \ ++ (0x3048 + (port * 0x280) + (cpu_id * 0x28))) ++#define CSTORM_SB_HOST_STATUS_BLOCK_U_OFFSET(port, cpu_id) \ ++ (IS_E1H_OFFSET ? (0xb008 + (port * 0x800) + (cpu_id * 0x80)) : \ ++ (0x4008 + (port * 0x800) + (cpu_id * 0x80))) ++#define CSTORM_SB_STATUS_BLOCK_C_SIZE 0x10 ++#define CSTORM_SB_STATUS_BLOCK_U_SIZE 0x60 ++#define CSTORM_STATS_FLAGS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x1108 + (function * 0x8)) : (0x5108 + \ ++ (function * 0x8))) ++#define TSTORM_APPROXIMATE_MATCH_MULTICAST_FILTERING_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x3200 + (function * 0x20)) : 0xffffffff) ++#define TSTORM_ASSERT_LIST_INDEX_OFFSET \ ++ (IS_E1H_OFFSET ? 0xa000 : 0x1000) ++#define TSTORM_ASSERT_LIST_OFFSET(idx) \ ++ (IS_E1H_OFFSET ? (0xa020 + (idx * 0x10)) : (0x1020 + (idx * 0x10))) ++#define TSTORM_CLIENT_CONFIG_OFFSET(port, client_id) \ ++ (IS_E1H_OFFSET ? (0x33a0 + (port * 0x1a0) + (client_id * 0x10)) \ ++ : (0x9c0 + (port * 0x120) + (client_id * 0x10))) ++#define TSTORM_COMMON_SAFC_WORKAROUND_ENABLE_OFFSET \ ++ (IS_E1H_OFFSET ? 0x1ed8 : 0xffffffff) ++#define TSTORM_COMMON_SAFC_WORKAROUND_TIMEOUT_10USEC_OFFSET \ ++ (IS_E1H_OFFSET ? 0x1eda : 0xffffffff) ++#define TSTORM_DEF_SB_HC_DISABLE_OFFSET(function, index) \ ++ (IS_E1H_OFFSET ? (0xb01a + ((function>>1) * 0x28) + \ ++ ((function&1) * 0xa0) + (index * 0x4)) : (0x141a + (function * \ ++ 0x28) + (index * 0x4))) ++#define TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0xb000 + ((function>>1) * 0x28) + \ ++ ((function&1) * 0xa0)) : (0x1400 + (function * 0x28))) ++#define TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0xb008 + ((function>>1) * 0x28) + \ ++ ((function&1) * 0xa0)) : (0x1408 + (function * 0x28))) ++#define TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2940 + (function * 0x8)) : (0x4928 + \ ++ (function * 0x8))) ++#define TSTORM_FUNCTION_COMMON_CONFIG_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x3000 + (function * 0x40)) : (0x1500 + \ ++ (function * 0x40))) ++#define TSTORM_FUNCTION_MODE_OFFSET \ ++ (IS_E1H_OFFSET ? 0x1ed0 : 0xffffffff) ++#define TSTORM_HC_BTR_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0xb144 + (port * 0x30)) : (0x1454 + (port * 0x18))) ++#define TSTORM_INDIRECTION_TABLE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x12c8 + (function * 0x80)) : (0x22c8 + \ ++ (function * 0x80))) ++#define TSTORM_INDIRECTION_TABLE_SIZE 0x80 ++#define TSTORM_ISCSI_CONN_BUF_PBL_OFFSET(function, pblEntry) \ ++ (IS_E1H_OFFSET ? (0x60c0 + (function * 0x40) + (pblEntry * 0x8)) \ ++ : (0x4c30 + (function * 0x40) + (pblEntry * 0x8))) ++#define TSTORM_ISCSI_ERROR_BITMAP_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6340 + (function * 0x8)) : (0x4cd0 + \ ++ (function * 0x8))) ++#define TSTORM_ISCSI_NUM_OF_TASKS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6004 + (function * 0x8)) : (0x4c04 + \ ++ (function * 0x8))) ++#define TSTORM_ISCSI_PAGE_SIZE_LOG_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6002 + (function * 0x8)) : (0x4c02 + \ ++ (function * 0x8))) ++#define TSTORM_ISCSI_PAGE_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6000 + (function * 0x8)) : (0x4c00 + \ ++ (function * 0x8))) ++#define TSTORM_ISCSI_RQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6080 + (function * 0x8)) : (0x4c20 + \ ++ (function * 0x8))) ++#define TSTORM_ISCSI_TCP_VARS_FLAGS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6040 + (function * 0x8)) : (0x4c10 + \ ++ (function * 0x8))) ++#define TSTORM_ISCSI_TCP_VARS_LSB_LOCAL_MAC_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6042 + (function * 0x8)) : (0x4c12 + \ ++ (function * 0x8))) ++#define TSTORM_ISCSI_TCP_VARS_MSB_LOCAL_MAC_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x6044 + (function * 0x8)) : (0x4c14 + \ ++ (function * 0x8))) ++#define TSTORM_MAC_FILTER_CONFIG_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x3008 + (function * 0x40)) : (0x1508 + \ ++ (function * 0x40))) ++#define TSTORM_PER_COUNTER_ID_STATS_OFFSET(port, stats_counter_id) \ ++ (IS_E1H_OFFSET ? (0x2010 + (port * 0x490) + (stats_counter_id * \ ++ 0x40)) : (0x4010 + (port * 0x490) + (stats_counter_id * 0x40))) ++#define TSTORM_STATS_FLAGS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x29c0 + (function * 0x8)) : (0x4948 + \ ++ (function * 0x8))) ++#define TSTORM_TCP_MAX_CWND_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x4004 + (function * 0x8)) : (0x1fb4 + \ ++ (function * 0x8))) ++#define USTORM_AGG_DATA_OFFSET (IS_E1H_OFFSET ? 0xa000 : 0x3000) ++#define USTORM_AGG_DATA_SIZE (IS_E1H_OFFSET ? 0x2000 : 0x1000) ++#define USTORM_ASSERT_LIST_INDEX_OFFSET \ ++ (IS_E1H_OFFSET ? 0x8000 : 0x1000) ++#define USTORM_ASSERT_LIST_OFFSET(idx) \ ++ (IS_E1H_OFFSET ? (0x8020 + (idx * 0x10)) : (0x1020 + (idx * 0x10))) ++#define USTORM_CQE_PAGE_BASE_OFFSET(port, clientId) \ ++ (IS_E1H_OFFSET ? (0x1010 + (port * 0x680) + (clientId * 0x40)) : \ ++ (0x4010 + (port * 0x360) + (clientId * 0x30))) ++#define USTORM_CQE_PAGE_NEXT_OFFSET(port, clientId) \ ++ (IS_E1H_OFFSET ? (0x1028 + (port * 0x680) + (clientId * 0x40)) : \ ++ (0x4028 + (port * 0x360) + (clientId * 0x30))) ++#define USTORM_ETH_PAUSE_ENABLED_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0x2ad4 + (port * 0x8)) : 0xffffffff) ++#define USTORM_ETH_RING_PAUSE_DATA_OFFSET(port, clientId) \ ++ (IS_E1H_OFFSET ? (0x1030 + (port * 0x680) + (clientId * 0x40)) : \ ++ 0xffffffff) ++#define USTORM_ETH_STATS_QUERY_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2a50 + (function * 0x8)) : (0x1dd0 + \ ++ (function * 0x8))) ++#define USTORM_FUNCTION_MODE_OFFSET \ ++ (IS_E1H_OFFSET ? 0x2448 : 0xffffffff) ++#define USTORM_ISCSI_CQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7044 + (function * 0x8)) : (0x2414 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_CQ_SQN_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7046 + (function * 0x8)) : (0x2416 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_ERROR_BITMAP_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7688 + (function * 0x8)) : (0x29c8 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_GLOBAL_BUF_PHYS_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7648 + (function * 0x8)) : (0x29b8 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_NUM_OF_TASKS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7004 + (function * 0x8)) : (0x2404 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_PAGE_SIZE_LOG_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7002 + (function * 0x8)) : (0x2402 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_PAGE_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7000 + (function * 0x8)) : (0x2400 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_R2TQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7040 + (function * 0x8)) : (0x2410 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_RQ_BUFFER_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7080 + (function * 0x8)) : (0x2420 + \ ++ (function * 0x8))) ++#define USTORM_ISCSI_RQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x7084 + (function * 0x8)) : (0x2424 + \ ++ (function * 0x8))) ++#define USTORM_MAX_AGG_SIZE_OFFSET(port, clientId) \ ++ (IS_E1H_OFFSET ? (0x1018 + (port * 0x680) + (clientId * 0x40)) : \ ++ (0x4018 + (port * 0x360) + (clientId * 0x30))) ++#define USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2408 + (function * 0x8)) : (0x1da8 + \ ++ (function * 0x8))) ++#define USTORM_PER_COUNTER_ID_STATS_OFFSET(port, stats_counter_id) \ ++ (IS_E1H_OFFSET ? (0x2450 + (port * 0x2d0) + (stats_counter_id * \ ++ 0x28)) : (0x1500 + (port * 0x2d0) + (stats_counter_id * 0x28))) ++#define USTORM_RX_PRODS_OFFSET(port, client_id) \ ++ (IS_E1H_OFFSET ? (0x1000 + (port * 0x680) + (client_id * 0x40)) \ ++ : (0x4000 + (port * 0x360) + (client_id * 0x30))) ++#define USTORM_STATS_FLAGS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x29f0 + (function * 0x8)) : (0x1db8 + \ ++ (function * 0x8))) ++#define USTORM_TPA_BTR_OFFSET (IS_E1H_OFFSET ? 0x3da5 : 0x5095) ++#define USTORM_TPA_BTR_SIZE 0x1 ++#define XSTORM_ASSERT_LIST_INDEX_OFFSET \ ++ (IS_E1H_OFFSET ? 0x9000 : 0x1000) ++#define XSTORM_ASSERT_LIST_OFFSET(idx) \ ++ (IS_E1H_OFFSET ? (0x9020 + (idx * 0x10)) : (0x1020 + (idx * 0x10))) ++#define XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0x24a8 + (port * 0x50)) : (0x3a80 + (port * 0x50))) ++#define XSTORM_DEF_SB_HC_DISABLE_OFFSET(function, index) \ ++ (IS_E1H_OFFSET ? (0xa01a + ((function>>1) * 0x28) + \ ++ ((function&1) * 0xa0) + (index * 0x4)) : (0x141a + (function * \ ++ 0x28) + (index * 0x4))) ++#define XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0xa000 + ((function>>1) * 0x28) + \ ++ ((function&1) * 0xa0)) : (0x1400 + (function * 0x28))) ++#define XSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0xa008 + ((function>>1) * 0x28) + \ ++ ((function&1) * 0xa0)) : (0x1408 + (function * 0x28))) ++#define XSTORM_E1HOV_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2c10 + (function * 0x8)) : 0xffffffff) ++#define XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2418 + (function * 0x8)) : (0x3a50 + \ ++ (function * 0x8))) ++#define XSTORM_FAIRNESS_PER_VN_VARS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2588 + (function * 0x90)) : (0x3b60 + \ ++ (function * 0x90))) ++#define XSTORM_FUNCTION_MODE_OFFSET \ ++ (IS_E1H_OFFSET ? 0x2c50 : 0xffffffff) ++#define XSTORM_HC_BTR_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0xa144 + (port * 0x30)) : (0x1454 + (port * 0x18))) ++#define XSTORM_ISCSI_HQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x80c0 + (function * 0x8)) : (0x1c30 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_LOCAL_MAC_ADDR0_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8080 + (function * 0x8)) : (0x1c20 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_LOCAL_MAC_ADDR1_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8081 + (function * 0x8)) : (0x1c21 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_LOCAL_MAC_ADDR2_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8082 + (function * 0x8)) : (0x1c22 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_LOCAL_MAC_ADDR3_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8083 + (function * 0x8)) : (0x1c23 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_LOCAL_MAC_ADDR4_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8084 + (function * 0x8)) : (0x1c24 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_LOCAL_MAC_ADDR5_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8085 + (function * 0x8)) : (0x1c25 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_LOCAL_VLAN_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8086 + (function * 0x8)) : (0x1c26 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_NUM_OF_TASKS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8004 + (function * 0x8)) : (0x1c04 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_PAGE_SIZE_LOG_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8002 + (function * 0x8)) : (0x1c02 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_PAGE_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8000 + (function * 0x8)) : (0x1c00 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_R2TQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x80c4 + (function * 0x8)) : (0x1c34 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_SQ_SIZE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x80c2 + (function * 0x8)) : (0x1c32 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_TCP_VARS_ADV_WND_SCL_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8043 + (function * 0x8)) : (0x1c13 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_TCP_VARS_FLAGS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8042 + (function * 0x8)) : (0x1c12 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_TCP_VARS_TOS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8041 + (function * 0x8)) : (0x1c11 + \ ++ (function * 0x8))) ++#define XSTORM_ISCSI_TCP_VARS_TTL_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x8040 + (function * 0x8)) : (0x1c10 + \ ++ (function * 0x8))) ++#define XSTORM_PER_COUNTER_ID_STATS_OFFSET(port, stats_counter_id) \ ++ (IS_E1H_OFFSET ? (0xc000 + (port * 0x360) + (stats_counter_id * \ ++ 0x30)) : (0x3378 + (port * 0x360) + (stats_counter_id * 0x30))) ++#define XSTORM_RATE_SHAPING_PER_VN_VARS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2548 + (function * 0x90)) : (0x3b20 + \ ++ (function * 0x90))) ++#define XSTORM_SPQ_PAGE_BASE_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2000 + (function * 0x10)) : (0x3328 + \ ++ (function * 0x10))) ++#define XSTORM_SPQ_PROD_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x2008 + (function * 0x10)) : (0x3330 + \ ++ (function * 0x10))) ++#define XSTORM_STATS_FLAGS_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x23d8 + (function * 0x8)) : (0x3a40 + \ ++ (function * 0x8))) ++#define XSTORM_TCP_GLOBAL_DEL_ACK_COUNTER_ENABLED_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0x4000 + (port * 0x8)) : (0x1960 + (port * 0x8))) ++#define XSTORM_TCP_GLOBAL_DEL_ACK_COUNTER_MAX_COUNT_OFFSET(port) \ ++ (IS_E1H_OFFSET ? (0x4001 + (port * 0x8)) : (0x1961 + (port * 0x8))) ++#define XSTORM_TCP_TX_SWS_TIMER_VAL_OFFSET(function) \ ++ (IS_E1H_OFFSET ? (0x4060 + ((function>>1) * 0x8) + ((function&1) \ ++ * 0x4)) : (0x1978 + (function * 0x4))) ++#define COMMON_ASM_INVALID_ASSERT_OPCODE 0x0 ++ ++/** ++* This file defines HSI constants for the ETH flow ++*/ ++#ifdef _EVEREST_MICROCODE ++#include "microcode_constants.h" ++#include "eth_rx_bd.h" ++#include "eth_tx_bd.h" ++#include "eth_rx_cqe.h" ++#include "eth_rx_sge.h" ++#include "eth_rx_cqe_next_page.h" ++#endif ++ ++/* RSS hash types */ ++#define DEFAULT_HASH_TYPE 0 ++#define IPV4_HASH_TYPE 1 ++#define TCP_IPV4_HASH_TYPE 2 ++#define IPV6_HASH_TYPE 3 ++#define TCP_IPV6_HASH_TYPE 4 ++#define VLAN_PRI_HASH_TYPE 5 ++#define E1HOV_PRI_HASH_TYPE 6 ++#define DSCP_HASH_TYPE 7 ++ ++ ++/* Ethernet Ring parameters */ ++#define X_ETH_LOCAL_RING_SIZE 13 ++#define FIRST_BD_IN_PKT 0 ++#define PARSE_BD_INDEX 1 ++#define NUM_OF_ETH_BDS_IN_PAGE ((PAGE_SIZE)/(STRUCT_SIZE(eth_tx_bd)/8)) ++#define U_ETH_NUM_OF_SGES_TO_FETCH 8 ++#define U_ETH_MAX_SGES_FOR_PACKET 3 ++ ++/* Rx ring params */ ++#define U_ETH_LOCAL_BD_RING_SIZE 8 ++#define U_ETH_LOCAL_SGE_RING_SIZE 10 ++#define U_ETH_SGL_SIZE 8 ++ ++ ++#define U_ETH_SGES_PER_PAGE_INVERSE_MASK \ ++ (0xFFFF - ((PAGE_SIZE/((STRUCT_SIZE(eth_rx_sge))/8))-1)) ++ ++#define TU_ETH_CQES_PER_PAGE (PAGE_SIZE/(STRUCT_SIZE(eth_rx_cqe)/8)) ++#define U_ETH_BDS_PER_PAGE (PAGE_SIZE/(STRUCT_SIZE(eth_rx_bd)/8)) ++#define U_ETH_SGES_PER_PAGE (PAGE_SIZE/(STRUCT_SIZE(eth_rx_sge)/8)) ++ ++#define U_ETH_BDS_PER_PAGE_MASK (U_ETH_BDS_PER_PAGE-1) ++#define U_ETH_CQE_PER_PAGE_MASK (TU_ETH_CQES_PER_PAGE-1) ++#define U_ETH_SGES_PER_PAGE_MASK (U_ETH_SGES_PER_PAGE-1) ++ ++#define U_ETH_UNDEFINED_Q 0xFF ++ ++/* values of command IDs in the ramrod message */ ++#define RAMROD_CMD_ID_ETH_PORT_SETUP 80 ++#define RAMROD_CMD_ID_ETH_CLIENT_SETUP 85 ++#define RAMROD_CMD_ID_ETH_STAT_QUERY 90 ++#define RAMROD_CMD_ID_ETH_UPDATE 100 ++#define RAMROD_CMD_ID_ETH_HALT 105 ++#define RAMROD_CMD_ID_ETH_SET_MAC 110 ++#define RAMROD_CMD_ID_ETH_CFC_DEL 115 ++#define RAMROD_CMD_ID_ETH_PORT_DEL 120 ++#define RAMROD_CMD_ID_ETH_FORWARD_SETUP 125 ++ ++ ++/* command values for set mac command */ ++#define T_ETH_MAC_COMMAND_SET 0 ++#define T_ETH_MAC_COMMAND_INVALIDATE 1 ++ ++#define T_ETH_INDIRECTION_TABLE_SIZE 128 ++ ++/*The CRC32 seed, that is used for the hash(reduction) multicast address */ ++#define T_ETH_CRC32_HASH_SEED 0x00000000 ++ ++/* Maximal L2 clients supported */ ++#define ETH_MAX_RX_CLIENTS_E1 18 ++#define ETH_MAX_RX_CLIENTS_E1H 26 ++ ++/* Maximal aggregation queues supported */ ++#define ETH_MAX_AGGREGATION_QUEUES_E1 32 ++#define ETH_MAX_AGGREGATION_QUEUES_E1H 64 ++ ++/* ETH RSS modes */ ++#define ETH_RSS_MODE_DISABLED 0 ++#define ETH_RSS_MODE_REGULAR 1 ++#define ETH_RSS_MODE_VLAN_PRI 2 ++#define ETH_RSS_MODE_E1HOV_PRI 3 ++#define ETH_RSS_MODE_IP_DSCP 4 ++ ++ ++/** ++* This file defines HSI constants common to all microcode flows ++*/ ++ ++/* Connection types */ ++#define ETH_CONNECTION_TYPE 0 ++#define TOE_CONNECTION_TYPE 1 ++#define RDMA_CONNECTION_TYPE 2 ++#define ISCSI_CONNECTION_TYPE 3 ++#define FCOE_CONNECTION_TYPE 4 ++#define RESERVED_CONNECTION_TYPE_0 5 ++#define RESERVED_CONNECTION_TYPE_1 6 ++#define RESERVED_CONNECTION_TYPE_2 7 ++ ++ ++#define PROTOCOL_STATE_BIT_OFFSET 6 ++ ++#define ETH_STATE (ETH_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET) ++#define TOE_STATE (TOE_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET) ++#define RDMA_STATE (RDMA_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET) ++ ++/* microcode fixed page page size 4K (chains and ring segments) */ ++#define MC_PAGE_SIZE 4096 ++ ++ ++/* Host coalescing constants */ ++ ++/* index numbers */ ++#define HC_USTORM_DEF_SB_NUM_INDICES 8 ++#define HC_CSTORM_DEF_SB_NUM_INDICES 8 ++#define HC_XSTORM_DEF_SB_NUM_INDICES 4 ++#define HC_TSTORM_DEF_SB_NUM_INDICES 4 ++#define HC_USTORM_SB_NUM_INDICES 4 ++#define HC_CSTORM_SB_NUM_INDICES 4 ++ ++/* index values - which counter to update */ ++ ++#define HC_INDEX_U_TOE_RX_CQ_CONS 0 ++#define HC_INDEX_U_ETH_RX_CQ_CONS 1 ++#define HC_INDEX_U_ETH_RX_BD_CONS 2 ++#define HC_INDEX_U_FCOE_EQ_CONS 3 ++ ++#define HC_INDEX_C_TOE_TX_CQ_CONS 0 ++#define HC_INDEX_C_ETH_TX_CQ_CONS 1 ++#define HC_INDEX_C_ISCSI_EQ_CONS 2 ++ ++#define HC_INDEX_DEF_X_SPQ_CONS 0 ++ ++#define HC_INDEX_DEF_C_RDMA_EQ_CONS 0 ++#define HC_INDEX_DEF_C_RDMA_NAL_PROD 1 ++#define HC_INDEX_DEF_C_ETH_FW_TX_CQ_CONS 2 ++#define HC_INDEX_DEF_C_ETH_SLOW_PATH 3 ++#define HC_INDEX_DEF_C_ETH_RDMA_CQ_CONS 4 ++#define HC_INDEX_DEF_C_ETH_ISCSI_CQ_CONS 5 ++#define HC_INDEX_DEF_C_ETH_FCOE_CQ_CONS 6 ++ ++#define HC_INDEX_DEF_U_ETH_RDMA_RX_CQ_CONS 0 ++#define HC_INDEX_DEF_U_ETH_ISCSI_RX_CQ_CONS 1 ++#define HC_INDEX_DEF_U_ETH_RDMA_RX_BD_CONS 2 ++#define HC_INDEX_DEF_U_ETH_ISCSI_RX_BD_CONS 3 ++#define HC_INDEX_DEF_U_ETH_FCOE_RX_CQ_CONS 4 ++#define HC_INDEX_DEF_U_ETH_FCOE_RX_BD_CONS 5 ++ ++/* used by the driver to get the SB offset */ ++#define USTORM_ID 0 ++#define CSTORM_ID 1 ++#define XSTORM_ID 2 ++#define TSTORM_ID 3 ++#define ATTENTION_ID 4 ++ ++/* max number of slow path commands per port */ ++#define MAX_RAMRODS_PER_PORT 8 ++ ++/* values for RX ETH CQE type field */ ++#define RX_ETH_CQE_TYPE_ETH_FASTPATH 0 ++#define RX_ETH_CQE_TYPE_ETH_RAMROD 1 ++ ++ ++/**** DEFINES FOR TIMERS/CLOCKS RESOLUTIONS ****/ ++#define EMULATION_FREQUENCY_FACTOR 1600 ++#define FPGA_FREQUENCY_FACTOR 100 ++ ++#define TIMERS_TICK_SIZE_CHIP (1e-3) ++#define TIMERS_TICK_SIZE_EMUL \ ++ ((TIMERS_TICK_SIZE_CHIP)/((EMULATION_FREQUENCY_FACTOR))) ++#define TIMERS_TICK_SIZE_FPGA \ ++ ((TIMERS_TICK_SIZE_CHIP)/((FPGA_FREQUENCY_FACTOR))) ++ ++#define TSEMI_CLK1_RESUL_CHIP (1e-3) ++#define TSEMI_CLK1_RESUL_EMUL \ ++ ((TSEMI_CLK1_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR)) ++#define TSEMI_CLK1_RESUL_FPGA \ ++ ((TSEMI_CLK1_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR)) ++ ++#define USEMI_CLK1_RESUL_CHIP (TIMERS_TICK_SIZE_CHIP) ++#define USEMI_CLK1_RESUL_EMUL (TIMERS_TICK_SIZE_EMUL) ++#define USEMI_CLK1_RESUL_FPGA (TIMERS_TICK_SIZE_FPGA) ++ ++#define XSEMI_CLK1_RESUL_CHIP (1e-3) ++#define XSEMI_CLK1_RESUL_EMUL \ ++ ((XSEMI_CLK1_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR)) ++#define XSEMI_CLK1_RESUL_FPGA \ ++ ((XSEMI_CLK1_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR)) ++ ++#define XSEMI_CLK2_RESUL_CHIP (1e-6) ++#define XSEMI_CLK2_RESUL_EMUL \ ++ ((XSEMI_CLK2_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR)) ++#define XSEMI_CLK2_RESUL_FPGA \ ++ ((XSEMI_CLK2_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR)) ++ ++#define SDM_TIMER_TICK_RESUL_CHIP (4*(1e-6)) ++#define SDM_TIMER_TICK_RESUL_EMUL \ ++ ((SDM_TIMER_TICK_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR)) ++#define SDM_TIMER_TICK_RESUL_FPGA \ ++ ((SDM_TIMER_TICK_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR)) ++ ++ ++/**** END DEFINES FOR TIMERS/CLOCKS RESOLUTIONS ****/ ++#define XSTORM_IP_ID_ROLL_HALF 0x8000 ++#define XSTORM_IP_ID_ROLL_ALL 0 ++ ++#define FW_LOG_LIST_SIZE 50 ++ ++#define NUM_OF_PROTOCOLS 4 ++#define NUM_OF_SAFC_BITS 16 ++#define MAX_COS_NUMBER 4 ++#define MAX_T_STAT_COUNTER_ID 18 ++#define MAX_X_STAT_COUNTER_ID 18 ++#define MAX_U_STAT_COUNTER_ID 18 ++ ++ ++#define UNKNOWN_ADDRESS 0 ++#define UNICAST_ADDRESS 1 ++#define MULTICAST_ADDRESS 2 ++#define BROADCAST_ADDRESS 3 ++ ++#define SINGLE_FUNCTION 0 ++#define MULTI_FUNCTION 1 ++ ++#define IP_V4 0 ++#define IP_V6 1 ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_fw_file_hdr.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_fw_file_hdr.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_fw_file_hdr.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_fw_file_hdr.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,37 @@ ++/* bnx2x_fw_file_hdr.h: FW binary file header structure. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ * Maintained by: Eilon Greenstein ++ * Written by: Vladislav Zolotarov ++ * Based on the original idea of John Wright . ++ */ ++ ++#ifndef BNX2X_INIT_FILE_HDR_H ++#define BNX2X_INIT_FILE_HDR_H ++ ++struct bnx2x_fw_file_section { ++ __be32 len; ++ __be32 offset; ++}; ++ ++struct bnx2x_fw_file_hdr { ++ struct bnx2x_fw_file_section init_ops; ++ struct bnx2x_fw_file_section init_ops_offsets; ++ struct bnx2x_fw_file_section init_data; ++ struct bnx2x_fw_file_section tsem_int_table_data; ++ struct bnx2x_fw_file_section tsem_pram_data; ++ struct bnx2x_fw_file_section usem_int_table_data; ++ struct bnx2x_fw_file_section usem_pram_data; ++ struct bnx2x_fw_file_section csem_int_table_data; ++ struct bnx2x_fw_file_section csem_pram_data; ++ struct bnx2x_fw_file_section xsem_int_table_data; ++ struct bnx2x_fw_file_section xsem_pram_data; ++ struct bnx2x_fw_file_section fw_version; ++}; ++ ++#endif /* BNX2X_INIT_FILE_HDR_H */ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x.h 2010-03-10 20:21:34.659214293 -0500 +@@ -0,0 +1,1446 @@ ++/* bnx2x.h: Broadcom Everest network driver. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ * Maintained by: Eilon Greenstein ++ * Written by: Eliezer Tamir ++ * Based on code from Michael Chan's bnx2 driver ++ */ ++ ++#ifndef BNX2X_H ++#define BNX2X_H ++ ++/* compilation time flags */ ++ ++/* define this to make the driver freeze on error to allow getting debug info ++ * (you will need to reboot afterwards) */ ++/* #define BNX2X_STOP_ON_ERROR */ ++ ++#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) ++#define BCM_VLAN 1 ++#endif ++ ++#if (LINUX_VERSION_CODE >= 0x020610) /* ! BNX2X_UPSTREAM */ ++#define BCM_CNIC ++#endif ++ ++#if ((LINUX_VERSION_CODE >= 0x020617) && !defined(NETIF_F_MULTI_QUEUE)) /* BNX2X_UPSTREAM */ ++#define BNX2X_MULTI_QUEUE ++#endif ++ ++#if (LINUX_VERSION_CODE >= 0x020618) || defined(__VMKLNX__) /* BNX2X_UPSTREAM */ ++#define BNX2X_NEW_NAPI ++#endif ++ ++#if defined(BNX2X_MULTI_QUEUE) && !defined(__VMKLNX__) /* ! BNX2X_UPSTREAM */ ++#define BNX2X_SAFC ++#endif ++ ++#ifdef __VMKLNX__ /* ! BNX2X_UPSTREAM */ ++#if (VMWARE_ESX_DDK_VERSION < 40000) ++#define __NO_TPA__ 1 ++#else ++#define BCM_CNIC ++#define BNX2X_MULTI_QUEUE ++#endif ++#define KERN_CONT KERN_INFO ++#endif ++ ++#if (LINUX_VERSION_CODE > 0x02061e) /* BNX2X_UPSTREAM */ ++#include ++#endif ++#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */ ++#include "bnx2x_compat.h" ++#endif ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++#include "cnic_drv.h" ++#endif ++#include "bnx2x_reg.h" ++#include "bnx2x_fw_defs.h" ++#include "bnx2x_hsi.h" ++#include "bnx2x_link.h" ++ ++/* error/debug prints */ ++ ++#define DRV_MODULE_NAME "bnx2x" ++#define PFX DRV_MODULE_NAME ": " ++ ++/* for messages that are currently off */ ++#define BNX2X_MSG_OFF 0 ++#define BNX2X_MSG_MCP 0x010000 /* was: NETIF_MSG_HW */ ++#define BNX2X_MSG_STATS 0x020000 /* was: NETIF_MSG_TIMER */ ++#define BNX2X_MSG_NVM 0x040000 /* was: NETIF_MSG_HW */ ++#define BNX2X_MSG_DMAE 0x080000 /* was: NETIF_MSG_HW */ ++#define BNX2X_MSG_SP 0x100000 /* was: NETIF_MSG_INTR */ ++#define BNX2X_MSG_FP 0x200000 /* was: NETIF_MSG_INTR */ ++ ++#define DP_LEVEL KERN_NOTICE /* was: KERN_DEBUG */ ++ ++/* regular debug print */ ++#define DP(__mask, __fmt, __args...) do { \ ++ if (bp->msglevel & (__mask)) \ ++ printk(DP_LEVEL "[%s:%d(%s)]" __fmt, __func__, __LINE__, \ ++ bp->dev ? (bp->dev->name) : "?", ##__args); \ ++ } while (0) ++ ++/* errors debug print */ ++#define BNX2X_DBG_ERR(__fmt, __args...) do { \ ++ if (bp->msglevel & NETIF_MSG_PROBE) \ ++ printk(KERN_ERR "[%s:%d(%s)]" __fmt, __func__, __LINE__, \ ++ bp->dev ? (bp->dev->name) : "?", ##__args); \ ++ } while (0) ++ ++/* for errors (never masked) */ ++#define BNX2X_ERR(__fmt, __args...) do { \ ++ printk(KERN_ERR "[%s:%d(%s)]" __fmt, __func__, __LINE__, \ ++ bp->dev ? (bp->dev->name) : "?", ##__args); \ ++ } while (0) ++ ++#define BNX2X_ERROR(__fmt, __args...) do { \ ++ printk(KERN_ERR "[%s:%d]" __fmt, __func__, __LINE__, ##__args); \ ++ } while (0) ++ ++/* before we have a dev->name use dev_info() */ ++#define BNX2X_DEV_INFO(__fmt, __args...) do { \ ++ if (bp->msglevel & NETIF_MSG_PROBE) \ ++ dev_info(&bp->pdev->dev, __fmt, ##__args); \ ++ } while (0) ++ ++ ++#ifdef BNX2X_STOP_ON_ERROR ++#define bnx2x_panic() do { \ ++ bp->panic = 1; \ ++ BNX2X_ERR("driver assert\n"); \ ++ bnx2x_int_disable(bp); \ ++ bnx2x_panic_dump(bp); \ ++ } while (0) ++#else ++#define bnx2x_panic() do { \ ++ bp->panic = 1; \ ++ BNX2X_ERR("driver assert\n"); \ ++ bnx2x_panic_dump(bp); \ ++ } while (0) ++#endif ++ ++ ++#define U64_LO(x) (u32)(((u64)(x)) & 0xffffffff) ++#define U64_HI(x) (u32)(((u64)(x)) >> 32) ++#define HILO_U64(hi, lo) ((((u64)(hi)) << 32) + (lo)) ++ ++ ++#define REG_ADDR(bp, offset) (bp->regview + offset) ++ ++#define REG_RD(bp, offset) readl(REG_ADDR(bp, offset)) ++#define REG_RD8(bp, offset) readb(REG_ADDR(bp, offset)) ++ ++#define REG_WR(bp, offset, val) writel((u32)val, REG_ADDR(bp, offset)) ++#define REG_WR8(bp, offset, val) writeb((u8)val, REG_ADDR(bp, offset)) ++#define REG_WR16(bp, offset, val) writew((u16)val, REG_ADDR(bp, offset)) ++ ++#define REG_RD_IND(bp, offset) bnx2x_reg_rd_ind(bp, offset) ++#define REG_WR_IND(bp, offset, val) bnx2x_reg_wr_ind(bp, offset, val) ++ ++#define REG_RD_DMAE(bp, offset, valp, len32) \ ++ do { \ ++ bnx2x_read_dmae(bp, offset, len32);\ ++ memcpy(valp, bnx2x_sp(bp, wb_data[0]), (len32) * 4); \ ++ } while (0) ++ ++#define REG_WR_DMAE(bp, offset, valp, len32) \ ++ do { \ ++ memcpy(bnx2x_sp(bp, wb_data[0]), valp, (len32) * 4); \ ++ bnx2x_write_dmae(bp, bnx2x_sp_mapping(bp, wb_data), \ ++ offset, len32); \ ++ } while (0) ++ ++#define VIRT_WR_DMAE_LEN(bp, data, addr, len32) \ ++ do { \ ++ memcpy(GUNZIP_BUF(bp), data, (len32) * 4); \ ++ bnx2x_write_big_buf_wb(bp, addr, len32); \ ++ } while (0) ++ ++#define SHMEM_ADDR(bp, field) (bp->common.shmem_base + \ ++ offsetof(struct shmem_region, field)) ++#define SHMEM_RD(bp, field) REG_RD(bp, SHMEM_ADDR(bp, field)) ++#define SHMEM_WR(bp, field, val) REG_WR(bp, SHMEM_ADDR(bp, field), val) ++ ++#define SHMEM2_ADDR(bp, field) (bp->common.shmem2_base + \ ++ offsetof(struct shmem2_region, field)) ++#define SHMEM2_RD(bp, field) REG_RD(bp, SHMEM2_ADDR(bp, field)) ++#define SHMEM2_WR(bp, field, val) REG_WR(bp, SHMEM2_ADDR(bp, field), val) ++ ++#define EMAC_RD(bp, reg) REG_RD(bp, emac_base + reg) ++#define EMAC_WR(bp, reg, val) REG_WR(bp, emac_base + reg, val) ++ ++ ++/* fast path */ ++ ++struct sw_rx_bd { ++ struct sk_buff *skb; ++ DECLARE_PCI_UNMAP_ADDR(mapping) ++}; ++ ++struct sw_tx_bd { ++ struct sk_buff *skb; ++ u16 first_bd; ++ u8 flags; ++/* Set on the first BD descriptor when there is a split BD */ ++#define BNX2X_TSO_SPLIT_BD (1<<0) ++}; ++ ++struct sw_rx_page { ++ struct page *page; ++ DECLARE_PCI_UNMAP_ADDR(mapping) ++}; ++ ++union db_prod { ++ struct doorbell_set_prod data; ++ u32 raw; ++}; ++ ++ ++/* MC hsi */ ++#define BCM_PAGE_SHIFT 12 ++#define BCM_PAGE_SIZE (1 << BCM_PAGE_SHIFT) ++#define BCM_PAGE_MASK (~(BCM_PAGE_SIZE - 1)) ++#define BCM_PAGE_ALIGN(addr) (((addr) + BCM_PAGE_SIZE - 1) & BCM_PAGE_MASK) ++ ++#define PAGES_PER_SGE_SHIFT 0 ++#define PAGES_PER_SGE (1 << PAGES_PER_SGE_SHIFT) ++#define SGE_PAGE_SIZE PAGE_SIZE ++#define SGE_PAGE_SHIFT PAGE_SHIFT ++#define SGE_PAGE_ALIGN(addr) PAGE_ALIGN((typeof(PAGE_SIZE))(addr)) ++ ++/* SGE ring related macros */ ++#define NUM_RX_SGE_PAGES 2 ++#define RX_SGE_CNT (BCM_PAGE_SIZE / sizeof(struct eth_rx_sge)) ++#define MAX_RX_SGE_CNT (RX_SGE_CNT - 2) ++/* RX_SGE_CNT is promised to be a power of 2 */ ++#define RX_SGE_MASK (RX_SGE_CNT - 1) ++#define NUM_RX_SGE (RX_SGE_CNT * NUM_RX_SGE_PAGES) ++#define MAX_RX_SGE (NUM_RX_SGE - 1) ++#define NEXT_SGE_IDX(x) ((((x) & RX_SGE_MASK) == \ ++ (MAX_RX_SGE_CNT - 1)) ? (x) + 3 : (x) + 1) ++#define RX_SGE(x) ((x) & MAX_RX_SGE) ++ ++/* SGE producer mask related macros */ ++/* Number of bits in one sge_mask array element */ ++#define RX_SGE_MASK_ELEM_SZ 64 ++#define RX_SGE_MASK_ELEM_SHIFT 6 ++#define RX_SGE_MASK_ELEM_MASK ((u64)RX_SGE_MASK_ELEM_SZ - 1) ++ ++/* Creates a bitmask of all ones in less significant bits. ++ idx - index of the most significant bit in the created mask */ ++#define RX_SGE_ONES_MASK(idx) \ ++ (((u64)0x1 << (((idx) & RX_SGE_MASK_ELEM_MASK) + 1)) - 1) ++#define RX_SGE_MASK_ELEM_ONE_MASK ((u64)(~0)) ++ ++/* Number of u64 elements in SGE mask array */ ++#define RX_SGE_MASK_LEN ((NUM_RX_SGE_PAGES * RX_SGE_CNT) / \ ++ RX_SGE_MASK_ELEM_SZ) ++#define RX_SGE_MASK_LEN_MASK (RX_SGE_MASK_LEN - 1) ++#define NEXT_SGE_MASK_ELEM(el) (((el) + 1) & RX_SGE_MASK_LEN_MASK) ++ ++ ++struct bnx2x_eth_q_stats { ++ u32 total_bytes_received_hi; ++ u32 total_bytes_received_lo; ++ u32 total_bytes_transmitted_hi; ++ u32 total_bytes_transmitted_lo; ++ u32 total_unicast_packets_received_hi; ++ u32 total_unicast_packets_received_lo; ++ u32 total_multicast_packets_received_hi; ++ u32 total_multicast_packets_received_lo; ++ u32 total_broadcast_packets_received_hi; ++ u32 total_broadcast_packets_received_lo; ++ u32 total_unicast_packets_transmitted_hi; ++ u32 total_unicast_packets_transmitted_lo; ++ u32 total_multicast_packets_transmitted_hi; ++ u32 total_multicast_packets_transmitted_lo; ++ u32 total_broadcast_packets_transmitted_hi; ++ u32 total_broadcast_packets_transmitted_lo; ++ u32 valid_bytes_received_hi; ++ u32 valid_bytes_received_lo; ++ ++ u32 error_bytes_received_hi; ++ u32 error_bytes_received_lo; ++ u32 etherstatsoverrsizepkts_hi; ++ u32 etherstatsoverrsizepkts_lo; ++ u32 no_buff_discard_hi; ++ u32 no_buff_discard_lo; ++ ++ u32 driver_xoff; ++ u32 rx_err_discard_pkt; ++ u32 rx_skb_alloc_failed; ++ u32 hw_csum_err; ++}; ++ ++#define BNX2X_NUM_Q_STATS 11 ++#define Q_STATS_OFFSET32(stat_name) \ ++ (offsetof(struct bnx2x_eth_q_stats, stat_name) / 4) ++ ++struct bnx2x_fastpath { ++ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ struct napi_struct napi; ++#endif ++ ++ u8 is_rx_queue; ++ ++ struct host_status_block *status_blk; ++ dma_addr_t status_blk_mapping; ++ ++ struct sw_tx_bd *tx_buf_ring; ++ ++ union eth_tx_bd_types *tx_desc_ring; ++ dma_addr_t tx_desc_mapping; ++ ++ struct sw_rx_bd *rx_buf_ring; /* BDs mappings ring */ ++ struct sw_rx_page *rx_page_ring; /* SGE pages mappings ring */ ++ ++ struct eth_rx_bd *rx_desc_ring; ++ dma_addr_t rx_desc_mapping; ++ ++ union eth_rx_cqe *rx_comp_ring; ++ dma_addr_t rx_comp_mapping; ++ ++ /* SGE ring */ ++ struct eth_rx_sge *rx_sge_ring; ++ dma_addr_t rx_sge_mapping; ++ ++ u64 sge_mask[RX_SGE_MASK_LEN]; ++ ++ int state; ++#define BNX2X_FP_STATE_CLOSED 0 ++#define BNX2X_FP_STATE_IRQ 0x80000 ++#define BNX2X_FP_STATE_OPENING 0x90000 ++#define BNX2X_FP_STATE_OPEN 0xa0000 ++#define BNX2X_FP_STATE_HALTING 0xb0000 ++#define BNX2X_FP_STATE_HALTED 0xc0000 ++ ++ u8 index; /* number in fp array */ ++ u8 cl_id; /* eth client id */ ++ u8 sb_id; /* status block number in HW */ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ u8 cos; ++#endif ++ ++ union db_prod tx_db; ++ ++ u16 tx_pkt_prod; ++ u16 tx_pkt_cons; ++ u16 tx_bd_prod; ++ u16 tx_bd_cons; ++ __le16 *tx_cons_sb; ++ ++ __le16 fp_c_idx; ++ __le16 fp_u_idx; ++ ++ u16 rx_bd_prod; ++ u16 rx_bd_cons; ++ u16 rx_comp_prod; ++ u16 rx_comp_cons; ++ u16 rx_sge_prod; ++ /* The last maximal completed SGE */ ++ u16 last_max_sge; ++ __le16 *rx_cons_sb; ++ __le16 *rx_bd_cons_sb; ++ ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) /* ! BNX2X_UPSTREAM */ ++ u16 netq_flags; ++#define BNX2X_NETQ_RX_QUEUE_ALLOCATED 0x0001 ++#define BNX2X_NETQ_TX_QUEUE_ALLOCATED 0x0002 ++#define BNX2X_NETQ_RX_QUEUE_ACTIVE 0x0004 ++#define BNX2X_NETQ_TX_QUEUE_ACTIVE 0x0008 ++ ++#define BNX2X_IS_NETQ_RX_QUEUE_ALLOCATED(fp) \ ++ ((fp->netq_flags & BNX2X_NETQ_RX_QUEUE_ALLOCATED) == \ ++ BNX2X_NETQ_RX_QUEUE_ALLOCATED) ++#define BNX2X_IS_NETQ_TX_QUEUE_ALLOCATED(fp) \ ++ ((fp->netq_flags & BNX2X_NETQ_TX_QUEUE_ALLOCATED) == \ ++ BNX2X_NETQ_TX_QUEUE_ALLOCATED) ++#define BNX2X_IS_NETQ_RX_QUEUE_ACTIVE(fp) \ ++ ((fp->netq_flags & BNX2X_NETQ_RX_QUEUE_ACTIVE) == \ ++ BNX2X_NETQ_RX_QUEUE_ACTIVE) ++#define BNX2X_IS_NETQ_TX_QUEUE_ACTIVE(fp) \ ++ ((fp->netq_flags & BNX2X_NETQ_TX_QUEUE_ACTIVE) == \ ++ BNX2X_NETQ_TX_QUEUE_ACTIVE) ++ ++ u8 mac_filter_addr[6]; ++#endif ++ ++ unsigned long tx_pkt, ++ rx_pkt, ++ rx_calls; ++ ++ /* TPA related */ ++ struct sw_rx_bd tpa_pool[ETH_MAX_AGGREGATION_QUEUES_E1H]; ++ u8 tpa_state[ETH_MAX_AGGREGATION_QUEUES_E1H]; ++#define BNX2X_TPA_START 1 ++#define BNX2X_TPA_STOP 2 ++ u8 disable_tpa; ++#ifdef BNX2X_STOP_ON_ERROR ++ u64 tpa_queue_used; ++#endif ++ ++ struct tstorm_per_client_stats old_tclient; ++ struct ustorm_per_client_stats old_uclient; ++ struct xstorm_per_client_stats old_xclient; ++ struct bnx2x_eth_q_stats eth_q_stats; ++ ++ /* The size is calculated using the following: ++ sizeof name field from netdev structure + ++ 4 ('-Xx-' string) + ++ 4 (for the digits and to make it DWORD aligned) */ ++#define FP_NAME_SIZE (sizeof(((struct net_device *)0)->name) + 8) ++ char name[FP_NAME_SIZE]; ++ struct bnx2x *bp; /* parent */ ++}; ++ ++#define bnx2x_fp(bp, nr, var) (bp->fp[nr].var) ++ ++ ++/* MC hsi */ ++#define MAX_FETCH_BD 13 /* HW max BDs per packet */ ++#define RX_COPY_THRESH 92 ++ ++#define NUM_TX_RINGS 16 ++#define TX_DESC_CNT (BCM_PAGE_SIZE / sizeof(union eth_tx_bd_types)) ++#define MAX_TX_DESC_CNT (TX_DESC_CNT - 1) ++#define NUM_TX_BD (TX_DESC_CNT * NUM_TX_RINGS) ++#define MAX_TX_BD (NUM_TX_BD - 1) ++#define MAX_TX_AVAIL (MAX_TX_DESC_CNT * NUM_TX_RINGS - 2) ++#define NEXT_TX_IDX(x) ((((x) & MAX_TX_DESC_CNT) == \ ++ (MAX_TX_DESC_CNT - 1)) ? (x) + 2 : (x) + 1) ++#define TX_BD(x) ((x) & MAX_TX_BD) ++#define TX_BD_POFF(x) ((x) & MAX_TX_DESC_CNT) ++ ++/* The RX BD ring is special, each bd is 8 bytes but the last one is 16 */ ++#if !defined(__VMKLNX__) /* BNX2X_UPSTREAM */ ++#define NUM_RX_RINGS 8 ++#else ++#define NUM_RX_RINGS 1 ++#endif ++#define RX_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct eth_rx_bd)) ++#define MAX_RX_DESC_CNT (RX_DESC_CNT - 2) ++#define RX_DESC_MASK (RX_DESC_CNT - 1) ++#define NUM_RX_BD (RX_DESC_CNT * NUM_RX_RINGS) ++#define MAX_RX_BD (NUM_RX_BD - 1) ++#define MAX_RX_AVAIL (MAX_RX_DESC_CNT * NUM_RX_RINGS - 2) ++#define NEXT_RX_IDX(x) ((((x) & RX_DESC_MASK) == \ ++ (MAX_RX_DESC_CNT - 1)) ? (x) + 3 : (x) + 1) ++#define RX_BD(x) ((x) & MAX_RX_BD) ++ ++/* As long as CQE is 4 times bigger than BD entry we have to allocate ++ 4 times more pages for CQ ring in order to keep it balanced with ++ BD ring */ ++#define NUM_RCQ_RINGS (NUM_RX_RINGS * 4) ++#define RCQ_DESC_CNT (BCM_PAGE_SIZE / sizeof(union eth_rx_cqe)) ++#define MAX_RCQ_DESC_CNT (RCQ_DESC_CNT - 1) ++#define NUM_RCQ_BD (RCQ_DESC_CNT * NUM_RCQ_RINGS) ++#define MAX_RCQ_BD (NUM_RCQ_BD - 1) ++#define MAX_RCQ_AVAIL (MAX_RCQ_DESC_CNT * NUM_RCQ_RINGS - 2) ++#define NEXT_RCQ_IDX(x) ((((x) & MAX_RCQ_DESC_CNT) == \ ++ (MAX_RCQ_DESC_CNT - 1)) ? (x) + 2 : (x) + 1) ++#define RCQ_BD(x) ((x) & MAX_RCQ_BD) ++ ++ ++/* This is needed for determining of last_max */ ++#define SUB_S16(a, b) (s16)((s16)(a) - (s16)(b)) ++ ++#define __SGE_MASK_SET_BIT(el, bit) \ ++ do { \ ++ el = ((el) | ((u64)0x1 << (bit))); \ ++ } while (0) ++ ++#define __SGE_MASK_CLEAR_BIT(el, bit) \ ++ do { \ ++ el = ((el) & (~((u64)0x1 << (bit)))); \ ++ } while (0) ++ ++#define SGE_MASK_SET_BIT(fp, idx) \ ++ __SGE_MASK_SET_BIT(fp->sge_mask[(idx) >> RX_SGE_MASK_ELEM_SHIFT], \ ++ ((idx) & RX_SGE_MASK_ELEM_MASK)) ++ ++#define SGE_MASK_CLEAR_BIT(fp, idx) \ ++ __SGE_MASK_CLEAR_BIT(fp->sge_mask[(idx) >> RX_SGE_MASK_ELEM_SHIFT], \ ++ ((idx) & RX_SGE_MASK_ELEM_MASK)) ++ ++ ++/* used on a CID received from the HW */ ++#define SW_CID(x) (le32_to_cpu(x) & \ ++ (COMMON_RAMROD_ETH_RX_CQE_CID >> 7)) ++#define CQE_CMD(x) (le32_to_cpu(x) >> \ ++ COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT) ++ ++#define BD_UNMAP_ADDR(bd) HILO_U64(le32_to_cpu((bd)->addr_hi), \ ++ le32_to_cpu((bd)->addr_lo)) ++#define BD_UNMAP_LEN(bd) (le16_to_cpu((bd)->nbytes)) ++ ++ ++#define DPM_TRIGER_TYPE 0x40 ++#define DOORBELL(bp, cid, val) \ ++ do { \ ++ writel((u32)(val), bp->doorbells + (BCM_PAGE_SIZE * (cid)) + \ ++ DPM_TRIGER_TYPE); \ ++ } while (0) ++ ++ ++/* TX CSUM helpers */ ++#if (LINUX_VERSION_CODE >= 0x020616) && !defined(__VMKLNX__) /* BNX2X_UPSTREAM */ ++#define SKB_CS_OFF(skb) (offsetof(struct tcphdr, check) - \ ++ skb->csum_offset) ++#define SKB_CS(skb) (*(u16 *)(skb_transport_header(skb) + \ ++ skb->csum_offset)) ++#else ++#define SKB_CS_OFF(skb) (offsetof(struct tcphdr, check) - skb->csum) ++#define SKB_CS(skb) (*(u16 *)(skb->h.raw + skb->csum)) ++#endif ++ ++#define pbd_tcp_flags(skb) (ntohl(tcp_flag_word(tcp_hdr(skb)))>>16 & 0xff) ++ ++#define XMIT_PLAIN 0 ++#define XMIT_CSUM_V4 0x1 ++#define XMIT_CSUM_V6 0x2 ++#define XMIT_CSUM_TCP 0x4 ++#define XMIT_GSO_V4 0x8 ++#define XMIT_GSO_V6 0x10 ++ ++#define XMIT_CSUM (XMIT_CSUM_V4 | XMIT_CSUM_V6) ++#define XMIT_GSO (XMIT_GSO_V4 | XMIT_GSO_V6) ++ ++ ++/* stuff added to make the code fit 80Col */ ++ ++#define CQE_TYPE(cqe_fp_flags) ((cqe_fp_flags) & ETH_FAST_PATH_RX_CQE_TYPE) ++ ++#define TPA_TYPE_START ETH_FAST_PATH_RX_CQE_START_FLG ++#define TPA_TYPE_END ETH_FAST_PATH_RX_CQE_END_FLG ++#define TPA_TYPE(cqe_fp_flags) ((cqe_fp_flags) & \ ++ (TPA_TYPE_START | TPA_TYPE_END)) ++ ++#define ETH_RX_ERROR_FALGS ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG ++ ++#define BNX2X_IP_CSUM_ERR(cqe) \ ++ (!((cqe)->fast_path_cqe.status_flags & \ ++ ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG) && \ ++ ((cqe)->fast_path_cqe.type_error_flags & \ ++ ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG)) ++ ++#define BNX2X_L4_CSUM_ERR(cqe) \ ++ (!((cqe)->fast_path_cqe.status_flags & \ ++ ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG) && \ ++ ((cqe)->fast_path_cqe.type_error_flags & \ ++ ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG)) ++ ++#define BNX2X_RX_CSUM_OK(cqe) \ ++ (!(BNX2X_L4_CSUM_ERR(cqe) || BNX2X_IP_CSUM_ERR(cqe))) ++ ++#define BNX2X_PRS_FLAG_OVERETH_IPV4(flags) \ ++ (((le16_to_cpu(flags) & \ ++ PARSING_FLAGS_OVER_ETHERNET_PROTOCOL) >> \ ++ PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT) \ ++ == PRS_FLAG_OVERETH_IPV4) ++#define BNX2X_RX_SUM_FIX(cqe) \ ++ BNX2X_PRS_FLAG_OVERETH_IPV4(cqe->fast_path_cqe.pars_flags.flags) ++ ++ ++#define FP_USB_FUNC_OFF (2 + 2*HC_USTORM_SB_NUM_INDICES) ++#define FP_CSB_FUNC_OFF (2 + 2*HC_CSTORM_SB_NUM_INDICES) ++ ++#define U_SB_ETH_RX_CQ_INDEX HC_INDEX_U_ETH_RX_CQ_CONS ++#define U_SB_ETH_RX_BD_INDEX HC_INDEX_U_ETH_RX_BD_CONS ++#define C_SB_ETH_TX_CQ_INDEX HC_INDEX_C_ETH_TX_CQ_CONS ++ ++#define BNX2X_RX_SB_INDEX \ ++ (&fp->status_blk->u_status_block.index_values[U_SB_ETH_RX_CQ_INDEX]) ++ ++#define BNX2X_RX_SB_BD_INDEX \ ++ (&fp->status_blk->u_status_block.index_values[U_SB_ETH_RX_BD_INDEX]) ++ ++#define BNX2X_RX_SB_INDEX_NUM \ ++ (((U_SB_ETH_RX_CQ_INDEX << \ ++ USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT) & \ ++ USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER) | \ ++ ((U_SB_ETH_RX_BD_INDEX << \ ++ USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER_SHIFT) & \ ++ USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER)) ++ ++#define BNX2X_TX_SB_INDEX \ ++ (&fp->status_blk->c_status_block.index_values[C_SB_ETH_TX_CQ_INDEX]) ++ ++ ++/* end of fast path */ ++ ++/* common */ ++ ++struct bnx2x_common { ++ ++ u32 chip_id; ++/* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */ ++#define CHIP_ID(bp) (bp->common.chip_id & 0xfffffff0) ++ ++#define CHIP_NUM(bp) (bp->common.chip_id >> 16) ++#define CHIP_NUM_57710 0x164e ++#define CHIP_NUM_57711 0x164f ++#define CHIP_NUM_57711E 0x1650 ++#define CHIP_NUM_57712 0x1662 ++#define CHIP_NUM_57712E 0x1663 ++#define CHIP_NUM_57713 0x1651 ++#define CHIP_NUM_57713E 0x1652 ++#define CHIP_IS_E1(bp) (CHIP_NUM(bp) == CHIP_NUM_57710) ++#define CHIP_IS_57711(bp) (CHIP_NUM(bp) == CHIP_NUM_57711) ++#define CHIP_IS_57711E(bp) (CHIP_NUM(bp) == CHIP_NUM_57711E) ++#define CHIP_IS_57712(bp) (CHIP_NUM(bp) == CHIP_NUM_57712) ++#define CHIP_IS_57712E(bp) (CHIP_NUM(bp) == CHIP_NUM_57712E) ++#define CHIP_IS_57713(bp) (CHIP_NUM(bp) == CHIP_NUM_57713) ++#define CHIP_IS_57713E(bp) (CHIP_NUM(bp) == CHIP_NUM_57713E) ++#define CHIP_IS_E1H(bp) (CHIP_IS_57711(bp) || \ ++ CHIP_IS_57711E(bp)) ++#define IS_E1H_OFFSET CHIP_IS_E1H(bp) ++#define CHIP_IS_E2(bp) (CHIP_IS_57712(bp) || \ ++ CHIP_IS_57712E(bp) || \ ++ CHIP_IS_57713(bp) || \ ++ CHIP_IS_57713E(bp)) ++ ++#define CHIP_REV(bp) (bp->common.chip_id & 0x0000f000) ++#define CHIP_REV_Ax 0x00000000 ++/* assume maximum 5 revisions */ ++#define CHIP_REV_IS_SLOW(bp) (CHIP_REV(bp) > 0x00005000) ++/* Emul versions are A=>0xe, B=>0xc, C=>0xa, D=>8, E=>6 */ ++#define CHIP_REV_IS_EMUL(bp) ((CHIP_REV_IS_SLOW(bp)) && \ ++ !(CHIP_REV(bp) & 0x00001000)) ++/* FPGA versions are A=>0xf, B=>0xd, C=>0xb, D=>9, E=>7 */ ++#define CHIP_REV_IS_FPGA(bp) ((CHIP_REV_IS_SLOW(bp)) && \ ++ (CHIP_REV(bp) & 0x00001000)) ++ ++#define CHIP_TIME(bp) ((CHIP_REV_IS_EMUL(bp)) ? 2000 : \ ++ ((CHIP_REV_IS_FPGA(bp)) ? 200 : 1)) ++ ++#define CHIP_METAL(bp) (bp->common.chip_id & 0x00000ff0) ++#define CHIP_BOND_ID(bp) (bp->common.chip_id & 0x0000000f) ++ ++ int flash_size; ++#define NVRAM_1MB_SIZE 0x20000 /* 1M bit in bytes */ ++#define NVRAM_TIMEOUT_COUNT 30000 ++#define NVRAM_PAGE_SIZE 256 ++ ++ u32 shmem_base; ++ u32 shmem2_base; ++ ++ u32 hw_config; ++ ++ u32 bc_ver; ++}; ++ ++ ++/* end of common */ ++ ++/* port */ ++ ++struct nig_stats { ++ u32 brb_discard; ++ u32 brb_packet; ++ u32 brb_truncate; ++ u32 flow_ctrl_discard; ++ u32 flow_ctrl_octets; ++ u32 flow_ctrl_packet; ++ u32 mng_discard; ++ u32 mng_octet_inp; ++ u32 mng_octet_out; ++ u32 mng_packet_inp; ++ u32 mng_packet_out; ++ u32 pbf_octets; ++ u32 pbf_packet; ++ u32 safc_inp; ++ u32 egress_mac_pkt0_lo; ++ u32 egress_mac_pkt0_hi; ++ u32 egress_mac_pkt1_lo; ++ u32 egress_mac_pkt1_hi; ++}; ++ ++struct bnx2x_port { ++ u32 pmf; ++ ++ u32 link_config; ++ ++ u32 supported; ++/* link settings - missing defines */ ++#define SUPPORTED_2500baseX_Full (1 << 15) ++ ++ u32 advertising; ++/* link settings - missing defines */ ++#define ADVERTISED_2500baseX_Full (1 << 15) ++ ++ u32 phy_addr; ++ ++ /* used to synchronize phy accesses */ ++ struct mutex phy_mutex; ++ int need_hw_lock; ++ ++ u32 port_stx; ++ ++ struct nig_stats old_nig_stats; ++}; ++ ++/* end of port */ ++ ++ ++enum bnx2x_stats_event { ++ STATS_EVENT_PMF = 0, ++ STATS_EVENT_LINK_UP, ++ STATS_EVENT_UPDATE, ++ STATS_EVENT_STOP, ++ STATS_EVENT_MAX ++}; ++ ++enum bnx2x_stats_state { ++ STATS_STATE_DISABLED = 0, ++ STATS_STATE_ENABLED, ++ STATS_STATE_MAX ++}; ++ ++struct bnx2x_eth_stats { ++ u32 total_bytes_received_hi; ++ u32 total_bytes_received_lo; ++ u32 total_bytes_transmitted_hi; ++ u32 total_bytes_transmitted_lo; ++ u32 total_unicast_packets_received_hi; ++ u32 total_unicast_packets_received_lo; ++ u32 total_multicast_packets_received_hi; ++ u32 total_multicast_packets_received_lo; ++ u32 total_broadcast_packets_received_hi; ++ u32 total_broadcast_packets_received_lo; ++ u32 total_unicast_packets_transmitted_hi; ++ u32 total_unicast_packets_transmitted_lo; ++ u32 total_multicast_packets_transmitted_hi; ++ u32 total_multicast_packets_transmitted_lo; ++ u32 total_broadcast_packets_transmitted_hi; ++ u32 total_broadcast_packets_transmitted_lo; ++ u32 valid_bytes_received_hi; ++ u32 valid_bytes_received_lo; ++ ++ u32 error_bytes_received_hi; ++ u32 error_bytes_received_lo; ++ u32 etherstatsoverrsizepkts_hi; ++ u32 etherstatsoverrsizepkts_lo; ++ u32 no_buff_discard_hi; ++ u32 no_buff_discard_lo; ++ ++ u32 rx_stat_ifhcinbadoctets_hi; ++ u32 rx_stat_ifhcinbadoctets_lo; ++ u32 tx_stat_ifhcoutbadoctets_hi; ++ u32 tx_stat_ifhcoutbadoctets_lo; ++ u32 rx_stat_dot3statsfcserrors_hi; ++ u32 rx_stat_dot3statsfcserrors_lo; ++ u32 rx_stat_dot3statsalignmenterrors_hi; ++ u32 rx_stat_dot3statsalignmenterrors_lo; ++ u32 rx_stat_dot3statscarriersenseerrors_hi; ++ u32 rx_stat_dot3statscarriersenseerrors_lo; ++ u32 rx_stat_falsecarriererrors_hi; ++ u32 rx_stat_falsecarriererrors_lo; ++ u32 rx_stat_etherstatsundersizepkts_hi; ++ u32 rx_stat_etherstatsundersizepkts_lo; ++ u32 rx_stat_dot3statsframestoolong_hi; ++ u32 rx_stat_dot3statsframestoolong_lo; ++ u32 rx_stat_etherstatsfragments_hi; ++ u32 rx_stat_etherstatsfragments_lo; ++ u32 rx_stat_etherstatsjabbers_hi; ++ u32 rx_stat_etherstatsjabbers_lo; ++ u32 rx_stat_maccontrolframesreceived_hi; ++ u32 rx_stat_maccontrolframesreceived_lo; ++ u32 rx_stat_bmac_xpf_hi; ++ u32 rx_stat_bmac_xpf_lo; ++ u32 rx_stat_bmac_xcf_hi; ++ u32 rx_stat_bmac_xcf_lo; ++ u32 rx_stat_xoffstateentered_hi; ++ u32 rx_stat_xoffstateentered_lo; ++ u32 rx_stat_xonpauseframesreceived_hi; ++ u32 rx_stat_xonpauseframesreceived_lo; ++ u32 rx_stat_xoffpauseframesreceived_hi; ++ u32 rx_stat_xoffpauseframesreceived_lo; ++ u32 tx_stat_outxonsent_hi; ++ u32 tx_stat_outxonsent_lo; ++ u32 tx_stat_outxoffsent_hi; ++ u32 tx_stat_outxoffsent_lo; ++ u32 tx_stat_flowcontroldone_hi; ++ u32 tx_stat_flowcontroldone_lo; ++ u32 tx_stat_etherstatscollisions_hi; ++ u32 tx_stat_etherstatscollisions_lo; ++ u32 tx_stat_dot3statssinglecollisionframes_hi; ++ u32 tx_stat_dot3statssinglecollisionframes_lo; ++ u32 tx_stat_dot3statsmultiplecollisionframes_hi; ++ u32 tx_stat_dot3statsmultiplecollisionframes_lo; ++ u32 tx_stat_dot3statsdeferredtransmissions_hi; ++ u32 tx_stat_dot3statsdeferredtransmissions_lo; ++ u32 tx_stat_dot3statsexcessivecollisions_hi; ++ u32 tx_stat_dot3statsexcessivecollisions_lo; ++ u32 tx_stat_dot3statslatecollisions_hi; ++ u32 tx_stat_dot3statslatecollisions_lo; ++ u32 tx_stat_etherstatspkts64octets_hi; ++ u32 tx_stat_etherstatspkts64octets_lo; ++ u32 tx_stat_etherstatspkts65octetsto127octets_hi; ++ u32 tx_stat_etherstatspkts65octetsto127octets_lo; ++ u32 tx_stat_etherstatspkts128octetsto255octets_hi; ++ u32 tx_stat_etherstatspkts128octetsto255octets_lo; ++ u32 tx_stat_etherstatspkts256octetsto511octets_hi; ++ u32 tx_stat_etherstatspkts256octetsto511octets_lo; ++ u32 tx_stat_etherstatspkts512octetsto1023octets_hi; ++ u32 tx_stat_etherstatspkts512octetsto1023octets_lo; ++ u32 tx_stat_etherstatspkts1024octetsto1522octets_hi; ++ u32 tx_stat_etherstatspkts1024octetsto1522octets_lo; ++ u32 tx_stat_etherstatspktsover1522octets_hi; ++ u32 tx_stat_etherstatspktsover1522octets_lo; ++ u32 tx_stat_bmac_2047_hi; ++ u32 tx_stat_bmac_2047_lo; ++ u32 tx_stat_bmac_4095_hi; ++ u32 tx_stat_bmac_4095_lo; ++ u32 tx_stat_bmac_9216_hi; ++ u32 tx_stat_bmac_9216_lo; ++ u32 tx_stat_bmac_16383_hi; ++ u32 tx_stat_bmac_16383_lo; ++ u32 tx_stat_dot3statsinternalmactransmiterrors_hi; ++ u32 tx_stat_dot3statsinternalmactransmiterrors_lo; ++ u32 tx_stat_bmac_ufl_hi; ++ u32 tx_stat_bmac_ufl_lo; ++ ++ u32 pause_frames_received_hi; ++ u32 pause_frames_received_lo; ++ u32 pause_frames_sent_hi; ++ u32 pause_frames_sent_lo; ++ ++ u32 etherstatspkts1024octetsto1522octets_hi; ++ u32 etherstatspkts1024octetsto1522octets_lo; ++ u32 etherstatspktsover1522octets_hi; ++ u32 etherstatspktsover1522octets_lo; ++ ++ u32 brb_drop_hi; ++ u32 brb_drop_lo; ++ u32 brb_truncate_hi; ++ u32 brb_truncate_lo; ++ ++ u32 mac_filter_discard; ++ u32 xxoverflow_discard; ++ u32 brb_truncate_discard; ++ u32 mac_discard; ++ ++ u32 driver_xoff; ++ u32 rx_err_discard_pkt; ++ u32 rx_skb_alloc_failed; ++ u32 hw_csum_err; ++ ++ u32 nig_timer_max; ++}; ++ ++#define BNX2X_NUM_STATS 41 ++#define STATS_OFFSET32(stat_name) \ ++ (offsetof(struct bnx2x_eth_stats, stat_name) / 4) ++ ++ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++#ifdef BCM_CNIC ++#define MAX_CONTEXT 15 ++#else /* BNX2X_UPSTREAM */ ++#define MAX_CONTEXT 16 ++#endif ++#else ++#define MAX_CONTEXT 2 ++#endif ++ ++union cdu_context { ++ struct eth_context eth; ++ char pad[1024]; ++}; ++ ++#define MAX_DMAE_C 8 ++ ++/* DMA memory not used in fastpath */ ++struct bnx2x_slowpath { ++ union cdu_context context[MAX_CONTEXT]; ++ struct eth_stats_query fw_stats; ++ struct mac_configuration_cmd mac_config; ++ struct mac_configuration_cmd mcast_config; ++ ++ /* used by dmae command executer */ ++ struct dmae_command dmae[MAX_DMAE_C]; ++ ++ u32 stats_comp; ++ union mac_stats mac_stats; ++ struct nig_stats nig_stats; ++ struct host_port_stats port_stats; ++ struct host_func_stats func_stats; ++ struct host_func_stats func_stats_base; ++ ++ u32 wb_comp; ++ u32 wb_data[4]; ++}; ++ ++#define bnx2x_sp(bp, var) (&bp->slowpath->var) ++#define bnx2x_sp_mapping(bp, var) \ ++ (bp->slowpath_mapping + offsetof(struct bnx2x_slowpath, var)) ++ ++ ++/* attn group wiring */ ++#define MAX_DYNAMIC_ATTN_GRPS 8 ++ ++struct attn_route { ++ u32 sig[4]; ++}; ++ ++struct bnx2x { ++ /* Fields used in the tx and intr/napi performance paths ++ * are grouped together in the beginning of the structure ++ */ ++ struct bnx2x_fastpath fp[MAX_CONTEXT]; ++ void __iomem *regview; ++ void __iomem *doorbells; ++#define BNX2X_DB_SIZE (16*BCM_PAGE_SIZE) ++ ++ struct net_device *dev; ++ struct pci_dev *pdev; ++ ++ atomic_t intr_sem; ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++#ifdef BCM_CNIC ++ struct msix_entry msix_table[MAX_CONTEXT+2]; ++#else /* BNX2X_UPSTREAM */ ++ struct msix_entry msix_table[MAX_CONTEXT+1]; ++#endif ++#endif ++#define INT_MODE_INTx 1 ++#define INT_MODE_MSI 2 ++#define INT_MODE_MSIX 3 ++ ++ int tx_ring_size; ++ ++#ifdef BCM_VLAN ++ struct vlan_group *vlgrp; ++#endif ++ ++ u32 rx_csum; ++ u32 rx_buf_size; ++#define ETH_OVREHEAD (ETH_HLEN + 8) /* 8 for CRC + VLAN */ ++#define ETH_MIN_PACKET_SIZE 60 ++#define ETH_MAX_PACKET_SIZE 1500 ++#define ETH_MAX_JUMBO_PACKET_SIZE 9600 ++ ++ /* Max supported alignment is 256 (8 shift) */ ++#define BNX2X_RX_ALIGN_SHIFT ((L1_CACHE_SHIFT < 8) ? \ ++ L1_CACHE_SHIFT : 8) ++#define BNX2X_RX_ALIGN (1 << BNX2X_RX_ALIGN_SHIFT) ++ ++ struct host_def_status_block *def_status_blk; ++#define DEF_SB_ID 16 ++ __le16 def_c_idx; ++ __le16 def_u_idx; ++ __le16 def_x_idx; ++ __le16 def_t_idx; ++ __le16 def_att_idx; ++ u32 attn_state; ++ struct attn_route attn_group[MAX_DYNAMIC_ATTN_GRPS]; ++ ++ /* slow path ring */ ++ struct eth_spe *spq; ++ dma_addr_t spq_mapping; ++ u16 spq_prod_idx; ++ struct eth_spe *spq_prod_bd; ++ struct eth_spe *spq_last_bd; ++ __le16 *dsb_sp_prod; ++ u16 spq_left; /* serialize spq */ ++ /* used to synchronize spq accesses */ ++ spinlock_t spq_lock; ++ ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) /* ! BNX2X_UPSTREAM */ ++ /* n queues allocated */ ++ u16 n_rx_queues_allocated; ++ u16 n_tx_queues_allocated; ++ u8 netq_enabled; ++#endif ++ ++ /* Flags for marking that there is a STAT_QUERY or ++ SET_MAC ramrod pending */ ++ u8 stats_pending; ++ u8 set_mac_pending; ++ ++ /* End of fields used in the performance code paths */ ++ ++ int panic; ++ int msglevel; ++ ++ u32 flags; ++#define PCIX_FLAG 1 ++#define PCI_32BIT_FLAG 2 ++#define ONE_PORT_FLAG 4 ++#define NO_WOL_FLAG 8 ++#define USING_DAC_FLAG 0x10 ++#define USING_MSIX_FLAG 0x20 ++#define USING_MSI_FLAG 0x40 ++#define TPA_ENABLE_FLAG 0x80 ++#define NO_MCP_FLAG 0x100 ++#define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG) ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++#define SAFC_TX_FLAG 0x200 ++#endif ++#define HW_VLAN_TX_FLAG 0x400 ++#define HW_VLAN_RX_FLAG 0x800 ++ ++ int func; ++#define BP_PORT(bp) (bp->func % PORT_MAX) ++#define BP_FUNC(bp) (bp->func) ++#define BP_E1HVN(bp) (bp->func >> 1) ++#define BP_L_ID(bp) (BP_E1HVN(bp) << 2) ++ ++ int pm_cap; ++ int pcie_cap; ++ int mrrs; ++ ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ struct delayed_work sp_task; ++#else ++ struct work_struct sp_task; ++#endif ++ struct work_struct reset_task; ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ u16 sp_running; ++#endif ++ ++ struct timer_list timer; ++ int current_interval; ++ ++ u16 fw_seq; ++ u16 fw_drv_pulse_wr_seq; ++ u32 func_stx; ++ ++ struct link_params link_params; ++ struct link_vars link_vars; ++ struct mdio_if_info mdio; ++ ++ struct bnx2x_common common; ++ struct bnx2x_port port; ++ ++ struct cmng_struct_per_port cmng; ++ u32 vn_weight_sum; ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ u32 cos_weight_sum; ++#endif ++ ++ u32 mf_config; ++ u16 e1hov; ++ u8 e1hmf; ++#define IS_E1HMF(bp) (bp->e1hmf != 0) ++ ++ u8 wol; ++ ++ int rx_ring_size; ++ ++ u16 tx_quick_cons_trip_int; ++ u16 tx_quick_cons_trip; ++ u16 tx_ticks_int; ++ u16 tx_ticks; ++ ++ u16 rx_quick_cons_trip_int; ++ u16 rx_quick_cons_trip; ++ u16 rx_ticks_int; ++ u16 rx_ticks; ++ ++ u32 lin_cnt; ++ ++ int state; ++#define BNX2X_STATE_CLOSED 0 ++#define BNX2X_STATE_OPENING_WAIT4_LOAD 0x1000 ++#define BNX2X_STATE_OPENING_WAIT4_PORT 0x2000 ++#define BNX2X_STATE_OPEN 0x3000 ++#define BNX2X_STATE_CLOSING_WAIT4_HALT 0x4000 ++#define BNX2X_STATE_CLOSING_WAIT4_DELETE 0x5000 ++#define BNX2X_STATE_CLOSING_WAIT4_UNLOAD 0x6000 ++#define BNX2X_STATE_DISABLED 0xd000 ++#define BNX2X_STATE_DIAG 0xe000 ++#define BNX2X_STATE_ERROR 0xf000 ++ ++ int multi_mode; ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++#define BNX2X_MAX_PRIORITY 8 ++#define BNX2X_MAX_ENTRIES_PER_PRI 16 ++#define BNX2X_MAX_COS 3 ++#define BNX2X_MAX_TX_COS 2 ++ /* priority to cos mapping */ ++ u8 pri_map[BNX2X_MAX_PRIORITY]; ++ /* number of queues per cos */ ++ u8 qs_per_cos[BNX2X_MAX_COS]; ++ /* min rate per cos */ ++ u16 cos_min_rate[BNX2X_MAX_COS]; ++ /* cos to queue mapping */ ++ u8 cos_map[BNX2X_MAX_COS]; ++#endif ++ int num_rx_queues; ++ int num_tx_queues; ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++#define BNX2X_COS_QUEUES(cos) ((qs_per_cos & (0xff << cos*8)) >> cos*8) ++#define BNX2X_COS_RATE(cos) ((cos_min_rate & (0xff << cos*8)) >> cos*8) ++#endif ++ ++ u32 rx_mode; ++#define BNX2X_RX_MODE_NONE 0 ++#define BNX2X_RX_MODE_NORMAL 1 ++#define BNX2X_RX_MODE_ALLMULTI 2 ++#define BNX2X_RX_MODE_PROMISC 3 ++#define BNX2X_MAX_MULTICAST 64 ++#define BNX2X_MAX_EMUL_MULTI 16 ++ ++ dma_addr_t def_status_blk_mapping; ++ ++ struct bnx2x_slowpath *slowpath; ++ dma_addr_t slowpath_mapping; ++ ++ int dropless_fc; ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ void *t1; ++ dma_addr_t t1_mapping; ++ void *t2; ++ dma_addr_t t2_mapping; ++ void *timers; ++ dma_addr_t timers_mapping; ++ void *qm; ++ dma_addr_t qm_mapping; ++ struct cnic_ops *cnic_ops; ++ void *cnic_data; ++ u32 cnic_tag; ++ struct cnic_eth_dev cnic_eth_dev; ++ struct host_status_block *cnic_sb; ++ dma_addr_t cnic_sb_mapping; ++#define CNIC_SB_ID(bp) BP_L_ID(bp) ++ struct eth_spe *cnic_kwq; ++ struct eth_spe *cnic_kwq_prod; ++ struct eth_spe *cnic_kwq_cons; ++ struct eth_spe *cnic_kwq_last; ++ u16 cnic_kwq_pending; ++ u16 cnic_spq_pending; ++#endif ++ ++ int dmae_ready; ++ /* used to synchronize dmae accesses */ ++ struct mutex dmae_mutex; ++ ++ /* used to synchronize stats collecting */ ++ int stats_state; ++ /* used by dmae command loader */ ++ struct dmae_command stats_dmae; ++ int executer_idx; ++ ++ u16 stats_counter; ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ struct net_device_stats net_stats; ++#endif ++ struct bnx2x_eth_stats eth_stats; ++ ++ struct z_stream_s *strm; ++ void *gunzip_buf; ++ dma_addr_t gunzip_mapping; ++ int gunzip_outlen; ++#define FW_BUF_SIZE 0x8000 ++#define GUNZIP_BUF(bp) bp->gunzip_buf ++#define GUNZIP_PHYS(bp) bp->gunzip_mapping ++#define GUNZIP_OUTLEN(bp) bp->gunzip_outlen ++ ++#if (LINUX_VERSION_CODE < 0x02060b) /* ! BNX2X_UPSTREAM */ ++ u32 pci_state[16]; ++#endif ++ struct raw_op *init_ops; ++ /* Init blocks offsets inside init_ops */ ++ u16 *init_ops_offsets; ++ /* Data blob - has 32 bit granularity */ ++ u32 *init_data; ++ /* Zipped PRAM blobs - raw data */ ++ const u8 *tsem_int_table_data; ++ const u8 *tsem_pram_data; ++ const u8 *usem_int_table_data; ++ const u8 *usem_pram_data; ++ const u8 *xsem_int_table_data; ++ const u8 *xsem_pram_data; ++ const u8 *csem_int_table_data; ++ const u8 *csem_pram_data; ++#define INIT_OPS(bp) bp->init_ops ++#define INIT_OPS_OFFSETS(bp) bp->init_ops_offsets ++#define INIT_DATA(bp) bp->init_data ++#define INIT_TSEM_INT_TABLE_DATA(bp) bp->tsem_int_table_data ++#define INIT_TSEM_PRAM_DATA(bp) bp->tsem_pram_data ++#define INIT_USEM_INT_TABLE_DATA(bp) bp->usem_int_table_data ++#define INIT_USEM_PRAM_DATA(bp) bp->usem_pram_data ++#define INIT_XSEM_INT_TABLE_DATA(bp) bp->xsem_int_table_data ++#define INIT_XSEM_PRAM_DATA(bp) bp->xsem_pram_data ++#define INIT_CSEM_INT_TABLE_DATA(bp) bp->csem_int_table_data ++#define INIT_CSEM_PRAM_DATA(bp) bp->csem_pram_data ++ ++#if defined(BNX2X_UPSTREAM) && !defined(BNX2X_USE_INIT_VALUES) /* BNX2X_UPSTREAM */ ++ const struct firmware *firmware; ++#endif ++}; ++ ++ ++#define BNX2X_MAX_QUEUES(bp) (IS_E1HMF(bp) ? (MAX_CONTEXT/(2 * E1HVN_MAX)) \ ++ : (MAX_CONTEXT/2)) ++#define BNX2X_NUM_QUEUES(bp) (bp->num_rx_queues + bp->num_tx_queues) ++#define is_multi(bp) (BNX2X_NUM_QUEUES(bp) > 2) ++ ++#define for_each_rx_queue(bp, var) \ ++ for (var = 0; var < bp->num_rx_queues; var++) ++#define for_each_tx_queue(bp, var) \ ++ for (var = bp->num_rx_queues; \ ++ var < BNX2X_NUM_QUEUES(bp); var++) ++#define for_each_queue(bp, var) \ ++ for (var = 0; var < BNX2X_NUM_QUEUES(bp); var++) ++#define for_each_nondefault_queue(bp, var) \ ++ for (var = 1; var < bp->num_rx_queues; var++) ++ ++ ++void bnx2x_read_dmae(struct bnx2x *bp, u32 src_addr, u32 len32); ++void bnx2x_write_dmae(struct bnx2x *bp, dma_addr_t dma_addr, u32 dst_addr, ++ u32 len32); ++int bnx2x_get_gpio(struct bnx2x *bp, int gpio_num, u8 port); ++int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode, u8 port); ++int bnx2x_set_gpio_int(struct bnx2x *bp, int gpio_num, u32 mode, u8 port); ++u32 bnx2x_fw_command(struct bnx2x *bp, u32 command); ++void bnx2x_reg_wr_ind(struct bnx2x *bp, u32 addr, u32 val); ++void bnx2x_write_dmae_phys_len(struct bnx2x *bp, dma_addr_t phys_addr, ++ u32 addr, u32 len); ++ ++static inline u32 reg_poll(struct bnx2x *bp, u32 reg, u32 expected, int ms, ++ int wait) ++{ ++ u32 val; ++ ++ do { ++ val = REG_RD(bp, reg); ++ if (val == expected) ++ break; ++ ms -= wait; ++ msleep(wait); ++ ++ } while (ms > 0); ++ ++ return val; ++} ++ ++ ++/* load/unload mode */ ++#define LOAD_NORMAL 0 ++#define LOAD_OPEN 1 ++#define LOAD_DIAG 2 ++#define UNLOAD_NORMAL 0 ++#define UNLOAD_CLOSE 1 ++ ++ ++/* DMAE command defines */ ++#define DMAE_CMD_SRC_PCI 0 ++#define DMAE_CMD_SRC_GRC DMAE_COMMAND_SRC ++ ++#define DMAE_CMD_DST_PCI (1 << DMAE_COMMAND_DST_SHIFT) ++#define DMAE_CMD_DST_GRC (2 << DMAE_COMMAND_DST_SHIFT) ++ ++#define DMAE_CMD_C_DST_PCI 0 ++#define DMAE_CMD_C_DST_GRC (1 << DMAE_COMMAND_C_DST_SHIFT) ++ ++#define DMAE_CMD_C_ENABLE DMAE_COMMAND_C_TYPE_ENABLE ++ ++#define DMAE_CMD_ENDIANITY_NO_SWAP (0 << DMAE_COMMAND_ENDIANITY_SHIFT) ++#define DMAE_CMD_ENDIANITY_B_SWAP (1 << DMAE_COMMAND_ENDIANITY_SHIFT) ++#define DMAE_CMD_ENDIANITY_DW_SWAP (2 << DMAE_COMMAND_ENDIANITY_SHIFT) ++#define DMAE_CMD_ENDIANITY_B_DW_SWAP (3 << DMAE_COMMAND_ENDIANITY_SHIFT) ++ ++#define DMAE_CMD_PORT_0 0 ++#define DMAE_CMD_PORT_1 DMAE_COMMAND_PORT ++ ++#define DMAE_CMD_SRC_RESET DMAE_COMMAND_SRC_RESET ++#define DMAE_CMD_DST_RESET DMAE_COMMAND_DST_RESET ++#define DMAE_CMD_E1HVN_SHIFT DMAE_COMMAND_E1HVN_SHIFT ++ ++#define DMAE_LEN32_RD_MAX 0x80 ++#define DMAE_LEN32_WR_MAX 0x400 ++ ++#define DMAE_COMP_VAL 0xe0d0d0ae ++ ++#define MAX_DMAE_C_PER_PORT 8 ++#define INIT_DMAE_C(bp) (BP_PORT(bp) * MAX_DMAE_C_PER_PORT + \ ++ BP_E1HVN(bp)) ++#define PMF_DMAE_C(bp) (BP_PORT(bp) * MAX_DMAE_C_PER_PORT + \ ++ E1HVN_MAX) ++ ++ ++/* PCIE link and speed */ ++#define PCICFG_LINK_WIDTH 0x1f00000 ++#define PCICFG_LINK_WIDTH_SHIFT 20 ++#define PCICFG_LINK_SPEED 0xf0000 ++#define PCICFG_LINK_SPEED_SHIFT 16 ++ ++ ++#define BNX2X_NUM_TESTS 7 ++ ++#define BNX2X_PHY_LOOPBACK 0 ++#define BNX2X_MAC_LOOPBACK 1 ++#define BNX2X_PHY_LOOPBACK_FAILED 1 ++#define BNX2X_MAC_LOOPBACK_FAILED 2 ++#define BNX2X_LOOPBACK_FAILED (BNX2X_MAC_LOOPBACK_FAILED | \ ++ BNX2X_PHY_LOOPBACK_FAILED) ++ ++ ++#define STROM_ASSERT_ARRAY_SIZE 50 ++ ++ ++/* must be used on a CID before placing it on a HW ring */ ++#define HW_CID(bp, x) ((BP_PORT(bp) << 23) | \ ++ (BP_E1HVN(bp) << 17) | (x)) ++ ++#define SP_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct eth_spe)) ++#define MAX_SP_DESC_CNT (SP_DESC_CNT - 1) ++ ++ ++#define BNX2X_BTR 3 ++#define MAX_SPQ_PENDING 8 ++ ++ ++/* CMNG constants ++ derived from lab experiments, and not from system spec calculations !!! */ ++#define DEF_MIN_RATE 100 ++/* resolution of the rate shaping timer - 100 usec */ ++#define RS_PERIODIC_TIMEOUT_USEC 100 ++/* resolution of fairness algorithm in usecs - ++ coefficient for calculating the actual t fair */ ++#define T_FAIR_COEF 10000000 ++/* number of bytes in single QM arbitration cycle - ++ coefficient for calculating the fairness timer */ ++#define QM_ARB_BYTES 40000 ++#define FAIR_MEM 2 ++ ++ ++#define ATTN_NIG_FOR_FUNC (1L << 8) ++#define ATTN_SW_TIMER_4_FUNC (1L << 9) ++#define GPIO_2_FUNC (1L << 10) ++#define GPIO_3_FUNC (1L << 11) ++#define GPIO_4_FUNC (1L << 12) ++#define ATTN_GENERAL_ATTN_1 (1L << 13) ++#define ATTN_GENERAL_ATTN_2 (1L << 14) ++#define ATTN_GENERAL_ATTN_3 (1L << 15) ++#define ATTN_GENERAL_ATTN_4 (1L << 13) ++#define ATTN_GENERAL_ATTN_5 (1L << 14) ++#define ATTN_GENERAL_ATTN_6 (1L << 15) ++ ++#define ATTN_HARD_WIRED_MASK 0xff00 ++#define ATTENTION_ID 4 ++ ++ ++/* stuff added to make the code fit 80Col */ ++ ++#define BNX2X_PMF_LINK_ASSERT \ ++ GENERAL_ATTEN_OFFSET(LINK_SYNC_ATTENTION_BIT_FUNC_0 + BP_FUNC(bp)) ++ ++#define BNX2X_MC_ASSERT_BITS \ ++ (GENERAL_ATTEN_OFFSET(TSTORM_FATAL_ASSERT_ATTENTION_BIT) | \ ++ GENERAL_ATTEN_OFFSET(USTORM_FATAL_ASSERT_ATTENTION_BIT) | \ ++ GENERAL_ATTEN_OFFSET(CSTORM_FATAL_ASSERT_ATTENTION_BIT) | \ ++ GENERAL_ATTEN_OFFSET(XSTORM_FATAL_ASSERT_ATTENTION_BIT)) ++ ++#define BNX2X_MCP_ASSERT \ ++ GENERAL_ATTEN_OFFSET(MCP_FATAL_ASSERT_ATTENTION_BIT) ++ ++#define BNX2X_GRC_TIMEOUT GENERAL_ATTEN_OFFSET(LATCHED_ATTN_TIMEOUT_GRC) ++#define BNX2X_GRC_RSV (GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCR) | \ ++ GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCT) | \ ++ GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCN) | \ ++ GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCU) | \ ++ GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCP) | \ ++ GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RSVD_GRC)) ++ ++#define HW_INTERRUT_ASSERT_SET_0 \ ++ (AEU_INPUTS_ATTN_BITS_TSDM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_TCM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_TSEMI_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_PBF_HW_INTERRUPT) ++#define HW_PRTY_ASSERT_SET_0 (AEU_INPUTS_ATTN_BITS_BRB_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_PARSER_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_TSDM_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_SEARCHER_PARITY_ERROR |\ ++ AEU_INPUTS_ATTN_BITS_TSEMI_PARITY_ERROR) ++#define HW_INTERRUT_ASSERT_SET_1 \ ++ (AEU_INPUTS_ATTN_BITS_QM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_TIMERS_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_XSDM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_XCM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_XSEMI_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_USDM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_UCM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_USEMI_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_UPB_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_CSDM_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT) ++#define HW_PRTY_ASSERT_SET_1 (AEU_INPUTS_ATTN_BITS_PBCLIENT_PARITY_ERROR |\ ++ AEU_INPUTS_ATTN_BITS_QM_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_XSDM_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_XSEMI_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_DOORBELLQ_PARITY_ERROR |\ ++ AEU_INPUTS_ATTN_BITS_VAUX_PCI_CORE_PARITY_ERROR |\ ++ AEU_INPUTS_ATTN_BITS_DEBUG_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_USDM_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_USEMI_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_UPB_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_CSDM_PARITY_ERROR) ++#define HW_INTERRUT_ASSERT_SET_2 \ ++ (AEU_INPUTS_ATTN_BITS_CSEMI_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_CDU_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_DMAE_HW_INTERRUPT | \ ++ AEU_INPUTS_ATTN_BITS_PXPPCICLOCKCLIENT_HW_INTERRUPT |\ ++ AEU_INPUTS_ATTN_BITS_MISC_HW_INTERRUPT) ++#define HW_PRTY_ASSERT_SET_2 (AEU_INPUTS_ATTN_BITS_CSEMI_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_PXP_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_PXPPCICLOCKCLIENT_PARITY_ERROR |\ ++ AEU_INPUTS_ATTN_BITS_CFC_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_CDU_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_IGU_PARITY_ERROR | \ ++ AEU_INPUTS_ATTN_BITS_MISC_PARITY_ERROR) ++ ++ ++#define MULTI_FLAGS(bp) \ ++ (TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY | \ ++ TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY | \ ++ TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY | \ ++ TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY | \ ++ (bp->multi_mode << \ ++ TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT)) ++#define MULTI_MASK 0x7f ++ ++ ++#define DEF_USB_FUNC_OFF (2 + 2*HC_USTORM_DEF_SB_NUM_INDICES) ++#define DEF_CSB_FUNC_OFF (2 + 2*HC_CSTORM_DEF_SB_NUM_INDICES) ++#define DEF_XSB_FUNC_OFF (2 + 2*HC_XSTORM_DEF_SB_NUM_INDICES) ++#define DEF_TSB_FUNC_OFF (2 + 2*HC_TSTORM_DEF_SB_NUM_INDICES) ++ ++#define C_DEF_SB_SP_INDEX HC_INDEX_DEF_C_ETH_SLOW_PATH ++ ++#define BNX2X_SP_DSB_INDEX \ ++(&bp->def_status_blk->c_def_status_block.index_values[C_DEF_SB_SP_INDEX]) ++ ++ ++#define CAM_IS_INVALID(x) \ ++(x.target_table_entry.flags == TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE) ++ ++#define CAM_INVALIDATE(x) \ ++ (x.target_table_entry.flags = TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE) ++ ++ ++/* Number of u32 elements in MC hash array */ ++#define MC_HASH_SIZE 8 ++#define MC_HASH_OFFSET(bp, i) (BAR_TSTRORM_INTMEM + \ ++ TSTORM_APPROXIMATE_MATCH_MULTICAST_FILTERING_OFFSET(BP_FUNC(bp)) + i*4) ++ ++ ++#ifndef PXP2_REG_PXP2_INT_STS ++#define PXP2_REG_PXP2_INT_STS PXP2_REG_PXP2_INT_STS_0 ++#endif ++ ++/* MISC_REG_RESET_REG - this is here for the hsi to work don't touch */ ++ ++#endif /* bnx2x.h */ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_hsi.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_hsi.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_hsi.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_hsi.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,3190 @@ ++/* bnx2x_hsi.h: Broadcom Everest network driver. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ */ ++ ++struct license_key { ++ u32 reserved[6]; ++ ++#if defined(__BIG_ENDIAN) ++ u16 max_iscsi_init_conn; ++ u16 max_iscsi_trgt_conn; ++#elif defined(__LITTLE_ENDIAN) ++ u16 max_iscsi_trgt_conn; ++ u16 max_iscsi_init_conn; ++#endif ++ ++ u32 reserved_a[6]; ++}; ++ ++ ++#define PORT_0 0 ++#define PORT_1 1 ++#define PORT_MAX 2 ++ ++/**************************************************************************** ++ * Shared HW configuration * ++ ****************************************************************************/ ++struct shared_hw_cfg { /* NVRAM Offset */ ++ /* Up to 16 bytes of NULL-terminated string */ ++ u8 part_num[16]; /* 0x104 */ ++ ++ u32 config; /* 0x114 */ ++#define SHARED_HW_CFG_MDIO_VOLTAGE_MASK 0x00000001 ++#define SHARED_HW_CFG_MDIO_VOLTAGE_SHIFT 0 ++#define SHARED_HW_CFG_MDIO_VOLTAGE_1_2V 0x00000000 ++#define SHARED_HW_CFG_MDIO_VOLTAGE_2_5V 0x00000001 ++#define SHARED_HW_CFG_MCP_RST_ON_CORE_RST_EN 0x00000002 ++ ++#define SHARED_HW_CFG_PORT_SWAP 0x00000004 ++ ++#define SHARED_HW_CFG_BEACON_WOL_EN 0x00000008 ++ ++#define SHARED_HW_CFG_MFW_SELECT_MASK 0x00000700 ++#define SHARED_HW_CFG_MFW_SELECT_SHIFT 8 ++ /* Whatever MFW found in NVM ++ (if multiple found, priority order is: NC-SI, UMP, IPMI) */ ++#define SHARED_HW_CFG_MFW_SELECT_DEFAULT 0x00000000 ++#define SHARED_HW_CFG_MFW_SELECT_NC_SI 0x00000100 ++#define SHARED_HW_CFG_MFW_SELECT_UMP 0x00000200 ++#define SHARED_HW_CFG_MFW_SELECT_IPMI 0x00000300 ++ /* Use SPIO4 as an arbiter between: 0-NC_SI, 1-IPMI ++ (can only be used when an add-in board, not BMC, pulls-down SPIO4) */ ++#define SHARED_HW_CFG_MFW_SELECT_SPIO4_NC_SI_IPMI 0x00000400 ++ /* Use SPIO4 as an arbiter between: 0-UMP, 1-IPMI ++ (can only be used when an add-in board, not BMC, pulls-down SPIO4) */ ++#define SHARED_HW_CFG_MFW_SELECT_SPIO4_UMP_IPMI 0x00000500 ++ /* Use SPIO4 as an arbiter between: 0-NC-SI, 1-UMP ++ (can only be used when an add-in board, not BMC, pulls-down SPIO4) */ ++#define SHARED_HW_CFG_MFW_SELECT_SPIO4_NC_SI_UMP 0x00000600 ++ ++#define SHARED_HW_CFG_LED_MODE_MASK 0x000f0000 ++#define SHARED_HW_CFG_LED_MODE_SHIFT 16 ++#define SHARED_HW_CFG_LED_MAC1 0x00000000 ++#define SHARED_HW_CFG_LED_PHY1 0x00010000 ++#define SHARED_HW_CFG_LED_PHY2 0x00020000 ++#define SHARED_HW_CFG_LED_PHY3 0x00030000 ++#define SHARED_HW_CFG_LED_MAC2 0x00040000 ++#define SHARED_HW_CFG_LED_PHY4 0x00050000 ++#define SHARED_HW_CFG_LED_PHY5 0x00060000 ++#define SHARED_HW_CFG_LED_PHY6 0x00070000 ++#define SHARED_HW_CFG_LED_MAC3 0x00080000 ++#define SHARED_HW_CFG_LED_PHY7 0x00090000 ++#define SHARED_HW_CFG_LED_PHY9 0x000a0000 ++#define SHARED_HW_CFG_LED_PHY11 0x000b0000 ++#define SHARED_HW_CFG_LED_MAC4 0x000c0000 ++#define SHARED_HW_CFG_LED_PHY8 0x000d0000 ++ ++#define SHARED_HW_CFG_AN_ENABLE_MASK 0x3f000000 ++#define SHARED_HW_CFG_AN_ENABLE_SHIFT 24 ++#define SHARED_HW_CFG_AN_ENABLE_CL37 0x01000000 ++#define SHARED_HW_CFG_AN_ENABLE_CL73 0x02000000 ++#define SHARED_HW_CFG_AN_ENABLE_BAM 0x04000000 ++#define SHARED_HW_CFG_AN_ENABLE_PARALLEL_DETECTION 0x08000000 ++#define SHARED_HW_CFG_AN_EN_SGMII_FIBER_AUTO_DETECT 0x10000000 ++#define SHARED_HW_CFG_AN_ENABLE_REMOTE_PHY 0x20000000 ++ ++ u32 config2; /* 0x118 */ ++ /* one time auto detect grace period (in sec) */ ++#define SHARED_HW_CFG_GRACE_PERIOD_MASK 0x000000ff ++#define SHARED_HW_CFG_GRACE_PERIOD_SHIFT 0 ++ ++#define SHARED_HW_CFG_PCIE_GEN2_ENABLED 0x00000100 ++ ++ /* The default value for the core clock is 250MHz and it is ++ achieved by setting the clock change to 4 */ ++#define SHARED_HW_CFG_CLOCK_CHANGE_MASK 0x00000e00 ++#define SHARED_HW_CFG_CLOCK_CHANGE_SHIFT 9 ++ ++#define SHARED_HW_CFG_SMBUS_TIMING_100KHZ 0x00000000 ++#define SHARED_HW_CFG_SMBUS_TIMING_400KHZ 0x00001000 ++ ++#define SHARED_HW_CFG_HIDE_PORT1 0x00002000 ++ ++#define SHARED_HW_CFG_WOL_CAPABLE_DISABLED 0x00000000 ++#define SHARED_HW_CFG_WOL_CAPABLE_ENABLED 0x00004000 ++ ++ /* Output low when PERST is asserted */ ++#define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_DISABLED 0x00000000 ++#define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_ENABLED 0x00008000 ++ ++#define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_MASK 0x00070000 ++#define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_SHIFT 16 ++#define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_HW 0x00000000 ++#define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_0DB 0x00010000 /* 0dB */ ++#define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_3_5DB 0x00020000 /* -3.5dB */ ++#define SHARED_HW_CFG_PCIE_GEN2_PREEMPHASIS_6_0DB 0x00030000 /* -6.0dB */ ++ ++ /* The fan failure mechanism is usually related to the PHY type ++ since the power consumption of the board is determined by the PHY. ++ Currently, fan is required for most designs with SFX7101, BCM8727 ++ and BCM8481. If a fan is not required for a board which uses one ++ of those PHYs, this field should be set to "Disabled". If a fan is ++ required for a different PHY type, this option should be set to ++ "Enabled". ++ The fan failure indication is expected on ++ SPIO5 */ ++#define SHARED_HW_CFG_FAN_FAILURE_MASK 0x00180000 ++#define SHARED_HW_CFG_FAN_FAILURE_SHIFT 19 ++#define SHARED_HW_CFG_FAN_FAILURE_PHY_TYPE 0x00000000 ++#define SHARED_HW_CFG_FAN_FAILURE_DISABLED 0x00080000 ++#define SHARED_HW_CFG_FAN_FAILURE_ENABLED 0x00100000 ++ ++ /* ASPM Power Management support */ ++#define SHARED_HW_CFG_ASPM_SUPPORT_MASK 0x00600000 ++#define SHARED_HW_CFG_ASPM_SUPPORT_SHIFT 21 ++#define SHARED_HW_CFG_ASPM_SUPPORT_L0S_L1_ENABLED 0x00000000 ++#define SHARED_HW_CFG_ASPM_SUPPORT_L0S_DISABLED 0x00200000 ++#define SHARED_HW_CFG_ASPM_SUPPORT_L1_DISABLED 0x00400000 ++#define SHARED_HW_CFG_ASPM_SUPPORT_L0S_L1_DISABLED 0x00600000 ++ ++ /* The value of PM_TL_IGNORE_REQS (bit0) in PCI register ++ tl_control_0 (register 0x2800) */ ++#define SHARED_HW_CFG_PREVENT_L1_ENTRY_DISABLED 0x00000000 ++#define SHARED_HW_CFG_PREVENT_L1_ENTRY_ENABLED 0x00800000 ++ ++ ++ u32 power_dissipated; /* 0x11c */ ++#define SHARED_HW_CFG_POWER_DIS_CMN_MASK 0xff000000 ++#define SHARED_HW_CFG_POWER_DIS_CMN_SHIFT 24 ++ ++#define SHARED_HW_CFG_POWER_MGNT_SCALE_MASK 0x00ff0000 ++#define SHARED_HW_CFG_POWER_MGNT_SCALE_SHIFT 16 ++#define SHARED_HW_CFG_POWER_MGNT_UNKNOWN_SCALE 0x00000000 ++#define SHARED_HW_CFG_POWER_MGNT_DOT_1_WATT 0x00010000 ++#define SHARED_HW_CFG_POWER_MGNT_DOT_01_WATT 0x00020000 ++#define SHARED_HW_CFG_POWER_MGNT_DOT_001_WATT 0x00030000 ++ ++ u32 ump_nc_si_config; /* 0x120 */ ++#define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MASK 0x00000003 ++#define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_SHIFT 0 ++#define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MAC 0x00000000 ++#define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_PHY 0x00000001 ++#define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_MII 0x00000000 ++#define SHARED_HW_CFG_UMP_NC_SI_MII_MODE_RMII 0x00000002 ++ ++#define SHARED_HW_CFG_UMP_NC_SI_NUM_DEVS_MASK 0x00000f00 ++#define SHARED_HW_CFG_UMP_NC_SI_NUM_DEVS_SHIFT 8 ++ ++#define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_MASK 0x00ff0000 ++#define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_SHIFT 16 ++#define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_NONE 0x00000000 ++#define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_BCM5221 0x00010000 ++ ++ u32 board; /* 0x124 */ ++#define SHARED_HW_CFG_BOARD_REV_MASK 0x00ff0000 ++#define SHARED_HW_CFG_BOARD_REV_SHIFT 16 ++ ++#define SHARED_HW_CFG_BOARD_MAJOR_VER_MASK 0x0f000000 ++#define SHARED_HW_CFG_BOARD_MAJOR_VER_SHIFT 24 ++ ++#define SHARED_HW_CFG_BOARD_MINOR_VER_MASK 0xf0000000 ++#define SHARED_HW_CFG_BOARD_MINOR_VER_SHIFT 28 ++ ++ u32 reserved; /* 0x128 */ ++ ++}; ++ ++ ++/**************************************************************************** ++ * Port HW configuration * ++ ****************************************************************************/ ++struct port_hw_cfg { /* port 0: 0x12c port 1: 0x2bc */ ++ ++ u32 pci_id; ++#define PORT_HW_CFG_PCI_VENDOR_ID_MASK 0xffff0000 ++#define PORT_HW_CFG_PCI_DEVICE_ID_MASK 0x0000ffff ++ ++ u32 pci_sub_id; ++#define PORT_HW_CFG_PCI_SUBSYS_DEVICE_ID_MASK 0xffff0000 ++#define PORT_HW_CFG_PCI_SUBSYS_VENDOR_ID_MASK 0x0000ffff ++ ++ u32 power_dissipated; ++#define PORT_HW_CFG_POWER_DIS_D3_MASK 0xff000000 ++#define PORT_HW_CFG_POWER_DIS_D3_SHIFT 24 ++#define PORT_HW_CFG_POWER_DIS_D2_MASK 0x00ff0000 ++#define PORT_HW_CFG_POWER_DIS_D2_SHIFT 16 ++#define PORT_HW_CFG_POWER_DIS_D1_MASK 0x0000ff00 ++#define PORT_HW_CFG_POWER_DIS_D1_SHIFT 8 ++#define PORT_HW_CFG_POWER_DIS_D0_MASK 0x000000ff ++#define PORT_HW_CFG_POWER_DIS_D0_SHIFT 0 ++ ++ u32 power_consumed; ++#define PORT_HW_CFG_POWER_CONS_D3_MASK 0xff000000 ++#define PORT_HW_CFG_POWER_CONS_D3_SHIFT 24 ++#define PORT_HW_CFG_POWER_CONS_D2_MASK 0x00ff0000 ++#define PORT_HW_CFG_POWER_CONS_D2_SHIFT 16 ++#define PORT_HW_CFG_POWER_CONS_D1_MASK 0x0000ff00 ++#define PORT_HW_CFG_POWER_CONS_D1_SHIFT 8 ++#define PORT_HW_CFG_POWER_CONS_D0_MASK 0x000000ff ++#define PORT_HW_CFG_POWER_CONS_D0_SHIFT 0 ++ ++ u32 mac_upper; ++#define PORT_HW_CFG_UPPERMAC_MASK 0x0000ffff ++#define PORT_HW_CFG_UPPERMAC_SHIFT 0 ++ u32 mac_lower; ++ ++ u32 iscsi_mac_upper; /* Upper 16 bits are always zeroes */ ++ u32 iscsi_mac_lower; ++ ++ u32 rdma_mac_upper; /* Upper 16 bits are always zeroes */ ++ u32 rdma_mac_lower; ++ ++ u32 serdes_config; ++#define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_MASK 0x0000ffff ++#define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_SHIFT 0 ++ ++#define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_MASK 0xffff0000 ++#define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_SHIFT 16 ++ ++ ++ u32 reserved0[16]; /* 0x158 */ ++ ++ /* 4 times 16 bits for all 4 lanes. In case external PHY is present ++ (not direct mode), those values will not take effect on the 4 XGXS ++ lanes. For some external PHYs (such as 8706 and 8726) the values ++ will be used to configure the external PHY – in those cases, not ++ all 4 values are needed. */ ++ u16 xgxs_config_rx[4]; /* 0x198 */ ++ u16 xgxs_config_tx[4]; /* 0x1A0 */ ++ ++ u32 reserved1[64]; /* 0x1A8 */ ++ ++ u32 lane_config; ++#define PORT_HW_CFG_LANE_SWAP_CFG_MASK 0x0000ffff ++#define PORT_HW_CFG_LANE_SWAP_CFG_SHIFT 0 ++#define PORT_HW_CFG_LANE_SWAP_CFG_TX_MASK 0x000000ff ++#define PORT_HW_CFG_LANE_SWAP_CFG_TX_SHIFT 0 ++#define PORT_HW_CFG_LANE_SWAP_CFG_RX_MASK 0x0000ff00 ++#define PORT_HW_CFG_LANE_SWAP_CFG_RX_SHIFT 8 ++#define PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK 0x0000c000 ++#define PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT 14 ++ /* AN and forced */ ++#define PORT_HW_CFG_LANE_SWAP_CFG_01230123 0x00001b1b ++ /* forced only */ ++#define PORT_HW_CFG_LANE_SWAP_CFG_01233210 0x00001be4 ++ /* forced only */ ++#define PORT_HW_CFG_LANE_SWAP_CFG_31203120 0x0000d8d8 ++ /* forced only */ ++#define PORT_HW_CFG_LANE_SWAP_CFG_32103210 0x0000e4e4 ++ ++ u32 external_phy_config; ++#define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK 0xff000000 ++#define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_SHIFT 24 ++#define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT 0x00000000 ++#define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482 0x01000000 ++#define PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN 0xff000000 ++ ++#define PORT_HW_CFG_SERDES_EXT_PHY_ADDR_MASK 0x00ff0000 ++#define PORT_HW_CFG_SERDES_EXT_PHY_ADDR_SHIFT 16 ++ ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK 0x0000ff00 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SHIFT 8 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT 0x00000000 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8071 0x00000100 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072 0x00000200 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073 0x00000300 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705 0x00000400 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706 0x00000500 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726 0x00000600 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481 0x00000700 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101 0x00000800 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727 0x00000900 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727_NOC 0x00000a00 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE 0x0000fd00 ++#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN 0x0000ff00 ++ ++#define PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK 0x000000ff ++#define PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT 0 ++ ++ u32 speed_capability_mask; ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_MASK 0xffff0000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_SHIFT 16 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL 0x00010000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF 0x00020000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF 0x00040000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL 0x00080000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_1G 0x00100000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G 0x00200000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_10G 0x00400000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_12G 0x00800000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_12_5G 0x01000000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_13G 0x02000000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_15G 0x04000000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_16G 0x08000000 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D0_RESERVED 0xf0000000 ++ ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_MASK 0x0000ffff ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_SHIFT 0 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_10M_FULL 0x00000001 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_10M_HALF 0x00000002 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_100M_HALF 0x00000004 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_100M_FULL 0x00000008 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_1G 0x00000010 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_2_5G 0x00000020 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_10G 0x00000040 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_12G 0x00000080 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_12_5G 0x00000100 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_13G 0x00000200 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_15G 0x00000400 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_16G 0x00000800 ++#define PORT_HW_CFG_SPEED_CAPABILITY_D3_RESERVED 0x0000f000 ++ ++ /* A place to hold the original MAC address as a backup */ ++ u32 backup_mac_upper; /* 0x2B4 */ ++ u32 backup_mac_lower; /* 0x2B8 */ ++ ++}; ++ ++ ++/**************************************************************************** ++ * Shared Feature configuration * ++ ****************************************************************************/ ++struct shared_feat_cfg { /* NVRAM Offset */ ++ ++ u32 config; /* 0x450 */ ++#define SHARED_FEATURE_BMC_ECHO_MODE_EN 0x00000001 ++ ++ /* Use NVRAM values instead of HW default values */ ++#define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_DISABLED 0x00000000 ++#define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_ENABLED 0x00000002 ++ ++#define SHARED_FEAT_CFG_NCSI_ID_METHOD_SPIO 0x00000000 ++#define SHARED_FEAT_CFG_NCSI_ID_METHOD_NVRAM 0x00000008 ++ ++#define SHARED_FEAT_CFG_NCSI_ID_MASK 0x00000030 ++#define SHARED_FEAT_CFG_NCSI_ID_SHIFT 4 ++ ++ /* Override the OTP back to single function mode. When using GPIO, ++ high means only SF, 0 is according to CLP configuration */ ++#define SHARED_FEAT_CFG_FORCE_SF_MODE_MASK 0x00000700 ++#define SHARED_FEAT_CFG_FORCE_SF_MODE_SHIFT 8 ++#define SHARED_FEAT_CFG_FORCE_SF_MODE_MF_ALLOWED 0x00000000 ++#define SHARED_FEAT_CFG_FORCE_SF_MODE_FORCED_SF 0x00000100 ++#define SHARED_FEAT_CFG_FORCE_SF_MODE_SPIO4 0x00000200 ++ ++}; ++ ++ ++/**************************************************************************** ++ * Port Feature configuration * ++ ****************************************************************************/ ++struct port_feat_cfg { /* port 0: 0x454 port 1: 0x4c8 */ ++ ++ u32 config; ++#define PORT_FEATURE_BAR1_SIZE_MASK 0x0000000f ++#define PORT_FEATURE_BAR1_SIZE_SHIFT 0 ++#define PORT_FEATURE_BAR1_SIZE_DISABLED 0x00000000 ++#define PORT_FEATURE_BAR1_SIZE_64K 0x00000001 ++#define PORT_FEATURE_BAR1_SIZE_128K 0x00000002 ++#define PORT_FEATURE_BAR1_SIZE_256K 0x00000003 ++#define PORT_FEATURE_BAR1_SIZE_512K 0x00000004 ++#define PORT_FEATURE_BAR1_SIZE_1M 0x00000005 ++#define PORT_FEATURE_BAR1_SIZE_2M 0x00000006 ++#define PORT_FEATURE_BAR1_SIZE_4M 0x00000007 ++#define PORT_FEATURE_BAR1_SIZE_8M 0x00000008 ++#define PORT_FEATURE_BAR1_SIZE_16M 0x00000009 ++#define PORT_FEATURE_BAR1_SIZE_32M 0x0000000a ++#define PORT_FEATURE_BAR1_SIZE_64M 0x0000000b ++#define PORT_FEATURE_BAR1_SIZE_128M 0x0000000c ++#define PORT_FEATURE_BAR1_SIZE_256M 0x0000000d ++#define PORT_FEATURE_BAR1_SIZE_512M 0x0000000e ++#define PORT_FEATURE_BAR1_SIZE_1G 0x0000000f ++#define PORT_FEATURE_BAR2_SIZE_MASK 0x000000f0 ++#define PORT_FEATURE_BAR2_SIZE_SHIFT 4 ++#define PORT_FEATURE_BAR2_SIZE_DISABLED 0x00000000 ++#define PORT_FEATURE_BAR2_SIZE_64K 0x00000010 ++#define PORT_FEATURE_BAR2_SIZE_128K 0x00000020 ++#define PORT_FEATURE_BAR2_SIZE_256K 0x00000030 ++#define PORT_FEATURE_BAR2_SIZE_512K 0x00000040 ++#define PORT_FEATURE_BAR2_SIZE_1M 0x00000050 ++#define PORT_FEATURE_BAR2_SIZE_2M 0x00000060 ++#define PORT_FEATURE_BAR2_SIZE_4M 0x00000070 ++#define PORT_FEATURE_BAR2_SIZE_8M 0x00000080 ++#define PORT_FEATURE_BAR2_SIZE_16M 0x00000090 ++#define PORT_FEATURE_BAR2_SIZE_32M 0x000000a0 ++#define PORT_FEATURE_BAR2_SIZE_64M 0x000000b0 ++#define PORT_FEATURE_BAR2_SIZE_128M 0x000000c0 ++#define PORT_FEATURE_BAR2_SIZE_256M 0x000000d0 ++#define PORT_FEATURE_BAR2_SIZE_512M 0x000000e0 ++#define PORT_FEATURE_BAR2_SIZE_1G 0x000000f0 ++#define PORT_FEATURE_EN_SIZE_MASK 0x07000000 ++#define PORT_FEATURE_EN_SIZE_SHIFT 24 ++#define PORT_FEATURE_WOL_ENABLED 0x01000000 ++#define PORT_FEATURE_MBA_ENABLED 0x02000000 ++#define PORT_FEATURE_MFW_ENABLED 0x04000000 ++ ++ /* Advertise expansion ROM even if MBA is disabled */ ++#define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_DISABLED 0x00000000 ++#define PORT_FEAT_CFG_FORCE_EXP_ROM_ADV_ENABLED 0x08000000 ++ ++ /* Reserved bits: 28-29 */ ++ /* Check the optic vendor via i2c against a list of approved modules ++ in a separate nvram image */ ++#define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK 0xE0000000 ++#define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_SHIFT 29 ++#define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_NO_ENFORCEMENT 0x00000000 ++#define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_DISABLE_TX_LASER 0x20000000 ++#define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_WARNING_MSG 0x40000000 ++#define PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_POWER_DOWN 0x60000000 ++ ++ ++ u32 wol_config; ++ /* Default is used when driver sets to "auto" mode */ ++#define PORT_FEATURE_WOL_DEFAULT_MASK 0x00000003 ++#define PORT_FEATURE_WOL_DEFAULT_SHIFT 0 ++#define PORT_FEATURE_WOL_DEFAULT_DISABLE 0x00000000 ++#define PORT_FEATURE_WOL_DEFAULT_MAGIC 0x00000001 ++#define PORT_FEATURE_WOL_DEFAULT_ACPI 0x00000002 ++#define PORT_FEATURE_WOL_DEFAULT_MAGIC_AND_ACPI 0x00000003 ++#define PORT_FEATURE_WOL_RES_PAUSE_CAP 0x00000004 ++#define PORT_FEATURE_WOL_RES_ASYM_PAUSE_CAP 0x00000008 ++#define PORT_FEATURE_WOL_ACPI_UPON_MGMT 0x00000010 ++ ++ u32 mba_config; ++#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK 0x00000007 ++#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_SHIFT 0 ++#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_PXE 0x00000000 ++#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_RPL 0x00000001 ++#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_BOOTP 0x00000002 ++#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_ISCSIB 0x00000003 ++#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_NONE 0x00000007 ++#define PORT_FEATURE_MBA_RES_PAUSE_CAP 0x00000100 ++#define PORT_FEATURE_MBA_RES_ASYM_PAUSE_CAP 0x00000200 ++#define PORT_FEATURE_MBA_SETUP_PROMPT_ENABLE 0x00000400 ++#define PORT_FEATURE_MBA_HOTKEY_CTRL_S 0x00000000 ++#define PORT_FEATURE_MBA_HOTKEY_CTRL_B 0x00000800 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_MASK 0x000ff000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_SHIFT 12 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_DISABLED 0x00000000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_2K 0x00001000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_4K 0x00002000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_8K 0x00003000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_16K 0x00004000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_32K 0x00005000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_64K 0x00006000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_128K 0x00007000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_256K 0x00008000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_512K 0x00009000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_1M 0x0000a000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_2M 0x0000b000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_4M 0x0000c000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_8M 0x0000d000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_16M 0x0000e000 ++#define PORT_FEATURE_MBA_EXP_ROM_SIZE_32M 0x0000f000 ++#define PORT_FEATURE_MBA_MSG_TIMEOUT_MASK 0x00f00000 ++#define PORT_FEATURE_MBA_MSG_TIMEOUT_SHIFT 20 ++#define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_MASK 0x03000000 ++#define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_SHIFT 24 ++#define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_AUTO 0x00000000 ++#define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_BBS 0x01000000 ++#define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT18H 0x02000000 ++#define PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT19H 0x03000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_MASK 0x3c000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_SHIFT 26 ++#define PORT_FEATURE_MBA_LINK_SPEED_AUTO 0x00000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_10HD 0x04000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_10FD 0x08000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_100HD 0x0c000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_100FD 0x10000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_1GBPS 0x14000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_2_5GBPS 0x18000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_10GBPS_CX4 0x1c000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_10GBPS_KX4 0x20000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_10GBPS_KR 0x24000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_12GBPS 0x28000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_12_5GBPS 0x2c000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_13GBPS 0x30000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_15GBPS 0x34000000 ++#define PORT_FEATURE_MBA_LINK_SPEED_16GBPS 0x38000000 ++ ++ u32 bmc_config; ++#define PORT_FEATURE_BMC_LINK_OVERRIDE_DEFAULT 0x00000000 ++#define PORT_FEATURE_BMC_LINK_OVERRIDE_EN 0x00000001 ++ ++ u32 mba_vlan_cfg; ++#define PORT_FEATURE_MBA_VLAN_TAG_MASK 0x0000ffff ++#define PORT_FEATURE_MBA_VLAN_TAG_SHIFT 0 ++#define PORT_FEATURE_MBA_VLAN_EN 0x00010000 ++ ++ u32 resource_cfg; ++#define PORT_FEATURE_RESOURCE_CFG_VALID 0x00000001 ++#define PORT_FEATURE_RESOURCE_CFG_DIAG 0x00000002 ++#define PORT_FEATURE_RESOURCE_CFG_L2 0x00000004 ++#define PORT_FEATURE_RESOURCE_CFG_ISCSI 0x00000008 ++#define PORT_FEATURE_RESOURCE_CFG_RDMA 0x00000010 ++ ++ u32 smbus_config; ++ /* Obsolete */ ++#define PORT_FEATURE_SMBUS_EN 0x00000001 ++#define PORT_FEATURE_SMBUS_ADDR_MASK 0x000000fe ++#define PORT_FEATURE_SMBUS_ADDR_SHIFT 1 ++ ++ u32 reserved1; ++ ++ u32 link_config; /* Used as HW defaults for the driver */ ++#define PORT_FEATURE_CONNECTED_SWITCH_MASK 0x03000000 ++#define PORT_FEATURE_CONNECTED_SWITCH_SHIFT 24 ++ /* (forced) low speed switch (< 10G) */ ++#define PORT_FEATURE_CON_SWITCH_1G_SWITCH 0x00000000 ++ /* (forced) high speed switch (>= 10G) */ ++#define PORT_FEATURE_CON_SWITCH_10G_SWITCH 0x01000000 ++#define PORT_FEATURE_CON_SWITCH_AUTO_DETECT 0x02000000 ++#define PORT_FEATURE_CON_SWITCH_ONE_TIME_DETECT 0x03000000 ++ ++#define PORT_FEATURE_LINK_SPEED_MASK 0x000f0000 ++#define PORT_FEATURE_LINK_SPEED_SHIFT 16 ++#define PORT_FEATURE_LINK_SPEED_AUTO 0x00000000 ++#define PORT_FEATURE_LINK_SPEED_10M_FULL 0x00010000 ++#define PORT_FEATURE_LINK_SPEED_10M_HALF 0x00020000 ++#define PORT_FEATURE_LINK_SPEED_100M_HALF 0x00030000 ++#define PORT_FEATURE_LINK_SPEED_100M_FULL 0x00040000 ++#define PORT_FEATURE_LINK_SPEED_1G 0x00050000 ++#define PORT_FEATURE_LINK_SPEED_2_5G 0x00060000 ++#define PORT_FEATURE_LINK_SPEED_10G_CX4 0x00070000 ++#define PORT_FEATURE_LINK_SPEED_10G_KX4 0x00080000 ++#define PORT_FEATURE_LINK_SPEED_10G_KR 0x00090000 ++#define PORT_FEATURE_LINK_SPEED_12G 0x000a0000 ++#define PORT_FEATURE_LINK_SPEED_12_5G 0x000b0000 ++#define PORT_FEATURE_LINK_SPEED_13G 0x000c0000 ++#define PORT_FEATURE_LINK_SPEED_15G 0x000d0000 ++#define PORT_FEATURE_LINK_SPEED_16G 0x000e0000 ++ ++#define PORT_FEATURE_FLOW_CONTROL_MASK 0x00000700 ++#define PORT_FEATURE_FLOW_CONTROL_SHIFT 8 ++#define PORT_FEATURE_FLOW_CONTROL_AUTO 0x00000000 ++#define PORT_FEATURE_FLOW_CONTROL_TX 0x00000100 ++#define PORT_FEATURE_FLOW_CONTROL_RX 0x00000200 ++#define PORT_FEATURE_FLOW_CONTROL_BOTH 0x00000300 ++#define PORT_FEATURE_FLOW_CONTROL_NONE 0x00000400 ++ ++ /* The default for MCP link configuration, ++ uses the same defines as link_config */ ++ u32 mfw_wol_link_cfg; ++ ++ u32 reserved[19]; ++ ++}; ++ ++ ++/**************************************************************************** ++ * Device Information * ++ ****************************************************************************/ ++struct shm_dev_info { /* size */ ++ ++ u32 bc_rev; /* 8 bits each: major, minor, build */ /* 4 */ ++ ++ struct shared_hw_cfg shared_hw_config; /* 40 */ ++ ++ struct port_hw_cfg port_hw_config[PORT_MAX]; /* 400*2=800 */ ++ ++ struct shared_feat_cfg shared_feature_config; /* 4 */ ++ ++ struct port_feat_cfg port_feature_config[PORT_MAX];/* 116*2=232 */ ++ ++}; ++ ++ ++#define FUNC_0 0 ++#define FUNC_1 1 ++#define FUNC_2 2 ++#define FUNC_3 3 ++#define FUNC_4 4 ++#define FUNC_5 5 ++#define FUNC_6 6 ++#define FUNC_7 7 ++#define E1_FUNC_MAX 2 ++#define E1H_FUNC_MAX 8 ++ ++#define VN_0 0 ++#define VN_1 1 ++#define VN_2 2 ++#define VN_3 3 ++#define E1VN_MAX 1 ++#define E1HVN_MAX 4 ++ ++ ++/* This value (in milliseconds) determines the frequency of the driver ++ * issuing the PULSE message code. The firmware monitors this periodic ++ * pulse to determine when to switch to an OS-absent mode. */ ++#define DRV_PULSE_PERIOD_MS 250 ++ ++/* This value (in milliseconds) determines how long the driver should ++ * wait for an acknowledgement from the firmware before timing out. Once ++ * the firmware has timed out, the driver will assume there is no firmware ++ * running and there won't be any firmware-driver synchronization during a ++ * driver reset. */ ++#define FW_ACK_TIME_OUT_MS 5000 ++ ++#define FW_ACK_POLL_TIME_MS 1 ++ ++#define FW_ACK_NUM_OF_POLL (FW_ACK_TIME_OUT_MS/FW_ACK_POLL_TIME_MS) ++ ++/* LED Blink rate that will achieve ~15.9Hz */ ++#define LED_BLINK_RATE_VAL 480 ++ ++/**************************************************************************** ++ * Driver <-> FW Mailbox * ++ ****************************************************************************/ ++struct drv_port_mb { ++ ++ u32 link_status; ++ /* Driver should update this field on any link change event */ ++ ++#define LINK_STATUS_LINK_FLAG_MASK 0x00000001 ++#define LINK_STATUS_LINK_UP 0x00000001 ++#define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001E ++#define LINK_STATUS_SPEED_AND_DUPLEX_AN_NOT_COMPLETE (0<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_10THD (1<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_10TFD (2<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_100TXHD (3<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_100T4 (4<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_100TXFD (5<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_1000THD (6<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (7<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_1000XFD (7<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_2500THD (8<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_2500TFD (9<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_2500XFD (9<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_10GTFD (10<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_10GXFD (10<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_12GTFD (11<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_12GXFD (11<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_12_5GTFD (12<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_12_5GXFD (12<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_13GTFD (13<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_13GXFD (13<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_15GTFD (14<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_15GXFD (14<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_16GTFD (15<<1) ++#define LINK_STATUS_SPEED_AND_DUPLEX_16GXFD (15<<1) ++ ++#define LINK_STATUS_AUTO_NEGOTIATE_FLAG_MASK 0x00000020 ++#define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020 ++ ++#define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040 ++#define LINK_STATUS_PARALLEL_DETECTION_FLAG_MASK 0x00000080 ++#define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080 ++ ++#define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200 ++#define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400 ++#define LINK_STATUS_LINK_PARTNER_100T4_CAPABLE 0x00000800 ++#define LINK_STATUS_LINK_PARTNER_100TXFD_CAPABLE 0x00001000 ++#define LINK_STATUS_LINK_PARTNER_100TXHD_CAPABLE 0x00002000 ++#define LINK_STATUS_LINK_PARTNER_10TFD_CAPABLE 0x00004000 ++#define LINK_STATUS_LINK_PARTNER_10THD_CAPABLE 0x00008000 ++ ++#define LINK_STATUS_TX_FLOW_CONTROL_FLAG_MASK 0x00010000 ++#define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00010000 ++ ++#define LINK_STATUS_RX_FLOW_CONTROL_FLAG_MASK 0x00020000 ++#define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00020000 ++ ++#define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000C0000 ++#define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0<<18) ++#define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE (1<<18) ++#define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2<<18) ++#define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3<<18) ++ ++#define LINK_STATUS_SERDES_LINK 0x00100000 ++ ++#define LINK_STATUS_LINK_PARTNER_2500XFD_CAPABLE 0x00200000 ++#define LINK_STATUS_LINK_PARTNER_2500XHD_CAPABLE 0x00400000 ++#define LINK_STATUS_LINK_PARTNER_10GXFD_CAPABLE 0x00800000 ++#define LINK_STATUS_LINK_PARTNER_12GXFD_CAPABLE 0x01000000 ++#define LINK_STATUS_LINK_PARTNER_12_5GXFD_CAPABLE 0x02000000 ++#define LINK_STATUS_LINK_PARTNER_13GXFD_CAPABLE 0x04000000 ++#define LINK_STATUS_LINK_PARTNER_15GXFD_CAPABLE 0x08000000 ++#define LINK_STATUS_LINK_PARTNER_16GXFD_CAPABLE 0x10000000 ++ ++ u32 port_stx; ++ ++ u32 stat_nig_timer; ++ ++ /* MCP firmware does not use this field */ ++ u32 ext_phy_fw_version; ++ ++}; ++ ++ ++struct drv_func_mb { ++ ++ u32 drv_mb_header; ++#define DRV_MSG_CODE_MASK 0xffff0000 ++#define DRV_MSG_CODE_LOAD_REQ 0x10000000 ++#define DRV_MSG_CODE_LOAD_DONE 0x11000000 ++#define DRV_MSG_CODE_UNLOAD_REQ_WOL_EN 0x20000000 ++#define DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS 0x20010000 ++#define DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP 0x20020000 ++#define DRV_MSG_CODE_UNLOAD_DONE 0x21000000 ++#define DRV_MSG_CODE_DCC_OK 0x30000000 ++#define DRV_MSG_CODE_DCC_FAILURE 0x31000000 ++#define DRV_MSG_CODE_DIAG_ENTER_REQ 0x50000000 ++#define DRV_MSG_CODE_DIAG_EXIT_REQ 0x60000000 ++#define DRV_MSG_CODE_VALIDATE_KEY 0x70000000 ++#define DRV_MSG_CODE_GET_CURR_KEY 0x80000000 ++#define DRV_MSG_CODE_GET_UPGRADE_KEY 0x81000000 ++#define DRV_MSG_CODE_GET_MANUF_KEY 0x82000000 ++#define DRV_MSG_CODE_LOAD_L2B_PRAM 0x90000000 ++ /* ++ * The optic module verification commands requris bootcode ++ * v5.0.6 or later ++ */ ++#define DRV_MSG_CODE_VRFY_OPT_MDL 0xa0000000 ++#define REQ_BC_VER_4_VRFY_OPT_MDL 0x00050006 ++ ++#define BIOS_MSG_CODE_LIC_CHALLENGE 0xff010000 ++#define BIOS_MSG_CODE_LIC_RESPONSE 0xff020000 ++#define BIOS_MSG_CODE_VIRT_MAC_PRIM 0xff030000 ++#define BIOS_MSG_CODE_VIRT_MAC_ISCSI 0xff040000 ++ ++#define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff ++ ++ u32 drv_mb_param; ++ ++ u32 fw_mb_header; ++#define FW_MSG_CODE_MASK 0xffff0000 ++#define FW_MSG_CODE_DRV_LOAD_COMMON 0x10100000 ++#define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000 ++#define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000 ++#define FW_MSG_CODE_DRV_LOAD_REFUSED 0x10200000 ++#define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000 ++#define FW_MSG_CODE_DRV_UNLOAD_COMMON 0x20100000 ++#define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20110000 ++#define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20120000 ++#define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000 ++#define FW_MSG_CODE_DCC_DONE 0x30100000 ++#define FW_MSG_CODE_DIAG_ENTER_DONE 0x50100000 ++#define FW_MSG_CODE_DIAG_REFUSE 0x50200000 ++#define FW_MSG_CODE_DIAG_EXIT_DONE 0x60100000 ++#define FW_MSG_CODE_VALIDATE_KEY_SUCCESS 0x70100000 ++#define FW_MSG_CODE_VALIDATE_KEY_FAILURE 0x70200000 ++#define FW_MSG_CODE_GET_KEY_DONE 0x80100000 ++#define FW_MSG_CODE_NO_KEY 0x80f00000 ++#define FW_MSG_CODE_LIC_INFO_NOT_READY 0x80f80000 ++#define FW_MSG_CODE_L2B_PRAM_LOADED 0x90100000 ++#define FW_MSG_CODE_L2B_PRAM_T_LOAD_FAILURE 0x90210000 ++#define FW_MSG_CODE_L2B_PRAM_C_LOAD_FAILURE 0x90220000 ++#define FW_MSG_CODE_L2B_PRAM_X_LOAD_FAILURE 0x90230000 ++#define FW_MSG_CODE_L2B_PRAM_U_LOAD_FAILURE 0x90240000 ++#define FW_MSG_CODE_VRFY_OPT_MDL_SUCCESS 0xa0100000 ++#define FW_MSG_CODE_VRFY_OPT_MDL_INVLD_IMG 0xa0200000 ++#define FW_MSG_CODE_VRFY_OPT_MDL_UNAPPROVED 0xa0300000 ++ ++#define FW_MSG_CODE_LIC_CHALLENGE 0xff010000 ++#define FW_MSG_CODE_LIC_RESPONSE 0xff020000 ++#define FW_MSG_CODE_VIRT_MAC_PRIM 0xff030000 ++#define FW_MSG_CODE_VIRT_MAC_ISCSI 0xff040000 ++ ++#define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff ++ ++ u32 fw_mb_param; ++ ++ u32 drv_pulse_mb; ++#define DRV_PULSE_SEQ_MASK 0x00007fff ++#define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000 ++ /* The system time is in the format of ++ * (year-2001)*12*32 + month*32 + day. */ ++#define DRV_PULSE_ALWAYS_ALIVE 0x00008000 ++ /* Indicate to the firmware not to go into the ++ * OS-absent when it is not getting driver pulse. ++ * This is used for debugging as well for PXE(MBA). */ ++ ++ u32 mcp_pulse_mb; ++#define MCP_PULSE_SEQ_MASK 0x00007fff ++#define MCP_PULSE_ALWAYS_ALIVE 0x00008000 ++ /* Indicates to the driver not to assert due to lack ++ * of MCP response */ ++#define MCP_EVENT_MASK 0xffff0000 ++#define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000 ++ ++ u32 iscsi_boot_signature; ++ u32 iscsi_boot_block_offset; ++ ++ u32 drv_status; ++#define DRV_STATUS_PMF 0x00000001 ++ ++#define DRV_STATUS_DCC_EVENT_MASK 0x0000ff00 ++#define DRV_STATUS_DCC_DISABLE_ENABLE_PF 0x00000100 ++#define DRV_STATUS_DCC_BANDWIDTH_ALLOCATION 0x00000200 ++#define DRV_STATUS_DCC_CHANGE_MAC_ADDRESS 0x00000400 ++#define DRV_STATUS_DCC_RESERVED1 0x00000800 ++#define DRV_STATUS_DCC_SET_PROTOCOL 0x00001000 ++#define DRV_STATUS_DCC_SET_PRIORITY 0x00002000 ++ ++ u32 virt_mac_upper; ++#define VIRT_MAC_SIGN_MASK 0xffff0000 ++#define VIRT_MAC_SIGNATURE 0x564d0000 ++ u32 virt_mac_lower; ++ ++}; ++ ++ ++/**************************************************************************** ++ * Management firmware state * ++ ****************************************************************************/ ++/* Allocate 440 bytes for management firmware */ ++#define MGMTFW_STATE_WORD_SIZE 110 ++ ++struct mgmtfw_state { ++ u32 opaque[MGMTFW_STATE_WORD_SIZE]; ++}; ++ ++ ++/**************************************************************************** ++ * Multi-Function configuration * ++ ****************************************************************************/ ++struct shared_mf_cfg { ++ ++ u32 clp_mb; ++#define SHARED_MF_CLP_SET_DEFAULT 0x00000000 ++ /* set by CLP */ ++#define SHARED_MF_CLP_EXIT 0x00000001 ++ /* set by MCP */ ++#define SHARED_MF_CLP_EXIT_DONE 0x00010000 ++ ++}; ++ ++struct port_mf_cfg { ++ ++ u32 dynamic_cfg; /* device control channel */ ++#define PORT_MF_CFG_E1HOV_TAG_MASK 0x0000ffff ++#define PORT_MF_CFG_E1HOV_TAG_SHIFT 0 ++#define PORT_MF_CFG_E1HOV_TAG_DEFAULT PORT_MF_CFG_E1HOV_TAG_MASK ++ ++ u32 reserved[3]; ++ ++}; ++ ++struct func_mf_cfg { ++ ++ u32 config; ++ /* E/R/I/D */ ++ /* function 0 of each port cannot be hidden */ ++#define FUNC_MF_CFG_FUNC_HIDE 0x00000001 ++ ++#define FUNC_MF_CFG_PROTOCOL_MASK 0x00000007 ++#define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000002 ++#define FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA 0x00000004 ++#define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000006 ++#define FUNC_MF_CFG_PROTOCOL_DEFAULT\ ++ FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA ++ ++#define FUNC_MF_CFG_FUNC_DISABLED 0x00000008 ++ ++ /* PRI */ ++ /* 0 - low priority, 3 - high priority */ ++#define FUNC_MF_CFG_TRANSMIT_PRIORITY_MASK 0x00000300 ++#define FUNC_MF_CFG_TRANSMIT_PRIORITY_SHIFT 8 ++#define FUNC_MF_CFG_TRANSMIT_PRIORITY_DEFAULT 0x00000000 ++ ++ /* MINBW, MAXBW */ ++ /* value range - 0..100, increments in 100Mbps */ ++#define FUNC_MF_CFG_MIN_BW_MASK 0x00ff0000 ++#define FUNC_MF_CFG_MIN_BW_SHIFT 16 ++#define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000 ++#define FUNC_MF_CFG_MAX_BW_MASK 0xff000000 ++#define FUNC_MF_CFG_MAX_BW_SHIFT 24 ++#define FUNC_MF_CFG_MAX_BW_DEFAULT 0x64000000 ++ ++ u32 mac_upper; /* MAC */ ++#define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff ++#define FUNC_MF_CFG_UPPERMAC_SHIFT 0 ++#define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK ++ u32 mac_lower; ++#define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff ++ ++ u32 e1hov_tag; /* VNI */ ++#define FUNC_MF_CFG_E1HOV_TAG_MASK 0x0000ffff ++#define FUNC_MF_CFG_E1HOV_TAG_SHIFT 0 ++#define FUNC_MF_CFG_E1HOV_TAG_DEFAULT FUNC_MF_CFG_E1HOV_TAG_MASK ++ ++ u32 reserved[2]; ++ ++}; ++ ++struct mf_cfg { ++ ++ struct shared_mf_cfg shared_mf_config; ++ struct port_mf_cfg port_mf_config[PORT_MAX]; ++ struct func_mf_cfg func_mf_config[E1H_FUNC_MAX]; ++ ++}; ++ ++ ++/**************************************************************************** ++ * Shared Memory Region * ++ ****************************************************************************/ ++struct shmem_region { /* SharedMem Offset (size) */ ++ ++ u32 validity_map[PORT_MAX]; /* 0x0 (4*2 = 0x8) */ ++#define SHR_MEM_FORMAT_REV_ID ('A'<<24) ++#define SHR_MEM_FORMAT_REV_MASK 0xff000000 ++ /* validity bits */ ++#define SHR_MEM_VALIDITY_PCI_CFG 0x00100000 ++#define SHR_MEM_VALIDITY_MB 0x00200000 ++#define SHR_MEM_VALIDITY_DEV_INFO 0x00400000 ++#define SHR_MEM_VALIDITY_RESERVED 0x00000007 ++ /* One licensing bit should be set */ ++#define SHR_MEM_VALIDITY_LIC_KEY_IN_EFFECT_MASK 0x00000038 ++#define SHR_MEM_VALIDITY_LIC_MANUF_KEY_IN_EFFECT 0x00000008 ++#define SHR_MEM_VALIDITY_LIC_UPGRADE_KEY_IN_EFFECT 0x00000010 ++#define SHR_MEM_VALIDITY_LIC_NO_KEY_IN_EFFECT 0x00000020 ++ /* Active MFW */ ++#define SHR_MEM_VALIDITY_ACTIVE_MFW_UNKNOWN 0x00000000 ++#define SHR_MEM_VALIDITY_ACTIVE_MFW_IPMI 0x00000040 ++#define SHR_MEM_VALIDITY_ACTIVE_MFW_UMP 0x00000080 ++#define SHR_MEM_VALIDITY_ACTIVE_MFW_NCSI 0x000000c0 ++#define SHR_MEM_VALIDITY_ACTIVE_MFW_NONE 0x000001c0 ++#define SHR_MEM_VALIDITY_ACTIVE_MFW_MASK 0x000001c0 ++ ++ struct shm_dev_info dev_info; /* 0x8 (0x438) */ ++ ++struct license_key drv_lic_key[PORT_MAX]; /* 0x440 (52*2=0x68) */ ++ ++ /* FW information (for internal FW use) */ ++ u32 fw_info_fio_offset; /* 0x4a8 (0x4) */ ++ struct mgmtfw_state mgmtfw_state; /* 0x4ac (0x1b8) */ ++ ++ struct drv_port_mb port_mb[PORT_MAX]; /* 0x664 (16*2=0x20) */ ++#if !defined(b710) /* BNX2X_UPSTREAM */ ++ struct drv_func_mb func_mb[E1H_FUNC_MAX]; ++#else ++ struct drv_func_mb func_mb[E1_FUNC_MAX]; /* 0x684 (44*2=0x58) */ ++#endif ++ ++#if !defined(b710) /* BNX2X_UPSTREAM */ ++ struct mf_cfg mf_cfg; ++#endif ++ ++}; /* 0x6dc */ ++ ++ ++struct shmem2_region { ++ ++ u32 size; ++ ++ u32 dcc_support; ++#define SHMEM_DCC_SUPPORT_NONE 0x00000000 ++#define SHMEM_DCC_SUPPORT_DISABLE_ENABLE_PF_TLV 0x00000001 ++#define SHMEM_DCC_SUPPORT_BANDWIDTH_ALLOCATION_TLV 0x00000004 ++#define SHMEM_DCC_SUPPORT_CHANGE_MAC_ADDRESS_TLV 0x00000008 ++#define SHMEM_DCC_SUPPORT_SET_PROTOCOL_TLV 0x00000040 ++#define SHMEM_DCC_SUPPORT_SET_PRIORITY_TLV 0x00000080 ++#define SHMEM_DCC_SUPPORT_DEFAULT SHMEM_DCC_SUPPORT_NONE ++ ++}; ++ ++ ++struct emac_stats { ++ u32 rx_stat_ifhcinoctets; ++ u32 rx_stat_ifhcinbadoctets; ++ u32 rx_stat_etherstatsfragments; ++ u32 rx_stat_ifhcinucastpkts; ++ u32 rx_stat_ifhcinmulticastpkts; ++ u32 rx_stat_ifhcinbroadcastpkts; ++ u32 rx_stat_dot3statsfcserrors; ++ u32 rx_stat_dot3statsalignmenterrors; ++ u32 rx_stat_dot3statscarriersenseerrors; ++ u32 rx_stat_xonpauseframesreceived; ++ u32 rx_stat_xoffpauseframesreceived; ++ u32 rx_stat_maccontrolframesreceived; ++ u32 rx_stat_xoffstateentered; ++ u32 rx_stat_dot3statsframestoolong; ++ u32 rx_stat_etherstatsjabbers; ++ u32 rx_stat_etherstatsundersizepkts; ++ u32 rx_stat_etherstatspkts64octets; ++ u32 rx_stat_etherstatspkts65octetsto127octets; ++ u32 rx_stat_etherstatspkts128octetsto255octets; ++ u32 rx_stat_etherstatspkts256octetsto511octets; ++ u32 rx_stat_etherstatspkts512octetsto1023octets; ++ u32 rx_stat_etherstatspkts1024octetsto1522octets; ++ u32 rx_stat_etherstatspktsover1522octets; ++ ++ u32 rx_stat_falsecarriererrors; ++ ++ u32 tx_stat_ifhcoutoctets; ++ u32 tx_stat_ifhcoutbadoctets; ++ u32 tx_stat_etherstatscollisions; ++ u32 tx_stat_outxonsent; ++ u32 tx_stat_outxoffsent; ++ u32 tx_stat_flowcontroldone; ++ u32 tx_stat_dot3statssinglecollisionframes; ++ u32 tx_stat_dot3statsmultiplecollisionframes; ++ u32 tx_stat_dot3statsdeferredtransmissions; ++ u32 tx_stat_dot3statsexcessivecollisions; ++ u32 tx_stat_dot3statslatecollisions; ++ u32 tx_stat_ifhcoutucastpkts; ++ u32 tx_stat_ifhcoutmulticastpkts; ++ u32 tx_stat_ifhcoutbroadcastpkts; ++ u32 tx_stat_etherstatspkts64octets; ++ u32 tx_stat_etherstatspkts65octetsto127octets; ++ u32 tx_stat_etherstatspkts128octetsto255octets; ++ u32 tx_stat_etherstatspkts256octetsto511octets; ++ u32 tx_stat_etherstatspkts512octetsto1023octets; ++ u32 tx_stat_etherstatspkts1024octetsto1522octets; ++ u32 tx_stat_etherstatspktsover1522octets; ++ u32 tx_stat_dot3statsinternalmactransmiterrors; ++}; ++ ++ ++struct bmac_stats { ++ u32 tx_stat_gtpkt_lo; ++ u32 tx_stat_gtpkt_hi; ++ u32 tx_stat_gtxpf_lo; ++ u32 tx_stat_gtxpf_hi; ++ u32 tx_stat_gtfcs_lo; ++ u32 tx_stat_gtfcs_hi; ++ u32 tx_stat_gtmca_lo; ++ u32 tx_stat_gtmca_hi; ++ u32 tx_stat_gtbca_lo; ++ u32 tx_stat_gtbca_hi; ++ u32 tx_stat_gtfrg_lo; ++ u32 tx_stat_gtfrg_hi; ++ u32 tx_stat_gtovr_lo; ++ u32 tx_stat_gtovr_hi; ++ u32 tx_stat_gt64_lo; ++ u32 tx_stat_gt64_hi; ++ u32 tx_stat_gt127_lo; ++ u32 tx_stat_gt127_hi; ++ u32 tx_stat_gt255_lo; ++ u32 tx_stat_gt255_hi; ++ u32 tx_stat_gt511_lo; ++ u32 tx_stat_gt511_hi; ++ u32 tx_stat_gt1023_lo; ++ u32 tx_stat_gt1023_hi; ++ u32 tx_stat_gt1518_lo; ++ u32 tx_stat_gt1518_hi; ++ u32 tx_stat_gt2047_lo; ++ u32 tx_stat_gt2047_hi; ++ u32 tx_stat_gt4095_lo; ++ u32 tx_stat_gt4095_hi; ++ u32 tx_stat_gt9216_lo; ++ u32 tx_stat_gt9216_hi; ++ u32 tx_stat_gt16383_lo; ++ u32 tx_stat_gt16383_hi; ++ u32 tx_stat_gtmax_lo; ++ u32 tx_stat_gtmax_hi; ++ u32 tx_stat_gtufl_lo; ++ u32 tx_stat_gtufl_hi; ++ u32 tx_stat_gterr_lo; ++ u32 tx_stat_gterr_hi; ++ u32 tx_stat_gtbyt_lo; ++ u32 tx_stat_gtbyt_hi; ++ ++ u32 rx_stat_gr64_lo; ++ u32 rx_stat_gr64_hi; ++ u32 rx_stat_gr127_lo; ++ u32 rx_stat_gr127_hi; ++ u32 rx_stat_gr255_lo; ++ u32 rx_stat_gr255_hi; ++ u32 rx_stat_gr511_lo; ++ u32 rx_stat_gr511_hi; ++ u32 rx_stat_gr1023_lo; ++ u32 rx_stat_gr1023_hi; ++ u32 rx_stat_gr1518_lo; ++ u32 rx_stat_gr1518_hi; ++ u32 rx_stat_gr2047_lo; ++ u32 rx_stat_gr2047_hi; ++ u32 rx_stat_gr4095_lo; ++ u32 rx_stat_gr4095_hi; ++ u32 rx_stat_gr9216_lo; ++ u32 rx_stat_gr9216_hi; ++ u32 rx_stat_gr16383_lo; ++ u32 rx_stat_gr16383_hi; ++ u32 rx_stat_grmax_lo; ++ u32 rx_stat_grmax_hi; ++ u32 rx_stat_grpkt_lo; ++ u32 rx_stat_grpkt_hi; ++ u32 rx_stat_grfcs_lo; ++ u32 rx_stat_grfcs_hi; ++ u32 rx_stat_grmca_lo; ++ u32 rx_stat_grmca_hi; ++ u32 rx_stat_grbca_lo; ++ u32 rx_stat_grbca_hi; ++ u32 rx_stat_grxcf_lo; ++ u32 rx_stat_grxcf_hi; ++ u32 rx_stat_grxpf_lo; ++ u32 rx_stat_grxpf_hi; ++ u32 rx_stat_grxuo_lo; ++ u32 rx_stat_grxuo_hi; ++ u32 rx_stat_grjbr_lo; ++ u32 rx_stat_grjbr_hi; ++ u32 rx_stat_grovr_lo; ++ u32 rx_stat_grovr_hi; ++ u32 rx_stat_grflr_lo; ++ u32 rx_stat_grflr_hi; ++ u32 rx_stat_grmeg_lo; ++ u32 rx_stat_grmeg_hi; ++ u32 rx_stat_grmeb_lo; ++ u32 rx_stat_grmeb_hi; ++ u32 rx_stat_grbyt_lo; ++ u32 rx_stat_grbyt_hi; ++ u32 rx_stat_grund_lo; ++ u32 rx_stat_grund_hi; ++ u32 rx_stat_grfrg_lo; ++ u32 rx_stat_grfrg_hi; ++ u32 rx_stat_grerb_lo; ++ u32 rx_stat_grerb_hi; ++ u32 rx_stat_grfre_lo; ++ u32 rx_stat_grfre_hi; ++ u32 rx_stat_gripj_lo; ++ u32 rx_stat_gripj_hi; ++}; ++ ++ ++union mac_stats { ++ struct emac_stats emac_stats; ++ struct bmac_stats bmac_stats; ++}; ++ ++ ++struct mac_stx { ++ /* in_bad_octets */ ++ u32 rx_stat_ifhcinbadoctets_hi; ++ u32 rx_stat_ifhcinbadoctets_lo; ++ ++ /* out_bad_octets */ ++ u32 tx_stat_ifhcoutbadoctets_hi; ++ u32 tx_stat_ifhcoutbadoctets_lo; ++ ++ /* crc_receive_errors */ ++ u32 rx_stat_dot3statsfcserrors_hi; ++ u32 rx_stat_dot3statsfcserrors_lo; ++ /* alignment_errors */ ++ u32 rx_stat_dot3statsalignmenterrors_hi; ++ u32 rx_stat_dot3statsalignmenterrors_lo; ++ /* carrier_sense_errors */ ++ u32 rx_stat_dot3statscarriersenseerrors_hi; ++ u32 rx_stat_dot3statscarriersenseerrors_lo; ++ /* false_carrier_detections */ ++ u32 rx_stat_falsecarriererrors_hi; ++ u32 rx_stat_falsecarriererrors_lo; ++ ++ /* runt_packets_received */ ++ u32 rx_stat_etherstatsundersizepkts_hi; ++ u32 rx_stat_etherstatsundersizepkts_lo; ++ /* jabber_packets_received */ ++ u32 rx_stat_dot3statsframestoolong_hi; ++ u32 rx_stat_dot3statsframestoolong_lo; ++ ++ /* error_runt_packets_received */ ++ u32 rx_stat_etherstatsfragments_hi; ++ u32 rx_stat_etherstatsfragments_lo; ++ /* error_jabber_packets_received */ ++ u32 rx_stat_etherstatsjabbers_hi; ++ u32 rx_stat_etherstatsjabbers_lo; ++ ++ /* control_frames_received */ ++ u32 rx_stat_maccontrolframesreceived_hi; ++ u32 rx_stat_maccontrolframesreceived_lo; ++ u32 rx_stat_bmac_xpf_hi; ++ u32 rx_stat_bmac_xpf_lo; ++ u32 rx_stat_bmac_xcf_hi; ++ u32 rx_stat_bmac_xcf_lo; ++ ++ /* xoff_state_entered */ ++ u32 rx_stat_xoffstateentered_hi; ++ u32 rx_stat_xoffstateentered_lo; ++ /* pause_xon_frames_received */ ++ u32 rx_stat_xonpauseframesreceived_hi; ++ u32 rx_stat_xonpauseframesreceived_lo; ++ /* pause_xoff_frames_received */ ++ u32 rx_stat_xoffpauseframesreceived_hi; ++ u32 rx_stat_xoffpauseframesreceived_lo; ++ /* pause_xon_frames_transmitted */ ++ u32 tx_stat_outxonsent_hi; ++ u32 tx_stat_outxonsent_lo; ++ /* pause_xoff_frames_transmitted */ ++ u32 tx_stat_outxoffsent_hi; ++ u32 tx_stat_outxoffsent_lo; ++ /* flow_control_done */ ++ u32 tx_stat_flowcontroldone_hi; ++ u32 tx_stat_flowcontroldone_lo; ++ ++ /* ether_stats_collisions */ ++ u32 tx_stat_etherstatscollisions_hi; ++ u32 tx_stat_etherstatscollisions_lo; ++ /* single_collision_transmit_frames */ ++ u32 tx_stat_dot3statssinglecollisionframes_hi; ++ u32 tx_stat_dot3statssinglecollisionframes_lo; ++ /* multiple_collision_transmit_frames */ ++ u32 tx_stat_dot3statsmultiplecollisionframes_hi; ++ u32 tx_stat_dot3statsmultiplecollisionframes_lo; ++ /* deferred_transmissions */ ++ u32 tx_stat_dot3statsdeferredtransmissions_hi; ++ u32 tx_stat_dot3statsdeferredtransmissions_lo; ++ /* excessive_collision_frames */ ++ u32 tx_stat_dot3statsexcessivecollisions_hi; ++ u32 tx_stat_dot3statsexcessivecollisions_lo; ++ /* late_collision_frames */ ++ u32 tx_stat_dot3statslatecollisions_hi; ++ u32 tx_stat_dot3statslatecollisions_lo; ++ ++ /* frames_transmitted_64_bytes */ ++ u32 tx_stat_etherstatspkts64octets_hi; ++ u32 tx_stat_etherstatspkts64octets_lo; ++ /* frames_transmitted_65_127_bytes */ ++ u32 tx_stat_etherstatspkts65octetsto127octets_hi; ++ u32 tx_stat_etherstatspkts65octetsto127octets_lo; ++ /* frames_transmitted_128_255_bytes */ ++ u32 tx_stat_etherstatspkts128octetsto255octets_hi; ++ u32 tx_stat_etherstatspkts128octetsto255octets_lo; ++ /* frames_transmitted_256_511_bytes */ ++ u32 tx_stat_etherstatspkts256octetsto511octets_hi; ++ u32 tx_stat_etherstatspkts256octetsto511octets_lo; ++ /* frames_transmitted_512_1023_bytes */ ++ u32 tx_stat_etherstatspkts512octetsto1023octets_hi; ++ u32 tx_stat_etherstatspkts512octetsto1023octets_lo; ++ /* frames_transmitted_1024_1522_bytes */ ++ u32 tx_stat_etherstatspkts1024octetsto1522octets_hi; ++ u32 tx_stat_etherstatspkts1024octetsto1522octets_lo; ++ /* frames_transmitted_1523_9022_bytes */ ++ u32 tx_stat_etherstatspktsover1522octets_hi; ++ u32 tx_stat_etherstatspktsover1522octets_lo; ++ u32 tx_stat_bmac_2047_hi; ++ u32 tx_stat_bmac_2047_lo; ++ u32 tx_stat_bmac_4095_hi; ++ u32 tx_stat_bmac_4095_lo; ++ u32 tx_stat_bmac_9216_hi; ++ u32 tx_stat_bmac_9216_lo; ++ u32 tx_stat_bmac_16383_hi; ++ u32 tx_stat_bmac_16383_lo; ++ ++ /* internal_mac_transmit_errors */ ++ u32 tx_stat_dot3statsinternalmactransmiterrors_hi; ++ u32 tx_stat_dot3statsinternalmactransmiterrors_lo; ++ ++ /* if_out_discards */ ++ u32 tx_stat_bmac_ufl_hi; ++ u32 tx_stat_bmac_ufl_lo; ++}; ++ ++ ++#define MAC_STX_IDX_MAX 2 ++ ++struct host_port_stats { ++ u32 host_port_stats_start; ++ ++ struct mac_stx mac_stx[MAC_STX_IDX_MAX]; ++ ++ u32 brb_drop_hi; ++ u32 brb_drop_lo; ++ ++ u32 host_port_stats_end; ++}; ++ ++ ++struct host_func_stats { ++ u32 host_func_stats_start; ++ ++ u32 total_bytes_received_hi; ++ u32 total_bytes_received_lo; ++ ++ u32 total_bytes_transmitted_hi; ++ u32 total_bytes_transmitted_lo; ++ ++ u32 total_unicast_packets_received_hi; ++ u32 total_unicast_packets_received_lo; ++ ++ u32 total_multicast_packets_received_hi; ++ u32 total_multicast_packets_received_lo; ++ ++ u32 total_broadcast_packets_received_hi; ++ u32 total_broadcast_packets_received_lo; ++ ++ u32 total_unicast_packets_transmitted_hi; ++ u32 total_unicast_packets_transmitted_lo; ++ ++ u32 total_multicast_packets_transmitted_hi; ++ u32 total_multicast_packets_transmitted_lo; ++ ++ u32 total_broadcast_packets_transmitted_hi; ++ u32 total_broadcast_packets_transmitted_lo; ++ ++ u32 valid_bytes_received_hi; ++ u32 valid_bytes_received_lo; ++ ++ u32 host_func_stats_end; ++}; ++ ++ ++#define BCM_5710_FW_MAJOR_VERSION 5 ++#define BCM_5710_FW_MINOR_VERSION 0 ++#define BCM_5710_FW_REVISION_VERSION 21 ++#define BCM_5710_FW_ENGINEERING_VERSION 0 ++#define BCM_5710_FW_COMPILE_FLAGS 1 ++ ++ ++/* ++ * attention bits ++ */ ++struct atten_def_status_block { ++ __le32 attn_bits; ++ __le32 attn_bits_ack; ++ u8 status_block_id; ++ u8 reserved0; ++ __le16 attn_bits_index; ++ __le32 reserved1; ++}; ++ ++ ++/* ++ * common data for all protocols ++ */ ++struct doorbell_hdr { ++ u8 header; ++#define DOORBELL_HDR_RX (0x1<<0) ++#define DOORBELL_HDR_RX_SHIFT 0 ++#define DOORBELL_HDR_DB_TYPE (0x1<<1) ++#define DOORBELL_HDR_DB_TYPE_SHIFT 1 ++#define DOORBELL_HDR_DPM_SIZE (0x3<<2) ++#define DOORBELL_HDR_DPM_SIZE_SHIFT 2 ++#define DOORBELL_HDR_CONN_TYPE (0xF<<4) ++#define DOORBELL_HDR_CONN_TYPE_SHIFT 4 ++}; ++ ++/* ++ * doorbell message sent to the chip ++ */ ++struct doorbell { ++#if defined(__BIG_ENDIAN) ++ u16 zero_fill2; ++ u8 zero_fill1; ++ struct doorbell_hdr header; ++#elif defined(__LITTLE_ENDIAN) ++ struct doorbell_hdr header; ++ u8 zero_fill1; ++ u16 zero_fill2; ++#endif ++}; ++ ++ ++/* ++ * doorbell message sent to the chip ++ */ ++struct doorbell_set_prod { ++#if defined(__BIG_ENDIAN) ++ u16 prod; ++ u8 zero_fill1; ++ struct doorbell_hdr header; ++#elif defined(__LITTLE_ENDIAN) ++ struct doorbell_hdr header; ++ u8 zero_fill1; ++ u16 prod; ++#endif ++}; ++ ++ ++/* ++ * IGU driver acknowledgement register ++ */ ++struct igu_ack_register { ++#if defined(__BIG_ENDIAN) ++ u16 sb_id_and_flags; ++#define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0) ++#define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0 ++#define IGU_ACK_REGISTER_STORM_ID (0x7<<5) ++#define IGU_ACK_REGISTER_STORM_ID_SHIFT 5 ++#define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8) ++#define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8 ++#define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9) ++#define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9 ++#define IGU_ACK_REGISTER_RESERVED (0x1F<<11) ++#define IGU_ACK_REGISTER_RESERVED_SHIFT 11 ++ u16 status_block_index; ++#elif defined(__LITTLE_ENDIAN) ++ u16 status_block_index; ++ u16 sb_id_and_flags; ++#define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0) ++#define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0 ++#define IGU_ACK_REGISTER_STORM_ID (0x7<<5) ++#define IGU_ACK_REGISTER_STORM_ID_SHIFT 5 ++#define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8) ++#define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8 ++#define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9) ++#define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9 ++#define IGU_ACK_REGISTER_RESERVED (0x1F<<11) ++#define IGU_ACK_REGISTER_RESERVED_SHIFT 11 ++#endif ++}; ++ ++ ++/* ++ * IGU driver acknowledgement register ++ */ ++struct igu_backward_compatible { ++ u32 sb_id_and_flags; ++#define IGU_BACKWARD_COMPATIBLE_SB_INDEX (0xFFFF<<0) ++#define IGU_BACKWARD_COMPATIBLE_SB_INDEX_SHIFT 0 ++#define IGU_BACKWARD_COMPATIBLE_SB_SELECT (0x1F<<16) ++#define IGU_BACKWARD_COMPATIBLE_SB_SELECT_SHIFT 16 ++#define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS (0x7<<21) ++#define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS_SHIFT 21 ++#define IGU_BACKWARD_COMPATIBLE_BUPDATE (0x1<<24) ++#define IGU_BACKWARD_COMPATIBLE_BUPDATE_SHIFT 24 ++#define IGU_BACKWARD_COMPATIBLE_ENABLE_INT (0x3<<25) ++#define IGU_BACKWARD_COMPATIBLE_ENABLE_INT_SHIFT 25 ++#define IGU_BACKWARD_COMPATIBLE_RESERVED_0 (0x1F<<27) ++#define IGU_BACKWARD_COMPATIBLE_RESERVED_0_SHIFT 27 ++ u32 reserved_2; ++}; ++ ++ ++/* ++ * IGU driver acknowledgement register ++ */ ++struct igu_regular { ++ u32 sb_id_and_flags; ++#define IGU_REGULAR_SB_INDEX (0xFFFFF<<0) ++#define IGU_REGULAR_SB_INDEX_SHIFT 0 ++#define IGU_REGULAR_RESERVED0 (0x1<<20) ++#define IGU_REGULAR_RESERVED0_SHIFT 20 ++#define IGU_REGULAR_SEGMENT_ACCESS (0x7<<21) ++#define IGU_REGULAR_SEGMENT_ACCESS_SHIFT 21 ++#define IGU_REGULAR_BUPDATE (0x1<<24) ++#define IGU_REGULAR_BUPDATE_SHIFT 24 ++#define IGU_REGULAR_ENABLE_INT (0x3<<25) ++#define IGU_REGULAR_ENABLE_INT_SHIFT 25 ++#define IGU_REGULAR_RESERVED_1 (0x1<<27) ++#define IGU_REGULAR_RESERVED_1_SHIFT 27 ++#define IGU_REGULAR_CLEANUP_TYPE (0x3<<28) ++#define IGU_REGULAR_CLEANUP_TYPE_SHIFT 28 ++#define IGU_REGULAR_CLEANUP_SET (0x1<<30) ++#define IGU_REGULAR_CLEANUP_SET_SHIFT 30 ++#define IGU_REGULAR_BCLEANUP (0x1<<31) ++#define IGU_REGULAR_BCLEANUP_SHIFT 31 ++ u32 reserved_2; ++}; ++ ++/* ++ * IGU driver acknowledgement register ++ */ ++union igu_consprod_reg { ++ struct igu_regular regular; ++ struct igu_backward_compatible backward_compatible; ++}; ++ ++ ++/* ++ * Parser parsing flags field ++ */ ++struct parsing_flags { ++ __le16 flags; ++#define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE (0x1<<0) ++#define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE_SHIFT 0 ++#define PARSING_FLAGS_VLAN (0x1<<1) ++#define PARSING_FLAGS_VLAN_SHIFT 1 ++#define PARSING_FLAGS_EXTRA_VLAN (0x1<<2) ++#define PARSING_FLAGS_EXTRA_VLAN_SHIFT 2 ++#define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL (0x3<<3) ++#define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT 3 ++#define PARSING_FLAGS_IP_OPTIONS (0x1<<5) ++#define PARSING_FLAGS_IP_OPTIONS_SHIFT 5 ++#define PARSING_FLAGS_FRAGMENTATION_STATUS (0x1<<6) ++#define PARSING_FLAGS_FRAGMENTATION_STATUS_SHIFT 6 ++#define PARSING_FLAGS_OVER_IP_PROTOCOL (0x3<<7) ++#define PARSING_FLAGS_OVER_IP_PROTOCOL_SHIFT 7 ++#define PARSING_FLAGS_PURE_ACK_INDICATION (0x1<<9) ++#define PARSING_FLAGS_PURE_ACK_INDICATION_SHIFT 9 ++#define PARSING_FLAGS_TCP_OPTIONS_EXIST (0x1<<10) ++#define PARSING_FLAGS_TCP_OPTIONS_EXIST_SHIFT 10 ++#define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG (0x1<<11) ++#define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG_SHIFT 11 ++#define PARSING_FLAGS_CONNECTION_MATCH (0x1<<12) ++#define PARSING_FLAGS_CONNECTION_MATCH_SHIFT 12 ++#define PARSING_FLAGS_LLC_SNAP (0x1<<13) ++#define PARSING_FLAGS_LLC_SNAP_SHIFT 13 ++#define PARSING_FLAGS_RESERVED0 (0x3<<14) ++#define PARSING_FLAGS_RESERVED0_SHIFT 14 ++}; ++ ++ ++struct regpair { ++ __le32 lo; ++ __le32 hi; ++}; ++ ++ ++/* ++ * dmae command structure ++ */ ++struct dmae_command { ++ u32 opcode; ++#define DMAE_COMMAND_SRC (0x1<<0) ++#define DMAE_COMMAND_SRC_SHIFT 0 ++#define DMAE_COMMAND_DST (0x3<<1) ++#define DMAE_COMMAND_DST_SHIFT 1 ++#define DMAE_COMMAND_C_DST (0x1<<3) ++#define DMAE_COMMAND_C_DST_SHIFT 3 ++#define DMAE_COMMAND_C_TYPE_ENABLE (0x1<<4) ++#define DMAE_COMMAND_C_TYPE_ENABLE_SHIFT 4 ++#define DMAE_COMMAND_C_TYPE_CRC_ENABLE (0x1<<5) ++#define DMAE_COMMAND_C_TYPE_CRC_ENABLE_SHIFT 5 ++#define DMAE_COMMAND_C_TYPE_CRC_OFFSET (0x7<<6) ++#define DMAE_COMMAND_C_TYPE_CRC_OFFSET_SHIFT 6 ++#define DMAE_COMMAND_ENDIANITY (0x3<<9) ++#define DMAE_COMMAND_ENDIANITY_SHIFT 9 ++#define DMAE_COMMAND_PORT (0x1<<11) ++#define DMAE_COMMAND_PORT_SHIFT 11 ++#define DMAE_COMMAND_CRC_RESET (0x1<<12) ++#define DMAE_COMMAND_CRC_RESET_SHIFT 12 ++#define DMAE_COMMAND_SRC_RESET (0x1<<13) ++#define DMAE_COMMAND_SRC_RESET_SHIFT 13 ++#define DMAE_COMMAND_DST_RESET (0x1<<14) ++#define DMAE_COMMAND_DST_RESET_SHIFT 14 ++#define DMAE_COMMAND_E1HVN (0x3<<15) ++#define DMAE_COMMAND_E1HVN_SHIFT 15 ++#define DMAE_COMMAND_RESERVED0 (0x7FFF<<17) ++#define DMAE_COMMAND_RESERVED0_SHIFT 17 ++ u32 src_addr_lo; ++ u32 src_addr_hi; ++ u32 dst_addr_lo; ++ u32 dst_addr_hi; ++#if defined(__BIG_ENDIAN) ++ u16 reserved1; ++ u16 len; ++#elif defined(__LITTLE_ENDIAN) ++ u16 len; ++ u16 reserved1; ++#endif ++ u32 comp_addr_lo; ++ u32 comp_addr_hi; ++ u32 comp_val; ++ u32 crc32; ++ u32 crc32_c; ++#if defined(__BIG_ENDIAN) ++ u16 crc16_c; ++ u16 crc16; ++#elif defined(__LITTLE_ENDIAN) ++ u16 crc16; ++ u16 crc16_c; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 reserved2; ++ u16 crc_t10; ++#elif defined(__LITTLE_ENDIAN) ++ u16 crc_t10; ++ u16 reserved2; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 xsum8; ++ u16 xsum16; ++#elif defined(__LITTLE_ENDIAN) ++ u16 xsum16; ++ u16 xsum8; ++#endif ++}; ++ ++ ++struct double_regpair { ++ u32 regpair0_lo; ++ u32 regpair0_hi; ++ u32 regpair1_lo; ++ u32 regpair1_hi; ++}; ++ ++ ++/* ++ * The eth storm context of Ustorm (configuration part) ++ */ ++struct ustorm_eth_st_context_config { ++#if defined(__BIG_ENDIAN) ++ u8 flags; ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT (0x1<<0) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT_SHIFT 0 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC (0x1<<1) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC_SHIFT 1 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA (0x1<<2) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS (0x1<<3) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS_SHIFT 3 ++#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0xF<<4) ++#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 4 ++ u8 status_block_id; ++ u8 clientId; ++ u8 sb_index_numbers; ++#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER (0xF<<0) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT 0 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER (0xF<<4) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER_SHIFT 4 ++#elif defined(__LITTLE_ENDIAN) ++ u8 sb_index_numbers; ++#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER (0xF<<0) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT 0 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER (0xF<<4) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER_SHIFT 4 ++ u8 clientId; ++ u8 status_block_id; ++ u8 flags; ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT (0x1<<0) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT_SHIFT 0 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC (0x1<<1) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC_SHIFT 1 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA (0x1<<2) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2 ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS (0x1<<3) ++#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS_SHIFT 3 ++#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0xF<<4) ++#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 4 ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 bd_buff_size; ++ u8 statistics_counter_id; ++ u8 mc_alignment_log_size; ++#elif defined(__LITTLE_ENDIAN) ++ u8 mc_alignment_log_size; ++ u8 statistics_counter_id; ++ u16 bd_buff_size; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 __local_sge_prod; ++ u8 __local_bd_prod; ++ u16 sge_buff_size; ++#elif defined(__LITTLE_ENDIAN) ++ u16 sge_buff_size; ++ u8 __local_bd_prod; ++ u8 __local_sge_prod; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __sdm_bd_expected_counter; ++ u8 cstorm_agg_int; ++ u8 __expected_bds_on_ram; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __expected_bds_on_ram; ++ u8 cstorm_agg_int; ++ u16 __sdm_bd_expected_counter; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __ring_data_ram_addr; ++ u16 __hc_cstorm_ram_addr; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __hc_cstorm_ram_addr; ++ u16 __ring_data_ram_addr; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 reserved1; ++ u8 max_sges_for_packet; ++ u16 __bd_ring_ram_addr; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __bd_ring_ram_addr; ++ u8 max_sges_for_packet; ++ u8 reserved1; ++#endif ++ u32 bd_page_base_lo; ++ u32 bd_page_base_hi; ++ u32 sge_page_base_lo; ++ u32 sge_page_base_hi; ++ struct regpair reserved2; ++}; ++ ++/* ++ * The eth Rx Buffer Descriptor ++ */ ++struct eth_rx_bd { ++ __le32 addr_lo; ++ __le32 addr_hi; ++}; ++ ++/* ++ * The eth Rx SGE Descriptor ++ */ ++struct eth_rx_sge { ++ __le32 addr_lo; ++ __le32 addr_hi; ++}; ++ ++/* ++ * Local BDs and SGEs rings (in ETH) ++ */ ++struct eth_local_rx_rings { ++ struct eth_rx_bd __local_bd_ring[8]; ++ struct eth_rx_sge __local_sge_ring[10]; ++}; ++ ++/* ++ * The eth storm context of Ustorm ++ */ ++struct ustorm_eth_st_context { ++ struct ustorm_eth_st_context_config common; ++ struct eth_local_rx_rings __rings; ++}; ++ ++/* ++ * The eth storm context of Tstorm ++ */ ++struct tstorm_eth_st_context { ++ u32 __reserved0[28]; ++}; ++ ++/* ++ * The eth aggregative context section of Xstorm ++ */ ++struct xstorm_eth_extra_ag_context_section { ++#if defined(__BIG_ENDIAN) ++ u8 __tcp_agg_vars1; ++ u8 __reserved50; ++ u16 __mss; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __mss; ++ u8 __reserved50; ++ u8 __tcp_agg_vars1; ++#endif ++ u32 __snd_nxt; ++ u32 __tx_wnd; ++ u32 __snd_una; ++ u32 __reserved53; ++#if defined(__BIG_ENDIAN) ++ u8 __agg_val8_th; ++ u8 __agg_val8; ++ u16 __tcp_agg_vars2; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __tcp_agg_vars2; ++ u8 __agg_val8; ++ u8 __agg_val8_th; ++#endif ++ u32 __reserved58; ++ u32 __reserved59; ++ u32 __reserved60; ++ u32 __reserved61; ++#if defined(__BIG_ENDIAN) ++ u16 __agg_val7_th; ++ u16 __agg_val7; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val7; ++ u16 __agg_val7_th; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 __tcp_agg_vars5; ++ u8 __tcp_agg_vars4; ++ u8 __tcp_agg_vars3; ++ u8 __reserved62; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __reserved62; ++ u8 __tcp_agg_vars3; ++ u8 __tcp_agg_vars4; ++ u8 __tcp_agg_vars5; ++#endif ++ u32 __tcp_agg_vars6; ++#if defined(__BIG_ENDIAN) ++ u16 __agg_misc6; ++ u16 __tcp_agg_vars7; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __tcp_agg_vars7; ++ u16 __agg_misc6; ++#endif ++ u32 __agg_val10; ++ u32 __agg_val10_th; ++#if defined(__BIG_ENDIAN) ++ u16 __reserved3; ++ u8 __reserved2; ++ u8 __da_only_cnt; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __da_only_cnt; ++ u8 __reserved2; ++ u16 __reserved3; ++#endif ++}; ++ ++/* ++ * The eth aggregative context of Xstorm ++ */ ++struct xstorm_eth_ag_context { ++#if defined(__BIG_ENDIAN) ++ u16 agg_val1; ++ u8 __agg_vars1; ++ u8 __state; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __state; ++ u8 __agg_vars1; ++ u16 agg_val1; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 cdu_reserved; ++ u8 __agg_vars4; ++ u8 __agg_vars3; ++ u8 __agg_vars2; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __agg_vars2; ++ u8 __agg_vars3; ++ u8 __agg_vars4; ++ u8 cdu_reserved; ++#endif ++ u32 __bd_prod; ++#if defined(__BIG_ENDIAN) ++ u16 __agg_vars5; ++ u16 __agg_val4_th; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val4_th; ++ u16 __agg_vars5; ++#endif ++ struct xstorm_eth_extra_ag_context_section __extra_section; ++#if defined(__BIG_ENDIAN) ++ u16 __agg_vars7; ++ u8 __agg_val3_th; ++ u8 __agg_vars6; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __agg_vars6; ++ u8 __agg_val3_th; ++ u16 __agg_vars7; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __agg_val11_th; ++ u16 __agg_val11; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val11; ++ u16 __agg_val11_th; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 __reserved1; ++ u8 __agg_val6_th; ++ u16 __agg_val9; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val9; ++ u8 __agg_val6_th; ++ u8 __reserved1; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __agg_val2_th; ++ u16 __agg_val2; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val2; ++ u16 __agg_val2_th; ++#endif ++ u32 __agg_vars8; ++#if defined(__BIG_ENDIAN) ++ u16 __agg_misc0; ++ u16 __agg_val4; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val4; ++ u16 __agg_misc0; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 __agg_val3; ++ u8 __agg_val6; ++ u8 __agg_val5_th; ++ u8 __agg_val5; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __agg_val5; ++ u8 __agg_val5_th; ++ u8 __agg_val6; ++ u8 __agg_val3; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __agg_misc1; ++ u16 __bd_ind_max_val; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __bd_ind_max_val; ++ u16 __agg_misc1; ++#endif ++ u32 __reserved57; ++ u32 __agg_misc4; ++ u32 __agg_misc5; ++}; ++ ++/* ++ * The eth extra aggregative context section of Tstorm ++ */ ++struct tstorm_eth_extra_ag_context_section { ++ u32 __agg_val1; ++#if defined(__BIG_ENDIAN) ++ u8 __tcp_agg_vars2; ++ u8 __agg_val3; ++ u16 __agg_val2; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val2; ++ u8 __agg_val3; ++ u8 __tcp_agg_vars2; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __agg_val5; ++ u8 __agg_val6; ++ u8 __tcp_agg_vars3; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __tcp_agg_vars3; ++ u8 __agg_val6; ++ u16 __agg_val5; ++#endif ++ u32 __reserved63; ++ u32 __reserved64; ++ u32 __reserved65; ++ u32 __reserved66; ++ u32 __reserved67; ++ u32 __tcp_agg_vars1; ++ u32 __reserved61; ++ u32 __reserved62; ++ u32 __reserved2; ++}; ++ ++/* ++ * The eth aggregative context of Tstorm ++ */ ++struct tstorm_eth_ag_context { ++#if defined(__BIG_ENDIAN) ++ u16 __reserved54; ++ u8 __agg_vars1; ++ u8 __state; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __state; ++ u8 __agg_vars1; ++ u16 __reserved54; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __agg_val4; ++ u16 __agg_vars2; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_vars2; ++ u16 __agg_val4; ++#endif ++ struct tstorm_eth_extra_ag_context_section __extra_section; ++}; ++ ++/* ++ * The eth aggregative context of Cstorm ++ */ ++struct cstorm_eth_ag_context { ++ u32 __agg_vars1; ++#if defined(__BIG_ENDIAN) ++ u8 __aux1_th; ++ u8 __aux1_val; ++ u16 __agg_vars2; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_vars2; ++ u8 __aux1_val; ++ u8 __aux1_th; ++#endif ++ u32 __num_of_treated_packet; ++ u32 __last_packet_treated; ++#if defined(__BIG_ENDIAN) ++ u16 __reserved58; ++ u16 __reserved57; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __reserved57; ++ u16 __reserved58; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 __reserved62; ++ u8 __reserved61; ++ u8 __reserved60; ++ u8 __reserved59; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __reserved59; ++ u8 __reserved60; ++ u8 __reserved61; ++ u8 __reserved62; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __reserved64; ++ u16 __reserved63; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __reserved63; ++ u16 __reserved64; ++#endif ++ u32 __reserved65; ++#if defined(__BIG_ENDIAN) ++ u16 __agg_vars3; ++ u16 __rq_inv_cnt; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __rq_inv_cnt; ++ u16 __agg_vars3; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __packet_index_th; ++ u16 __packet_index; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __packet_index; ++ u16 __packet_index_th; ++#endif ++}; ++ ++/* ++ * The eth aggregative context of Ustorm ++ */ ++struct ustorm_eth_ag_context { ++#if defined(__BIG_ENDIAN) ++ u8 __aux_counter_flags; ++ u8 __agg_vars2; ++ u8 __agg_vars1; ++ u8 __state; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __state; ++ u8 __agg_vars1; ++ u8 __agg_vars2; ++ u8 __aux_counter_flags; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 cdu_usage; ++ u8 __agg_misc2; ++ u16 __agg_misc1; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_misc1; ++ u8 __agg_misc2; ++ u8 cdu_usage; ++#endif ++ u32 __agg_misc4; ++#if defined(__BIG_ENDIAN) ++ u8 __agg_val3_th; ++ u8 __agg_val3; ++ u16 __agg_misc3; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_misc3; ++ u8 __agg_val3; ++ u8 __agg_val3_th; ++#endif ++ u32 __agg_val1; ++ u32 __agg_misc4_th; ++#if defined(__BIG_ENDIAN) ++ u16 __agg_val2_th; ++ u16 __agg_val2; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __agg_val2; ++ u16 __agg_val2_th; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __reserved2; ++ u8 __decision_rules; ++ u8 __decision_rule_enable_bits; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __decision_rule_enable_bits; ++ u8 __decision_rules; ++ u16 __reserved2; ++#endif ++}; ++ ++/* ++ * Timers connection context ++ */ ++struct timers_block_context { ++ u32 __reserved_0; ++ u32 __reserved_1; ++ u32 __reserved_2; ++ u32 flags; ++#define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS (0x3<<0) ++#define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS_SHIFT 0 ++#define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG (0x1<<2) ++#define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG_SHIFT 2 ++#define __TIMERS_BLOCK_CONTEXT_RESERVED0 (0x1FFFFFFF<<3) ++#define __TIMERS_BLOCK_CONTEXT_RESERVED0_SHIFT 3 ++}; ++ ++/* ++ * structure for easy accessibility to assembler ++ */ ++struct eth_tx_bd_flags { ++ u8 as_bitfield; ++#define ETH_TX_BD_FLAGS_VLAN_TAG (0x1<<0) ++#define ETH_TX_BD_FLAGS_VLAN_TAG_SHIFT 0 ++#define ETH_TX_BD_FLAGS_IP_CSUM (0x1<<1) ++#define ETH_TX_BD_FLAGS_IP_CSUM_SHIFT 1 ++#define ETH_TX_BD_FLAGS_L4_CSUM (0x1<<2) ++#define ETH_TX_BD_FLAGS_L4_CSUM_SHIFT 2 ++#define ETH_TX_BD_FLAGS_END_BD (0x1<<3) ++#define ETH_TX_BD_FLAGS_END_BD_SHIFT 3 ++#define ETH_TX_BD_FLAGS_START_BD (0x1<<4) ++#define ETH_TX_BD_FLAGS_START_BD_SHIFT 4 ++#define ETH_TX_BD_FLAGS_HDR_POOL (0x1<<5) ++#define ETH_TX_BD_FLAGS_HDR_POOL_SHIFT 5 ++#define ETH_TX_BD_FLAGS_SW_LSO (0x1<<6) ++#define ETH_TX_BD_FLAGS_SW_LSO_SHIFT 6 ++#define ETH_TX_BD_FLAGS_IPV6 (0x1<<7) ++#define ETH_TX_BD_FLAGS_IPV6_SHIFT 7 ++}; ++ ++/* ++ * The eth Tx Buffer Descriptor ++ */ ++struct eth_tx_start_bd { ++ __le32 addr_lo; ++ __le32 addr_hi; ++ __le16 nbd; ++ __le16 nbytes; ++ __le16 vlan; ++ struct eth_tx_bd_flags bd_flags; ++ u8 general_data; ++#define ETH_TX_START_BD_HDR_NBDS (0x3F<<0) ++#define ETH_TX_START_BD_HDR_NBDS_SHIFT 0 ++#define ETH_TX_START_BD_ETH_ADDR_TYPE (0x3<<6) ++#define ETH_TX_START_BD_ETH_ADDR_TYPE_SHIFT 6 ++}; ++ ++/* ++ * Tx regular BD structure ++ */ ++struct eth_tx_bd { ++ u32 addr_lo; ++ u32 addr_hi; ++ u16 total_pkt_bytes; ++ u16 nbytes; ++ u8 reserved[4]; ++}; ++ ++/* ++ * Tx parsing BD structure for ETH,Relevant in START ++ */ ++struct eth_tx_parse_bd { ++ u8 global_data; ++#define ETH_TX_PARSE_BD_IP_HDR_START_OFFSET (0xF<<0) ++#define ETH_TX_PARSE_BD_IP_HDR_START_OFFSET_SHIFT 0 ++#define ETH_TX_PARSE_BD_UDP_CS_FLG (0x1<<4) ++#define ETH_TX_PARSE_BD_UDP_CS_FLG_SHIFT 4 ++#define ETH_TX_PARSE_BD_PSEUDO_CS_WITHOUT_LEN (0x1<<5) ++#define ETH_TX_PARSE_BD_PSEUDO_CS_WITHOUT_LEN_SHIFT 5 ++#define ETH_TX_PARSE_BD_LLC_SNAP_EN (0x1<<6) ++#define ETH_TX_PARSE_BD_LLC_SNAP_EN_SHIFT 6 ++#define ETH_TX_PARSE_BD_NS_FLG (0x1<<7) ++#define ETH_TX_PARSE_BD_NS_FLG_SHIFT 7 ++ u8 tcp_flags; ++#define ETH_TX_PARSE_BD_FIN_FLG (0x1<<0) ++#define ETH_TX_PARSE_BD_FIN_FLG_SHIFT 0 ++#define ETH_TX_PARSE_BD_SYN_FLG (0x1<<1) ++#define ETH_TX_PARSE_BD_SYN_FLG_SHIFT 1 ++#define ETH_TX_PARSE_BD_RST_FLG (0x1<<2) ++#define ETH_TX_PARSE_BD_RST_FLG_SHIFT 2 ++#define ETH_TX_PARSE_BD_PSH_FLG (0x1<<3) ++#define ETH_TX_PARSE_BD_PSH_FLG_SHIFT 3 ++#define ETH_TX_PARSE_BD_ACK_FLG (0x1<<4) ++#define ETH_TX_PARSE_BD_ACK_FLG_SHIFT 4 ++#define ETH_TX_PARSE_BD_URG_FLG (0x1<<5) ++#define ETH_TX_PARSE_BD_URG_FLG_SHIFT 5 ++#define ETH_TX_PARSE_BD_ECE_FLG (0x1<<6) ++#define ETH_TX_PARSE_BD_ECE_FLG_SHIFT 6 ++#define ETH_TX_PARSE_BD_CWR_FLG (0x1<<7) ++#define ETH_TX_PARSE_BD_CWR_FLG_SHIFT 7 ++ u8 ip_hlen; ++ s8 reserved; ++ __le16 total_hlen; ++ __le16 tcp_pseudo_csum; ++ __le16 lso_mss; ++ __le16 ip_id; ++ __le32 tcp_send_seq; ++}; ++ ++/* ++ * The last BD in the BD memory will hold a pointer to the next BD memory ++ */ ++struct eth_tx_next_bd { ++ __le32 addr_lo; ++ __le32 addr_hi; ++ u8 reserved[8]; ++}; ++ ++/* ++ * union for 4 Bd types ++ */ ++union eth_tx_bd_types { ++ struct eth_tx_start_bd start_bd; ++ struct eth_tx_bd reg_bd; ++ struct eth_tx_parse_bd parse_bd; ++ struct eth_tx_next_bd next_bd; ++}; ++ ++/* ++ * The eth storm context of Xstorm ++ */ ++struct xstorm_eth_st_context { ++ u32 tx_bd_page_base_lo; ++ u32 tx_bd_page_base_hi; ++#if defined(__BIG_ENDIAN) ++ u16 tx_bd_cons; ++ u8 statistics_data; ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID (0x7F<<0) ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID_SHIFT 0 ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE (0x1<<7) ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE_SHIFT 7 ++ u8 __local_tx_bd_prod; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __local_tx_bd_prod; ++ u8 statistics_data; ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID (0x7F<<0) ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID_SHIFT 0 ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE (0x1<<7) ++#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE_SHIFT 7 ++ u16 tx_bd_cons; ++#endif ++ u32 __reserved1; ++ u32 __reserved2; ++#if defined(__BIG_ENDIAN) ++ u8 __ram_cache_index; ++ u8 __double_buffer_client; ++ u16 __pkt_cons; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __pkt_cons; ++ u8 __double_buffer_client; ++ u8 __ram_cache_index; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 __statistics_address; ++ u16 __gso_next; ++#elif defined(__LITTLE_ENDIAN) ++ u16 __gso_next; ++ u16 __statistics_address; ++#endif ++#if defined(__BIG_ENDIAN) ++ u8 __local_tx_bd_cons; ++ u8 safc_group_num; ++ u8 safc_group_en; ++ u8 __is_eth_conn; ++#elif defined(__LITTLE_ENDIAN) ++ u8 __is_eth_conn; ++ u8 safc_group_en; ++ u8 safc_group_num; ++ u8 __local_tx_bd_cons; ++#endif ++ union eth_tx_bd_types __bds[13]; ++}; ++ ++/* ++ * The eth storm context of Cstorm ++ */ ++struct cstorm_eth_st_context { ++#if defined(__BIG_ENDIAN) ++ u16 __reserved0; ++ u8 sb_index_number; ++ u8 status_block_id; ++#elif defined(__LITTLE_ENDIAN) ++ u8 status_block_id; ++ u8 sb_index_number; ++ u16 __reserved0; ++#endif ++ u32 __reserved1[3]; ++}; ++ ++/* ++ * Ethernet connection context ++ */ ++struct eth_context { ++ struct ustorm_eth_st_context ustorm_st_context; ++ struct tstorm_eth_st_context tstorm_st_context; ++ struct xstorm_eth_ag_context xstorm_ag_context; ++ struct tstorm_eth_ag_context tstorm_ag_context; ++ struct cstorm_eth_ag_context cstorm_ag_context; ++ struct ustorm_eth_ag_context ustorm_ag_context; ++ struct timers_block_context timers_context; ++ struct xstorm_eth_st_context xstorm_st_context; ++ struct cstorm_eth_st_context cstorm_st_context; ++}; ++ ++ ++/* ++ * Ethernet doorbell ++ */ ++struct eth_tx_doorbell { ++#if defined(__BIG_ENDIAN) ++ u16 npackets; ++ u8 params; ++#define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0) ++#define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0 ++#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) ++#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 ++#define ETH_TX_DOORBELL_SPARE (0x1<<7) ++#define ETH_TX_DOORBELL_SPARE_SHIFT 7 ++ struct doorbell_hdr hdr; ++#elif defined(__LITTLE_ENDIAN) ++ struct doorbell_hdr hdr; ++ u8 params; ++#define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0) ++#define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0 ++#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) ++#define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 ++#define ETH_TX_DOORBELL_SPARE (0x1<<7) ++#define ETH_TX_DOORBELL_SPARE_SHIFT 7 ++ u16 npackets; ++#endif ++}; ++ ++ ++/* ++ * cstorm default status block, generated by ustorm ++ */ ++struct cstorm_def_status_block_u { ++ __le16 index_values[HC_USTORM_DEF_SB_NUM_INDICES]; ++ __le16 status_block_index; ++ u8 func; ++ u8 status_block_id; ++ __le32 __flags; ++}; ++ ++/* ++ * cstorm default status block, generated by cstorm ++ */ ++struct cstorm_def_status_block_c { ++ __le16 index_values[HC_CSTORM_DEF_SB_NUM_INDICES]; ++ __le16 status_block_index; ++ u8 func; ++ u8 status_block_id; ++ __le32 __flags; ++}; ++ ++/* ++ * xstorm status block ++ */ ++struct xstorm_def_status_block { ++ __le16 index_values[HC_XSTORM_DEF_SB_NUM_INDICES]; ++ __le16 status_block_index; ++ u8 func; ++ u8 status_block_id; ++ __le32 __flags; ++}; ++ ++/* ++ * tstorm status block ++ */ ++struct tstorm_def_status_block { ++ __le16 index_values[HC_TSTORM_DEF_SB_NUM_INDICES]; ++ __le16 status_block_index; ++ u8 func; ++ u8 status_block_id; ++ __le32 __flags; ++}; ++ ++/* ++ * host status block ++ */ ++struct host_def_status_block { ++ struct atten_def_status_block atten_status_block; ++ struct cstorm_def_status_block_u u_def_status_block; ++ struct cstorm_def_status_block_c c_def_status_block; ++ struct xstorm_def_status_block x_def_status_block; ++ struct tstorm_def_status_block t_def_status_block; ++}; ++ ++ ++/* ++ * cstorm status block, generated by ustorm ++ */ ++struct cstorm_status_block_u { ++ __le16 index_values[HC_USTORM_SB_NUM_INDICES]; ++ __le16 status_block_index; ++ u8 func; ++ u8 status_block_id; ++ __le32 __flags; ++}; ++ ++/* ++ * cstorm status block, generated by cstorm ++ */ ++struct cstorm_status_block_c { ++ __le16 index_values[HC_CSTORM_SB_NUM_INDICES]; ++ __le16 status_block_index; ++ u8 func; ++ u8 status_block_id; ++ __le32 __flags; ++}; ++ ++/* ++ * host status block ++ */ ++struct host_status_block { ++ struct cstorm_status_block_u u_status_block; ++ struct cstorm_status_block_c c_status_block; ++}; ++ ++ ++/* ++ * The data for RSS setup ramrod ++ */ ++struct eth_client_setup_ramrod_data { ++ u32 client_id; ++ u8 is_rdma; ++ u8 is_fcoe; ++ u16 reserved1; ++}; ++ ++ ++/* ++ * regular eth FP CQE parameters struct ++ */ ++struct eth_fast_path_rx_cqe { ++ u8 type_error_flags; ++#define ETH_FAST_PATH_RX_CQE_TYPE (0x1<<0) ++#define ETH_FAST_PATH_RX_CQE_TYPE_SHIFT 0 ++#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG (0x1<<1) ++#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_SHIFT 1 ++#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG (0x1<<2) ++#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_SHIFT 2 ++#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG (0x1<<3) ++#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_SHIFT 3 ++#define ETH_FAST_PATH_RX_CQE_START_FLG (0x1<<4) ++#define ETH_FAST_PATH_RX_CQE_START_FLG_SHIFT 4 ++#define ETH_FAST_PATH_RX_CQE_END_FLG (0x1<<5) ++#define ETH_FAST_PATH_RX_CQE_END_FLG_SHIFT 5 ++#define ETH_FAST_PATH_RX_CQE_RESERVED0 (0x3<<6) ++#define ETH_FAST_PATH_RX_CQE_RESERVED0_SHIFT 6 ++ u8 status_flags; ++#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE (0x7<<0) ++#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE_SHIFT 0 ++#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG (0x1<<3) ++#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG_SHIFT 3 ++#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG (0x1<<4) ++#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG_SHIFT 4 ++#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG (0x1<<5) ++#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG_SHIFT 5 ++#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG (0x1<<6) ++#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG_SHIFT 6 ++#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG (0x1<<7) ++#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG_SHIFT 7 ++ u8 placement_offset; ++ u8 queue_index; ++ __le32 rss_hash_result; ++ __le16 vlan_tag; ++ __le16 pkt_len; ++ __le16 len_on_bd; ++ struct parsing_flags pars_flags; ++ __le16 sgl[8]; ++}; ++ ++ ++/* ++ * The data for RSS setup ramrod ++ */ ++struct eth_halt_ramrod_data { ++ u32 client_id; ++ u32 reserved0; ++}; ++ ++ ++/* ++ * The data for statistics query ramrod ++ */ ++struct eth_query_ramrod_data { ++#if defined(__BIG_ENDIAN) ++ u8 reserved0; ++ u8 collect_port; ++ u16 drv_counter; ++#elif defined(__LITTLE_ENDIAN) ++ u16 drv_counter; ++ u8 collect_port; ++ u8 reserved0; ++#endif ++ u32 ctr_id_vector; ++}; ++ ++ ++/* ++ * Place holder for ramrods protocol specific data ++ */ ++struct ramrod_data { ++ __le32 data_lo; ++ __le32 data_hi; ++}; ++ ++/* ++ * union for ramrod data for Ethernet protocol (CQE) (force size of 16 bits) ++ */ ++union eth_ramrod_data { ++ struct ramrod_data general; ++}; ++ ++ ++/* ++ * Eth Rx Cqe structure- general structure for ramrods ++ */ ++struct common_ramrod_eth_rx_cqe { ++ u8 ramrod_type; ++#define COMMON_RAMROD_ETH_RX_CQE_TYPE (0x1<<0) ++#define COMMON_RAMROD_ETH_RX_CQE_TYPE_SHIFT 0 ++#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0 (0x7F<<1) ++#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0_SHIFT 1 ++ u8 conn_type; ++ __le16 reserved1; ++ __le32 conn_and_cmd_data; ++#define COMMON_RAMROD_ETH_RX_CQE_CID (0xFFFFFF<<0) ++#define COMMON_RAMROD_ETH_RX_CQE_CID_SHIFT 0 ++#define COMMON_RAMROD_ETH_RX_CQE_CMD_ID (0xFF<<24) ++#define COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT 24 ++ struct ramrod_data protocol_data; ++ __le32 reserved2[4]; ++}; ++ ++/* ++ * Rx Last CQE in page (in ETH) ++ */ ++struct eth_rx_cqe_next_page { ++ __le32 addr_lo; ++ __le32 addr_hi; ++ __le32 reserved[6]; ++}; ++ ++/* ++ * union for all eth rx cqe types (fix their sizes) ++ */ ++union eth_rx_cqe { ++ struct eth_fast_path_rx_cqe fast_path_cqe; ++ struct common_ramrod_eth_rx_cqe ramrod_cqe; ++ struct eth_rx_cqe_next_page next_page_cqe; ++}; ++ ++ ++/* ++ * common data for all protocols ++ */ ++struct spe_hdr { ++ __le32 conn_and_cmd_data; ++#define SPE_HDR_CID (0xFFFFFF<<0) ++#define SPE_HDR_CID_SHIFT 0 ++#define SPE_HDR_CMD_ID (0xFF<<24) ++#define SPE_HDR_CMD_ID_SHIFT 24 ++ __le16 type; ++#define SPE_HDR_CONN_TYPE (0xFF<<0) ++#define SPE_HDR_CONN_TYPE_SHIFT 0 ++#define SPE_HDR_COMMON_RAMROD (0xFF<<8) ++#define SPE_HDR_COMMON_RAMROD_SHIFT 8 ++ __le16 reserved; ++}; ++ ++/* ++ * Ethernet slow path element ++ */ ++union eth_specific_data { ++ u8 protocol_data[8]; ++ struct regpair mac_config_addr; ++ struct eth_client_setup_ramrod_data client_setup_ramrod_data; ++ struct eth_halt_ramrod_data halt_ramrod_data; ++ struct regpair leading_cqe_addr; ++ struct regpair update_data_addr; ++ struct eth_query_ramrod_data query_ramrod_data; ++}; ++ ++/* ++ * Ethernet slow path element ++ */ ++struct eth_spe { ++ struct spe_hdr hdr; ++ union eth_specific_data data; ++}; ++ ++ ++/* ++ * array of 13 bds as appears in the eth xstorm context ++ */ ++struct eth_tx_bds_array { ++ union eth_tx_bd_types bds[13]; ++}; ++ ++ ++/* ++ * Common configuration parameters per function in Tstorm ++ */ ++struct tstorm_eth_function_common_config { ++#if defined(__BIG_ENDIAN) ++ u8 leading_client_id; ++ u8 rss_result_mask; ++ u16 config_flags; ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY (0x1<<0) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY_SHIFT 0 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY (0x1<<1) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY_SHIFT 1 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY (0x1<<2) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY_SHIFT 2 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY (0x1<<3) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY_SHIFT 3 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE (0x7<<4) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT 4 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE (0x1<<7) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE_SHIFT 7 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM (0x1<<8) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM_SHIFT 8 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_E1HOV_IN_CAM (0x1<<9) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_E1HOV_IN_CAM_SHIFT 9 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_ENABLE_TPA (0x1<<10) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_ENABLE_TPA_SHIFT 10 ++#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0 (0x1F<<11) ++#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0_SHIFT 11 ++#elif defined(__LITTLE_ENDIAN) ++ u16 config_flags; ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY (0x1<<0) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY_SHIFT 0 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY (0x1<<1) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY_SHIFT 1 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY (0x1<<2) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY_SHIFT 2 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY (0x1<<3) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY_SHIFT 3 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE (0x7<<4) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT 4 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE (0x1<<7) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE_SHIFT 7 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM (0x1<<8) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM_SHIFT 8 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_E1HOV_IN_CAM (0x1<<9) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_E1HOV_IN_CAM_SHIFT 9 ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_ENABLE_TPA (0x1<<10) ++#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_ENABLE_TPA_SHIFT 10 ++#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0 (0x1F<<11) ++#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0_SHIFT 11 ++ u8 rss_result_mask; ++ u8 leading_client_id; ++#endif ++ u16 vlan_id[2]; ++}; ++ ++/* ++ * RSS idirection table update configuration ++ */ ++struct rss_update_config { ++#if defined(__BIG_ENDIAN) ++ u16 toe_rss_bitmap; ++ u16 flags; ++#define RSS_UPDATE_CONFIG_ETH_UPDATE_ENABLE (0x1<<0) ++#define RSS_UPDATE_CONFIG_ETH_UPDATE_ENABLE_SHIFT 0 ++#define RSS_UPDATE_CONFIG_TOE_UPDATE_ENABLE (0x1<<1) ++#define RSS_UPDATE_CONFIG_TOE_UPDATE_ENABLE_SHIFT 1 ++#define __RSS_UPDATE_CONFIG_RESERVED0 (0x3FFF<<2) ++#define __RSS_UPDATE_CONFIG_RESERVED0_SHIFT 2 ++#elif defined(__LITTLE_ENDIAN) ++ u16 flags; ++#define RSS_UPDATE_CONFIG_ETH_UPDATE_ENABLE (0x1<<0) ++#define RSS_UPDATE_CONFIG_ETH_UPDATE_ENABLE_SHIFT 0 ++#define RSS_UPDATE_CONFIG_TOE_UPDATE_ENABLE (0x1<<1) ++#define RSS_UPDATE_CONFIG_TOE_UPDATE_ENABLE_SHIFT 1 ++#define __RSS_UPDATE_CONFIG_RESERVED0 (0x3FFF<<2) ++#define __RSS_UPDATE_CONFIG_RESERVED0_SHIFT 2 ++ u16 toe_rss_bitmap; ++#endif ++ u32 reserved1; ++}; ++ ++/* ++ * parameters for eth update ramrod ++ */ ++struct eth_update_ramrod_data { ++ struct tstorm_eth_function_common_config func_config; ++ u8 indirectionTable[128]; ++ struct rss_update_config rss_config; ++}; ++ ++ ++/* ++ * MAC filtering configuration command header ++ */ ++struct mac_configuration_hdr { ++ u8 length; ++ u8 offset; ++ u16 client_id; ++ u32 reserved1; ++}; ++ ++/* ++ * MAC address in list for ramrod ++ */ ++struct tstorm_cam_entry { ++ __le16 lsb_mac_addr; ++ __le16 middle_mac_addr; ++ __le16 msb_mac_addr; ++ __le16 flags; ++#define TSTORM_CAM_ENTRY_PORT_ID (0x1<<0) ++#define TSTORM_CAM_ENTRY_PORT_ID_SHIFT 0 ++#define TSTORM_CAM_ENTRY_RSRVVAL0 (0x7<<1) ++#define TSTORM_CAM_ENTRY_RSRVVAL0_SHIFT 1 ++#define TSTORM_CAM_ENTRY_RESERVED0 (0xFFF<<4) ++#define TSTORM_CAM_ENTRY_RESERVED0_SHIFT 4 ++}; ++ ++/* ++ * MAC filtering: CAM target table entry ++ */ ++struct tstorm_cam_target_table_entry { ++ u8 flags; ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_BROADCAST (0x1<<0) ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_BROADCAST_SHIFT 0 ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_OVERRIDE_VLAN_REMOVAL (0x1<<1) ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_OVERRIDE_VLAN_REMOVAL_SHIFT 1 ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE (0x1<<2) ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE_SHIFT 2 ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_RDMA_MAC (0x1<<3) ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_RDMA_MAC_SHIFT 3 ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_RESERVED0 (0xF<<4) ++#define TSTORM_CAM_TARGET_TABLE_ENTRY_RESERVED0_SHIFT 4 ++ u8 reserved1; ++ u16 vlan_id; ++ u32 clients_bit_vector; ++}; ++ ++/* ++ * MAC address in list for ramrod ++ */ ++struct mac_configuration_entry { ++ struct tstorm_cam_entry cam_entry; ++ struct tstorm_cam_target_table_entry target_table_entry; ++}; ++ ++/* ++ * MAC filtering configuration command ++ */ ++struct mac_configuration_cmd { ++ struct mac_configuration_hdr hdr; ++ struct mac_configuration_entry config_table[64]; ++}; ++ ++ ++/* ++ * MAC address in list for ramrod ++ */ ++struct mac_configuration_entry_e1h { ++ __le16 lsb_mac_addr; ++ __le16 middle_mac_addr; ++ __le16 msb_mac_addr; ++ __le16 vlan_id; ++ __le16 e1hov_id; ++ u8 reserved0; ++ u8 flags; ++#define MAC_CONFIGURATION_ENTRY_E1H_PORT (0x1<<0) ++#define MAC_CONFIGURATION_ENTRY_E1H_PORT_SHIFT 0 ++#define MAC_CONFIGURATION_ENTRY_E1H_ACTION_TYPE (0x1<<1) ++#define MAC_CONFIGURATION_ENTRY_E1H_ACTION_TYPE_SHIFT 1 ++#define MAC_CONFIGURATION_ENTRY_E1H_RDMA_MAC (0x1<<2) ++#define MAC_CONFIGURATION_ENTRY_E1H_RDMA_MAC_SHIFT 2 ++#define MAC_CONFIGURATION_ENTRY_E1H_RESERVED1 (0x1F<<3) ++#define MAC_CONFIGURATION_ENTRY_E1H_RESERVED1_SHIFT 3 ++ u32 clients_bit_vector; ++}; ++ ++/* ++ * MAC filtering configuration command ++ */ ++struct mac_configuration_cmd_e1h { ++ struct mac_configuration_hdr hdr; ++ struct mac_configuration_entry_e1h config_table[32]; ++}; ++ ++ ++/* ++ * approximate-match multicast filtering for E1H per function in Tstorm ++ */ ++struct tstorm_eth_approximate_match_multicast_filtering { ++ u32 mcast_add_hash_bit_array[8]; ++}; ++ ++ ++/* ++ * Configuration parameters per client in Tstorm ++ */ ++struct tstorm_eth_client_config { ++#if defined(__BIG_ENDIAN) ++ u8 reserved0; ++ u8 statistics_counter_id; ++ u16 mtu; ++#elif defined(__LITTLE_ENDIAN) ++ u16 mtu; ++ u8 statistics_counter_id; ++ u8 reserved0; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 drop_flags; ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_IP_CS_ERR (0x1<<0) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_IP_CS_ERR_SHIFT 0 ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR (0x1<<1) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR_SHIFT 1 ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0 (0x1<<2) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0_SHIFT 2 ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR (0x1<<3) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR_SHIFT 3 ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED2 (0xFFF<<4) ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED2_SHIFT 4 ++ u16 config_flags; ++#define TSTORM_ETH_CLIENT_CONFIG_VLAN_REM_ENABLE (0x1<<0) ++#define TSTORM_ETH_CLIENT_CONFIG_VLAN_REM_ENABLE_SHIFT 0 ++#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REM_ENABLE (0x1<<1) ++#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REM_ENABLE_SHIFT 1 ++#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE (0x1<<2) ++#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE_SHIFT 2 ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1 (0x1FFF<<3) ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1_SHIFT 3 ++#elif defined(__LITTLE_ENDIAN) ++ u16 config_flags; ++#define TSTORM_ETH_CLIENT_CONFIG_VLAN_REM_ENABLE (0x1<<0) ++#define TSTORM_ETH_CLIENT_CONFIG_VLAN_REM_ENABLE_SHIFT 0 ++#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REM_ENABLE (0x1<<1) ++#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REM_ENABLE_SHIFT 1 ++#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE (0x1<<2) ++#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE_SHIFT 2 ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1 (0x1FFF<<3) ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1_SHIFT 3 ++ u16 drop_flags; ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_IP_CS_ERR (0x1<<0) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_IP_CS_ERR_SHIFT 0 ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR (0x1<<1) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR_SHIFT 1 ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0 (0x1<<2) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0_SHIFT 2 ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR (0x1<<3) ++#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR_SHIFT 3 ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED2 (0xFFF<<4) ++#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED2_SHIFT 4 ++#endif ++}; ++ ++ ++/* ++ * MAC filtering configuration parameters per port in Tstorm ++ */ ++struct tstorm_eth_mac_filter_config { ++ u32 ucast_drop_all; ++ u32 ucast_accept_all; ++ u32 mcast_drop_all; ++ u32 mcast_accept_all; ++ u32 bcast_drop_all; ++ u32 bcast_accept_all; ++ u32 strict_vlan; ++ u32 vlan_filter[2]; ++ u32 reserved; ++}; ++ ++ ++/* ++ * common flag to indicate existance of TPA. ++ */ ++struct tstorm_eth_tpa_exist { ++#if defined(__BIG_ENDIAN) ++ u16 reserved1; ++ u8 reserved0; ++ u8 tpa_exist; ++#elif defined(__LITTLE_ENDIAN) ++ u8 tpa_exist; ++ u8 reserved0; ++ u16 reserved1; ++#endif ++ u32 reserved2; ++}; ++ ++ ++/* ++ * rx rings pause data for E1h only ++ */ ++struct ustorm_eth_rx_pause_data_e1h { ++#if defined(__BIG_ENDIAN) ++ u16 bd_thr_low; ++ u16 cqe_thr_low; ++#elif defined(__LITTLE_ENDIAN) ++ u16 cqe_thr_low; ++ u16 bd_thr_low; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 cos; ++ u16 sge_thr_low; ++#elif defined(__LITTLE_ENDIAN) ++ u16 sge_thr_low; ++ u16 cos; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 bd_thr_high; ++ u16 cqe_thr_high; ++#elif defined(__LITTLE_ENDIAN) ++ u16 cqe_thr_high; ++ u16 bd_thr_high; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 reserved0; ++ u16 sge_thr_high; ++#elif defined(__LITTLE_ENDIAN) ++ u16 sge_thr_high; ++ u16 reserved0; ++#endif ++}; ++ ++ ++/* ++ * Three RX producers for ETH ++ */ ++struct ustorm_eth_rx_producers { ++#if defined(__BIG_ENDIAN) ++ u16 bd_prod; ++ u16 cqe_prod; ++#elif defined(__LITTLE_ENDIAN) ++ u16 cqe_prod; ++ u16 bd_prod; ++#endif ++#if defined(__BIG_ENDIAN) ++ u16 reserved; ++ u16 sge_prod; ++#elif defined(__LITTLE_ENDIAN) ++ u16 sge_prod; ++ u16 reserved; ++#endif ++}; ++ ++ ++/* ++ * per-port SAFC demo variables ++ */ ++struct cmng_flags_per_port { ++ u8 con_number[NUM_OF_PROTOCOLS]; ++ u32 cmng_enables; ++#define CMNG_FLAGS_PER_PORT_FAIRNESS_VN (0x1<<0) ++#define CMNG_FLAGS_PER_PORT_FAIRNESS_VN_SHIFT 0 ++#define CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN (0x1<<1) ++#define CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN_SHIFT 1 ++#define CMNG_FLAGS_PER_PORT_FAIRNESS_PROTOCOL (0x1<<2) ++#define CMNG_FLAGS_PER_PORT_FAIRNESS_PROTOCOL_SHIFT 2 ++#define CMNG_FLAGS_PER_PORT_RATE_SHAPING_PROTOCOL (0x1<<3) ++#define CMNG_FLAGS_PER_PORT_RATE_SHAPING_PROTOCOL_SHIFT 3 ++#define CMNG_FLAGS_PER_PORT_FAIRNESS_COS (0x1<<4) ++#define CMNG_FLAGS_PER_PORT_FAIRNESS_COS_SHIFT 4 ++#define __CMNG_FLAGS_PER_PORT_RESERVED0 (0x7FFFFFF<<5) ++#define __CMNG_FLAGS_PER_PORT_RESERVED0_SHIFT 5 ++}; ++ ++ ++/* ++ * per-port rate shaping variables ++ */ ++struct rate_shaping_vars_per_port { ++ u32 rs_periodic_timeout; ++ u32 rs_threshold; ++}; ++ ++/* ++ * per-port fairness variables ++ */ ++struct fairness_vars_per_port { ++ u32 upper_bound; ++ u32 fair_threshold; ++ u32 fairness_timeout; ++}; ++ ++/* ++ * per-port SAFC variables ++ */ ++struct safc_struct_per_port { ++#if defined(__BIG_ENDIAN) ++ u16 __reserved1; ++ u8 __reserved0; ++ u8 safc_timeout_usec; ++#elif defined(__LITTLE_ENDIAN) ++ u8 safc_timeout_usec; ++ u8 __reserved0; ++ u16 __reserved1; ++#endif ++ u16 cos_to_pause_mask[NUM_OF_SAFC_BITS]; ++}; ++ ++/* ++ * Per-port congestion management variables ++ */ ++struct cmng_struct_per_port { ++ struct rate_shaping_vars_per_port rs_vars; ++ struct fairness_vars_per_port fair_vars; ++ struct safc_struct_per_port safc_vars; ++ struct cmng_flags_per_port flags; ++}; ++ ++ ++/* ++ * Dynamic host coalescing init parameters ++ */ ++struct dynamic_hc_config { ++ u32 threshold[3]; ++ u8 shift_per_protocol[HC_USTORM_SB_NUM_INDICES]; ++ u8 hc_timeout0[HC_USTORM_SB_NUM_INDICES]; ++ u8 hc_timeout1[HC_USTORM_SB_NUM_INDICES]; ++ u8 hc_timeout2[HC_USTORM_SB_NUM_INDICES]; ++ u8 hc_timeout3[HC_USTORM_SB_NUM_INDICES]; ++}; ++ ++ ++/* ++ * Protocol-common statistics collected by the Xstorm (per client) ++ */ ++struct xstorm_per_client_stats { ++ __le32 reserved0; ++ __le32 unicast_pkts_sent; ++ struct regpair unicast_bytes_sent; ++ struct regpair multicast_bytes_sent; ++ __le32 multicast_pkts_sent; ++ __le32 broadcast_pkts_sent; ++ struct regpair broadcast_bytes_sent; ++ __le16 stats_counter; ++ __le16 reserved1; ++ __le32 reserved2; ++}; ++ ++/* ++ * Common statistics collected by the Xstorm (per port) ++ */ ++struct xstorm_common_stats { ++ struct xstorm_per_client_stats client_statistics[MAX_X_STAT_COUNTER_ID]; ++}; ++ ++/* ++ * Protocol-common statistics collected by the Tstorm (per port) ++ */ ++struct tstorm_per_port_stats { ++ __le32 mac_filter_discard; ++ __le32 xxoverflow_discard; ++ __le32 brb_truncate_discard; ++ __le32 mac_discard; ++}; ++ ++/* ++ * Protocol-common statistics collected by the Tstorm (per client) ++ */ ++struct tstorm_per_client_stats { ++ struct regpair rcv_unicast_bytes; ++ struct regpair rcv_broadcast_bytes; ++ struct regpair rcv_multicast_bytes; ++ struct regpair rcv_error_bytes; ++ __le32 checksum_discard; ++ __le32 packets_too_big_discard; ++ __le32 rcv_unicast_pkts; ++ __le32 rcv_broadcast_pkts; ++ __le32 rcv_multicast_pkts; ++ __le32 no_buff_discard; ++ __le32 ttl0_discard; ++ __le16 stats_counter; ++ __le16 reserved0; ++}; ++ ++/* ++ * Protocol-common statistics collected by the Tstorm ++ */ ++struct tstorm_common_stats { ++ struct tstorm_per_port_stats port_statistics; ++ struct tstorm_per_client_stats client_statistics[MAX_T_STAT_COUNTER_ID]; ++}; ++ ++/* ++ * Protocol-common statistics collected by the Ustorm (per client) ++ */ ++struct ustorm_per_client_stats { ++ struct regpair ucast_no_buff_bytes; ++ struct regpair mcast_no_buff_bytes; ++ struct regpair bcast_no_buff_bytes; ++ __le32 ucast_no_buff_pkts; ++ __le32 mcast_no_buff_pkts; ++ __le32 bcast_no_buff_pkts; ++ __le16 stats_counter; ++ __le16 reserved0; ++}; ++ ++/* ++ * Protocol-common statistics collected by the Ustorm ++ */ ++struct ustorm_common_stats { ++ struct ustorm_per_client_stats client_statistics[MAX_U_STAT_COUNTER_ID]; ++}; ++ ++/* ++ * Eth statistics query structure for the eth_stats_query ramrod ++ */ ++struct eth_stats_query { ++ struct xstorm_common_stats xstorm_common; ++ struct tstorm_common_stats tstorm_common; ++ struct ustorm_common_stats ustorm_common; ++}; ++ ++ ++/* ++ * per-vnic fairness variables ++ */ ++struct fairness_vars_per_vn { ++ u32 cos_credit_delta[MAX_COS_NUMBER]; ++ u32 protocol_credit_delta[NUM_OF_PROTOCOLS]; ++ u32 vn_credit_delta; ++ u32 __reserved0; ++}; ++ ++ ++/* ++ * FW version stored in the Xstorm RAM ++ */ ++struct fw_version { ++#if defined(__BIG_ENDIAN) ++ u8 engineering; ++ u8 revision; ++ u8 minor; ++ u8 major; ++#elif defined(__LITTLE_ENDIAN) ++ u8 major; ++ u8 minor; ++ u8 revision; ++ u8 engineering; ++#endif ++ u32 flags; ++#define FW_VERSION_OPTIMIZED (0x1<<0) ++#define FW_VERSION_OPTIMIZED_SHIFT 0 ++#define FW_VERSION_BIG_ENDIEN (0x1<<1) ++#define FW_VERSION_BIG_ENDIEN_SHIFT 1 ++#define FW_VERSION_CHIP_VERSION (0x3<<2) ++#define FW_VERSION_CHIP_VERSION_SHIFT 2 ++#define __FW_VERSION_RESERVED (0xFFFFFFF<<4) ++#define __FW_VERSION_RESERVED_SHIFT 4 ++}; ++ ++ ++/* ++ * FW version stored in first line of pram ++ */ ++struct pram_fw_version { ++ u8 major; ++ u8 minor; ++ u8 revision; ++ u8 engineering; ++ u8 flags; ++#define PRAM_FW_VERSION_OPTIMIZED (0x1<<0) ++#define PRAM_FW_VERSION_OPTIMIZED_SHIFT 0 ++#define PRAM_FW_VERSION_STORM_ID (0x3<<1) ++#define PRAM_FW_VERSION_STORM_ID_SHIFT 1 ++#define PRAM_FW_VERSION_BIG_ENDIEN (0x1<<3) ++#define PRAM_FW_VERSION_BIG_ENDIEN_SHIFT 3 ++#define PRAM_FW_VERSION_CHIP_VERSION (0x3<<4) ++#define PRAM_FW_VERSION_CHIP_VERSION_SHIFT 4 ++#define __PRAM_FW_VERSION_RESERVED0 (0x3<<6) ++#define __PRAM_FW_VERSION_RESERVED0_SHIFT 6 ++}; ++ ++ ++/* ++ * The send queue element ++ */ ++struct protocol_common_spe { ++ struct spe_hdr hdr; ++ struct regpair phy_address; ++}; ++ ++ ++/* ++ * a single rate shaping counter. can be used as protocol or vnic counter ++ */ ++struct rate_shaping_counter { ++ u32 quota; ++#if defined(__BIG_ENDIAN) ++ u16 __reserved0; ++ u16 rate; ++#elif defined(__LITTLE_ENDIAN) ++ u16 rate; ++ u16 __reserved0; ++#endif ++}; ++ ++ ++/* ++ * per-vnic rate shaping variables ++ */ ++struct rate_shaping_vars_per_vn { ++ struct rate_shaping_counter protocol_counters[NUM_OF_PROTOCOLS]; ++ struct rate_shaping_counter vn_counter; ++}; ++ ++ ++/* ++ * The send queue element ++ */ ++struct slow_path_element { ++ struct spe_hdr hdr; ++ u8 protocol_data[8]; ++}; ++ ++ ++/* ++ * eth/toe flags that indicate if to query ++ */ ++struct stats_indication_flags { ++ u32 collect_eth; ++ u32 collect_toe; ++}; ++ ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,152 @@ ++/* bnx2x_init.h: Broadcom Everest network driver. ++ * Structures and macroes needed during the initialization. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ * Maintained by: Eilon Greenstein ++ * Written by: Eliezer Tamir ++ * Modified by: Vladislav Zolotarov ++ */ ++ ++#ifndef BNX2X_INIT_H ++#define BNX2X_INIT_H ++ ++/* RAM0 size in bytes */ ++#define STORM_INTMEM_SIZE_E1 0x5800 ++#define STORM_INTMEM_SIZE_E1H 0x10000 ++#define STORM_INTMEM_SIZE(bp) ((CHIP_IS_E1(bp) ? STORM_INTMEM_SIZE_E1 : \ ++ STORM_INTMEM_SIZE_E1H) / 4) ++ ++ ++/* Init operation types and structures */ ++/* Common for both E1 and E1H */ ++#define OP_RD 0x1 /* read single register */ ++#define OP_WR 0x2 /* write single register */ ++#define OP_IW 0x3 /* write single register using mailbox */ ++#define OP_SW 0x4 /* copy a string to the device */ ++#define OP_SI 0x5 /* copy a string using mailbox */ ++#define OP_ZR 0x6 /* clear memory */ ++#define OP_ZP 0x7 /* unzip then copy with DMAE */ ++#define OP_WR_64 0x8 /* write 64 bit pattern */ ++#define OP_WB 0x9 /* copy a string using DMAE */ ++ ++/* FPGA and EMUL specific operations */ ++#define OP_WR_EMUL 0xa /* write single register on Emulation */ ++#define OP_WR_FPGA 0xb /* write single register on FPGA */ ++#define OP_WR_ASIC 0xc /* write single register on ASIC */ ++ ++/* Init stages */ ++/* Never reorder stages !!! */ ++#define COMMON_STAGE 0 ++#define PORT0_STAGE 1 ++#define PORT1_STAGE 2 ++#define FUNC0_STAGE 3 ++#define FUNC1_STAGE 4 ++#define FUNC2_STAGE 5 ++#define FUNC3_STAGE 6 ++#define FUNC4_STAGE 7 ++#define FUNC5_STAGE 8 ++#define FUNC6_STAGE 9 ++#define FUNC7_STAGE 10 ++#define STAGE_IDX_MAX 11 ++ ++#define STAGE_START 0 ++#define STAGE_END 1 ++ ++ ++/* Indices of blocks */ ++#define PRS_BLOCK 0 ++#define SRCH_BLOCK 1 ++#define TSDM_BLOCK 2 ++#define TCM_BLOCK 3 ++#define BRB1_BLOCK 4 ++#define TSEM_BLOCK 5 ++#define PXPCS_BLOCK 6 ++#define EMAC0_BLOCK 7 ++#define EMAC1_BLOCK 8 ++#define DBU_BLOCK 9 ++#define MISC_BLOCK 10 ++#define DBG_BLOCK 11 ++#define NIG_BLOCK 12 ++#define MCP_BLOCK 13 ++#define UPB_BLOCK 14 ++#define CSDM_BLOCK 15 ++#define USDM_BLOCK 16 ++#define CCM_BLOCK 17 ++#define UCM_BLOCK 18 ++#define USEM_BLOCK 19 ++#define CSEM_BLOCK 20 ++#define XPB_BLOCK 21 ++#define DQ_BLOCK 22 ++#define TIMERS_BLOCK 23 ++#define XSDM_BLOCK 24 ++#define QM_BLOCK 25 ++#define PBF_BLOCK 26 ++#define XCM_BLOCK 27 ++#define XSEM_BLOCK 28 ++#define CDU_BLOCK 29 ++#define DMAE_BLOCK 30 ++#define PXP_BLOCK 31 ++#define CFC_BLOCK 32 ++#define HC_BLOCK 33 ++#define PXP2_BLOCK 34 ++#define MISC_AEU_BLOCK 35 ++#define PGLUE_B_BLOCK 36 ++#define IGU_BLOCK 37 ++ ++ ++/* Returns the index of start or end of a specific block stage in ops array*/ ++#define BLOCK_OPS_IDX(block, stage, end) \ ++ (2*(((block)*STAGE_IDX_MAX) + (stage)) + (end)) ++ ++ ++struct raw_op { ++ u32 op:8; ++ u32 offset:24; ++ u32 raw_data; ++}; ++ ++struct op_read { ++ u32 op:8; ++ u32 offset:24; ++ u32 pad; ++}; ++ ++struct op_write { ++ u32 op:8; ++ u32 offset:24; ++ u32 val; ++}; ++ ++struct op_string_write { ++ u32 op:8; ++ u32 offset:24; ++#ifdef __LITTLE_ENDIAN ++ u16 data_off; ++ u16 data_len; ++#else /* __BIG_ENDIAN */ ++ u16 data_len; ++ u16 data_off; ++#endif ++}; ++ ++struct op_zero { ++ u32 op:8; ++ u32 offset:24; ++ u32 len; ++}; ++ ++union init_op { ++ struct op_read read; ++ struct op_write write; ++ struct op_string_write str_wr; ++ struct op_zero zero; ++ struct raw_op raw; ++}; ++ ++#endif /* BNX2X_INIT_H */ ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init_ops.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init_ops.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init_ops.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init_ops.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,501 @@ ++/* bnx2x_init_ops.h: Broadcom Everest network driver. ++ * Static functions needed during the initialization. ++ * This file is "included" in bnx2x_main.c. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ * Maintained by: Eilon Greenstein ++ * Written by: Vladislav Zolotarov ++ */ ++ ++#ifndef BNX2X_INIT_OPS_H ++#define BNX2X_INIT_OPS_H ++ ++static int bnx2x_gunzip(struct bnx2x *bp, const u8 *zbuf, int len); ++ ++ ++static void bnx2x_init_str_wr(struct bnx2x *bp, u32 addr, const u32 *data, ++ u32 len) ++{ ++ u32 i; ++ ++ for (i = 0; i < len; i++) ++ REG_WR(bp, addr + i*4, data[i]); ++} ++ ++static void bnx2x_init_ind_wr(struct bnx2x *bp, u32 addr, const u32 *data, ++ u32 len) ++{ ++ u32 i; ++ ++ for (i = 0; i < len; i++) ++ REG_WR_IND(bp, addr + i*4, data[i]); ++} ++ ++static void bnx2x_write_big_buf(struct bnx2x *bp, u32 addr, u32 len) ++{ ++ if (bp->dmae_ready) ++ bnx2x_write_dmae_phys_len(bp, GUNZIP_PHYS(bp), addr, len); ++ else ++ bnx2x_init_str_wr(bp, addr, GUNZIP_BUF(bp), len); ++} ++ ++static void bnx2x_init_fill(struct bnx2x *bp, u32 addr, int fill, u32 len) ++{ ++ u32 buf_len = (((len*4) > FW_BUF_SIZE) ? FW_BUF_SIZE : (len*4)); ++ u32 buf_len32 = buf_len/4; ++ u32 i; ++ ++ memset(GUNZIP_BUF(bp), (u8)fill, buf_len); ++ ++ for (i = 0; i < len; i += buf_len32) { ++ u32 cur_len = min(buf_len32, len - i); ++ ++ bnx2x_write_big_buf(bp, addr + i*4, cur_len); ++ } ++} ++ ++static void bnx2x_init_wr_64(struct bnx2x *bp, u32 addr, const u32 *data, ++ u32 len64) ++{ ++ u32 buf_len32 = FW_BUF_SIZE/4; ++ u32 len = len64*2; ++ u64 data64 = 0; ++ u32 i; ++ ++ /* 64 bit value is in a blob: first low DWORD, then high DWORD */ ++ data64 = HILO_U64((*(data + 1)), (*data)); ++ ++ len64 = min((u32)(FW_BUF_SIZE/8), len64); ++ for (i = 0; i < len64; i++) { ++ u64 *pdata = ((u64 *)(GUNZIP_BUF(bp))) + i; ++ ++ *pdata = data64; ++ } ++ ++ for (i = 0; i < len; i += buf_len32) { ++ u32 cur_len = min(buf_len32, len - i); ++ ++ bnx2x_write_big_buf(bp, addr + i*4, cur_len); ++ } ++} ++ ++/********************************************************* ++ There are different blobs for each PRAM section. ++ In addition, each blob write operation is divided into a few operations ++ in order to decrease the amount of phys. contiguous buffer needed. ++ Thus, when we select a blob the address may be with some offset ++ from the beginning of PRAM section. ++ The same holds for the INT_TABLE sections. ++**********************************************************/ ++#define IF_IS_INT_TABLE_ADDR(base, addr) \ ++ if (((base) <= (addr)) && ((base) + 0x400 >= (addr))) ++ ++#define IF_IS_PRAM_ADDR(base, addr) \ ++ if (((base) <= (addr)) && ((base) + 0x40000 >= (addr))) ++ ++static const u8 *bnx2x_sel_blob(struct bnx2x *bp, u32 addr, const u8 *data) ++{ ++ IF_IS_INT_TABLE_ADDR(TSEM_REG_INT_TABLE, addr) ++ data = INIT_TSEM_INT_TABLE_DATA(bp); ++ else ++ IF_IS_INT_TABLE_ADDR(CSEM_REG_INT_TABLE, addr) ++ data = INIT_CSEM_INT_TABLE_DATA(bp); ++ else ++ IF_IS_INT_TABLE_ADDR(USEM_REG_INT_TABLE, addr) ++ data = INIT_USEM_INT_TABLE_DATA(bp); ++ else ++ IF_IS_INT_TABLE_ADDR(XSEM_REG_INT_TABLE, addr) ++ data = INIT_XSEM_INT_TABLE_DATA(bp); ++ else ++ IF_IS_PRAM_ADDR(TSEM_REG_PRAM, addr) ++ data = INIT_TSEM_PRAM_DATA(bp); ++ else ++ IF_IS_PRAM_ADDR(CSEM_REG_PRAM, addr) ++ data = INIT_CSEM_PRAM_DATA(bp); ++ else ++ IF_IS_PRAM_ADDR(USEM_REG_PRAM, addr) ++ data = INIT_USEM_PRAM_DATA(bp); ++ else ++ IF_IS_PRAM_ADDR(XSEM_REG_PRAM, addr) ++ data = INIT_XSEM_PRAM_DATA(bp); ++ ++ return data; ++} ++ ++static void bnx2x_write_big_buf_wb(struct bnx2x *bp, u32 addr, u32 len) ++{ ++ if (bp->dmae_ready) ++ bnx2x_write_dmae_phys_len(bp, GUNZIP_PHYS(bp), addr, len); ++ else ++ bnx2x_init_ind_wr(bp, addr, GUNZIP_BUF(bp), len); ++} ++ ++static void bnx2x_init_wr_wb(struct bnx2x *bp, u32 addr, const u32 *data, ++ u32 len) ++{ ++ data = (const u32 *)bnx2x_sel_blob(bp, addr, (const u8 *)data); ++ ++ if (bp->dmae_ready) ++ VIRT_WR_DMAE_LEN(bp, data, addr, len); ++ else ++ bnx2x_init_ind_wr(bp, addr, data, len); ++} ++ ++static void bnx2x_init_wr_zp(struct bnx2x *bp, u32 addr, u32 len, u32 blob_off) ++{ ++ const u8 *data = NULL; ++ int rc; ++ u32 i; ++ ++ data = bnx2x_sel_blob(bp, addr, data) + blob_off*4; ++ ++ rc = bnx2x_gunzip(bp, data, len); ++ if (rc) ++ return; ++ ++ /* gunzip_outlen is in dwords */ ++ len = GUNZIP_OUTLEN(bp); ++ for (i = 0; i < len; i++) ++ ((u32 *)GUNZIP_BUF(bp))[i] = ++ cpu_to_le32(((u32 *)GUNZIP_BUF(bp))[i]); ++ ++ bnx2x_write_big_buf_wb(bp, addr, len); ++} ++ ++static void bnx2x_init_block(struct bnx2x *bp, u32 block, u32 stage) ++{ ++ u16 op_start = ++ INIT_OPS_OFFSETS(bp)[BLOCK_OPS_IDX(block,stage,STAGE_START)]; ++ u16 op_end = ++ INIT_OPS_OFFSETS(bp)[BLOCK_OPS_IDX(block,stage,STAGE_END)]; ++ union init_op *op; ++ int hw_wr; ++ u32 i, op_type, addr, len; ++ const u32 *data, *data_base; ++ ++ /* If empty block */ ++ if (op_start == op_end) ++ return; ++ ++ if (CHIP_REV_IS_FPGA(bp)) ++ hw_wr = OP_WR_FPGA; ++ else if (CHIP_REV_IS_EMUL(bp)) ++ hw_wr = OP_WR_EMUL; ++ else ++ hw_wr = OP_WR_ASIC; ++ ++ data_base = INIT_DATA(bp); ++ ++ for (i = op_start; i < op_end; i++) { ++ ++ op = (union init_op *)&(INIT_OPS(bp)[i]); ++ ++ op_type = op->str_wr.op; ++ addr = op->str_wr.offset; ++ len = op->str_wr.data_len; ++ data = data_base + op->str_wr.data_off; ++ ++ /* HW/EMUL specific */ ++ if ((op_type > OP_WB) && (op_type == hw_wr)) ++ op_type = OP_WR; ++ ++ switch (op_type) { ++ case OP_RD: ++ REG_RD(bp, addr); ++ break; ++ case OP_WR: ++ REG_WR(bp, addr, op->write.val); ++ break; ++ case OP_SW: ++ bnx2x_init_str_wr(bp, addr, data, len); ++ break; ++ case OP_WB: ++ bnx2x_init_wr_wb(bp, addr, data, len); ++ break; ++ case OP_SI: ++ bnx2x_init_ind_wr(bp, addr, data, len); ++ break; ++ case OP_ZR: ++ bnx2x_init_fill(bp, addr, 0, op->zero.len); ++ break; ++ case OP_ZP: ++ bnx2x_init_wr_zp(bp, addr, len, ++ op->str_wr.data_off); ++ break; ++ case OP_WR_64: ++ bnx2x_init_wr_64(bp, addr, data, len); ++ break; ++ default: ++ /* happens whenever an op is of a diff HW */ ++ break; ++ } ++ } ++} ++ ++ ++/**************************************************************************** ++* PXP Arbiter ++****************************************************************************/ ++/* ++ * This code configures the PCI read/write arbiter ++ * which implements a weighted round robin ++ * between the virtual queues in the chip. ++ * ++ * The values were derived for each PCI max payload and max request size. ++ * since max payload and max request size are only known at run time, ++ * this is done as a separate init stage. ++ */ ++ ++#define NUM_WR_Q 13 ++#define NUM_RD_Q 29 ++#define MAX_RD_ORD 3 ++#define MAX_WR_ORD 2 ++ ++/* configuration for one arbiter queue */ ++struct arb_line { ++ int l; ++ int add; ++ int ubound; ++}; ++ ++/* derived configuration for each read queue for each max request size */ ++static const struct arb_line read_arb_data[NUM_RD_Q][MAX_RD_ORD + 1] = { ++/* 1 */ { {8, 64, 25}, {16, 64, 25}, {32, 64, 25}, {64, 64, 41} }, ++ { {4, 8, 4}, {4, 8, 4}, {4, 8, 4}, {4, 8, 4} }, ++ { {4, 3, 3}, {4, 3, 3}, {4, 3, 3}, {4, 3, 3} }, ++ { {8, 3, 6}, {16, 3, 11}, {16, 3, 11}, {16, 3, 11} }, ++ { {8, 64, 25}, {16, 64, 25}, {32, 64, 25}, {64, 64, 41} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {64, 3, 41} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {64, 3, 41} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {64, 3, 41} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {64, 3, 41} }, ++/* 10 */{ {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 64, 6}, {16, 64, 11}, {32, 64, 21}, {32, 64, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++/* 20 */{ {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 3, 6}, {16, 3, 11}, {32, 3, 21}, {32, 3, 21} }, ++ { {8, 64, 25}, {16, 64, 41}, {32, 64, 81}, {64, 64, 120} } ++}; ++ ++/* derived configuration for each write queue for each max request size */ ++static const struct arb_line write_arb_data[NUM_WR_Q][MAX_WR_ORD + 1] = { ++/* 1 */ { {4, 6, 3}, {4, 6, 3}, {4, 6, 3} }, ++ { {4, 2, 3}, {4, 2, 3}, {4, 2, 3} }, ++ { {8, 2, 6}, {16, 2, 11}, {16, 2, 11} }, ++ { {8, 2, 6}, {16, 2, 11}, {32, 2, 21} }, ++ { {8, 2, 6}, {16, 2, 11}, {32, 2, 21} }, ++ { {8, 2, 6}, {16, 2, 11}, {32, 2, 21} }, ++ { {8, 64, 25}, {16, 64, 25}, {32, 64, 25} }, ++ { {8, 2, 6}, {16, 2, 11}, {16, 2, 11} }, ++ { {8, 2, 6}, {16, 2, 11}, {16, 2, 11} }, ++/* 10 */{ {8, 9, 6}, {16, 9, 11}, {32, 9, 21} }, ++ { {8, 47, 19}, {16, 47, 19}, {32, 47, 21} }, ++ { {8, 9, 6}, {16, 9, 11}, {16, 9, 11} }, ++ { {8, 64, 25}, {16, 64, 41}, {32, 64, 81} } ++}; ++ ++/* register addresses for read queues */ ++static const struct arb_line read_arb_addr[NUM_RD_Q-1] = { ++/* 1 */ {PXP2_REG_RQ_BW_RD_L0, PXP2_REG_RQ_BW_RD_ADD0, ++ PXP2_REG_RQ_BW_RD_UBOUND0}, ++ {PXP2_REG_PSWRQ_BW_L1, PXP2_REG_PSWRQ_BW_ADD1, ++ PXP2_REG_PSWRQ_BW_UB1}, ++ {PXP2_REG_PSWRQ_BW_L2, PXP2_REG_PSWRQ_BW_ADD2, ++ PXP2_REG_PSWRQ_BW_UB2}, ++ {PXP2_REG_PSWRQ_BW_L3, PXP2_REG_PSWRQ_BW_ADD3, ++ PXP2_REG_PSWRQ_BW_UB3}, ++ {PXP2_REG_RQ_BW_RD_L4, PXP2_REG_RQ_BW_RD_ADD4, ++ PXP2_REG_RQ_BW_RD_UBOUND4}, ++ {PXP2_REG_RQ_BW_RD_L5, PXP2_REG_RQ_BW_RD_ADD5, ++ PXP2_REG_RQ_BW_RD_UBOUND5}, ++ {PXP2_REG_PSWRQ_BW_L6, PXP2_REG_PSWRQ_BW_ADD6, ++ PXP2_REG_PSWRQ_BW_UB6}, ++ {PXP2_REG_PSWRQ_BW_L7, PXP2_REG_PSWRQ_BW_ADD7, ++ PXP2_REG_PSWRQ_BW_UB7}, ++ {PXP2_REG_PSWRQ_BW_L8, PXP2_REG_PSWRQ_BW_ADD8, ++ PXP2_REG_PSWRQ_BW_UB8}, ++/* 10 */{PXP2_REG_PSWRQ_BW_L9, PXP2_REG_PSWRQ_BW_ADD9, ++ PXP2_REG_PSWRQ_BW_UB9}, ++ {PXP2_REG_PSWRQ_BW_L10, PXP2_REG_PSWRQ_BW_ADD10, ++ PXP2_REG_PSWRQ_BW_UB10}, ++ {PXP2_REG_PSWRQ_BW_L11, PXP2_REG_PSWRQ_BW_ADD11, ++ PXP2_REG_PSWRQ_BW_UB11}, ++ {PXP2_REG_RQ_BW_RD_L12, PXP2_REG_RQ_BW_RD_ADD12, ++ PXP2_REG_RQ_BW_RD_UBOUND12}, ++ {PXP2_REG_RQ_BW_RD_L13, PXP2_REG_RQ_BW_RD_ADD13, ++ PXP2_REG_RQ_BW_RD_UBOUND13}, ++ {PXP2_REG_RQ_BW_RD_L14, PXP2_REG_RQ_BW_RD_ADD14, ++ PXP2_REG_RQ_BW_RD_UBOUND14}, ++ {PXP2_REG_RQ_BW_RD_L15, PXP2_REG_RQ_BW_RD_ADD15, ++ PXP2_REG_RQ_BW_RD_UBOUND15}, ++ {PXP2_REG_RQ_BW_RD_L16, PXP2_REG_RQ_BW_RD_ADD16, ++ PXP2_REG_RQ_BW_RD_UBOUND16}, ++ {PXP2_REG_RQ_BW_RD_L17, PXP2_REG_RQ_BW_RD_ADD17, ++ PXP2_REG_RQ_BW_RD_UBOUND17}, ++ {PXP2_REG_RQ_BW_RD_L18, PXP2_REG_RQ_BW_RD_ADD18, ++ PXP2_REG_RQ_BW_RD_UBOUND18}, ++/* 20 */{PXP2_REG_RQ_BW_RD_L19, PXP2_REG_RQ_BW_RD_ADD19, ++ PXP2_REG_RQ_BW_RD_UBOUND19}, ++ {PXP2_REG_RQ_BW_RD_L20, PXP2_REG_RQ_BW_RD_ADD20, ++ PXP2_REG_RQ_BW_RD_UBOUND20}, ++ {PXP2_REG_RQ_BW_RD_L22, PXP2_REG_RQ_BW_RD_ADD22, ++ PXP2_REG_RQ_BW_RD_UBOUND22}, ++ {PXP2_REG_RQ_BW_RD_L23, PXP2_REG_RQ_BW_RD_ADD23, ++ PXP2_REG_RQ_BW_RD_UBOUND23}, ++ {PXP2_REG_RQ_BW_RD_L24, PXP2_REG_RQ_BW_RD_ADD24, ++ PXP2_REG_RQ_BW_RD_UBOUND24}, ++ {PXP2_REG_RQ_BW_RD_L25, PXP2_REG_RQ_BW_RD_ADD25, ++ PXP2_REG_RQ_BW_RD_UBOUND25}, ++ {PXP2_REG_RQ_BW_RD_L26, PXP2_REG_RQ_BW_RD_ADD26, ++ PXP2_REG_RQ_BW_RD_UBOUND26}, ++ {PXP2_REG_RQ_BW_RD_L27, PXP2_REG_RQ_BW_RD_ADD27, ++ PXP2_REG_RQ_BW_RD_UBOUND27}, ++ {PXP2_REG_PSWRQ_BW_L28, PXP2_REG_PSWRQ_BW_ADD28, ++ PXP2_REG_PSWRQ_BW_UB28} ++}; ++ ++/* register addresses for write queues */ ++static const struct arb_line write_arb_addr[NUM_WR_Q-1] = { ++/* 1 */ {PXP2_REG_PSWRQ_BW_L1, PXP2_REG_PSWRQ_BW_ADD1, ++ PXP2_REG_PSWRQ_BW_UB1}, ++ {PXP2_REG_PSWRQ_BW_L2, PXP2_REG_PSWRQ_BW_ADD2, ++ PXP2_REG_PSWRQ_BW_UB2}, ++ {PXP2_REG_PSWRQ_BW_L3, PXP2_REG_PSWRQ_BW_ADD3, ++ PXP2_REG_PSWRQ_BW_UB3}, ++ {PXP2_REG_PSWRQ_BW_L6, PXP2_REG_PSWRQ_BW_ADD6, ++ PXP2_REG_PSWRQ_BW_UB6}, ++ {PXP2_REG_PSWRQ_BW_L7, PXP2_REG_PSWRQ_BW_ADD7, ++ PXP2_REG_PSWRQ_BW_UB7}, ++ {PXP2_REG_PSWRQ_BW_L8, PXP2_REG_PSWRQ_BW_ADD8, ++ PXP2_REG_PSWRQ_BW_UB8}, ++ {PXP2_REG_PSWRQ_BW_L9, PXP2_REG_PSWRQ_BW_ADD9, ++ PXP2_REG_PSWRQ_BW_UB9}, ++ {PXP2_REG_PSWRQ_BW_L10, PXP2_REG_PSWRQ_BW_ADD10, ++ PXP2_REG_PSWRQ_BW_UB10}, ++ {PXP2_REG_PSWRQ_BW_L11, PXP2_REG_PSWRQ_BW_ADD11, ++ PXP2_REG_PSWRQ_BW_UB11}, ++/* 10 */{PXP2_REG_PSWRQ_BW_L28, PXP2_REG_PSWRQ_BW_ADD28, ++ PXP2_REG_PSWRQ_BW_UB28}, ++ {PXP2_REG_RQ_BW_WR_L29, PXP2_REG_RQ_BW_WR_ADD29, ++ PXP2_REG_RQ_BW_WR_UBOUND29}, ++ {PXP2_REG_RQ_BW_WR_L30, PXP2_REG_RQ_BW_WR_ADD30, ++ PXP2_REG_RQ_BW_WR_UBOUND30} ++}; ++ ++static void bnx2x_init_pxp_arb(struct bnx2x *bp, int r_order, int w_order) ++{ ++ u32 val, i; ++ ++ if (r_order > MAX_RD_ORD) { ++ DP(NETIF_MSG_HW, "read order of %d order adjusted to %d\n", ++ r_order, MAX_RD_ORD); ++ r_order = MAX_RD_ORD; ++ } ++ if (w_order > MAX_WR_ORD) { ++ DP(NETIF_MSG_HW, "write order of %d order adjusted to %d\n", ++ w_order, MAX_WR_ORD); ++ w_order = MAX_WR_ORD; ++ } ++ if (CHIP_REV_IS_FPGA(bp)) { ++ DP(NETIF_MSG_HW, "write order adjusted to 1 for FPGA\n"); ++ w_order = 0; ++ } ++ DP(NETIF_MSG_HW, "read order %d write order %d\n", r_order, w_order); ++ ++ for (i = 0; i < NUM_RD_Q-1; i++) { ++ REG_WR(bp, read_arb_addr[i].l, read_arb_data[i][r_order].l); ++ REG_WR(bp, read_arb_addr[i].add, ++ read_arb_data[i][r_order].add); ++ REG_WR(bp, read_arb_addr[i].ubound, ++ read_arb_data[i][r_order].ubound); ++ } ++ ++ for (i = 0; i < NUM_WR_Q-1; i++) { ++ if ((write_arb_addr[i].l == PXP2_REG_RQ_BW_WR_L29) || ++ (write_arb_addr[i].l == PXP2_REG_RQ_BW_WR_L30)) { ++ ++ REG_WR(bp, write_arb_addr[i].l, ++ write_arb_data[i][w_order].l); ++ ++ REG_WR(bp, write_arb_addr[i].add, ++ write_arb_data[i][w_order].add); ++ ++ REG_WR(bp, write_arb_addr[i].ubound, ++ write_arb_data[i][w_order].ubound); ++ } else { ++ ++ val = REG_RD(bp, write_arb_addr[i].l); ++ REG_WR(bp, write_arb_addr[i].l, ++ val | (write_arb_data[i][w_order].l << 10)); ++ ++ val = REG_RD(bp, write_arb_addr[i].add); ++ REG_WR(bp, write_arb_addr[i].add, ++ val | (write_arb_data[i][w_order].add << 10)); ++ ++ val = REG_RD(bp, write_arb_addr[i].ubound); ++ REG_WR(bp, write_arb_addr[i].ubound, ++ val | (write_arb_data[i][w_order].ubound << 7)); ++ } ++ } ++ ++ val = write_arb_data[NUM_WR_Q-1][w_order].add; ++ val += write_arb_data[NUM_WR_Q-1][w_order].ubound << 10; ++ val += write_arb_data[NUM_WR_Q-1][w_order].l << 17; ++ REG_WR(bp, PXP2_REG_PSWRQ_BW_RD, val); ++ ++ val = read_arb_data[NUM_RD_Q-1][r_order].add; ++ val += read_arb_data[NUM_RD_Q-1][r_order].ubound << 10; ++ val += read_arb_data[NUM_RD_Q-1][r_order].l << 17; ++ REG_WR(bp, PXP2_REG_PSWRQ_BW_WR, val); ++ ++ REG_WR(bp, PXP2_REG_RQ_WR_MBS0, w_order); ++ REG_WR(bp, PXP2_REG_RQ_WR_MBS1, w_order); ++ REG_WR(bp, PXP2_REG_RQ_RD_MBS0, r_order); ++ REG_WR(bp, PXP2_REG_RQ_RD_MBS1, r_order); ++ ++ if (r_order == MAX_RD_ORD) ++ REG_WR(bp, PXP2_REG_RQ_PDR_LIMIT, 0xe00); ++ ++ REG_WR(bp, PXP2_REG_WR_USDMDP_TH, (0x18 << w_order)); ++ ++ if (CHIP_IS_E1H(bp)) { ++ /* MPS w_order optimal TH presently TH ++ * 128 0 0 2 ++ * 256 1 1 3 ++ * >=512 2 2 3 ++ */ ++ val = ((w_order == 0) ? 2 : 3); ++ REG_WR(bp, PXP2_REG_WR_HC_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_USDM_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_CSDM_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_TSDM_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_XSDM_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_QM_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_TM_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_SRC_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_DBG_MPS, val); ++ REG_WR(bp, PXP2_REG_WR_DMAE_MPS, 2); /* DMAE is special */ ++ REG_WR(bp, PXP2_REG_WR_CDU_MPS, val); ++ } ++} ++ ++#endif /* BNX2X_INIT_OPS_H */ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init_values_e1.c linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init_values_e1.c +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init_values_e1.c 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init_values_e1.c 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,13901 @@ ++/* init_ops array contains the list of operations needed to initialize the chip. ++ * ++ * For each block in the chip there are three init stages: ++ * common - HW used by both ports, ++ * port1 and port2 - initialization for a specific Ethernet port. ++ * When a port is opened or closed, the management CPU tells the driver ++ * whether to init/disable common HW in addition to the port HW. ++ * This way the first port going up will first initializes the common HW, ++ * and the last port going down also resets the common HW ++ * ++ * For each init stage/block there is a list of actions needed in a format: ++ * {operation, register, data} ++ * where: ++ * OP_WR - write a value to the chip. ++ * OP_RD - read a register (usually a clear on read register). ++ * OP_SW - string write, write a section of consecutive addresses to the chip. ++ * OP_SI - copy a string using indirect writes. ++ * OP_ZR - clear a range of memory. ++ * OP_ZP - unzip and copy using DMAE. ++ * OP_WB - string copy using DMAE. ++ * ++ * The #defines mark the stages. ++ * ++ */ ++#include ++#include ++#include ++#include ++#include ++#include "bnx2x_compat.h" ++#include "bnx2x_init.h" ++#include "bnx2x.h" ++ ++ ++static const struct raw_op init_ops_e1[] = { ++/* #define PRS_COMMON_START 0 */ ++ {OP_WR, PRS_REG_INC_VALUE, 0xf}, ++ {OP_WR, PRS_REG_EVENT_ID_1, 0x45}, ++ {OP_WR, PRS_REG_EVENT_ID_2, 0x84}, ++ {OP_WR, PRS_REG_EVENT_ID_3, 0x6}, ++ {OP_WR, PRS_REG_NO_MATCH_EVENT_ID, 0x4}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_0, 0x0}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_1, 0x12170000}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_2, 0x22170000}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_3, 0x32170000}, ++ {OP_ZR, PRS_REG_CM_HDR_TYPE_4, 0x5}, ++ {OP_WR, PRS_REG_CM_HDR_LOOPBACK_TYPE_1, 0x12150000}, ++ {OP_WR, PRS_REG_CM_HDR_LOOPBACK_TYPE_2, 0x22150000}, ++ {OP_WR, PRS_REG_CM_HDR_LOOPBACK_TYPE_3, 0x32150000}, ++ {OP_ZR, PRS_REG_CM_HDR_LOOPBACK_TYPE_4, 0x4}, ++ {OP_WR, PRS_REG_CM_NO_MATCH_HDR, 0x2100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_0, 0x100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_1, 0x10100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_2, 0x20100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_3, 0x30100000}, ++ {OP_ZR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_4, 0x4}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_0, 0x100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_1, 0x12140000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_2, 0x22140000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_3, 0x32140000}, ++ {OP_ZR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_4, 0x4}, ++ {OP_RD, PRS_REG_NUM_OF_PACKETS, 0x0}, ++ {OP_RD, PRS_REG_NUM_OF_CFC_FLUSH_MESSAGES, 0x0}, ++ {OP_RD, PRS_REG_NUM_OF_TRANSPARENT_FLUSH_MESSAGES, 0x0}, ++ {OP_RD, PRS_REG_NUM_OF_DEAD_CYCLES, 0x0}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_0, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_1, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_2, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_3, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_4, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_5, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_6, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_7, 0xff}, ++ {OP_WR, PRS_REG_PURE_REGIONS, 0x3e}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_0, 0x0}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_1, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_2, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_3, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_4, 0x0}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_5, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_6, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_7, 0x3f}, ++/* #define PRS_COMMON_END 1 */ ++/* #define TSDM_COMMON_START 44 */ ++ {OP_WR, TSDM_REG_CFC_RSP_START_ADDR, 0x411}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_START_ADDR, 0x400}, ++ {OP_WR, TSDM_REG_Q_COUNTER_START_ADDR, 0x404}, ++ {OP_WR, TSDM_REG_PCK_END_MSG_START_ADDR, 0x419}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_ZR, TSDM_REG_AGG_INT_EVENT_0, 0x2}, ++ {OP_WR, TSDM_REG_AGG_INT_EVENT_2, 0x34}, ++ {OP_WR, TSDM_REG_AGG_INT_EVENT_3, 0x35}, ++ {OP_ZR, TSDM_REG_AGG_INT_EVENT_4, 0x7c}, ++ {OP_WR, TSDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, TSDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, TSDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, TSDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, TSDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR, TSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1}, ++ {OP_WR_ASIC, TSDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, TSDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, TSDM_REG_TIMER_TICK, 0xa}, ++/* #define TSDM_COMMON_END 45 */ ++/* #define TCM_COMMON_START 66 */ ++ {OP_WR, TCM_REG_XX_MAX_LL_SZ, 0x20}, ++ {OP_WR, TCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, TCM_REG_TQM_TCM_HDR_P, 0x2150020}, ++ {OP_WR, TCM_REG_TQM_TCM_HDR_S, 0x2150020}, ++ {OP_WR, TCM_REG_TM_TCM_HDR, 0x30}, ++ {OP_WR, TCM_REG_ERR_TCM_HDR, 0x8100000}, ++ {OP_WR, TCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, TCM_REG_EXPR_EVNT_ID, 0x30}, ++ {OP_WR, TCM_REG_STOP_EVNT_ID, 0x31}, ++ {OP_WR, TCM_REG_STORM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_PRS_WEIGHT, 0x5}, ++ {OP_WR, TCM_REG_PBF_WEIGHT, 0x6}, ++ {OP_WR, TCM_REG_USEM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_CSEM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_CP_WEIGHT, 0x0}, ++ {OP_WR, TCM_REG_TSDM_WEIGHT, 0x5}, ++ {OP_WR, TCM_REG_TQM_P_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_TQM_S_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_TM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_TCM_TQM_USE_Q, 0x1}, ++ {OP_WR, TCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, TCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, TCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, TCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, TCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, TCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, TCM_REG_TQM_INIT_CRD, 0x20}, ++ {OP_WR, TCM_REG_XX_INIT_CRD, 0x13}, ++ {OP_WR, TCM_REG_XX_MSG_NUM, 0x20}, ++ {OP_ZR, TCM_REG_XX_TABLE, 0xa}, ++ {OP_SW, TCM_REG_XX_DESCR_TABLE, 0x200000}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_0, 0x7}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_1, 0x7}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_2, 0x8}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_3, 0x8}, ++ {OP_ZR, TCM_REG_N_SM_CTX_LD_4, 0x4}, ++ {OP_WR, TCM_REG_TCM_REG0_SZ, 0x6}, ++ {OP_WR, TCM_REG_PHYS_QNUM0_0, 0xd}, ++ {OP_WR, TCM_REG_PHYS_QNUM0_1, 0x2d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_0, 0x7}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_1, 0x27}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_0, 0x7}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_1, 0x27}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_0, 0x7}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_1, 0x27}, ++ {OP_WR, TCM_REG_TCM_STORM0_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TCM_STORM1_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TCM_TQM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_STORM_TCM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TQM_TCM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TSDM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TM_TCM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_PRS_IFEN, 0x1}, ++ {OP_WR, TCM_REG_PBF_IFEN, 0x1}, ++ {OP_WR, TCM_REG_USEM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CSEM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TCM_CFC_IFEN, 0x1}, ++/* #define TCM_COMMON_END 67 */ ++/* #define BRB1_COMMON_START 88 */ ++ {OP_SW, BRB1_REG_LL_RAM, 0x2000020}, ++ {OP_WR, BRB1_REG_SOFT_RESET, 0x1}, ++ {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_4, 0x0}, ++ {OP_SW, BRB1_REG_FREE_LIST_PRS_CRDT, 0x30220}, ++ {OP_WR, BRB1_REG_SOFT_RESET, 0x0}, ++/* #define BRB1_COMMON_END 89 */ ++/* #define BRB1_PORT0_START 90 */ ++ {OP_WR, BRB1_REG_PAUSE_LOW_THRESHOLD_0, 0xb8}, ++ {OP_WR, BRB1_REG_PAUSE_HIGH_THRESHOLD_0, 0x114}, ++ {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_0, 0x0}, ++ {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_0, 0x0}, ++/* #define BRB1_PORT0_END 91 */ ++/* #define BRB1_PORT1_START 92 */ ++ {OP_WR, BRB1_REG_PAUSE_LOW_THRESHOLD_1, 0xb8}, ++ {OP_WR, BRB1_REG_PAUSE_HIGH_THRESHOLD_1, 0x114}, ++ {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_1, 0x0}, ++ {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_1, 0x0}, ++/* #define BRB1_PORT1_END 93 */ ++/* #define TSEM_COMMON_START 110 */ ++ {OP_ZP, TSEM_REG_INT_TABLE, 0x960000}, ++ {OP_WR_64, TSEM_REG_INT_TABLE + 0x360, 0x140223}, ++ {OP_ZP, TSEM_REG_PRAM, 0x34b80000}, ++ {OP_ZP, TSEM_REG_PRAM + 0x8000, 0x34e90d2f}, ++ {OP_ZP, TSEM_REG_PRAM + 0x10000, 0x9dd1a6a}, ++ {OP_WR_64, TSEM_REG_PRAM + 0x11400, 0x5d800225}, ++ {OP_RD, TSEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, TSEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, TSEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, TSEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, TSEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, TSEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, TSEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, TSEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, TSEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, TSEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, TSEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, TSEM_REG_THREADS_LIST, 0xff}, ++ {OP_ZR, TSEM_REG_PASSIVE_BUFFER, 0x400}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18000, 0x34}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18040, 0x18}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18080, 0xc}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x180c0, 0x20}, ++ {OP_WR_ASIC, TSEM_REG_FAST_MEMORY + 0x18300, 0x7a120}, ++ {OP_WR_EMUL, TSEM_REG_FAST_MEMORY + 0x18300, 0x138}, ++ {OP_WR_FPGA, TSEM_REG_FAST_MEMORY + 0x18300, 0x1388}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2000, 0xb2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x23c8, 0x181}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x23c8 + 0x604, 0x10227}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1020, 0xc8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1000, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1e38, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1e30, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x800, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x808, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x810, 0x4}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x1fb0, 0x50228}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4cb0, 0x8022d}, ++/* #define TSEM_COMMON_END 111 */ ++/* #define TSEM_PORT0_START 112 */ ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x22c8, 0x20}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x4000, 0x124}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x4920, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1400, 0xa}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1450, 0x6}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1500, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x1500 + 0x8, 0x50235}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1500 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1580, 0x14}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x9c0, 0x48}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x800, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x820, 0xe}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x1fb0, 0x2023a}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2c28, 0x2}, ++/* #define TSEM_PORT0_END 113 */ ++/* #define TSEM_PORT1_START 114 */ ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2348, 0x20}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x4490, 0x124}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x4924, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1428, 0xa}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1468, 0x6}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1540, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x1540 + 0x8, 0x5023c}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1540 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x15d0, 0x14}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xae0, 0x48}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x808, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x858, 0xe}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x1fb8, 0x20241}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2c30, 0x2}, ++/* #define TSEM_PORT1_END 115 */ ++/* #define MISC_COMMON_START 220 */ ++ {OP_WR, MISC_REG_GRC_TIMEOUT_EN, 0x1}, ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_1, 0x71d2911}, ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_2, 0x0}, ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_3, 0x9c0424}, ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_4, 0x0}, ++ {OP_WR, MISC_REG_LCPLL_CTRL_1, 0x209}, ++ {OP_WR, MISC_REG_SPIO, 0xff000000}, ++/* #define MISC_COMMON_END 221 */ ++/* #define NIG_COMMON_START 264 */ ++ {OP_WR, NIG_REG_PBF_LB_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_PRS_REQ_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_EGRESS_DEBUG_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_BRB_LB_OUT_EN, 0x1}, ++ {OP_WR, NIG_REG_PRS_EOP_OUT_EN, 0x1}, ++/* #define NIG_COMMON_END 265 */ ++/* #define NIG_PORT0_START 266 */ ++ {OP_WR, NIG_REG_LLH0_CM_HEADER, 0x300000}, ++ {OP_WR, NIG_REG_LLH0_EVENT_ID, 0x28}, ++ {OP_WR, NIG_REG_LLH0_ERROR_MASK, 0x0}, ++ {OP_WR, NIG_REG_LLH0_XCM_MASK, 0x4}, ++ {OP_WR, NIG_REG_LLH0_BRB1_NOT_MCP, 0x1}, ++ {OP_WR, NIG_REG_STATUS_INTERRUPT_PORT0, 0x0}, ++ {OP_WR, NIG_REG_LLH0_XCM_INIT_CREDIT, 0x30}, ++ {OP_WR, NIG_REG_BRB0_PAUSE_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_EGRESS_PBF0_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_BRB0_OUT_EN, 0x1}, ++ {OP_WR, NIG_REG_XCM0_OUT_EN, 0x1}, ++/* #define NIG_PORT0_END 267 */ ++/* #define NIG_PORT1_START 268 */ ++ {OP_WR, NIG_REG_LLH1_CM_HEADER, 0x300000}, ++ {OP_WR, NIG_REG_LLH1_EVENT_ID, 0x28}, ++ {OP_WR, NIG_REG_LLH1_ERROR_MASK, 0x0}, ++ {OP_WR, NIG_REG_LLH1_XCM_MASK, 0x4}, ++ {OP_WR, NIG_REG_LLH1_BRB1_NOT_MCP, 0x1}, ++ {OP_WR, NIG_REG_STATUS_INTERRUPT_PORT1, 0x0}, ++ {OP_WR, NIG_REG_LLH1_XCM_INIT_CREDIT, 0x30}, ++ {OP_WR, NIG_REG_BRB1_PAUSE_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_EGRESS_PBF1_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_BRB1_OUT_EN, 0x1}, ++ {OP_WR, NIG_REG_XCM1_OUT_EN, 0x1}, ++/* #define NIG_PORT1_END 269 */ ++/* #define UPB_COMMON_START 308 */ ++ {OP_WR, GRCBASE_UPB + PB_REG_CONTROL, 0x20}, ++/* #define UPB_COMMON_END 309 */ ++/* #define CSDM_COMMON_START 330 */ ++ {OP_WR, CSDM_REG_CFC_RSP_START_ADDR, 0xa11}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_START_ADDR, 0xa00}, ++ {OP_WR, CSDM_REG_Q_COUNTER_START_ADDR, 0xa04}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_ZR, CSDM_REG_AGG_INT_EVENT_0, 0x2}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_2, 0x34}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_3, 0x35}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_4, 0x20}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_5, 0x21}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_6, 0x22}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_7, 0x23}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_8, 0x24}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_9, 0x25}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_10, 0x26}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_11, 0x27}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_12, 0x28}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_13, 0x29}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_14, 0x2a}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_15, 0x2b}, ++ {OP_ZR, CSDM_REG_AGG_INT_EVENT_16, 0x56}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_6, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_7, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_8, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_9, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_10, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_11, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_12, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_13, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_14, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_15, 0x1}, ++ {OP_ZR, CSDM_REG_AGG_INT_MODE_16, 0x10}, ++ {OP_WR, CSDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, CSDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, CSDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, CSDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, CSDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR, CSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1}, ++ {OP_WR_ASIC, CSDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, CSDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, CSDM_REG_TIMER_TICK, 0xa}, ++/* #define CSDM_COMMON_END 331 */ ++/* #define USDM_COMMON_START 352 */ ++ {OP_WR, USDM_REG_CFC_RSP_START_ADDR, 0x365}, ++ {OP_WR, USDM_REG_CMP_COUNTER_START_ADDR, 0x354}, ++ {OP_WR, USDM_REG_Q_COUNTER_START_ADDR, 0x358}, ++ {OP_WR, USDM_REG_PCK_END_MSG_START_ADDR, 0x375}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_WR, USDM_REG_AGG_INT_EVENT_0, 0x46}, ++ {OP_WR, USDM_REG_AGG_INT_EVENT_1, 0x5}, ++ {OP_ZR, USDM_REG_AGG_INT_EVENT_2, 0x5e}, ++ {OP_WR, USDM_REG_AGG_INT_MODE_0, 0x1}, ++ {OP_ZR, USDM_REG_AGG_INT_MODE_1, 0x1f}, ++ {OP_WR, USDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, USDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, USDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, USDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, USDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q2_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR, USDM_REG_INIT_CREDIT_PXP_CTRL, 0x1}, ++ {OP_WR_ASIC, USDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, USDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, USDM_REG_TIMER_TICK, 0xa}, ++/* #define USDM_COMMON_END 353 */ ++/* #define CCM_COMMON_START 374 */ ++ {OP_WR, CCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, CCM_REG_CQM_CCM_HDR_P, 0x2150020}, ++ {OP_WR, CCM_REG_CQM_CCM_HDR_S, 0x2150020}, ++ {OP_WR, CCM_REG_ERR_CCM_HDR, 0x8100000}, ++ {OP_WR, CCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, CCM_REG_STORM_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_TSEM_WEIGHT, 0x0}, ++ {OP_WR, CCM_REG_XSEM_WEIGHT, 0x5}, ++ {OP_WR, CCM_REG_USEM_WEIGHT, 0x5}, ++ {OP_ZR, CCM_REG_PBF_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_CSDM_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_CQM_P_WEIGHT, 0x3}, ++ {OP_WR, CCM_REG_CQM_S_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_CCM_CQM_USE_Q, 0x1}, ++ {OP_WR, CCM_REG_CNT_AUX1_Q, 0x2}, ++ {OP_WR, CCM_REG_CNT_AUX2_Q, 0x2}, ++ {OP_WR, CCM_REG_INV_DONE_Q, 0x1}, ++ {OP_WR, CCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, CCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, CCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, CCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, CCM_REG_CQM_INIT_CRD, 0x20}, ++ {OP_WR, CCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, CCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, CCM_REG_XX_INIT_CRD, 0x3}, ++ {OP_WR, CCM_REG_XX_MSG_NUM, 0x18}, ++ {OP_ZR, CCM_REG_XX_TABLE, 0x12}, ++ {OP_SW, CCM_REG_XX_DESCR_TABLE, 0x240243}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_0, 0x1}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_1, 0x2}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_2, 0x8}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_3, 0x8}, ++ {OP_ZR, CCM_REG_N_SM_CTX_LD_4, 0x4}, ++ {OP_WR, CCM_REG_CCM_REG0_SZ, 0x4}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_0, 0x9}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_1, 0x29}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_0, 0xa}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_1, 0x2a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_0, 0x7}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_1, 0x27}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_0, 0x7}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_1, 0x27}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_0, 0xc}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_1, 0x2c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_0, 0xc}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_1, 0x2c}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_0, 0xc}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_1, 0x2c}, ++ {OP_WR, CCM_REG_CCM_STORM0_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CCM_STORM1_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CCM_CQM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_STORM_CCM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CQM_CCM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CSDM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_TSEM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_XSEM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_USEM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_PBF_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CCM_CFC_IFEN, 0x1}, ++/* #define CCM_COMMON_END 375 */ ++/* #define UCM_COMMON_START 396 */ ++ {OP_WR, UCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, UCM_REG_UQM_UCM_HDR_P, 0x2150020}, ++ {OP_WR, UCM_REG_UQM_UCM_HDR_S, 0x2150020}, ++ {OP_WR, UCM_REG_TM_UCM_HDR, 0x30}, ++ {OP_WR, UCM_REG_ERR_UCM_HDR, 0x8100000}, ++ {OP_WR, UCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, UCM_REG_EXPR_EVNT_ID, 0x30}, ++ {OP_WR, UCM_REG_STOP_EVNT_ID, 0x31}, ++ {OP_WR, UCM_REG_STORM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_TSEM_WEIGHT, 0x4}, ++ {OP_WR, UCM_REG_CSEM_WEIGHT, 0x0}, ++ {OP_WR, UCM_REG_XSEM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_DORQ_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_CP_WEIGHT, 0x0}, ++ {OP_WR, UCM_REG_USDM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_UQM_P_WEIGHT, 0x7}, ++ {OP_WR, UCM_REG_UQM_S_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_TM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_UCM_UQM_USE_Q, 0x1}, ++ {OP_WR, UCM_REG_INV_CFLG_Q, 0x1}, ++ {OP_WR, UCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, UCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, UCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, UCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, UCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, UCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, UCM_REG_TM_INIT_CRD, 0x4}, ++ {OP_WR, UCM_REG_UQM_INIT_CRD, 0x20}, ++ {OP_WR, UCM_REG_XX_INIT_CRD, 0xe}, ++ {OP_WR, UCM_REG_XX_MSG_NUM, 0x1b}, ++ {OP_ZR, UCM_REG_XX_TABLE, 0x12}, ++ {OP_SW, UCM_REG_XX_DESCR_TABLE, 0x1b0267}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_0, 0xc}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_1, 0x7}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_2, 0xf}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_3, 0x10}, ++ {OP_ZR, UCM_REG_N_SM_CTX_LD_4, 0x4}, ++ {OP_WR, UCM_REG_UCM_REG0_SZ, 0x3}, ++ {OP_WR, UCM_REG_PHYS_QNUM0_0, 0xf}, ++ {OP_WR, UCM_REG_PHYS_QNUM0_1, 0x2f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_0, 0xe}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_1, 0x2e}, ++ {OP_WR, UCM_REG_UCM_STORM0_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_STORM1_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_UQM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_STORM_UCM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UQM_UCM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_USDM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_TM_UCM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_TM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_TSEM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CSEM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_XSEM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_DORQ_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_CFC_IFEN, 0x1}, ++/* #define UCM_COMMON_END 397 */ ++/* #define USEM_COMMON_START 418 */ ++ {OP_ZP, USEM_REG_INT_TABLE, 0xc90000}, ++ {OP_WR_64, USEM_REG_INT_TABLE + 0x368, 0x130282}, ++ {OP_ZP, USEM_REG_PRAM, 0x34120000}, ++ {OP_ZP, USEM_REG_PRAM + 0x8000, 0x37b70d05}, ++ {OP_ZP, USEM_REG_PRAM + 0x10000, 0x2e7d1af3}, ++ {OP_WR_64, USEM_REG_PRAM + 0x16f40, 0x52180284}, ++ {OP_RD, USEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, USEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, USEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, USEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, USEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, USEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, USEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, USEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, USEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, USEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, USEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, USEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, USEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, USEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, USEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, USEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, USEM_REG_THREADS_LIST, 0xffff}, ++ {OP_ZR, USEM_REG_PASSIVE_BUFFER, 0x800}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18000, 0x1a}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18040, 0x4e}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18080, 0x10}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x180c0, 0x20}, ++ {OP_WR_ASIC, USEM_REG_FAST_MEMORY + 0x18300, 0x7a120}, ++ {OP_WR_EMUL, USEM_REG_FAST_MEMORY + 0x18300, 0x138}, ++ {OP_WR_FPGA, USEM_REG_FAST_MEMORY + 0x18300, 0x1388}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_WR_ASIC, USEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500}, ++ {OP_WR_EMUL, USEM_REG_FAST_MEMORY + 0x18380, 0x4c4b4}, ++ {OP_WR_FPGA, USEM_REG_FAST_MEMORY + 0x18380, 0x4c4b40}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x1aa0, 0xc2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x1020, 0xc8}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x1000, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x1400, 0x40}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5098, 0x4}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5080, 0x5}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x5080 + 0x14, 0x10286}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5000, 0x20}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x2830, 0x20287}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x10800, 0x1000000}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x10c00, 0x100289}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x10800, 0x0}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x10c40, 0x100299}, ++/* #define USEM_COMMON_END 419 */ ++/* #define USEM_PORT0_START 420 */ ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x1500, 0xb4}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x1dc8, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4000, 0xd8}, ++/* #define USEM_PORT0_END 421 */ ++/* #define USEM_PORT1_START 422 */ ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x17d0, 0xb4}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x1dcc, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4360, 0xd8}, ++/* #define USEM_PORT1_END 423 */ ++/* #define CSEM_COMMON_START 440 */ ++ {OP_ZP, CSEM_REG_INT_TABLE, 0x920000}, ++ {OP_WR_64, CSEM_REG_INT_TABLE + 0x380, 0x1002a9}, ++ {OP_ZP, CSEM_REG_PRAM, 0x2ccf0000}, ++ {OP_ZP, CSEM_REG_PRAM + 0x8000, 0x2ae50b34}, ++ {OP_WR_64, CSEM_REG_PRAM + 0xdc60, 0x62da02ab}, ++ {OP_RD, CSEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, CSEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, CSEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, CSEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, CSEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, CSEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, CSEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, CSEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, CSEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, CSEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, CSEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, CSEM_REG_THREADS_LIST, 0xffff}, ++ {OP_ZR, CSEM_REG_PASSIVE_BUFFER, 0x800}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18000, 0x10}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18040, 0x12}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18080, 0x30}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x180c0, 0xe}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x5000, 0x42}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1020, 0xc8}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1000, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2000, 0xc0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x25c0, 0x240}, ++ {OP_SW, CSEM_REG_FAST_MEMORY + 0x2ec8, 0x802ad}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x10800, 0x13fffff}, ++ {OP_SW, CSEM_REG_FAST_MEMORY + 0x10c00, 0x1002b5}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x10800, 0x0}, ++ {OP_SW, CSEM_REG_FAST_MEMORY + 0x10c40, 0x1002c5}, ++/* #define CSEM_COMMON_END 441 */ ++/* #define CSEM_PORT0_START 442 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3040, 0xa0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3540, 0x10}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x36c0, 0x30}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x4000, 0x200}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x35c0, 0x20}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3840, 0x30}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3000, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x5118, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2300, 0xe}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2410, 0x30}, ++/* #define CSEM_PORT0_END 443 */ ++/* #define CSEM_PORT1_START 444 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x32c0, 0xa0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3580, 0x10}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3780, 0x30}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x4800, 0x200}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3640, 0x20}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3900, 0x30}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3020, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x511c, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2338, 0xe}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x24d0, 0x30}, ++/* #define CSEM_PORT1_END 445 */ ++/* #define XPB_COMMON_START 462 */ ++ {OP_WR, GRCBASE_XPB + PB_REG_CONTROL, 0x28}, ++/* #define XPB_COMMON_END 463 */ ++/* #define DQ_COMMON_START 484 */ ++ {OP_WR, DORQ_REG_MODE_ACT, 0x2}, ++ {OP_WR, DORQ_REG_NORM_CID_OFST, 0x3}, ++ {OP_WR, DORQ_REG_OUTST_REQ, 0x4}, ++ {OP_WR, DORQ_REG_DPM_CID_ADDR, 0x8}, ++ {OP_WR, DORQ_REG_RSP_INIT_CRD, 0x2}, ++ {OP_WR, DORQ_REG_NORM_CMHEAD_TX, 0x90}, ++ {OP_WR, DORQ_REG_CMHEAD_RX, 0x90}, ++ {OP_WR, DORQ_REG_SHRT_CMHEAD, 0x800090}, ++ {OP_WR, DORQ_REG_ERR_CMHEAD, 0x8140000}, ++ {OP_WR, DORQ_REG_AGG_CMD0, 0x8a}, ++ {OP_WR, DORQ_REG_AGG_CMD1, 0x80}, ++ {OP_WR, DORQ_REG_AGG_CMD2, 0x81}, ++ {OP_WR, DORQ_REG_AGG_CMD3, 0x80}, ++ {OP_WR, DORQ_REG_SHRT_ACT_CNT, 0x6}, ++ {OP_WR, DORQ_REG_DQ_FIFO_FULL_TH, 0x7d0}, ++ {OP_WR, DORQ_REG_DQ_FIFO_AFULL_TH, 0x76c}, ++ {OP_WR, DORQ_REG_REGN, 0x7c1004}, ++ {OP_WR, DORQ_REG_IF_EN, 0xf}, ++/* #define DQ_COMMON_END 485 */ ++/* #define TIMERS_COMMON_START 506 */ ++ {OP_ZR, TM_REG_CLIN_PRIOR0_CLIENT, 0x2}, ++ {OP_WR, TM_REG_LIN_SETCLR_FIFO_ALFULL_THR, 0x1c}, ++ {OP_WR, TM_REG_CFC_AC_CRDCNT_VAL, 0x1}, ++ {OP_WR, TM_REG_CFC_CLD_CRDCNT_VAL, 0x1}, ++ {OP_WR, TM_REG_CLOUT_CRDCNT0_VAL, 0x1}, ++ {OP_WR, TM_REG_CLOUT_CRDCNT1_VAL, 0x1}, ++ {OP_WR, TM_REG_CLOUT_CRDCNT2_VAL, 0x1}, ++ {OP_WR, TM_REG_EXP_CRDCNT_VAL, 0x1}, ++ {OP_WR, TM_REG_PCIARB_CRDCNT_VAL, 0x1}, ++ {OP_WR_ASIC, TM_REG_TIMER_TICK_SIZE, 0x3d090}, ++ {OP_WR_EMUL, TM_REG_TIMER_TICK_SIZE, 0x9c}, ++ {OP_WR_FPGA, TM_REG_TIMER_TICK_SIZE, 0x9c4}, ++ {OP_WR, TM_REG_CL0_CONT_REGION, 0x8}, ++ {OP_WR, TM_REG_CL1_CONT_REGION, 0xc}, ++ {OP_WR, TM_REG_CL2_CONT_REGION, 0x10}, ++ {OP_WR, TM_REG_TM_CONTEXT_REGION, 0x20}, ++ {OP_WR, TM_REG_EN_TIMERS, 0x1}, ++ {OP_WR, TM_REG_EN_REAL_TIME_CNT, 0x1}, ++ {OP_WR, TM_REG_EN_CL0_INPUT, 0x1}, ++ {OP_WR, TM_REG_EN_CL1_INPUT, 0x1}, ++ {OP_WR, TM_REG_EN_CL2_INPUT, 0x1}, ++/* #define TIMERS_COMMON_END 507 */ ++/* #define TIMERS_PORT0_START 508 */ ++ {OP_WR, TM_REG_LIN0_LOGIC_ADDR, 0x0}, ++ {OP_WR, TM_REG_LIN0_PHY_ADDR_VALID, 0x0}, ++ {OP_ZR, TM_REG_LIN0_PHY_ADDR, 0x2}, ++/* #define TIMERS_PORT0_END 509 */ ++/* #define TIMERS_PORT1_START 510 */ ++ {OP_WR, TM_REG_LIN1_LOGIC_ADDR, 0x0}, ++ {OP_WR, TM_REG_LIN1_PHY_ADDR_VALID, 0x0}, ++ {OP_ZR, TM_REG_LIN1_PHY_ADDR, 0x2}, ++/* #define TIMERS_PORT1_END 511 */ ++/* #define XSDM_COMMON_START 528 */ ++ {OP_WR, XSDM_REG_CFC_RSP_START_ADDR, 0x614}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_START_ADDR, 0x600}, ++ {OP_WR, XSDM_REG_Q_COUNTER_START_ADDR, 0x604}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_0, 0x20}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_1, 0x20}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_2, 0x34}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_3, 0x35}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_4, 0x23}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_5, 0x24}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_6, 0x25}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_7, 0x26}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_8, 0x27}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_9, 0x29}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_10, 0x2a}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_11, 0x2b}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_12, 0x2c}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_13, 0x2d}, ++ {OP_ZR, XSDM_REG_AGG_INT_EVENT_14, 0x52}, ++ {OP_WR, XSDM_REG_AGG_INT_MODE_0, 0x1}, ++ {OP_ZR, XSDM_REG_AGG_INT_MODE_1, 0x1f}, ++ {OP_WR, XSDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, XSDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, XSDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, XSDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, XSDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR, XSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1}, ++ {OP_WR_ASIC, XSDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, XSDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, XSDM_REG_TIMER_TICK, 0xa}, ++/* #define XSDM_COMMON_END 529 */ ++/* #define QM_COMMON_START 550 */ ++ {OP_WR, QM_REG_ACTCTRINITVAL_0, 0x6}, ++ {OP_WR, QM_REG_ACTCTRINITVAL_1, 0x5}, ++ {OP_WR, QM_REG_ACTCTRINITVAL_2, 0xa}, ++ {OP_WR, QM_REG_ACTCTRINITVAL_3, 0x5}, ++ {OP_WR, QM_REG_PCIREQAT, 0x2}, ++ {OP_WR, QM_REG_CMINITCRD_0, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_1, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_2, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_3, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_4, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_5, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_6, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_7, 0x4}, ++ {OP_WR, QM_REG_OUTLDREQ, 0x4}, ++ {OP_WR, QM_REG_CTXREG_0, 0x7c}, ++ {OP_WR, QM_REG_CTXREG_1, 0x3d}, ++ {OP_WR, QM_REG_CTXREG_2, 0x3f}, ++ {OP_WR, QM_REG_CTXREG_3, 0x9c}, ++ {OP_WR, QM_REG_ENSEC, 0x7}, ++ {OP_ZR, QM_REG_QVOQIDX_0, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_0, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_5, 0x0}, ++ {OP_WR, QM_REG_QVOQIDX_6, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_7, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_8, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_1, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_9, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_10, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_11, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_12, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_2, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_13, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_14, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_15, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_16, 0x0}, ++ {OP_WR, QM_REG_WRRWEIGHTS_3, 0x1010120}, ++ {OP_ZR, QM_REG_QVOQIDX_17, 0x4}, ++ {OP_WR, QM_REG_WRRWEIGHTS_4, 0x1010101}, ++ {OP_ZR, QM_REG_QVOQIDX_21, 0x4}, ++ {OP_WR, QM_REG_WRRWEIGHTS_5, 0x1010101}, ++ {OP_ZR, QM_REG_QVOQIDX_25, 0x4}, ++ {OP_WR, QM_REG_WRRWEIGHTS_6, 0x1010101}, ++ {OP_ZR, QM_REG_QVOQIDX_29, 0x3}, ++ {OP_WR, QM_REG_QVOQIDX_32, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_7, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_33, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_34, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_35, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_36, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_8, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_37, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_38, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_39, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_40, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_9, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_41, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_42, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_43, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_44, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_10, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_45, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_46, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_47, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_48, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_11, 0x1010120}, ++ {OP_WR, QM_REG_QVOQIDX_49, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_50, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_51, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_52, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_12, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_53, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_54, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_55, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_56, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_13, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_57, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_58, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_59, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_60, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_14, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_61, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_62, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_63, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_15, 0x1010101}, ++ {OP_WR, QM_REG_VOQQMASK_0_LSB, 0xffff003f}, ++ {OP_ZR, QM_REG_VOQQMASK_0_MSB, 0x2}, ++ {OP_WR, QM_REG_VOQQMASK_1_MSB, 0xffff003f}, ++ {OP_WR, QM_REG_VOQQMASK_2_LSB, 0x100}, ++ {OP_WR, QM_REG_VOQQMASK_2_MSB, 0x100}, ++ {OP_ZR, QM_REG_VOQQMASK_3_LSB, 0x2}, ++ {OP_WR, QM_REG_VOQQMASK_4_LSB, 0xc0}, ++ {OP_WR, QM_REG_VOQQMASK_4_MSB, 0xc0}, ++ {OP_WR, QM_REG_VOQQMASK_5_LSB, 0x1e00}, ++ {OP_WR, QM_REG_VOQQMASK_5_MSB, 0x1e00}, ++ {OP_WR, QM_REG_VOQQMASK_6_LSB, 0x4000}, ++ {OP_WR, QM_REG_VOQQMASK_6_MSB, 0x4000}, ++ {OP_WR, QM_REG_VOQQMASK_7_LSB, 0x8000}, ++ {OP_WR, QM_REG_VOQQMASK_7_MSB, 0x8000}, ++ {OP_WR, QM_REG_VOQQMASK_8_LSB, 0x2000}, ++ {OP_WR, QM_REG_VOQQMASK_8_MSB, 0x2000}, ++ {OP_ZR, QM_REG_VOQQMASK_9_LSB, 0x7}, ++ {OP_WR, QM_REG_VOQPORT_1, 0x1}, ++ {OP_ZR, QM_REG_VOQPORT_2, 0xa}, ++ {OP_WR, QM_REG_CMINTVOQMASK_0, 0xc08}, ++ {OP_WR, QM_REG_CMINTVOQMASK_1, 0x40}, ++ {OP_WR, QM_REG_CMINTVOQMASK_2, 0x100}, ++ {OP_WR, QM_REG_CMINTVOQMASK_3, 0x20}, ++ {OP_WR, QM_REG_CMINTVOQMASK_4, 0x17}, ++ {OP_WR, QM_REG_CMINTVOQMASK_5, 0x80}, ++ {OP_WR, QM_REG_CMINTVOQMASK_6, 0x200}, ++ {OP_WR, QM_REG_CMINTVOQMASK_7, 0x0}, ++ {OP_WR, QM_REG_HWAEMPTYMASK_LSB, 0xffff01ff}, ++ {OP_WR, QM_REG_HWAEMPTYMASK_MSB, 0xffff01ff}, ++ {OP_WR, QM_REG_ENBYPVOQMASK, 0x13}, ++ {OP_WR, QM_REG_VOQCREDITAFULLTHR, 0x13f}, ++ {OP_WR, QM_REG_VOQINITCREDIT_0, 0x140}, ++ {OP_WR, QM_REG_VOQINITCREDIT_1, 0x140}, ++ {OP_ZR, QM_REG_VOQINITCREDIT_2, 0x2}, ++ {OP_WR, QM_REG_VOQINITCREDIT_4, 0xc0}, ++ {OP_ZR, QM_REG_VOQINITCREDIT_5, 0x7}, ++ {OP_WR, QM_REG_TASKCRDCOST_0, 0x48}, ++ {OP_WR, QM_REG_TASKCRDCOST_1, 0x48}, ++ {OP_ZR, QM_REG_TASKCRDCOST_2, 0x2}, ++ {OP_WR, QM_REG_TASKCRDCOST_4, 0x48}, ++ {OP_ZR, QM_REG_TASKCRDCOST_5, 0x7}, ++ {OP_WR, QM_REG_BYTECRDINITVAL, 0x8000}, ++ {OP_WR, QM_REG_BYTECRDCOST, 0x25e4}, ++ {OP_WR, QM_REG_BYTECREDITAFULLTHR, 0x7fff}, ++ {OP_WR, QM_REG_ENBYTECRD_LSB, 0x7}, ++ {OP_WR, QM_REG_ENBYTECRD_MSB, 0x7}, ++ {OP_WR, QM_REG_BYTECRDPORT_LSB, 0x0}, ++ {OP_WR, QM_REG_BYTECRDPORT_MSB, 0xffffffff}, ++ {OP_WR, QM_REG_FUNCNUMSEL_LSB, 0x0}, ++ {OP_WR, QM_REG_FUNCNUMSEL_MSB, 0xffffffff}, ++ {OP_WR, QM_REG_CMINTEN, 0xff}, ++/* #define QM_COMMON_END 551 */ ++/* #define PBF_COMMON_START 572 */ ++ {OP_WR, PBF_REG_INIT, 0x1}, ++ {OP_WR, PBF_REG_INIT_P4, 0x1}, ++ {OP_WR, PBF_REG_MAC_LB_ENABLE, 0x1}, ++ {OP_WR, PBF_REG_IF_ENABLE_REG, 0x7fff}, ++ {OP_WR, PBF_REG_INIT_P4, 0x0}, ++ {OP_WR, PBF_REG_INIT, 0x0}, ++ {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P4, 0x0}, ++/* #define PBF_COMMON_END 573 */ ++/* #define PBF_PORT0_START 574 */ ++ {OP_WR, PBF_REG_INIT_P0, 0x1}, ++ {OP_WR, PBF_REG_MAC_IF0_ENABLE, 0x1}, ++ {OP_WR, PBF_REG_INIT_P0, 0x0}, ++ {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P0, 0x0}, ++/* #define PBF_PORT0_END 575 */ ++/* #define PBF_PORT1_START 576 */ ++ {OP_WR, PBF_REG_INIT_P1, 0x1}, ++ {OP_WR, PBF_REG_MAC_IF1_ENABLE, 0x1}, ++ {OP_WR, PBF_REG_INIT_P1, 0x0}, ++ {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P1, 0x0}, ++/* #define PBF_PORT1_END 577 */ ++/* #define XCM_COMMON_START 594 */ ++ {OP_WR, XCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, XCM_REG_XQM_XCM_HDR_P, 0x3150020}, ++ {OP_WR, XCM_REG_XQM_XCM_HDR_S, 0x3150020}, ++ {OP_WR, XCM_REG_TM_XCM_HDR, 0x1000030}, ++ {OP_WR, XCM_REG_ERR_XCM_HDR, 0x8100000}, ++ {OP_WR, XCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, XCM_REG_EXPR_EVNT_ID, 0x30}, ++ {OP_WR, XCM_REG_STOP_EVNT_ID, 0x31}, ++ {OP_WR, XCM_REG_STORM_WEIGHT, 0x3}, ++ {OP_WR, XCM_REG_TSEM_WEIGHT, 0x6}, ++ {OP_WR, XCM_REG_CSEM_WEIGHT, 0x3}, ++ {OP_WR, XCM_REG_USEM_WEIGHT, 0x3}, ++ {OP_WR, XCM_REG_DORQ_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_PBF_WEIGHT, 0x0}, ++ {OP_WR, XCM_REG_NIG0_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_CP_WEIGHT, 0x0}, ++ {OP_WR, XCM_REG_XSDM_WEIGHT, 0x6}, ++ {OP_WR, XCM_REG_XQM_P_WEIGHT, 0x4}, ++ {OP_WR, XCM_REG_XQM_S_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_TM_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_XCM_XQM_USE_Q, 0x1}, ++ {OP_WR, XCM_REG_XQM_BYP_ACT_UPD, 0x6}, ++ {OP_WR, XCM_REG_UNA_GT_NXT_Q, 0x0}, ++ {OP_WR, XCM_REG_AUX1_Q, 0x2}, ++ {OP_WR, XCM_REG_AUX_CNT_FLG_Q_19, 0x1}, ++ {OP_WR, XCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, XCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, XCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, XCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, XCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, XCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, XCM_REG_TM_INIT_CRD, 0x4}, ++ {OP_WR, XCM_REG_XQM_INIT_CRD, 0x20}, ++ {OP_WR, XCM_REG_XX_INIT_CRD, 0x2}, ++ {OP_WR, XCM_REG_XX_MSG_NUM, 0x1f}, ++ {OP_ZR, XCM_REG_XX_TABLE, 0x12}, ++ {OP_SW, XCM_REG_XX_DESCR_TABLE, 0x1f02d5}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_0, 0xf}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_1, 0x7}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_2, 0xb}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_3, 0xe}, ++ {OP_ZR, XCM_REG_N_SM_CTX_LD_4, 0x4}, ++ {OP_WR, XCM_REG_XCM_REG0_SZ, 0x4}, ++ {OP_WR, XCM_REG_XCM_STORM0_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_STORM1_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_XQM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_STORM_XCM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XQM_XCM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XSDM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_TM_XCM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_TM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_TSEM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CSEM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_USEM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_DORQ_IFEN, 0x1}, ++ {OP_WR, XCM_REG_PBF_IFEN, 0x1}, ++ {OP_WR, XCM_REG_NIG0_IFEN, 0x1}, ++ {OP_WR, XCM_REG_NIG1_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_CFC_IFEN, 0x1}, ++/* #define XCM_COMMON_END 595 */ ++/* #define XCM_PORT0_START 596 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD00, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD10, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff}, ++/* #define XCM_PORT0_END 597 */ ++/* #define XCM_PORT1_START 598 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD01, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD11, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff}, ++/* #define XCM_PORT1_END 599 */ ++/* #define XSEM_COMMON_START 616 */ ++ {OP_ZP, XSEM_REG_INT_TABLE, 0xb40000}, ++ {OP_WR_64, XSEM_REG_INT_TABLE + 0x368, 0x1302f4}, ++ {OP_ZP, XSEM_REG_PRAM, 0x35d70000}, ++ {OP_ZP, XSEM_REG_PRAM + 0x8000, 0x3a590d76}, ++ {OP_ZP, XSEM_REG_PRAM + 0x10000, 0x3b741c0d}, ++ {OP_ZP, XSEM_REG_PRAM + 0x18000, 0x226c2aeb}, ++ {OP_WR_64, XSEM_REG_PRAM + 0x1c6f0, 0x472202f6}, ++ {OP_RD, XSEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, XSEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, XSEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, XSEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, XSEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, XSEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, XSEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, XSEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, XSEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, XSEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, XSEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, XSEM_REG_THREADS_LIST, 0xffff}, ++ {OP_ZR, XSEM_REG_PASSIVE_BUFFER, 0x800}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18000, 0x0}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18040, 0x18}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18080, 0xc}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x180c0, 0x66}, ++ {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18300, 0x7a120}, ++ {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18300, 0x138}, ++ {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18300, 0x1388}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18340, 0x1f4}, ++ {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18340, 0x0}, ++ {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18340, 0x5}, ++ {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18380, 0x4c4b4}, ++ {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500}, ++ {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18380, 0x4c4b40}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3c40, 0x4}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3c40 + 0x10, 0x202f8}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3000, 0x48}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1020, 0xc8}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1000, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3128, 0x8e}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x3368, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3370, 0x202fa}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3a70, 0x402fc}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3d00, 0x20300}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x1500, 0x20302}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1500 + 0x8, 0x100}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x1970, 0x0}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x1978, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x1960, 0x20304}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4ac0, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4b00, 0x4}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x1f48, 0x20306}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c00, 0x100308}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x1000000}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c40, 0x80318}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x2000000}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c60, 0x80320}, ++/* #define XSEM_COMMON_END 617 */ ++/* #define XSEM_PORT0_START 618 */ ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3a80, 0x14}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3b20, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1400, 0xa}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1450, 0x6}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3378, 0xd8}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x3a38, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3c58, 0x20328}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3c68, 0x10032a}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5020, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5030, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5000, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5010, 0x2}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x5040, 0x0}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5048, 0xe}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x50b8, 0x1}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x4ac8, 0x2033a}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4b10, 0x42}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4d20, 0x4}, ++/* #define XSEM_PORT0_END 619 */ ++/* #define XSEM_PORT1_START 620 */ ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3ad0, 0x14}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3bb0, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1428, 0xa}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1468, 0x6}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x36d8, 0xd8}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x3a3c, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3c60, 0x2033c}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3ca8, 0x10033e}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5028, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5038, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5008, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5018, 0x2}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x5044, 0x0}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5080, 0xe}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x50bc, 0x1}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x4ad0, 0x2034e}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4c18, 0x42}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4d30, 0x4}, ++/* #define XSEM_PORT1_END 621 */ ++/* #define CDU_COMMON_START 638 */ ++ {OP_WR, CDU_REG_CDU_CONTROL0, 0x1}, ++ {OP_WR, CDU_REG_CDU_DEBUG, 0x264}, ++ {OP_WR, CDU_REG_CDU_CHK_MASK0, 0x3d000}, ++ {OP_WR, CDU_REG_CDU_CHK_MASK1, 0x3d}, ++ {OP_WB, CDU_REG_L1TT, 0x2000350}, ++ {OP_WB, CDU_REG_MATT, 0x200550}, ++ {OP_ZR, CDU_REG_MATT + 0x80, 0x2}, ++ {OP_WB, CDU_REG_MATT + 0x88, 0x60570}, ++ {OP_ZR, CDU_REG_MATT + 0xa0, 0x18}, ++ {OP_WR, CDU_REG_CDU_DEBUG, 0x0}, ++/* #define CDU_COMMON_END 639 */ ++/* #define DMAE_COMMON_START 660 */ ++ {OP_ZR, DMAE_REG_CMD_MEM, 0xe0}, ++ {OP_WR, DMAE_REG_CRC16C_INIT, 0x0}, ++ {OP_WR, DMAE_REG_CRC16T10_INIT, 0x1}, ++ {OP_WR, DMAE_REG_PXP_REQ_INIT_CRD, 0x1}, ++ {OP_WR, DMAE_REG_PCI_IFEN, 0x1}, ++ {OP_WR, DMAE_REG_GRC_IFEN, 0x1}, ++/* #define DMAE_COMMON_END 661 */ ++/* #define PXP_COMMON_START 682 */ ++ {OP_WB, PXP_REG_HST_INBOUND_INT + 0x400, 0x50576}, ++ {OP_WB, PXP_REG_HST_INBOUND_INT + 0x420, 0x5057b}, ++ {OP_WB, PXP_REG_HST_INBOUND_INT, 0x50580}, ++/* #define PXP_COMMON_END 683 */ ++/* #define CFC_COMMON_START 704 */ ++ {OP_WR, CFC_REG_CONTROL0, 0x10}, ++ {OP_WR, CFC_REG_DISABLE_ON_ERROR, 0x3fff}, ++ {OP_WR, CFC_REG_INTERFACES, 0x280000}, ++ {OP_WR, CFC_REG_LCREQ_WEIGHTS, 0x84924a}, ++ {OP_WR, CFC_REG_INTERFACES, 0x0}, ++/* #define CFC_COMMON_END 705 */ ++/* #define HC_COMMON_START 726 */ ++ {OP_ZR, HC_REG_USTORM_ADDR_FOR_COALESCE, 0x4}, ++/* #define HC_COMMON_END 727 */ ++/* #define HC_PORT0_START 728 */ ++ {OP_WR, HC_REG_CONFIG_0, 0x1080}, ++ {OP_ZR, HC_REG_UC_RAM_ADDR_0, 0x2}, ++ {OP_WR, HC_REG_ATTN_NUM_P0, 0x10}, ++ {OP_WR, HC_REG_LEADING_EDGE_0, 0xffff}, ++ {OP_WR, HC_REG_TRAILING_EDGE_0, 0xffff}, ++ {OP_WR, HC_REG_AGG_INT_0, 0x0}, ++ {OP_WR, HC_REG_ATTN_IDX, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT, 0x2}, ++ {OP_WR, HC_REG_VQID_0, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_0, 0x0}, ++ {OP_ZR, HC_REG_P0_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND, 0x2}, ++ {OP_WR, HC_REG_CONFIG_0, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a}, ++/* #define HC_PORT0_END 729 */ ++/* #define HC_PORT1_START 730 */ ++ {OP_WR, HC_REG_CONFIG_1, 0x1080}, ++ {OP_ZR, HC_REG_UC_RAM_ADDR_1, 0x2}, ++ {OP_WR, HC_REG_ATTN_NUM_P1, 0x10}, ++ {OP_WR, HC_REG_LEADING_EDGE_1, 0xffff}, ++ {OP_WR, HC_REG_TRAILING_EDGE_1, 0xffff}, ++ {OP_WR, HC_REG_AGG_INT_1, 0x0}, ++ {OP_WR, HC_REG_ATTN_IDX + 0x4, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT + 0x8, 0x2}, ++ {OP_WR, HC_REG_VQID_1, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_1, 0x0}, ++ {OP_ZR, HC_REG_P1_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK + 0x4, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND + 0x8, 0x2}, ++ {OP_WR, HC_REG_CONFIG_1, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a}, ++/* #define HC_PORT1_END 731 */ ++/* #define PXP2_COMMON_START 748 */ ++ {OP_WR, PXP2_REG_PGL_CONTROL0, 0xe38340}, ++ {OP_WR, PXP2_REG_PGL_CONTROL1, 0x3c10}, ++ {OP_WR, PXP2_REG_PGL_DEBUG, 0x2}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_0, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_1, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_1, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_0, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_1, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_0, 0xffff3330}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_1, 0xffff3340}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_0, 0xf0003000}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ6, 0x8}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ9, 0x8}, ++ {OP_ZR, PXP2_REG_RD_MAX_BLKS_VQ10, 0x2}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ17, 0x4}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ19, 0x4}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ22, 0x0}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ25, 0x0}, ++ {OP_WR, PXP2_REG_RD_START_INIT, 0x1}, ++ {OP_WR, PXP2_REG_WR_DMAE_TH, 0x3f}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD0, 0x40}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD1, 0x1808}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD2, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD3, 0x803}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD4, 0x40}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD5, 0x3}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD6, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD7, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD8, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD9, 0x10003}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD10, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD11, 0x803}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD12, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD13, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD14, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD15, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD16, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD17, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD18, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD19, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD20, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD22, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD23, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD24, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD25, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD26, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD27, 0x3}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD28, 0x2403}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_ADD29, 0x2f}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_ADD30, 0x9}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND0, 0x19}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB1, 0x184}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB2, 0x183}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB3, 0x306}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND4, 0x19}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND5, 0x6}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB6, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB7, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB8, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB9, 0xc86}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB10, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB11, 0x306}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND12, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND13, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND14, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND15, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND16, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND17, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND18, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND19, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND20, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND22, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND23, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND24, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND25, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND26, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND27, 0x6}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB28, 0x306}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_UBOUND29, 0x13}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_UBOUND30, 0x6}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_L1, 0x1004}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_L2, 0x1004}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_RD, 0x106440}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_WR, 0x106440}, ++ {OP_WR, PXP2_REG_RQ_RBC_DONE, 0x1}, ++/* #define PXP2_COMMON_END 749 */ ++/* #define MISC_AEU_COMMON_START 770 */ ++ {OP_ZR, MISC_REG_AEU_GENERAL_ATTN_0, 0x16}, ++/* #define MISC_AEU_COMMON_END 771 */ ++/* #define MISC_AEU_PORT0_START 772 */ ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0, 0xbf5c0000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_0, 0xfff51fef}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_FUNC_0_OUT_0, 0xffff}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_0, 0x500003e0}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_1, 0xa000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE3_FUNC_0_OUT_1, 0x5}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_2, 0xfe00000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_3, 0x14}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_NIG_0, 0x55540000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_NIG_0, 0x55555555}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_NIG_0, 0x5555}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_NIG_0, 0x0}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_PXP_0, 0x55540000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_PXP_0, 0x55555555}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_PXP_0, 0x5555}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_PXP_0, 0x0}, ++ {OP_WR, MISC_REG_AEU_INVERTER_1_FUNC_0, 0x0}, ++ {OP_ZR, MISC_REG_AEU_INVERTER_2_FUNC_0, 0x3}, ++ {OP_WR, MISC_REG_AEU_MASK_ATTN_FUNC_0, 0x7}, ++/* #define MISC_AEU_PORT0_END 773 */ ++/* #define MISC_AEU_PORT1_START 774 */ ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0, 0xbf5c0000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_0, 0xfff51fef}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_FUNC_1_OUT_0, 0xffff}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_0, 0x500003e0}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_1, 0xa000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE3_FUNC_1_OUT_1, 0x5}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_2, 0xfe00000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_3, 0x14}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_NIG_1, 0x55540000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_NIG_1, 0x55555555}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_NIG_1, 0x5555}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_NIG_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_PXP_1, 0x55540000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_PXP_1, 0x55555555}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_PXP_1, 0x5555}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_PXP_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_INVERTER_1_FUNC_1, 0x0}, ++ {OP_ZR, MISC_REG_AEU_INVERTER_2_FUNC_1, 0x3}, ++ {OP_WR, MISC_REG_AEU_MASK_ATTN_FUNC_1, 0x7}, ++/* #define MISC_AEU_PORT1_END 775 */ ++ ++}; ++ ++static const u16 init_ops_offsets_e1[] = { ++ 0x0000, 0x002e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002e, ++ 0x0050, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0050, 0x008d, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x008d, 0x0092, ++ 0x0092, 0x0096, 0x0096, 0x009a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x009a, 0x00db, 0x00db, 0x00e9, 0x00e9, 0x00f7, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x00f7, 0x00fe, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x00fe, 0x0103, 0x0103, 0x010e, 0x010e, 0x0119, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0119, 0x011a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011a, 0x0152, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0152, 0x0176, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0176, 0x01b5, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x01b5, 0x01f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x01f0, 0x0235, 0x0235, 0x0238, 0x0238, ++ 0x023b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x023b, ++ 0x0276, 0x0276, 0x0280, 0x0280, 0x028a, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x028a, 0x028b, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x028b, 0x029d, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x029d, 0x02b2, 0x02b2, 0x02b5, 0x02b5, 0x02b8, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02b8, 0x02e6, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x02e6, 0x036d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x036d, 0x0374, 0x0374, 0x0378, ++ 0x0378, 0x037c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x037c, 0x03bb, 0x03bb, 0x03c3, 0x03c3, 0x03cb, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x03cb, 0x041f, 0x041f, 0x0431, 0x0431, ++ 0x0443, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0443, ++ 0x044d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x044d, 0x0453, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0453, 0x0456, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0456, 0x045b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x045b, 0x045c, 0x045c, ++ 0x046e, 0x046e, 0x0480, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0480, 0x04ed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04ed, 0x04ee, 0x04ee, 0x0502, ++ 0x0502, 0x0516, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 ++}; ++ ++static const u32 init_data_e1[] = { ++ 0x00010000, 0x000204c0, 0x00030980, 0x00040e40, 0x00051300, 0x000617c0, ++ 0x00071c80, 0x00082140, 0x00092600, 0x000a2ac0, 0x000b2f80, 0x000c3440, ++ 0x000d3900, 0x000e3dc0, 0x000f4280, 0x00104740, 0x00114c00, 0x001250c0, ++ 0x00135580, 0x00145a40, 0x00155f00, 0x001663c0, 0x00176880, 0x00186d40, ++ 0x00197200, 0x001a76c0, 0x001b7b80, 0x001c8040, 0x001d8500, 0x001e89c0, ++ 0x001f8e80, 0x00209340, 0x00002000, 0x00004000, 0x00006000, 0x00008000, ++ 0x0000a000, 0x0000c000, 0x0000e000, 0x00010000, 0x00012000, 0x00014000, ++ 0x00016000, 0x00018000, 0x0001a000, 0x0001c000, 0x0001e000, 0x00020000, ++ 0x00022000, 0x00024000, 0x00026000, 0x00028000, 0x0002a000, 0x0002c000, ++ 0x0002e000, 0x00030000, 0x00032000, 0x00034000, 0x00036000, 0x00038000, ++ 0x0003a000, 0x0003c000, 0x0003e000, 0x00040000, 0x00042000, 0x00044000, ++ 0x00046000, 0x00048000, 0x0004a000, 0x0004c000, 0x0004e000, 0x00050000, ++ 0x00052000, 0x00054000, 0x00056000, 0x00058000, 0x0005a000, 0x0005c000, ++ 0x0005e000, 0x00060000, 0x00062000, 0x00064000, 0x00066000, 0x00068000, ++ 0x0006a000, 0x0006c000, 0x0006e000, 0x00070000, 0x00072000, 0x00074000, ++ 0x00076000, 0x00078000, 0x0007a000, 0x0007c000, 0x0007e000, 0x00080000, ++ 0x00082000, 0x00084000, 0x00086000, 0x00088000, 0x0008a000, 0x0008c000, ++ 0x0008e000, 0x00090000, 0x00092000, 0x00094000, 0x00096000, 0x00098000, ++ 0x0009a000, 0x0009c000, 0x0009e000, 0x000a0000, 0x000a2000, 0x000a4000, ++ 0x000a6000, 0x000a8000, 0x000aa000, 0x000ac000, 0x000ae000, 0x000b0000, ++ 0x000b2000, 0x000b4000, 0x000b6000, 0x000b8000, 0x000ba000, 0x000bc000, ++ 0x000be000, 0x000c0000, 0x000c2000, 0x000c4000, 0x000c6000, 0x000c8000, ++ 0x000ca000, 0x000cc000, 0x000ce000, 0x000d0000, 0x000d2000, 0x000d4000, ++ 0x000d6000, 0x000d8000, 0x000da000, 0x000dc000, 0x000de000, 0x000e0000, ++ 0x000e2000, 0x000e4000, 0x000e6000, 0x000e8000, 0x000ea000, 0x000ec000, ++ 0x000ee000, 0x000f0000, 0x000f2000, 0x000f4000, 0x000f6000, 0x000f8000, ++ 0x000fa000, 0x000fc000, 0x000fe000, 0x00100000, 0x00102000, 0x00104000, ++ 0x00106000, 0x00108000, 0x0010a000, 0x0010c000, 0x0010e000, 0x00110000, ++ 0x00112000, 0x00114000, 0x00116000, 0x00118000, 0x0011a000, 0x0011c000, ++ 0x0011e000, 0x00120000, 0x00122000, 0x00124000, 0x00126000, 0x00128000, ++ 0x0012a000, 0x0012c000, 0x0012e000, 0x00130000, 0x00132000, 0x00134000, ++ 0x00136000, 0x00138000, 0x0013a000, 0x0013c000, 0x0013e000, 0x00140000, ++ 0x00142000, 0x00144000, 0x00146000, 0x00148000, 0x0014a000, 0x0014c000, ++ 0x0014e000, 0x00150000, 0x00152000, 0x00154000, 0x00156000, 0x00158000, ++ 0x0015a000, 0x0015c000, 0x0015e000, 0x00160000, 0x00162000, 0x00164000, ++ 0x00166000, 0x00168000, 0x0016a000, 0x0016c000, 0x0016e000, 0x00170000, ++ 0x00172000, 0x00174000, 0x00176000, 0x00178000, 0x0017a000, 0x0017c000, ++ 0x0017e000, 0x00180000, 0x00182000, 0x00184000, 0x00186000, 0x00188000, ++ 0x0018a000, 0x0018c000, 0x0018e000, 0x00190000, 0x00192000, 0x00194000, ++ 0x00196000, 0x00198000, 0x0019a000, 0x0019c000, 0x0019e000, 0x001a0000, ++ 0x001a2000, 0x001a4000, 0x001a6000, 0x001a8000, 0x001aa000, 0x001ac000, ++ 0x001ae000, 0x001b0000, 0x001b2000, 0x001b4000, 0x001b6000, 0x001b8000, ++ 0x001ba000, 0x001bc000, 0x001be000, 0x001c0000, 0x001c2000, 0x001c4000, ++ 0x001c6000, 0x001c8000, 0x001ca000, 0x001cc000, 0x001ce000, 0x001d0000, ++ 0x001d2000, 0x001d4000, 0x001d6000, 0x001d8000, 0x001da000, 0x001dc000, ++ 0x001de000, 0x001e0000, 0x001e2000, 0x001e4000, 0x001e6000, 0x001e8000, ++ 0x001ea000, 0x001ec000, 0x001ee000, 0x001f0000, 0x001f2000, 0x001f4000, ++ 0x001f6000, 0x001f8000, 0x001fa000, 0x001fc000, 0x001fe000, 0x00200000, ++ 0x00202000, 0x00204000, 0x00206000, 0x00208000, 0x0020a000, 0x0020c000, ++ 0x0020e000, 0x00210000, 0x00212000, 0x00214000, 0x00216000, 0x00218000, ++ 0x0021a000, 0x0021c000, 0x0021e000, 0x00220000, 0x00222000, 0x00224000, ++ 0x00226000, 0x00228000, 0x0022a000, 0x0022c000, 0x0022e000, 0x00230000, ++ 0x00232000, 0x00234000, 0x00236000, 0x00238000, 0x0023a000, 0x0023c000, ++ 0x0023e000, 0x00240000, 0x00242000, 0x00244000, 0x00246000, 0x00248000, ++ 0x0024a000, 0x0024c000, 0x0024e000, 0x00250000, 0x00252000, 0x00254000, ++ 0x00256000, 0x00258000, 0x0025a000, 0x0025c000, 0x0025e000, 0x00260000, ++ 0x00262000, 0x00264000, 0x00266000, 0x00268000, 0x0026a000, 0x0026c000, ++ 0x0026e000, 0x00270000, 0x00272000, 0x00274000, 0x00276000, 0x00278000, ++ 0x0027a000, 0x0027c000, 0x0027e000, 0x00280000, 0x00282000, 0x00284000, ++ 0x00286000, 0x00288000, 0x0028a000, 0x0028c000, 0x0028e000, 0x00290000, ++ 0x00292000, 0x00294000, 0x00296000, 0x00298000, 0x0029a000, 0x0029c000, ++ 0x0029e000, 0x002a0000, 0x002a2000, 0x002a4000, 0x002a6000, 0x002a8000, ++ 0x002aa000, 0x002ac000, 0x002ae000, 0x002b0000, 0x002b2000, 0x002b4000, ++ 0x002b6000, 0x002b8000, 0x002ba000, 0x002bc000, 0x002be000, 0x002c0000, ++ 0x002c2000, 0x002c4000, 0x002c6000, 0x002c8000, 0x002ca000, 0x002cc000, ++ 0x002ce000, 0x002d0000, 0x002d2000, 0x002d4000, 0x002d6000, 0x002d8000, ++ 0x002da000, 0x002dc000, 0x002de000, 0x002e0000, 0x002e2000, 0x002e4000, ++ 0x002e6000, 0x002e8000, 0x002ea000, 0x002ec000, 0x002ee000, 0x002f0000, ++ 0x002f2000, 0x002f4000, 0x002f6000, 0x002f8000, 0x002fa000, 0x002fc000, ++ 0x002fe000, 0x00300000, 0x00302000, 0x00304000, 0x00306000, 0x00308000, ++ 0x0030a000, 0x0030c000, 0x0030e000, 0x00310000, 0x00312000, 0x00314000, ++ 0x00316000, 0x00318000, 0x0031a000, 0x0031c000, 0x0031e000, 0x00320000, ++ 0x00322000, 0x00324000, 0x00326000, 0x00328000, 0x0032a000, 0x0032c000, ++ 0x0032e000, 0x00330000, 0x00332000, 0x00334000, 0x00336000, 0x00338000, ++ 0x0033a000, 0x0033c000, 0x0033e000, 0x00340000, 0x00342000, 0x00344000, ++ 0x00346000, 0x00348000, 0x0034a000, 0x0034c000, 0x0034e000, 0x00350000, ++ 0x00352000, 0x00354000, 0x00356000, 0x00358000, 0x0035a000, 0x0035c000, ++ 0x0035e000, 0x00360000, 0x00362000, 0x00364000, 0x00366000, 0x00368000, ++ 0x0036a000, 0x0036c000, 0x0036e000, 0x00370000, 0x00372000, 0x00374000, ++ 0x00376000, 0x00378000, 0x0037a000, 0x0037c000, 0x0037e000, 0x00380000, ++ 0x00382000, 0x00384000, 0x00386000, 0x00388000, 0x0038a000, 0x0038c000, ++ 0x0038e000, 0x00390000, 0x00392000, 0x00394000, 0x00396000, 0x00398000, ++ 0x0039a000, 0x0039c000, 0x0039e000, 0x003a0000, 0x003a2000, 0x003a4000, ++ 0x003a6000, 0x003a8000, 0x003aa000, 0x003ac000, 0x003ae000, 0x003b0000, ++ 0x003b2000, 0x003b4000, 0x003b6000, 0x003b8000, 0x003ba000, 0x003bc000, ++ 0x003be000, 0x003c0000, 0x003c2000, 0x003c4000, 0x003c6000, 0x003c8000, ++ 0x003ca000, 0x003cc000, 0x003ce000, 0x003d0000, 0x003d2000, 0x003d4000, ++ 0x003d6000, 0x003d8000, 0x003da000, 0x003dc000, 0x003de000, 0x003e0000, ++ 0x003e2000, 0x003e4000, 0x003e6000, 0x003e8000, 0x003ea000, 0x003ec000, ++ 0x003ee000, 0x003f0000, 0x003f2000, 0x003f4000, 0x003f6000, 0x003f8000, ++ 0x003fa000, 0x003fc000, 0x003fe000, 0x003fe001, 0x00000000, 0x000001ff, ++ 0x00000200, 0x00007ff8, 0x00007ff8, 0x0000026f, 0x00001500, 0x00000001, ++ 0x00000003, 0x00bebc20, 0x00000003, 0x00bebc20, 0x00000001, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, ++ 0x00000003, 0x00bebc20, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, ++ 0xffffffff, 0x00000003, 0x00bebc20, 0x00002000, 0x000040c0, 0x00006180, ++ 0x00008240, 0x0000a300, 0x0000c3c0, 0x0000e480, 0x00010540, 0x00012600, ++ 0x000146c0, 0x00016780, 0x00018840, 0x0001a900, 0x0001c9c0, 0x0001ea80, ++ 0x00020b40, 0x00022c00, 0x00024cc0, 0x00026d80, 0x00028e40, 0x0002af00, ++ 0x0002cfc0, 0x0002f080, 0x00031140, 0x00033200, 0x000352c0, 0x00037380, ++ 0x00039440, 0x0003b500, 0x0003d5c0, 0x0003f680, 0x00041740, 0x00043800, ++ 0x000458c0, 0x00047980, 0x00049a40, 0x00008000, 0x00010380, 0x00018700, ++ 0x00020a80, 0x00028e00, 0x00031180, 0x00039500, 0x00041880, 0x00049c00, ++ 0x00051f80, 0x0005a300, 0x00062680, 0x0006aa00, 0x00072d80, 0x0007b100, ++ 0x00083480, 0x0008b800, 0x00093b80, 0x0009bf00, 0x000a4280, 0x000ac600, ++ 0x000b4980, 0x000bcd00, 0x000c5080, 0x000cd400, 0x000d5780, 0x000ddb00, ++ 0x00007ff8, 0x00007ff8, 0x00000174, 0x00001500, 0x00001900, 0x00000000, ++ 0xffffffff, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x00007ff8, 0x00007ff8, 0x00000509, ++ 0x00003500, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x00001000, ++ 0x00002080, 0x00003100, 0x00004180, 0x00005200, 0x00006280, 0x00007300, ++ 0x00008380, 0x00009400, 0x0000a480, 0x0000b500, 0x0000c580, 0x0000d600, ++ 0x0000e680, 0x0000f700, 0x00010780, 0x00011800, 0x00012880, 0x00013900, ++ 0x00014980, 0x00015a00, 0x00016a80, 0x00017b00, 0x00018b80, 0x00019c00, ++ 0x0001ac80, 0x0001bd00, 0x0001cd80, 0x0001de00, 0x0001ee80, 0x0001ff00, ++ 0x00007ff8, 0x00007ff8, 0x00000448, 0x00001500, 0x10000000, 0x000028ad, ++ 0x00000000, 0x00010001, 0x00150005, 0xccccccc1, 0xffffffff, 0xffffffff, ++ 0x7058103c, 0x00000000, 0x00000000, 0x00000001, 0xcccc0201, 0xcccccccc, ++ 0x00000000, 0xffffffff, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x000e01b7, 0x011600d6, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x00100000, 0x00000000, ++ 0x007201bb, 0x012300f3, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x00100000, 0x00000000, 0xfffffff3, 0x318fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x30efffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, ++ 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, ++ 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, ++ 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x31efffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x302fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, ++ 0xfffffff3, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, ++ 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, ++ 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, ++ 0xfffffff7, 0x30efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x304fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x31efffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, ++ 0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff, ++ 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, ++ 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffff97, 0x056fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, ++ 0xfffffff5, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x320fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x310fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, ++ 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, ++ 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, ++ 0xffffff8a, 0x042fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, ++ 0x0010cf3c, 0xcdcdcdcd, 0xffffff97, 0x05cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cc000, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x310fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, ++ 0xfffffff3, 0x300fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x300fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, ++ 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, ++ 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, ++ 0xffffff97, 0x040fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, ++ 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x300fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0001cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0008cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0040cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0002cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0010cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0000cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0004cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0020cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0x000c0000, 0x000700c0, ++ 0x00028130, 0x000b8158, 0x00020210, 0x00010230, 0x000f0240, 0x00010330, ++ 0x00080000, 0x00080080, 0x00028100, 0x000b8128, 0x000201e0, 0x00010200, ++ 0x00070210, 0x00020280, 0x000f0000, 0x000800f0, 0x00028170, 0x000b8198, ++ 0x00020250, 0x00010270, 0x000b8280, 0x00080338, 0x00100000, 0x00080100, ++ 0x00028180, 0x000b81a8, 0x00020260, 0x00018280, 0x000e8298, 0x00080380, ++ 0x00028000, 0x000b8028, 0x000200e0, 0x00010100, 0x00008110, 0x00000118, ++ 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000, 0xcccccccc, ++ 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000, 0xcccccccc, 0xcccccccc, ++ 0xcccccccc, 0xcccccccc, 0x00002000 ++}; ++ ++static const u8 tsem_int_table_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfb, 0x51, ++ 0xcf, 0xc0, 0xf0, 0x03, 0x8a, 0x7b, 0xd8, 0x18, 0x18, 0x36, 0x70, 0x20, ++ 0xf8, 0x43, 0x01, 0x5f, 0x64, 0x62, 0x60, 0xb8, 0x0c, 0xc4, 0x57, 0x81, ++ 0x58, 0x80, 0x99, 0x81, 0x21, 0x98, 0x91, 0x81, 0x21, 0x84, 0x91, 0x78, ++ 0xfd, 0x49, 0xa2, 0x08, 0xf6, 0x2b, 0x21, 0x06, 0x06, 0x31, 0x61, 0x06, ++ 0x86, 0x68, 0x41, 0xa0, 0xb9, 0xc2, 0x08, 0xf1, 0xa3, 0x40, 0x35, 0x56, ++ 0x22, 0x0c, 0x0c, 0x7f, 0xa1, 0x62, 0x8d, 0x40, 0x36, 0x9b, 0x28, 0x75, ++ 0xdc, 0x3f, 0xd0, 0x78, 0x93, 0x14, 0xa6, 0xd8, 0x7a, 0x09, 0x04, 0x7b, ++ 0x33, 0x16, 0x79, 0x64, 0xbc, 0x05, 0x4d, 0x9e, 0x4f, 0x12, 0x95, 0xbf, ++ 0x95, 0x80, 0xfe, 0x81, 0xc6, 0x8f, 0x15, 0x51, 0xf9, 0x62, 0x0a, 0x10, ++ 0x3a, 0x1f, 0x2a, 0xfe, 0x04, 0x4d, 0x5e, 0x1c, 0x2a, 0x7f, 0x19, 0xea, ++ 0xaf, 0xa7, 0x8a, 0xd8, 0xcd, 0xbd, 0x02, 0x95, 0x07, 0x00, 0xc8, 0xe9, ++ 0x67, 0x44, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 tsem_pram_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, ++ 0x0b, 0x78, 0x54, 0xd5, 0xb5, 0xf0, 0x3e, 0x73, 0xce, 0x9c, 0x99, 0x49, ++ 0x66, 0x26, 0x27, 0x21, 0x4f, 0x1e, 0x61, 0x12, 0x20, 0x82, 0x86, 0x38, ++ 0xbc, 0x02, 0x28, 0xbd, 0x4e, 0x08, 0x44, 0xac, 0x5c, 0x0d, 0xf8, 0x42, ++ 0x8b, 0x3a, 0xbc, 0x43, 0xde, 0x50, 0xb4, 0xb4, 0xb5, 0x5f, 0x26, 0x10, ++ 0x22, 0x4f, 0x6f, 0xf0, 0x47, 0x45, 0x2f, 0xd8, 0xe1, 0x61, 0x45, 0x8b, ++ 0x36, 0x60, 0xa4, 0xd1, 0x02, 0x1d, 0x40, 0x10, 0x7b, 0xbd, 0xb7, 0xc1, ++ 0x52, 0x8b, 0xd5, 0xfa, 0x45, 0x54, 0x50, 0x0c, 0x24, 0x72, 0x8b, 0xd2, ++ 0x5b, 0x7b, 0xfd, 0xd7, 0x5a, 0x7b, 0xef, 0xcc, 0x39, 0x93, 0x09, 0x60, ++ 0xff, 0xf6, 0xfe, 0xf7, 0xbf, 0xdf, 0x1f, 0x3f, 0xbf, 0xc3, 0x3e, 0x67, ++ 0x3f, 0xd6, 0x5e, 0xaf, 0xbd, 0xd6, 0xda, 0x6b, 0xef, 0xb1, 0xb3, 0x34, ++ 0xa6, 0x0f, 0x64, 0xec, 0x6b, 0xfc, 0xbb, 0x81, 0xb1, 0x1a, 0x1b, 0x63, ++ 0xf0, 0xaa, 0xfb, 0xf9, 0x94, 0x9d, 0xdd, 0x5f, 0xea, 0x66, 0x2c, 0x6f, ++ 0xa3, 0x6f, 0xb9, 0x3b, 0x15, 0xde, 0xb7, 0xe6, 0xec, 0x4a, 0xf4, 0x31, ++ 0x96, 0xb5, 0x77, 0xbd, 0x32, 0x11, 0xde, 0x67, 0x6d, 0x6a, 0x52, 0x66, ++ 0xe7, 0x47, 0xdb, 0x8f, 0x76, 0xc1, 0xc7, 0x31, 0xf0, 0xbe, 0x75, 0xbd, ++ 0x52, 0x04, 0xef, 0xb3, 0xde, 0x6c, 0x52, 0x66, 0xe1, 0xd3, 0x61, 0x63, ++ 0x6d, 0x50, 0x9f, 0x69, 0xbe, 0x24, 0x86, 0x4f, 0x16, 0x60, 0x2c, 0x9d, ++ 0xb1, 0x41, 0xe3, 0x98, 0xf8, 0x0b, 0xb8, 0xb3, 0x0a, 0x19, 0xeb, 0x8f, ++ 0xff, 0x84, 0x2e, 0xce, 0x1b, 0x89, 0xd0, 0x19, 0x63, 0x39, 0x2b, 0x6c, ++ 0xe1, 0x90, 0x02, 0xef, 0x83, 0x65, 0x53, 0x99, 0x97, 0xb1, 0x6d, 0x00, ++ 0x57, 0x56, 0x0a, 0xb4, 0x53, 0xbf, 0x3a, 0x60, 0xc7, 0xba, 0xb5, 0xda, ++ 0xc9, 0x76, 0x27, 0x63, 0x4e, 0xcd, 0xa9, 0x7d, 0x9d, 0xcb, 0x58, 0xf6, ++ 0x0c, 0x66, 0x63, 0xf0, 0x1c, 0xb8, 0x94, 0xbf, 0xc7, 0xbf, 0xaf, 0xe1, ++ 0xff, 0x9c, 0x90, 0xb5, 0x3c, 0x88, 0x99, 0xca, 0x39, 0x58, 0xf6, 0xa4, ++ 0x9e, 0x82, 0x21, 0x99, 0x87, 0x79, 0xbe, 0x56, 0xe3, 0xc1, 0xdb, 0xa5, ++ 0x97, 0x0e, 0x8f, 0xce, 0x53, 0x3e, 0x37, 0xd5, 0xf9, 0xd2, 0xdd, 0x5a, ++ 0xcf, 0xf7, 0xf2, 0xb9, 0x78, 0xd1, 0x27, 0xfa, 0xc3, 0xd0, 0xfa, 0x69, ++ 0xac, 0x37, 0x98, 0xb1, 0x70, 0x4c, 0xfd, 0xaa, 0x90, 0xae, 0xb1, 0x6b, ++ 0xe1, 0x09, 0x08, 0x68, 0xce, 0xef, 0xd9, 0x7e, 0x2a, 0x2b, 0x2a, 0x44, ++ 0x3a, 0xdc, 0xc7, 0x26, 0xd2, 0xb3, 0x46, 0xf3, 0xdd, 0x85, 0x78, 0xa9, ++ 0x39, 0x6a, 0x67, 0x21, 0x80, 0xbb, 0xa6, 0xf6, 0x54, 0x09, 0x96, 0x59, ++ 0xab, 0xc2, 0x86, 0xe4, 0xf4, 0x6c, 0x3f, 0x9c, 0xd9, 0x89, 0x1e, 0x45, ++ 0x4c, 0xd1, 0x4e, 0xe1, 0x7c, 0xbd, 0xcc, 0x8b, 0xf3, 0x53, 0x2b, 0x7d, ++ 0x4f, 0x94, 0x00, 0x9e, 0xe7, 0x26, 0x06, 0x26, 0x61, 0xbf, 0xeb, 0x12, ++ 0x83, 0xf4, 0x94, 0xef, 0x33, 0x67, 0x4f, 0xc9, 0x0c, 0x02, 0x3c, 0xc5, ++ 0x0b, 0xf2, 0x43, 0x0c, 0xe8, 0x7e, 0x7e, 0xa3, 0xe2, 0x77, 0x40, 0xf3, ++ 0xd3, 0x4a, 0x58, 0xb7, 0x03, 0x3d, 0x2a, 0x6e, 0xaf, 0x2d, 0xb8, 0x11, ++ 0xea, 0xfd, 0x56, 0x0f, 0xde, 0x8c, 0xed, 0x2a, 0x67, 0xb4, 0x1d, 0x21, ++ 0x7a, 0xb0, 0xda, 0x3c, 0xc4, 0x53, 0x9b, 0xce, 0xf9, 0x67, 0x60, 0x6b, ++ 0xd1, 0xa7, 0x1a, 0xd0, 0x0d, 0x58, 0x2c, 0x94, 0x94, 0x82, 0x74, 0x61, ++ 0xec, 0xa4, 0x89, 0x0e, 0xf8, 0x77, 0x72, 0xa8, 0x28, 0xab, 0xbd, 0xe3, ++ 0xf1, 0x72, 0xcf, 0xb9, 0xd8, 0x8f, 0x86, 0xbd, 0x84, 0x69, 0xbe, 0xf2, ++ 0x7d, 0x4e, 0xe8, 0xe8, 0xa0, 0xc1, 0x31, 0xe3, 0xb1, 0x42, 0x82, 0x87, ++ 0x31, 0xe4, 0x71, 0xd6, 0xae, 0xc4, 0xa3, 0xeb, 0xc0, 0x57, 0x8a, 0x8e, ++ 0x6a, 0x05, 0xbd, 0x8f, 0xf7, 0xf7, 0x9f, 0x47, 0x88, 0xcb, 0x21, 0xe0, ++ 0x0e, 0xe9, 0x5b, 0xe5, 0xd1, 0xc3, 0xcb, 0x80, 0xbe, 0xc5, 0x2f, 0xdb, ++ 0x23, 0x37, 0x00, 0x3d, 0xaa, 0xb6, 0x28, 0x61, 0x07, 0x94, 0x6d, 0xfb, ++ 0x5d, 0x01, 0xa4, 0xcf, 0xb9, 0xed, 0x50, 0x06, 0xba, 0x44, 0x3c, 0x3a, ++ 0xd5, 0x3f, 0x6b, 0x38, 0xa9, 0x5c, 0xe3, 0x68, 0x7b, 0xe4, 0x7a, 0x28, ++ 0x77, 0xbd, 0xac, 0xb2, 0xad, 0xd8, 0xed, 0xd0, 0x04, 0x1b, 0xca, 0xdd, ++ 0x29, 0x01, 0x3b, 0x1b, 0x0d, 0x65, 0xc0, 0xc7, 0x7c, 0x17, 0x2f, 0x56, ++ 0x6d, 0x39, 0x70, 0x1f, 0xf6, 0x57, 0xd6, 0xea, 0x60, 0x2e, 0xe8, 0xbf, ++ 0xea, 0x95, 0x05, 0xb7, 0x5c, 0x0f, 0xe5, 0x05, 0xc0, 0x6f, 0x58, 0xa5, ++ 0xea, 0x99, 0x7a, 0xbd, 0x2f, 0x94, 0x17, 0x86, 0x95, 0x66, 0x2c, 0x77, ++ 0x4e, 0x64, 0xc4, 0x1f, 0xa1, 0x14, 0x3d, 0xfc, 0x0c, 0x8c, 0xd7, 0xe9, ++ 0x6d, 0x4b, 0xbf, 0x03, 0xe4, 0xe5, 0x4c, 0x9d, 0x93, 0xf9, 0x00, 0x94, ++ 0xe5, 0x9e, 0xb6, 0xf4, 0xdb, 0x81, 0x8f, 0xca, 0xc3, 0xbb, 0x4a, 0xb0, ++ 0x5d, 0xf9, 0x4e, 0xc5, 0x8f, 0x68, 0x2f, 0x7e, 0xf9, 0x99, 0x23, 0x59, ++ 0x38, 0xaf, 0xe7, 0x80, 0xaf, 0x80, 0x8f, 0x2a, 0x76, 0x24, 0x32, 0x9f, ++ 0xc4, 0x1f, 0xfc, 0x7f, 0x0a, 0xa6, 0x72, 0x03, 0x7c, 0x5f, 0x0c, 0xf3, ++ 0x44, 0xf9, 0x5f, 0xc0, 0x9a, 0x4a, 0x98, 0x8a, 0xe3, 0xaf, 0xd7, 0x7d, ++ 0x9e, 0x28, 0xbe, 0xce, 0xd4, 0x19, 0x34, 0x4e, 0xb7, 0x3c, 0x3d, 0x07, ++ 0xe3, 0x40, 0xbb, 0xea, 0x17, 0x15, 0x3f, 0x4e, 0xb1, 0xda, 0xc6, 0x82, ++ 0x28, 0x57, 0xe7, 0x5e, 0x71, 0xcd, 0xd8, 0xe6, 0xc6, 0xf9, 0xd5, 0xeb, ++ 0x79, 0x1e, 0x9c, 0xd7, 0xc3, 0x3a, 0xd6, 0x5b, 0x10, 0x9e, 0xb5, 0x07, ++ 0x55, 0x56, 0x79, 0x78, 0x8b, 0x5e, 0x02, 0xdf, 0xcb, 0x37, 0x6d, 0xd1, ++ 0xe7, 0xe7, 0x23, 0xde, 0x40, 0xef, 0xe5, 0x23, 0x5c, 0x7d, 0xac, 0x70, ++ 0x6d, 0x54, 0x03, 0x88, 0xdf, 0xc5, 0xc9, 0xce, 0xad, 0x2a, 0xe0, 0x87, ++ 0xb9, 0x03, 0x99, 0xd3, 0xe3, 0xf0, 0xcf, 0x99, 0x3a, 0x50, 0x63, 0x79, ++ 0xd1, 0x72, 0x39, 0xca, 0x37, 0xe9, 0x93, 0xb0, 0x3e, 0xcd, 0x54, 0xbf, ++ 0x44, 0x49, 0x26, 0x7e, 0xad, 0xd8, 0xa1, 0x32, 0x9f, 0x85, 0x9f, 0x38, ++ 0xfd, 0x43, 0xc7, 0x38, 0xfd, 0x43, 0xfb, 0x3c, 0xe1, 0x67, 0x72, 0xa2, ++ 0xf4, 0x5b, 0x6c, 0x70, 0x3d, 0x29, 0xe9, 0xb7, 0x38, 0x59, 0xd0, 0x53, ++ 0xeb, 0x2a, 0x8c, 0x07, 0xcf, 0x23, 0x48, 0x0f, 0x80, 0xa7, 0x09, 0xf1, ++ 0x05, 0xcf, 0xb5, 0x02, 0x3e, 0xef, 0x04, 0x56, 0xa4, 0x01, 0x5d, 0xbc, ++ 0x01, 0x66, 0x28, 0xec, 0xf2, 0xfc, 0xd9, 0x64, 0x67, 0xb3, 0x18, 0x8c, ++ 0xfd, 0x16, 0x9b, 0x17, 0xd0, 0xc6, 0x43, 0x59, 0x67, 0x8b, 0x98, 0x9f, ++ 0x31, 0x43, 0xab, 0x0a, 0x4c, 0x82, 0xf2, 0x57, 0xac, 0xf4, 0x4d, 0x9c, ++ 0x0f, 0x63, 0x7e, 0x5f, 0x29, 0xe0, 0xb9, 0x51, 0x61, 0x33, 0x70, 0xde, ++ 0x87, 0x11, 0x58, 0x98, 0x4f, 0x63, 0x96, 0x4e, 0xf8, 0x6b, 0x9a, 0x5c, ++ 0xb8, 0x4d, 0x55, 0x04, 0xcc, 0xa9, 0x58, 0x9e, 0xff, 0x93, 0xd5, 0x39, ++ 0xd4, 0xfe, 0x38, 0xb5, 0xd7, 0xa0, 0xfd, 0xf0, 0xde, 0xdb, 0x1b, 0x25, ++ 0xe3, 0x2c, 0xed, 0x8d, 0x92, 0x32, 0xd9, 0xfe, 0x3d, 0xac, 0xc7, 0x9c, ++ 0x97, 0x6e, 0xdf, 0x54, 0x72, 0x9d, 0x75, 0xfc, 0x92, 0x72, 0xd9, 0xfe, ++ 0x23, 0x1a, 0xdf, 0x7d, 0x69, 0xf8, 0x8d, 0x1b, 0x27, 0x58, 0xc7, 0xbf, ++ 0xb1, 0x92, 0xda, 0xd7, 0x38, 0x38, 0xbd, 0xba, 0x92, 0x9d, 0xe1, 0xad, ++ 0x50, 0x6e, 0x70, 0xf9, 0x03, 0x1a, 0xd2, 0x4d, 0x63, 0x11, 0x7c, 0xaf, ++ 0xa5, 0xe4, 0x6d, 0xc5, 0x7a, 0xaa, 0xe4, 0x07, 0xd6, 0x16, 0x50, 0xa1, ++ 0xbd, 0x7b, 0x67, 0xf2, 0xc8, 0xd5, 0xcc, 0xcc, 0x17, 0x13, 0xff, 0x88, ++ 0xe3, 0x79, 0x40, 0x5a, 0xcc, 0x7c, 0x91, 0x34, 0x2e, 0xc1, 0xc2, 0x8f, ++ 0xc9, 0x81, 0x14, 0x4b, 0x19, 0x7a, 0x32, 0x4e, 0x5d, 0x13, 0xd5, 0x43, ++ 0x01, 0xaf, 0x93, 0xe0, 0xd1, 0xfb, 0xea, 0xa4, 0x2f, 0x8a, 0xfa, 0x3a, ++ 0x09, 0xde, 0x07, 0xf7, 0xbb, 0xa8, 0xfc, 0xe0, 0x75, 0x1c, 0xde, 0x07, ++ 0xfb, 0xba, 0x49, 0xce, 0x10, 0x06, 0x96, 0x05, 0x65, 0x3d, 0x78, 0xad, ++ 0x61, 0x5a, 0x8f, 0x00, 0x4e, 0x85, 0x65, 0x32, 0x76, 0x41, 0x09, 0xba, ++ 0x94, 0x31, 0xe6, 0xf7, 0x3e, 0x1b, 0xbe, 0x4f, 0x50, 0x59, 0x2d, 0xce, ++ 0x27, 0xc1, 0xc1, 0x48, 0x1f, 0x3d, 0x9c, 0x53, 0xb8, 0x2d, 0x64, 0xc2, ++ 0xcf, 0xca, 0x01, 0x40, 0x5f, 0x28, 0xa7, 0x2a, 0x3a, 0xc7, 0xa3, 0xc0, ++ 0xeb, 0xc3, 0x03, 0xe6, 0x67, 0xce, 0x32, 0x8d, 0xd3, 0x38, 0x40, 0x9f, ++ 0xb1, 0x35, 0x9f, 0xbf, 0x9f, 0xe3, 0xc6, 0xf1, 0x4a, 0xd3, 0x15, 0xd4, ++ 0x83, 0x7a, 0x57, 0x9e, 0xe1, 0xee, 0x39, 0x8e, 0x23, 0x77, 0x9c, 0x65, ++ 0x1c, 0x67, 0x76, 0x19, 0x8d, 0x93, 0x13, 0x33, 0x8e, 0x23, 0xbb, 0x2c, ++ 0x66, 0x1c, 0xe7, 0x8c, 0xad, 0xe2, 0xbd, 0x18, 0x67, 0xd0, 0xa5, 0xc6, ++ 0x79, 0x38, 0xf7, 0x3a, 0xeb, 0x7c, 0xb2, 0xcb, 0x69, 0x9c, 0x82, 0xd8, ++ 0xf9, 0x64, 0x97, 0xc7, 0x8c, 0x93, 0xc0, 0xe7, 0x03, 0xef, 0xc5, 0x38, ++ 0x7e, 0xc4, 0x5f, 0xaf, 0xf3, 0x19, 0x34, 0xc1, 0x3a, 0x9f, 0x81, 0x95, ++ 0x34, 0xce, 0xf5, 0x38, 0xce, 0x18, 0xd3, 0x7c, 0x06, 0x56, 0xc6, 0x8c, ++ 0xe3, 0xa6, 0x71, 0xf0, 0x3d, 0x8e, 0x03, 0x86, 0x94, 0x8f, 0x65, 0x00, ++ 0xdd, 0x1d, 0x5d, 0xf3, 0x89, 0xfe, 0xbf, 0x74, 0x91, 0xbd, 0xa0, 0x3b, ++ 0x82, 0xcf, 0x62, 0xbf, 0xec, 0x5d, 0x17, 0x23, 0x7d, 0xe2, 0x83, 0x71, ++ 0x33, 0x50, 0xaf, 0xc0, 0xe2, 0x0c, 0xf2, 0xab, 0x29, 0x29, 0x34, 0xce, ++ 0x17, 0x09, 0x40, 0x7f, 0xb7, 0x99, 0xce, 0x5c, 0x1f, 0xd1, 0x13, 0xf4, ++ 0xcf, 0x3c, 0x01, 0x22, 0x0b, 0x03, 0x44, 0xa0, 0x7f, 0xaa, 0x05, 0x8f, ++ 0xce, 0xdd, 0x39, 0x2d, 0xbb, 0x1e, 0x9f, 0xad, 0xc5, 0x99, 0xb3, 0xd0, ++ 0x2e, 0xd9, 0xe0, 0xf1, 0x0f, 0x01, 0xd1, 0x39, 0xd7, 0x5a, 0xac, 0xcf, ++ 0x89, 0x63, 0xdf, 0xcc, 0x6b, 0xb2, 0x9f, 0x6a, 0xb7, 0xf0, 0xaf, 0xd0, ++ 0x7b, 0x13, 0xd9, 0xd0, 0x5a, 0x18, 0xbf, 0x05, 0x95, 0x8d, 0xa9, 0x7c, ++ 0x0a, 0xf4, 0x17, 0x03, 0xbd, 0x75, 0x12, 0xf4, 0x17, 0x3e, 0x4f, 0x0b, ++ 0xfb, 0xf4, 0x23, 0xd0, 0x6f, 0x4c, 0x37, 0xc3, 0x5b, 0x4f, 0xf3, 0x38, ++ 0xa5, 0x71, 0x3c, 0x9e, 0xda, 0xc4, 0xd7, 0x91, 0x2f, 0xd6, 0x1f, 0xb3, ++ 0x83, 0xb1, 0x87, 0xc3, 0x1c, 0xcf, 0x07, 0xb8, 0xef, 0x14, 0xd3, 0x98, ++ 0xd7, 0x04, 0xc6, 0x9f, 0x49, 0xce, 0x6a, 0x04, 0x3d, 0xba, 0x5e, 0x71, ++ 0x84, 0xb7, 0x12, 0x3d, 0x02, 0xfd, 0x6c, 0xc0, 0xe7, 0x6c, 0x63, 0x1f, ++ 0xc0, 0x95, 0xa8, 0x07, 0x76, 0xe6, 0x1f, 0x84, 0x3d, 0x0a, 0x7f, 0xfd, ++ 0x6c, 0x60, 0xcb, 0xde, 0xb3, 0x72, 0xd7, 0x61, 0xac, 0xf6, 0xb6, 0x32, ++ 0x6b, 0xc0, 0x62, 0x98, 0xef, 0x8c, 0x96, 0xf5, 0xf6, 0x7e, 0x50, 0x3e, ++ 0x67, 0x6f, 0xbf, 0xcf, 0xef, 0x36, 0xf5, 0x33, 0xc3, 0x7e, 0x12, 0xe7, ++ 0xed, 0x84, 0xff, 0xb0, 0x9f, 0xbb, 0x83, 0x76, 0x8b, 0x7d, 0xfa, 0x9d, ++ 0x32, 0x6b, 0xf9, 0xde, 0x18, 0x7b, 0xb5, 0x52, 0xc9, 0x15, 0xf4, 0x10, ++ 0xe3, 0xfa, 0xc2, 0x76, 0xa4, 0xd7, 0x9d, 0xe9, 0x1c, 0x9e, 0x7b, 0xf1, ++ 0x39, 0x12, 0x3f, 0x1b, 0x44, 0xaf, 0xfb, 0x0c, 0xde, 0x56, 0xc2, 0x53, ++ 0xf3, 0x43, 0x3b, 0x8b, 0xd0, 0x7a, 0xd4, 0x9e, 0xc6, 0xf2, 0x11, 0x1f, ++ 0x69, 0x64, 0x17, 0x05, 0xe5, 0xba, 0x12, 0x03, 0xdf, 0x7d, 0x76, 0x67, ++ 0xa0, 0x14, 0xe8, 0x79, 0xdf, 0xf7, 0x55, 0xc2, 0x63, 0x2c, 0xbc, 0xed, ++ 0xfb, 0x13, 0x03, 0x36, 0xb0, 0x97, 0xda, 0x37, 0xfe, 0xbb, 0x1d, 0xed, ++ 0xef, 0xcb, 0xc1, 0x7f, 0xff, 0x52, 0xeb, 0x77, 0x16, 0xe2, 0xe3, 0x49, ++ 0xbc, 0x4a, 0x3e, 0xb8, 0x6b, 0x46, 0x51, 0x9f, 0x8f, 0x4c, 0xf5, 0xee, ++ 0x0e, 0xde, 0xd4, 0xe7, 0x23, 0x13, 0xbf, 0x7c, 0xa7, 0x6c, 0x9a, 0xa5, ++ 0x7c, 0x6f, 0xed, 0xdd, 0x96, 0xfa, 0xf7, 0x2f, 0x9d, 0x65, 0xf9, 0x3e, ++ 0x2b, 0xb4, 0xd0, 0xf2, 0x7d, 0xce, 0xca, 0x45, 0x96, 0xf2, 0xbc, 0xa6, ++ 0xef, 0x5b, 0xea, 0x2f, 0xd8, 0x58, 0x6f, 0xf9, 0xbe, 0x30, 0xbc, 0xca, ++ 0xf2, 0xbd, 0x62, 0xc7, 0x7a, 0x4b, 0xb9, 0xaa, 0xf9, 0x49, 0x4b, 0xfd, ++ 0x9a, 0xd6, 0x2d, 0x96, 0xef, 0xb6, 0xfd, 0xc3, 0x6e, 0x45, 0x79, 0x5c, ++ 0xfe, 0x5b, 0x95, 0xa1, 0x7d, 0x76, 0xc1, 0x7d, 0xea, 0x11, 0xb4, 0xaf, ++ 0x2e, 0x18, 0x9a, 0x1f, 0xeb, 0x54, 0x23, 0xaf, 0x81, 0x1c, 0x7e, 0x52, ++ 0x97, 0x49, 0xfc, 0x7d, 0xa6, 0xce, 0x47, 0xcf, 0x73, 0xad, 0xa3, 0x9c, ++ 0x68, 0x8f, 0xd7, 0x24, 0x80, 0x3c, 0xc3, 0x5a, 0xbf, 0x5f, 0xf9, 0x43, ++ 0x68, 0xe5, 0x04, 0xd4, 0x23, 0x50, 0x1f, 0x74, 0xf8, 0x41, 0xe5, 0xc3, ++ 0x50, 0x08, 0x9c, 0xa7, 0x37, 0x14, 0x1f, 0xf1, 0xbd, 0xba, 0x51, 0x67, ++ 0x11, 0x60, 0x55, 0x85, 0xa5, 0x74, 0xf3, 0x75, 0x97, 0x1a, 0xfd, 0xae, ++ 0xb5, 0xc3, 0xf7, 0x51, 0xbd, 0x7f, 0x57, 0x37, 0x6a, 0x71, 0xbf, 0x6b, ++ 0xed, 0x5a, 0xdc, 0x7e, 0x3b, 0x95, 0xae, 0x3c, 0xb4, 0xef, 0x42, 0xef, ++ 0x38, 0x18, 0xda, 0x81, 0xbd, 0xd9, 0x0f, 0xf0, 0xd7, 0x0f, 0xd7, 0x8b, ++ 0xde, 0xbe, 0x77, 0xd8, 0x58, 0x59, 0xb3, 0x49, 0xef, 0x9c, 0x52, 0x6c, ++ 0xc4, 0x07, 0x77, 0x2a, 0x13, 0x4f, 0xa1, 0x7e, 0xae, 0xd4, 0xb9, 0xbc, ++ 0x57, 0xee, 0xce, 0x9a, 0x88, 0xfe, 0x60, 0xa5, 0x1e, 0xc9, 0xab, 0x75, ++ 0x5f, 0x62, 0xbc, 0x66, 0x00, 0x26, 0x03, 0xfb, 0xc9, 0xa5, 0x79, 0x2d, ++ 0x0c, 0xf7, 0x8b, 0xca, 0x2f, 0xd1, 0x6f, 0x90, 0x45, 0xee, 0x97, 0xb0, ++ 0xe0, 0xc7, 0xa8, 0x9f, 0x3b, 0x0e, 0xa8, 0xa4, 0x67, 0x59, 0xe4, 0x50, ++ 0xf6, 0x6d, 0xc3, 0x71, 0xfc, 0xc0, 0x29, 0x7c, 0xcf, 0x5a, 0xd3, 0x68, ++ 0x7d, 0x7c, 0xbb, 0x2e, 0xd0, 0xe7, 0x23, 0xf0, 0xe7, 0x4e, 0xd4, 0x4d, ++ 0xa1, 0xe7, 0xef, 0xeb, 0x4a, 0xfb, 0x7c, 0x04, 0xba, 0xe6, 0xbd, 0xba, ++ 0x19, 0x54, 0x7e, 0xbf, 0x2e, 0x48, 0xcf, 0xf6, 0xba, 0x32, 0x7a, 0x9e, ++ 0xac, 0xab, 0xa5, 0xef, 0x1f, 0xd5, 0x2d, 0xa5, 0xf2, 0xa9, 0xba, 0x10, ++ 0x3d, 0x3f, 0xa9, 0x5b, 0x49, 0xcf, 0x33, 0x75, 0x4d, 0xf4, 0xbd, 0xa3, ++ 0x6e, 0x23, 0x95, 0xcf, 0xd5, 0x85, 0xe9, 0xd9, 0xed, 0x07, 0x08, 0x7b, ++ 0x94, 0xa5, 0x0a, 0xfb, 0x4f, 0xd8, 0xeb, 0xb0, 0x72, 0x50, 0xf9, 0xbc, ++ 0x98, 0x83, 0x0a, 0xff, 0xe6, 0x7e, 0xab, 0x3f, 0x13, 0xe5, 0xfa, 0xbc, ++ 0xfb, 0x8b, 0x3c, 0xb4, 0x73, 0xcf, 0x9f, 0x00, 0xc3, 0x24, 0x8e, 0x7f, ++ 0x28, 0x9f, 0xb1, 0xfc, 0xd6, 0x3b, 0xfd, 0x02, 0xb4, 0xde, 0xcf, 0x0f, ++ 0x03, 0xfd, 0x47, 0xf5, 0xfc, 0xee, 0x4a, 0xe0, 0xf4, 0x71, 0xd9, 0xd8, ++ 0x14, 0x06, 0xfa, 0x67, 0xd5, 0x10, 0x9d, 0x69, 0x30, 0x7e, 0xc2, 0x2f, ++ 0xaf, 0x21, 0x7b, 0x19, 0xde, 0x6b, 0x8c, 0xf4, 0x65, 0xd8, 0x3f, 0xcd, ++ 0x13, 0xa7, 0x7f, 0x9c, 0x73, 0xc6, 0xe5, 0xe9, 0xd4, 0xcd, 0x1f, 0x4f, ++ 0xfd, 0xb9, 0x10, 0xe3, 0x0f, 0x77, 0x0a, 0x7d, 0x98, 0x70, 0x48, 0xad, ++ 0xe5, 0x74, 0xdb, 0xe6, 0x47, 0xba, 0x99, 0xf0, 0xc7, 0xed, 0xb2, 0x97, ++ 0x85, 0x3e, 0x8f, 0xc1, 0x23, 0xd9, 0x72, 0x59, 0x3d, 0xf1, 0x79, 0x36, ++ 0x4d, 0xe2, 0xb3, 0x2d, 0x1b, 0xe3, 0x00, 0x1b, 0x94, 0xd2, 0x61, 0x36, ++ 0xe0, 0x83, 0xf3, 0x2d, 0x0e, 0x9a, 0xd7, 0xf9, 0xbd, 0x89, 0x61, 0x86, ++ 0x6d, 0x31, 0x38, 0x32, 0xfe, 0x52, 0x78, 0xe3, 0x70, 0x54, 0xec, 0x70, ++ 0x19, 0x66, 0xfd, 0x50, 0xd5, 0x9c, 0x6c, 0x58, 0xf5, 0x45, 0x96, 0x61, ++ 0xd6, 0x17, 0xe7, 0x8f, 0x6e, 0xf3, 0xa2, 0xdc, 0x2f, 0xce, 0xb4, 0x19, ++ 0x1f, 0x8d, 0x42, 0xfe, 0x08, 0x08, 0xfe, 0xe0, 0x7c, 0x27, 0xfb, 0xaf, ++ 0x6a, 0xce, 0x31, 0xdc, 0x96, 0x7e, 0xac, 0xe5, 0xf3, 0x4d, 0xca, 0x14, ++ 0xf4, 0x83, 0x40, 0xb9, 0x27, 0xdd, 0x1e, 0xc7, 0x3f, 0x90, 0xcf, 0xc5, ++ 0x99, 0xba, 0xf1, 0x11, 0xc8, 0xf7, 0x99, 0x1d, 0x83, 0x92, 0x70, 0x5c, ++ 0xf0, 0xe3, 0x0c, 0x1c, 0xa7, 0xa3, 0xce, 0x30, 0xf8, 0xb8, 0x99, 0x86, ++ 0x99, 0x2f, 0x2b, 0x97, 0x26, 0x50, 0x7d, 0x09, 0x5f, 0x6f, 0xfd, 0xfe, ++ 0xad, 0xe1, 0x43, 0xcb, 0xe0, 0x43, 0x27, 0x23, 0xd4, 0x7f, 0x3d, 0xe8, ++ 0x9b, 0xfb, 0xd9, 0x4c, 0xfb, 0x23, 0xc5, 0x73, 0xd8, 0x5e, 0xfb, 0x17, ++ 0xb8, 0xee, 0x38, 0xe0, 0xff, 0xaf, 0x29, 0x1e, 0xa0, 0x51, 0x59, 0xf6, ++ 0x5b, 0xd3, 0xac, 0x86, 0x1c, 0xd7, 0xe2, 0xfb, 0x9d, 0x96, 0xf1, 0xa0, ++ 0x9d, 0x4f, 0xfa, 0xd0, 0xb8, 0x5e, 0xf5, 0x4e, 0x77, 0x8d, 0x9d, 0x32, ++ 0xc5, 0x05, 0xaa, 0x71, 0x0c, 0xf2, 0x8f, 0x9c, 0x44, 0xe7, 0x20, 0xf4, ++ 0x98, 0x04, 0xfd, 0x75, 0x6a, 0xee, 0x95, 0x0a, 0x8c, 0x33, 0xc5, 0xe6, ++ 0xa3, 0xef, 0x35, 0x82, 0x1f, 0xab, 0x9c, 0xed, 0x7a, 0x10, 0x5e, 0x9d, ++ 0x6d, 0xe1, 0xf4, 0xe8, 0x6d, 0x9c, 0x33, 0x75, 0x47, 0x7d, 0x1a, 0xe8, ++ 0x8f, 0x32, 0x27, 0x78, 0x64, 0x30, 0x4e, 0x59, 0xf3, 0xb0, 0x49, 0xa8, ++ 0x1f, 0xcf, 0xb6, 0x2c, 0x4f, 0x0f, 0x02, 0xdf, 0x56, 0xa8, 0xe7, 0x1f, ++ 0x2c, 0x8d, 0xd3, 0x7e, 0xa5, 0x4d, 0xe1, 0xf0, 0x84, 0xed, 0x5d, 0xed, ++ 0xa6, 0xf9, 0xc8, 0x38, 0x0a, 0x63, 0xd0, 0xaf, 0x33, 0x0a, 0x3f, 0x72, ++ 0xfa, 0x29, 0x53, 0x39, 0x56, 0x5f, 0xcb, 0xe7, 0xa3, 0xd8, 0x2f, 0xf0, ++ 0x47, 0xf5, 0xce, 0x63, 0x25, 0xd7, 0x03, 0xfc, 0xd5, 0xad, 0x9f, 0xeb, ++ 0x08, 0xc7, 0x14, 0x5b, 0xf0, 0x51, 0x5b, 0x5a, 0x74, 0xfe, 0x0a, 0xce, ++ 0x1f, 0xfa, 0x29, 0xdf, 0xf1, 0x81, 0x8e, 0xf3, 0xfb, 0xc4, 0x1e, 0xca, ++ 0xfb, 0xe1, 0x25, 0xf4, 0x54, 0x4f, 0x38, 0xdd, 0x99, 0x14, 0xb7, 0x93, ++ 0xf0, 0x85, 0x58, 0x1b, 0xda, 0x31, 0xb3, 0xbb, 0xe3, 0x8a, 0xbe, 0xbb, ++ 0xde, 0x05, 0xd1, 0xfc, 0xf4, 0x5f, 0xec, 0x6c, 0x35, 0xc0, 0xc1, 0xbe, ++ 0x82, 0x5a, 0xf0, 0xdd, 0x2e, 0xbe, 0xce, 0x65, 0xa5, 0x5e, 0xc4, 0xd7, ++ 0xec, 0x96, 0x0a, 0x8a, 0x2f, 0x7e, 0x6a, 0x93, 0x76, 0x53, 0x53, 0x21, ++ 0xf2, 0xc7, 0x59, 0x66, 0x9b, 0x82, 0xf3, 0x3b, 0xcb, 0xde, 0xf2, 0x8e, ++ 0x32, 0xe1, 0xaf, 0xc5, 0xc6, 0xed, 0x7e, 0xb6, 0x92, 0xdb, 0x31, 0x21, ++ 0xf8, 0x0f, 0xe1, 0x01, 0x7b, 0xd6, 0x62, 0xd7, 0x2c, 0xd8, 0x68, 0x2d, ++ 0xcf, 0x67, 0xd3, 0xd3, 0x51, 0x6f, 0xcc, 0xdf, 0x60, 0x67, 0x61, 0x40, ++ 0xd1, 0x42, 0xb4, 0x8b, 0x24, 0x7f, 0xc0, 0xbc, 0xb7, 0xdb, 0xb8, 0xbd, ++ 0xbb, 0x80, 0xd5, 0x36, 0xa2, 0x3d, 0xa7, 0x39, 0xb8, 0x7f, 0x30, 0xdb, ++ 0x60, 0x5a, 0x3f, 0x80, 0xab, 0xea, 0xe7, 0x9b, 0x0b, 0xd1, 0xee, 0xff, ++ 0x85, 0xcd, 0x46, 0xf4, 0x91, 0x71, 0x86, 0x85, 0x29, 0x1c, 0xee, 0xf2, ++ 0xd4, 0xb0, 0x1e, 0x80, 0xef, 0x1f, 0xb6, 0x8c, 0xba, 0xf3, 0x7a, 0xe4, ++ 0x3e, 0x47, 0xb8, 0x11, 0xd7, 0x65, 0x96, 0xc4, 0xfc, 0xcf, 0xb0, 0x9e, ++ 0xf8, 0x9c, 0xb3, 0xd2, 0x0a, 0xdf, 0xe5, 0xe0, 0x8f, 0x85, 0x97, 0xb1, ++ 0x65, 0x16, 0x38, 0x64, 0xbf, 0x12, 0x0e, 0x75, 0x87, 0x12, 0x08, 0xc7, ++ 0xe1, 0xbb, 0x37, 0x24, 0xdf, 0x09, 0x3d, 0x92, 0xa2, 0x5a, 0xed, 0xfc, ++ 0x8c, 0x98, 0xf2, 0x7b, 0x36, 0x11, 0xbf, 0x54, 0x99, 0x8a, 0x74, 0x3e, ++ 0x6b, 0x38, 0x43, 0xb6, 0x24, 0xfa, 0xee, 0x8f, 0x60, 0x7c, 0x64, 0xb7, ++ 0xc3, 0xbf, 0x1c, 0xe8, 0xfb, 0x80, 0xad, 0xb4, 0x1d, 0xf5, 0x33, 0xd8, ++ 0x05, 0x05, 0xcc, 0x54, 0xef, 0x01, 0x5b, 0x90, 0xde, 0x77, 0x28, 0x6f, ++ 0xce, 0x47, 0xfb, 0x94, 0x69, 0x91, 0x02, 0xf4, 0xef, 0x61, 0x4d, 0xd1, ++ 0x90, 0x1f, 0x74, 0xc1, 0x0f, 0x6a, 0x82, 0xb7, 0x00, 0xe3, 0xb1, 0x1e, ++ 0x06, 0xeb, 0x27, 0xc8, 0xa5, 0x03, 0xe1, 0x83, 0x7e, 0x1a, 0x3d, 0x65, ++ 0x53, 0x59, 0x01, 0xc6, 0x5f, 0x41, 0x4e, 0xa1, 0xbf, 0x75, 0xde, 0x92, ++ 0xa3, 0x0a, 0x94, 0x5d, 0xee, 0x16, 0x86, 0xfd, 0x39, 0x32, 0xad, 0xf1, ++ 0x65, 0x97, 0xcf, 0x5a, 0xae, 0xc1, 0x7f, 0x20, 0x1d, 0x86, 0x32, 0x8a, ++ 0xe3, 0x24, 0x0e, 0xb5, 0x7e, 0x87, 0x05, 0x8b, 0x21, 0xbf, 0x79, 0xfc, ++ 0xd6, 0xf7, 0xff, 0xd1, 0x8d, 0xa7, 0x08, 0xf1, 0xad, 0x97, 0x58, 0x1a, ++ 0x9e, 0x4e, 0x77, 0x44, 0x85, 0xf1, 0xd9, 0x38, 0xad, 0xc3, 0x6c, 0x37, ++ 0x57, 0x3b, 0x39, 0xfc, 0xe4, 0x97, 0x43, 0xfd, 0x25, 0xc2, 0x9e, 0xaf, ++ 0x66, 0xbe, 0x10, 0xc5, 0x89, 0x33, 0x39, 0x1f, 0x2c, 0xb9, 0xc9, 0x46, ++ 0xf0, 0x2c, 0xf1, 0xf8, 0xfc, 0x21, 0xf8, 0xae, 0x68, 0x01, 0x86, 0xf2, ++ 0x87, 0xb1, 0x6a, 0xf3, 0x3a, 0x56, 0x73, 0x11, 0x44, 0xae, 0x8f, 0xa9, ++ 0xac, 0x75, 0xe9, 0xc8, 0x97, 0x35, 0x17, 0x35, 0x16, 0x06, 0x7d, 0x5f, ++ 0x60, 0x0b, 0x7a, 0xd4, 0x31, 0x88, 0xbf, 0x00, 0xd9, 0xb9, 0x4e, 0x40, ++ 0xd6, 0xd7, 0x00, 0xb2, 0xe6, 0x9e, 0x62, 0xb1, 0x7b, 0x59, 0xff, 0x14, ++ 0xb1, 0xbe, 0xf6, 0x37, 0xcc, 0xf2, 0xda, 0x1f, 0xe9, 0x3c, 0x26, 0x4a, ++ 0x67, 0xa9, 0x17, 0xec, 0x42, 0x2f, 0x82, 0xbe, 0xc8, 0x50, 0xd3, 0x50, ++ 0x0f, 0x76, 0x95, 0x90, 0x5f, 0xc2, 0xda, 0x49, 0x4f, 0xc8, 0x7a, 0x7a, ++ 0xb4, 0x5e, 0x7f, 0x84, 0xa3, 0xb7, 0x7a, 0xae, 0x68, 0xbd, 0x9c, 0x78, ++ 0xfd, 0x55, 0xfd, 0xfc, 0x85, 0x3d, 0x21, 0xc0, 0x7f, 0xf9, 0xcf, 0x1e, ++ 0xf3, 0x02, 0xf1, 0xd9, 0xa7, 0x5a, 0x53, 0xba, 0x1f, 0xde, 0x57, 0x3e, ++ 0xb3, 0xc2, 0x8b, 0x7c, 0xfc, 0x89, 0x16, 0xf2, 0xe2, 0xbc, 0x3f, 0x0d, ++ 0xab, 0x53, 0xe2, 0xf1, 0xf3, 0x9d, 0xaa, 0x22, 0xfc, 0xb1, 0x80, 0x5b, ++ 0x41, 0x7f, 0x58, 0xd0, 0xe9, 0xcc, 0xf3, 0x6b, 0x6e, 0x41, 0xbc, 0x7f, ++ 0xf1, 0x8c, 0xdd, 0xc0, 0x2a, 0x35, 0x3b, 0x1c, 0x11, 0x07, 0x10, 0xb1, ++ 0xba, 0x65, 0x21, 0xe7, 0xa7, 0x1d, 0x8e, 0x0f, 0x78, 0xf9, 0xe1, 0xcf, ++ 0x91, 0x9e, 0x35, 0xad, 0x56, 0x79, 0x2b, 0x7f, 0xf6, 0xb1, 0x74, 0x8c, ++ 0x77, 0x02, 0x86, 0xb8, 0xdf, 0xc8, 0x22, 0x64, 0x3f, 0x57, 0x6f, 0xff, ++ 0xb8, 0x04, 0xed, 0x91, 0x1a, 0xd6, 0x45, 0x7a, 0x22, 0xb6, 0x1d, 0x8e, ++ 0x7f, 0x31, 0x85, 0xd6, 0xaf, 0x59, 0x7a, 0x52, 0xcf, 0xef, 0x72, 0xff, ++ 0xa5, 0x46, 0xf0, 0x7d, 0x4d, 0xcb, 0x9a, 0xcf, 0x55, 0x2f, 0x96, 0xad, ++ 0xf2, 0x5d, 0x26, 0xfc, 0x91, 0x1b, 0x55, 0x4f, 0x2a, 0xc5, 0x95, 0xc6, ++ 0xb2, 0xb1, 0x48, 0x37, 0x89, 0x07, 0x16, 0xe6, 0xf6, 0xf0, 0xf2, 0xe7, ++ 0x9e, 0x28, 0xf8, 0x00, 0xe0, 0xe8, 0xd8, 0xfe, 0x2f, 0x5e, 0xc5, 0x12, ++ 0x37, 0xe2, 0xfa, 0xe1, 0x7c, 0xf3, 0x9c, 0x1f, 0xbf, 0xea, 0xeb, 0x5d, ++ 0xaf, 0x9f, 0x13, 0xfe, 0x7c, 0xb4, 0x5d, 0x98, 0xda, 0xf9, 0x5a, 0xb9, ++ 0xfd, 0xce, 0xf6, 0xf2, 0x67, 0xa5, 0x3d, 0xe2, 0x45, 0x7f, 0xa9, 0x72, ++ 0x8b, 0xdd, 0x0f, 0x92, 0xc9, 0x2a, 0x5f, 0xd8, 0xf6, 0x93, 0xa7, 0x90, ++ 0xaf, 0xdf, 0x71, 0x50, 0x9c, 0xa1, 0xe2, 0x85, 0xc3, 0x6f, 0x5f, 0x07, ++ 0xe5, 0x8a, 0x5d, 0xf6, 0xd4, 0xa9, 0x7c, 0x1a, 0x6e, 0x25, 0x3d, 0x4a, ++ 0x8f, 0x1a, 0xf8, 0x7f, 0xe9, 0xc8, 0x28, 0xfe, 0xcb, 0x5f, 0x3a, 0xac, ++ 0xfb, 0x86, 0xf3, 0xf7, 0x0f, 0xa5, 0x44, 0xe9, 0x50, 0xb1, 0xeb, 0x80, ++ 0xce, 0x86, 0xf7, 0xc4, 0x5b, 0x71, 0xf3, 0x01, 0xbd, 0xdd, 0x1d, 0x87, ++ 0x1e, 0xcd, 0x1f, 0x94, 0xa0, 0xbd, 0xbd, 0xfc, 0xb9, 0x2f, 0x75, 0x94, ++ 0xab, 0x4f, 0xf7, 0x2b, 0x2c, 0x23, 0xa7, 0x67, 0xfb, 0xb2, 0x2d, 0x87, ++ 0xc9, 0x9e, 0x43, 0x3c, 0x11, 0xfd, 0x04, 0x7d, 0xba, 0xe9, 0xd5, 0x83, ++ 0x4e, 0x91, 0x5b, 0x5e, 0x1d, 0x4d, 0xf5, 0x0c, 0x5c, 0xbf, 0x7a, 0xa3, ++ 0xd3, 0xd5, 0xb8, 0xf6, 0xa5, 0x11, 0x1f, 0xbf, 0xf8, 0x2a, 0xc6, 0xef, ++ 0x7f, 0xef, 0xf0, 0xe3, 0xfc, 0xcb, 0x5e, 0xfc, 0xae, 0x17, 0xe7, 0x71, ++ 0x5a, 0xab, 0xe5, 0xfc, 0xbc, 0x79, 0x45, 0x7a, 0x00, 0xc6, 0x2d, 0xb3, ++ 0x87, 0xd2, 0x0d, 0x7a, 0xf2, 0xf7, 0x65, 0x4f, 0x3f, 0x40, 0x7c, 0xb6, ++ 0xe0, 0xd8, 0x03, 0xe9, 0x14, 0x0f, 0x60, 0x81, 0x2c, 0x1b, 0xad, 0xa1, ++ 0xa1, 0x2c, 0x9c, 0xdf, 0xbc, 0x4d, 0x77, 0xd0, 0xfc, 0xe6, 0xb3, 0x20, ++ 0xf1, 0x5b, 0xd9, 0x66, 0xb5, 0x34, 0x8c, 0xf1, 0x2c, 0x8d, 0x4d, 0xd9, ++ 0x15, 0x47, 0x1e, 0xde, 0x14, 0xf2, 0x70, 0x7a, 0xab, 0x03, 0xd7, 0x1e, ++ 0x76, 0x1a, 0x15, 0x2c, 0xfa, 0x87, 0x6f, 0xa9, 0xb4, 0x4f, 0xc0, 0xd8, ++ 0x22, 0x8a, 0x37, 0x3c, 0x20, 0xf7, 0x21, 0xd8, 0x62, 0x2a, 0x5f, 0x70, ++ 0x72, 0x3a, 0x6d, 0x53, 0x6d, 0x32, 0xbe, 0xe1, 0xb4, 0xf0, 0xe9, 0xf6, ++ 0x87, 0xdb, 0x90, 0x3e, 0x67, 0x06, 0x04, 0x32, 0x30, 0x3e, 0x09, 0x78, ++ 0x08, 0x09, 0x7c, 0x29, 0xa8, 0x77, 0xd4, 0x63, 0x93, 0x33, 0x38, 0x7d, ++ 0x98, 0x4f, 0x2b, 0x14, 0xed, 0x40, 0x2f, 0x16, 0xe3, 0x7b, 0xac, 0xdf, ++ 0x66, 0x0f, 0xb8, 0x0a, 0x2c, 0xed, 0xc4, 0x3a, 0xc6, 0xc7, 0x5f, 0x22, ++ 0xc6, 0x07, 0xb8, 0x13, 0xd0, 0x1e, 0x3b, 0x9d, 0x0e, 0xf6, 0x4d, 0x9c, ++ 0xf9, 0x7d, 0xa9, 0x4a, 0xbd, 0x0c, 0xf6, 0x86, 0x89, 0xbf, 0x4c, 0x72, ++ 0xcd, 0xe5, 0x7c, 0xfb, 0x2a, 0x2e, 0xd7, 0x52, 0xce, 0xc3, 0xd3, 0xa6, ++ 0xe0, 0xf7, 0x3f, 0x1e, 0xe7, 0xf2, 0x83, 0xed, 0x70, 0x5d, 0x07, 0xb8, ++ 0x22, 0x19, 0xf4, 0xfd, 0xc0, 0xed, 0x0a, 0xe9, 0x01, 0x07, 0x8b, 0xc4, ++ 0x93, 0xe7, 0xed, 0x76, 0x21, 0xcf, 0xd6, 0xef, 0x72, 0x7f, 0x12, 0xe0, ++ 0xd6, 0x70, 0x7d, 0x8a, 0xf2, 0x09, 0xf4, 0x9f, 0x42, 0xf8, 0x27, 0x3b, ++ 0x6d, 0xfe, 0x06, 0x68, 0x67, 0xd2, 0xcb, 0x35, 0x38, 0x1e, 0xd5, 0xd3, ++ 0xa3, 0xef, 0x4d, 0xeb, 0xfa, 0x02, 0x21, 0xff, 0xaf, 0xab, 0x62, 0x7f, ++ 0x54, 0xc8, 0x3f, 0xdb, 0xc4, 0xe5, 0xbe, 0x77, 0xbb, 0x37, 0xc4, 0xfd, ++ 0x03, 0x7b, 0xf8, 0x27, 0x4f, 0xa1, 0xbc, 0x82, 0x7c, 0xe2, 0x3a, 0x53, ++ 0xf9, 0x82, 0xbd, 0x14, 0xe7, 0xfd, 0xd9, 0xce, 0x43, 0x6f, 0xdf, 0x03, ++ 0x7c, 0xfd, 0x59, 0xb3, 0x94, 0x53, 0xab, 0xde, 0x8c, 0x95, 0xd3, 0xb2, ++ 0xdd, 0x63, 0x58, 0x3c, 0x39, 0xfd, 0xcc, 0xed, 0x67, 0x71, 0xe5, 0x14, ++ 0xde, 0xc7, 0x95, 0x53, 0x77, 0x3b, 0xf1, 0xf1, 0xdf, 0x5b, 0x6f, 0x4a, ++ 0xbc, 0x9d, 0x8b, 0xd1, 0x9b, 0x52, 0x0f, 0xf6, 0x86, 0xbf, 0x58, 0x3d, ++ 0xb8, 0x56, 0xf5, 0xc5, 0xd5, 0x83, 0xf0, 0x77, 0x9c, 0x15, 0xf6, 0xe4, ++ 0x3b, 0xc9, 0x6f, 0x92, 0xcf, 0xca, 0x7f, 0x5a, 0x35, 0x90, 0xe2, 0x46, ++ 0x92, 0x1f, 0x25, 0xbf, 0x75, 0xf3, 0xa3, 0xe4, 0xb7, 0xd8, 0x79, 0x5a, ++ 0xf1, 0x16, 0xfb, 0xfd, 0x15, 0xa1, 0x6f, 0x24, 0x9d, 0xed, 0xcb, 0x58, ++ 0xc8, 0x83, 0xf1, 0xd2, 0x7d, 0x2a, 0xf9, 0xd7, 0x9d, 0x00, 0x53, 0x23, ++ 0xd0, 0xb7, 0x73, 0x67, 0x4e, 0x18, 0xe3, 0xce, 0x2b, 0x5c, 0x3c, 0x7e, ++ 0xd1, 0x69, 0x74, 0x79, 0x53, 0xe0, 0xb9, 0x22, 0x99, 0x97, 0xbb, 0xd2, ++ 0xf4, 0x46, 0xd4, 0x0f, 0xf2, 0x7d, 0x97, 0x8b, 0xc7, 0xb7, 0x3b, 0x4b, ++ 0xbb, 0xbc, 0xc9, 0x26, 0xbf, 0xe2, 0x83, 0xbd, 0xaa, 0xd7, 0x07, 0xdf, ++ 0xdb, 0xc3, 0x6c, 0x4a, 0x3c, 0x7f, 0x03, 0x34, 0x2f, 0xc1, 0xd1, 0xce, ++ 0x7a, 0xfb, 0xce, 0xe3, 0xc1, 0x93, 0x55, 0x77, 0xf6, 0x52, 0xf4, 0xdb, ++ 0x9b, 0x54, 0xda, 0xcf, 0x9e, 0x5b, 0x7f, 0x97, 0x17, 0xf7, 0x81, 0x3b, ++ 0xf7, 0x0e, 0xfa, 0x27, 0xd4, 0x4f, 0xf3, 0xde, 0x00, 0x03, 0x13, 0xe0, ++ 0xed, 0x44, 0x3b, 0x30, 0x09, 0xa7, 0x17, 0xd0, 0x30, 0x2f, 0x61, 0x8e, ++ 0xa0, 0xf7, 0x27, 0x2c, 0xf4, 0xf8, 0x04, 0x98, 0xdf, 0x9c, 0xbd, 0xdc, ++ 0x5f, 0x98, 0xbb, 0x36, 0xc6, 0xbe, 0x77, 0x2f, 0xd1, 0x51, 0xdf, 0x80, ++ 0x7d, 0x7f, 0xd2, 0x1a, 0xd7, 0xe6, 0x7c, 0x53, 0x2e, 0xfa, 0x29, 0xdb, ++ 0x64, 0xfd, 0x5e, 0xce, 0xd6, 0x12, 0xdd, 0xca, 0x63, 0xf8, 0x28, 0x28, ++ 0xfc, 0xc0, 0xb1, 0x9a, 0xe0, 0xa3, 0x11, 0x6c, 0x84, 0xf0, 0xc3, 0x78, ++ 0xfc, 0x42, 0xe8, 0xab, 0xc9, 0x6a, 0xfe, 0x3f, 0xa1, 0x9d, 0xd1, 0x79, ++ 0x94, 0xc7, 0x15, 0xcf, 0xef, 0x55, 0x09, 0xff, 0xe7, 0x77, 0x2a, 0x61, ++ 0x8c, 0xfb, 0x50, 0x7c, 0x77, 0x3c, 0xd2, 0xbf, 0x4b, 0x67, 0x26, 0x7f, ++ 0xb9, 0x03, 0xf9, 0x4d, 0xef, 0x5d, 0x8e, 0x3b, 0x5e, 0xfe, 0x43, 0xe1, ++ 0x0f, 0xa1, 0x4a, 0xe5, 0x9e, 0x77, 0x0b, 0xfe, 0x19, 0x9e, 0x1d, 0x7b, ++ 0xde, 0xc9, 0xfb, 0x05, 0x96, 0x7f, 0xfe, 0xbb, 0xec, 0x77, 0x59, 0xcf, ++ 0xfa, 0xc5, 0xfb, 0xff, 0x44, 0xfb, 0xc7, 0x9d, 0xfb, 0x1d, 0x04, 0x47, ++ 0xe7, 0xfe, 0xd7, 0xb3, 0x7f, 0x88, 0xe5, 0x57, 0x1d, 0x7e, 0x84, 0xb3, ++ 0x73, 0x99, 0x83, 0xf6, 0xcf, 0x42, 0xfb, 0x3d, 0xe1, 0x21, 0xf8, 0x7d, ++ 0x00, 0xd0, 0x1b, 0xd7, 0xcd, 0x7d, 0x5f, 0x16, 0xb4, 0xd3, 0xba, 0xd3, ++ 0x40, 0x74, 0x9a, 0xad, 0xf1, 0xfd, 0x8e, 0xf3, 0x7b, 0xff, 0xfc, 0xbe, ++ 0x82, 0xf9, 0x07, 0x7b, 0x1d, 0x3e, 0x9c, 0x47, 0xcd, 0x7e, 0x9e, 0x17, ++ 0x52, 0xf3, 0xaa, 0x8b, 0xe2, 0x2e, 0x9d, 0xfb, 0xbe, 0x2c, 0x0c, 0xba, ++ 0xff, 0x76, 0xf3, 0xa9, 0xd6, 0x59, 0x90, 0xf8, 0xcf, 0xc3, 0x66, 0xec, ++ 0x46, 0x7e, 0x4d, 0xe6, 0xfb, 0x00, 0x35, 0xbf, 0x18, 0xbf, 0xad, 0x1e, ++ 0xf7, 0xc3, 0x5b, 0x0e, 0xe8, 0xb8, 0xbf, 0x52, 0xfc, 0xcb, 0xbf, 0x14, ++ 0xa0, 0x7e, 0xe9, 0xdc, 0xcd, 0xed, 0x84, 0x73, 0xf6, 0xf6, 0xa7, 0x71, ++ 0x1f, 0xb4, 0x4a, 0x1b, 0xbc, 0xcc, 0x8e, 0x72, 0x8f, 0x36, 0x5b, 0x5f, ++ 0xb0, 0x3b, 0xed, 0xf3, 0x26, 0x86, 0xf2, 0xe3, 0xe1, 0x85, 0xe3, 0xa1, ++ 0x13, 0xf0, 0x80, 0xf3, 0x02, 0xbc, 0x94, 0xa1, 0x5e, 0xec, 0x0d, 0x1f, ++ 0x0d, 0x1a, 0xf7, 0x37, 0xff, 0xfb, 0xe1, 0xe3, 0xf3, 0xfb, 0x70, 0xfc, ++ 0xca, 0xbd, 0x63, 0x49, 0x6e, 0xa2, 0x78, 0x51, 0x02, 0xfc, 0xbd, 0x27, ++ 0xec, 0x54, 0x68, 0xfe, 0xfc, 0xfd, 0xfe, 0x2f, 0x0b, 0xd0, 0xee, 0xf9, ++ 0xac, 0xb9, 0x9e, 0xd6, 0xf1, 0xcb, 0xcd, 0x7b, 0xdb, 0xff, 0xb8, 0x79, ++ 0x2b, 0x91, 0x2b, 0x99, 0xf7, 0xc1, 0xff, 0xe6, 0xfc, 0x3f, 0x45, 0xe3, ++ 0xeb, 0x52, 0xac, 0x1c, 0xf4, 0xe4, 0xf3, 0x9f, 0x3f, 0x48, 0xe5, 0x17, ++ 0x3d, 0x7e, 0x82, 0xf7, 0x0a, 0xe5, 0xff, 0xe4, 0xff, 0x34, 0xba, 0xef, ++ 0x06, 0xba, 0x7b, 0x2f, 0x4f, 0x77, 0xc5, 0xfe, 0xdf, 0x75, 0xde, 0x97, ++ 0xa3, 0xfb, 0x1b, 0x82, 0xee, 0x1e, 0x03, 0xf3, 0x0a, 0x3a, 0xf7, 0xfd, ++ 0x85, 0xe2, 0xe5, 0x72, 0xfe, 0x97, 0x9b, 0xb7, 0xef, 0xff, 0xd1, 0x79, ++ 0x4b, 0xfb, 0x67, 0xb5, 0xcd, 0xdf, 0x94, 0x0b, 0xf5, 0xd7, 0xb2, 0x48, ++ 0x9b, 0x0f, 0xe0, 0x5c, 0x31, 0x74, 0x7a, 0x13, 0x86, 0x99, 0xc0, 0x4d, ++ 0x28, 0x8d, 0x67, 0x8f, 0x94, 0xda, 0xb9, 0x7f, 0xa4, 0x2a, 0x3c, 0x0e, ++ 0xc3, 0x06, 0xf0, 0xb8, 0x10, 0x13, 0xfe, 0x04, 0xa5, 0x80, 0xf9, 0x30, ++ 0x8e, 0x32, 0x9f, 0xec, 0x3a, 0xcd, 0xdd, 0x48, 0x76, 0x26, 0xd3, 0xfc, ++ 0x6d, 0x01, 0xc0, 0xc7, 0xea, 0xab, 0x67, 0xfb, 0x29, 0x57, 0x83, 0x8d, ++ 0x3c, 0x11, 0xc4, 0x72, 0xff, 0x09, 0x7e, 0x8a, 0x6f, 0xc6, 0xf8, 0x55, ++ 0x0d, 0x0a, 0x0b, 0x28, 0x60, 0xef, 0x69, 0x57, 0x7f, 0xfb, 0x28, 0xda, ++ 0xf9, 0xf6, 0xa1, 0xb6, 0x88, 0xa3, 0x80, 0x9e, 0x1f, 0xe0, 0xf3, 0x61, ++ 0x11, 0xc7, 0xb2, 0x1b, 0xba, 0xc5, 0x9f, 0x70, 0xc7, 0xf8, 0x03, 0x2e, ++ 0x9f, 0xf5, 0xbb, 0x43, 0xf4, 0xe7, 0x64, 0x23, 0x9b, 0x72, 0x31, 0x4f, ++ 0xc1, 0xad, 0x19, 0x61, 0x18, 0xdf, 0x5d, 0xd4, 0x44, 0xf3, 0x71, 0x0f, ++ 0x61, 0xac, 0xc9, 0xb4, 0x0f, 0xe8, 0x60, 0xa6, 0xf6, 0xd0, 0x5f, 0x3e, ++ 0x06, 0x60, 0x4d, 0xf6, 0xe3, 0x37, 0xc5, 0x5f, 0x7d, 0x37, 0xfe, 0x46, ++ 0xb6, 0x05, 0x10, 0x7f, 0xc3, 0x6c, 0x14, 0xd7, 0xa2, 0xa4, 0x3e, 0xc2, ++ 0x87, 0x3f, 0xbc, 0x9a, 0xfc, 0x4c, 0xee, 0x3f, 0x46, 0xf1, 0xd9, 0xd8, ++ 0x86, 0x78, 0xd4, 0x18, 0xf8, 0x7f, 0x7c, 0x7e, 0xe4, 0x37, 0x32, 0xe1, ++ 0x2f, 0x6a, 0xa2, 0x0b, 0x6d, 0xa8, 0x2d, 0xe0, 0xb2, 0xd6, 0x13, 0x7e, ++ 0xd1, 0x65, 0xe9, 0xc3, 0xe9, 0x91, 0x5d, 0x29, 0xe8, 0xb3, 0xd8, 0x42, ++ 0x0f, 0x89, 0xff, 0x38, 0x74, 0xb1, 0xd0, 0x43, 0xe2, 0xf7, 0x9b, 0xd2, ++ 0x25, 0x96, 0x1e, 0xb1, 0x78, 0xbf, 0xdd, 0xce, 0xe3, 0x6d, 0xb1, 0x74, ++ 0xb2, 0xe4, 0x77, 0xa4, 0x71, 0x3f, 0x24, 0x02, 0x7e, 0xc8, 0xeb, 0x3b, ++ 0xb7, 0x51, 0xbc, 0xe3, 0xec, 0xf3, 0x1f, 0xdc, 0x82, 0xf5, 0x2b, 0x7e, ++ 0xa1, 0x32, 0x27, 0xf4, 0x73, 0x6e, 0xa7, 0x87, 0x45, 0x50, 0x7e, 0xb5, ++ 0xb0, 0x8e, 0xfe, 0x54, 0x79, 0x8b, 0x1a, 0x37, 0xce, 0x2b, 0xed, 0xf2, ++ 0x8a, 0x9f, 0x79, 0x68, 0xbc, 0xf2, 0xdd, 0x8e, 0xf0, 0x54, 0x68, 0x5f, ++ 0xbe, 0xe7, 0xc3, 0x02, 0xb2, 0x9b, 0x96, 0x75, 0x1d, 0xe9, 0x87, 0x71, ++ 0x81, 0xe7, 0x15, 0x4e, 0xbf, 0x50, 0x7b, 0x01, 0xee, 0xdb, 0x95, 0x6b, ++ 0xdc, 0x3f, 0x88, 0xed, 0x6f, 0x93, 0x9d, 0xc7, 0x05, 0x3a, 0x5e, 0x49, ++ 0x9c, 0x81, 0xf1, 0x07, 0x65, 0x07, 0xcf, 0x57, 0x2c, 0x6f, 0xbe, 0xcb, ++ 0xee, 0x30, 0xf1, 0xdb, 0xff, 0xb2, 0xf3, 0xbc, 0x57, 0xa8, 0x47, 0xf2, ++ 0x1c, 0x7a, 0x4e, 0xa1, 0xf5, 0xa6, 0x27, 0x7c, 0xdc, 0x2f, 0xe8, 0x78, ++ 0x4e, 0xe1, 0xf0, 0xb5, 0xda, 0xc3, 0x98, 0xf7, 0x58, 0xbe, 0x63, 0x8b, ++ 0x1e, 0x44, 0xbf, 0x72, 0xc7, 0xe7, 0x14, 0xc7, 0x2e, 0xfe, 0xd9, 0x0b, ++ 0xde, 0x76, 0xf2, 0x17, 0x55, 0xab, 0xff, 0xbc, 0x43, 0x25, 0x7a, 0xc2, ++ 0x93, 0xe8, 0x17, 0xeb, 0xc7, 0x56, 0xb7, 0x54, 0x91, 0x9f, 0x50, 0xdd, ++ 0x2c, 0xfc, 0xc4, 0x18, 0x3f, 0xaa, 0xe2, 0x67, 0xfb, 0xf6, 0x84, 0x00, ++ 0x35, 0x15, 0x2f, 0x3d, 0xeb, 0xc5, 0xf8, 0xcb, 0x99, 0xb6, 0x67, 0xbc, ++ 0xe4, 0x9f, 0xee, 0xe0, 0xfe, 0xa7, 0xe6, 0xd6, 0xe2, 0xfb, 0xa7, 0x97, ++ 0xf3, 0x4b, 0x9b, 0x57, 0xc5, 0xf5, 0x4b, 0xcf, 0xe0, 0x3f, 0xc0, 0x9f, ++ 0x38, 0x60, 0x8f, 0xf1, 0xe7, 0x77, 0xf4, 0xb9, 0xb2, 0xfd, 0xcb, 0x17, ++ 0x2e, 0x3c, 0x8d, 0x71, 0xd2, 0x8e, 0xdd, 0x9f, 0x3d, 0x8d, 0x70, 0x57, ++ 0xfe, 0xe7, 0xbf, 0x3f, 0x8d, 0xf6, 0x3d, 0xdb, 0xef, 0x32, 0x9e, 0x81, ++ 0xf9, 0xd6, 0x3c, 0xff, 0x5b, 0x8a, 0x37, 0xc9, 0x76, 0xef, 0x0a, 0x39, ++ 0x3d, 0x37, 0x80, 0x85, 0xb2, 0xa0, 0xde, 0xb9, 0x77, 0x1c, 0x94, 0x3f, ++ 0x72, 0x6e, 0xdf, 0xe9, 0x6c, 0xf4, 0xe7, 0xce, 0xed, 0xfa, 0x53, 0x3a, ++ 0xfa, 0xf5, 0x4b, 0xf6, 0x4d, 0xce, 0xc0, 0x79, 0x2f, 0x79, 0xb9, 0x38, ++ 0x83, 0xc5, 0x91, 0x77, 0xf9, 0x44, 0xbe, 0x0c, 0x5f, 0x41, 0x9c, 0x30, ++ 0x96, 0x0e, 0x87, 0x5a, 0x0e, 0x91, 0x1f, 0x72, 0xf6, 0x84, 0x83, 0xfc, ++ 0xbe, 0xee, 0xf8, 0x42, 0x73, 0x15, 0x8f, 0xd7, 0xf8, 0x44, 0x5c, 0x61, ++ 0x67, 0xfc, 0x38, 0xac, 0xf4, 0x87, 0xab, 0x5b, 0x3e, 0x2c, 0xe1, 0xf1, ++ 0x31, 0xe1, 0x17, 0x5f, 0x2e, 0x8e, 0x70, 0x1c, 0xe8, 0x78, 0xed, 0x15, ++ 0xd0, 0x6b, 0xa7, 0x88, 0x13, 0xc5, 0xd0, 0xeb, 0x2c, 0xfe, 0x03, 0xe8, ++ 0xf2, 0x65, 0x0c, 0xbd, 0x2e, 0xb0, 0xe0, 0x8f, 0xb3, 0x70, 0x1f, 0xb2, ++ 0xa5, 0x4f, 0xaf, 0x71, 0x84, 0xc8, 0x15, 0xe0, 0x49, 0xc6, 0x77, 0x8f, ++ 0xd8, 0x03, 0x36, 0x1d, 0xe5, 0x60, 0x77, 0x62, 0x37, 0x9d, 0xa6, 0x22, ++ 0x9d, 0x5e, 0xb8, 0x90, 0x8d, 0xf1, 0xf0, 0x4f, 0xec, 0x5d, 0x64, 0xf7, ++ 0x74, 0xed, 0x73, 0x18, 0xe8, 0xdf, 0x97, 0xef, 0xfb, 0x1d, 0xc9, 0xc5, ++ 0xb9, 0x97, 0x8f, 0x51, 0xfc, 0x94, 0x89, 0x38, 0xeb, 0x39, 0xd6, 0xfd, ++ 0xc7, 0xe3, 0x62, 0x8a, 0x98, 0xdf, 0x76, 0x0f, 0x8f, 0x3f, 0x08, 0x7c, ++ 0x63, 0x7c, 0xc2, 0xe7, 0xa5, 0xf7, 0x22, 0x0e, 0xc1, 0xf9, 0x55, 0xc6, ++ 0x27, 0x7a, 0x8b, 0x4b, 0x8c, 0xd5, 0x45, 0xde, 0x93, 0x88, 0x3b, 0x57, ++ 0x6d, 0x7f, 0x57, 0x67, 0x31, 0x71, 0x1e, 0x65, 0x1c, 0xd2, 0xe9, 0x03, ++ 0x4b, 0x7c, 0x5c, 0xce, 0x3b, 0xb6, 0x3f, 0x03, 0xf1, 0x30, 0xd6, 0x1c, ++ 0x5f, 0x8b, 0x1f, 0xf7, 0x91, 0x7e, 0x73, 0x94, 0x4e, 0x3c, 0xae, 0x26, ++ 0xe3, 0x67, 0xe7, 0xb6, 0x88, 0xb8, 0x1b, 0xbc, 0xef, 0x3f, 0x12, 0xfd, ++ 0x41, 0x1e, 0xc7, 0xa8, 0x09, 0x2b, 0xbf, 0x63, 0x71, 0xe4, 0x50, 0xc6, ++ 0xd7, 0x46, 0xea, 0x31, 0x72, 0x18, 0xbe, 0xb2, 0xb8, 0xda, 0xe5, 0xe0, ++ 0xfd, 0x6b, 0xf1, 0x31, 0x44, 0xe7, 0xeb, 0x83, 0xc4, 0x4b, 0xc7, 0x57, ++ 0xf1, 0xf5, 0xf0, 0x3f, 0xea, 0x5c, 0xae, 0xa7, 0xd8, 0x82, 0x53, 0x75, ++ 0xd3, 0x7e, 0xf6, 0xfd, 0x62, 0x9f, 0x45, 0xe2, 0x4b, 0xc2, 0xdb, 0x21, ++ 0xf2, 0xf0, 0x3a, 0x9e, 0x57, 0x29, 0x1e, 0xd4, 0xd8, 0x7c, 0x88, 0xf4, ++ 0x69, 0xac, 0x3c, 0x57, 0xf7, 0x72, 0x0e, 0xe2, 0x3e, 0x9d, 0xc7, 0x5b, ++ 0xab, 0x5b, 0x0f, 0x14, 0xa0, 0xde, 0xe9, 0x38, 0xf8, 0x0a, 0xf1, 0x5d, ++ 0xf5, 0xce, 0x0f, 0xf4, 0x10, 0xf4, 0x73, 0x64, 0xc7, 0x4b, 0x3a, 0xb7, ++ 0x27, 0x39, 0x9f, 0xa3, 0x9e, 0x0e, 0x9b, 0xf4, 0x74, 0xc7, 0x8b, 0x07, ++ 0x0a, 0x78, 0xdc, 0x8f, 0xe7, 0xdd, 0xc6, 0xf6, 0x5f, 0x21, 0xfa, 0xaf, ++ 0xd9, 0x6b, 0xed, 0xbf, 0x66, 0xe7, 0xe7, 0x96, 0xfe, 0x2b, 0x42, 0xcd, ++ 0xb4, 0xff, 0x75, 0xb9, 0x71, 0xce, 0x68, 0x81, 0xbb, 0x70, 0xbe, 0x67, ++ 0xda, 0xec, 0x0c, 0xf5, 0xdd, 0x99, 0x66, 0x75, 0x4a, 0x38, 0x9e, 0x1d, ++ 0xa8, 0xdb, 0x2d, 0xfb, 0xa0, 0x8d, 0xc7, 0x74, 0x5a, 0xaf, 0x46, 0xbf, ++ 0x95, 0x40, 0xf9, 0xb9, 0x4b, 0x8e, 0x4d, 0x79, 0x37, 0x09, 0xf7, 0xe9, ++ 0x40, 0xcc, 0xd0, 0xfe, 0x6d, 0xa9, 0xe7, 0x7c, 0xd5, 0xf2, 0xa3, 0x40, ++ 0x3f, 0xa4, 0x4b, 0xcb, 0xb1, 0x7b, 0x54, 0x5c, 0x37, 0xf6, 0x20, 0x1e, ++ 0x4d, 0x76, 0x70, 0xe1, 0xf1, 0xda, 0x62, 0x0f, 0xc8, 0x6b, 0xe1, 0x7b, ++ 0xa5, 0xa3, 0x91, 0xad, 0x62, 0xf5, 0xc0, 0xd8, 0x13, 0x36, 0x0b, 0xdc, ++ 0x30, 0x4e, 0x06, 0xea, 0xe3, 0x06, 0xe8, 0x07, 0xf3, 0xe9, 0x31, 0x7f, ++ 0x08, 0xf7, 0x47, 0x55, 0x6f, 0xc9, 0x14, 0x84, 0x47, 0x35, 0x6c, 0x86, ++ 0x2b, 0xee, 0xfa, 0xc9, 0xfb, 0xb3, 0xbb, 0x4b, 0x19, 0xda, 0xe5, 0x76, ++ 0xc3, 0x9a, 0xaf, 0x9c, 0x39, 0x5d, 0xc4, 0xd1, 0x22, 0xd6, 0xbc, 0xf5, ++ 0x4c, 0x9d, 0x0d, 0xc5, 0x7d, 0x70, 0x66, 0x4b, 0xf0, 0xe3, 0x7e, 0xc0, ++ 0xe2, 0x61, 0x81, 0x11, 0x87, 0x31, 0xaf, 0x7e, 0x5e, 0x26, 0xc5, 0x89, ++ 0xb3, 0x6e, 0xe3, 0xed, 0xce, 0x1a, 0xee, 0x90, 0xed, 0xda, 0xe8, 0xbe, ++ 0x6d, 0xe2, 0x45, 0xe8, 0x1f, 0xf3, 0x60, 0x6c, 0xe1, 0xf5, 0x33, 0xa1, ++ 0x5d, 0xa2, 0xd6, 0xac, 0xe0, 0x3e, 0x00, 0x3c, 0x19, 0xd2, 0xe5, 0x01, ++ 0x5b, 0x70, 0xab, 0x9e, 0x86, 0xf5, 0x74, 0xe6, 0x03, 0xd5, 0xf8, 0xb4, ++ 0xae, 0x68, 0x94, 0x7f, 0x21, 0xce, 0xbd, 0xc8, 0xfe, 0x64, 0xbd, 0xde, ++ 0xf6, 0x83, 0xe5, 0x39, 0x24, 0x55, 0xc0, 0x3f, 0x48, 0xec, 0x07, 0x0f, ++ 0x60, 0xed, 0x0a, 0xee, 0x07, 0x6f, 0xf2, 0xf0, 0xf3, 0x48, 0x03, 0xdd, ++ 0xa9, 0x74, 0xde, 0x68, 0x9b, 0xb0, 0xdb, 0x7c, 0xb8, 0xef, 0x8a, 0xf5, ++ 0x6a, 0xad, 0xeb, 0xf6, 0x65, 0xcf, 0x23, 0xad, 0xb4, 0x96, 0x53, 0x8b, ++ 0x8b, 0x16, 0x0d, 0xf4, 0x33, 0xf6, 0x61, 0xe3, 0x83, 0xc5, 0x1a, 0xe8, ++ 0x83, 0xd4, 0xbb, 0x8a, 0x76, 0xf5, 0x33, 0x70, 0x5f, 0x7a, 0x43, 0x31, ++ 0xe6, 0xdd, 0xa7, 0x3e, 0x5b, 0x34, 0x22, 0x0b, 0xca, 0x77, 0x39, 0x86, ++ 0x4f, 0xa2, 0xef, 0xbf, 0x2e, 0x1a, 0x91, 0x0d, 0xe5, 0x5a, 0xe7, 0xb8, ++ 0x49, 0xf4, 0xbd, 0x42, 0xa1, 0xbc, 0xc0, 0x7d, 0x7a, 0x67, 0x71, 0x28, ++ 0x3f, 0x2a, 0x9f, 0x69, 0x60, 0xdc, 0x62, 0xbe, 0x05, 0xc8, 0xed, 0x41, ++ 0x94, 0xdb, 0xb3, 0xa5, 0x1d, 0x8d, 0xf8, 0xb5, 0xea, 0x8e, 0x2f, 0x74, ++ 0x7e, 0x1e, 0x86, 0x95, 0xe2, 0xfc, 0x07, 0x8c, 0xe3, 0xf3, 0xef, 0xef, ++ 0x7e, 0x6f, 0x17, 0xce, 0x77, 0xa0, 0xad, 0xbd, 0x1e, 0xf9, 0xef, 0xc7, ++ 0xfb, 0xbe, 0x4c, 0xc6, 0x7a, 0x3e, 0x66, 0xd0, 0x3c, 0x0d, 0xd6, 0x60, ++ 0xe0, 0xbe, 0x3c, 0xbc, 0x1a, 0xf7, 0xf5, 0x25, 0xf2, 0x7f, 0x62, 0xf3, ++ 0x60, 0x24, 0xbf, 0x6f, 0x4b, 0x0c, 0xfe, 0x06, 0xe1, 0x58, 0x35, 0x7b, ++ 0xe8, 0x13, 0x25, 0xa8, 0x53, 0x2b, 0xfd, 0xc4, 0x47, 0xb1, 0xfb, 0xc4, ++ 0xcc, 0x48, 0x25, 0xba, 0xcc, 0x15, 0x74, 0x41, 0x38, 0x9d, 0xa6, 0x3c, ++ 0xe4, 0x05, 0x6a, 0x88, 0xf2, 0x5e, 0xf0, 0x44, 0x02, 0xe5, 0xf5, 0xb0, ++ 0x49, 0x06, 0x8e, 0xa7, 0x84, 0x2a, 0xd5, 0xaf, 0xaf, 0xf9, 0xe6, 0x70, ++ 0x9d, 0xd6, 0x45, 0xbe, 0x81, 0x38, 0x0f, 0x66, 0x3a, 0x2f, 0x75, 0x06, ++ 0xe1, 0x5d, 0x97, 0x18, 0xa4, 0x67, 0xec, 0x79, 0xa9, 0x83, 0x7a, 0x69, ++ 0x07, 0xbe, 0xcf, 0x9a, 0x7f, 0x31, 0x1b, 0xe7, 0x21, 0xcf, 0x41, 0x15, ++ 0x2f, 0x70, 0x53, 0x7c, 0xe0, 0xfc, 0x5e, 0x16, 0x76, 0xc4, 0x91, 0x23, ++ 0xf9, 0xdc, 0x5a, 0xc7, 0xd2, 0xb4, 0xc1, 0xbd, 0x7f, 0xff, 0x8d, 0x23, ++ 0xf8, 0x1f, 0xd8, 0x7f, 0xee, 0x2f, 0x7d, 0xbb, 0x8f, 0x42, 0x7f, 0xd7, ++ 0xce, 0xd5, 0xfd, 0x98, 0xc2, 0x76, 0xed, 0xd2, 0xd1, 0x69, 0xda, 0x28, ++ 0xc6, 0x27, 0x84, 0x76, 0x85, 0xa0, 0x5f, 0x26, 0xd2, 0x14, 0xe5, 0xec, ++ 0x41, 0xc6, 0xcf, 0xe7, 0x38, 0x94, 0x00, 0xfa, 0x8f, 0x9d, 0xdf, 0x35, ++ 0x48, 0x0f, 0xf7, 0x9f, 0x3b, 0x95, 0xfc, 0x8c, 0xce, 0xc4, 0x9c, 0x66, ++ 0xcc, 0xa3, 0xe8, 0xfc, 0x21, 0xcf, 0x07, 0x80, 0x95, 0x5e, 0x41, 0x79, ++ 0x18, 0xb0, 0x37, 0x29, 0x82, 0x7e, 0x10, 0xf0, 0xf3, 0x17, 0x31, 0xfc, ++ 0xfc, 0x85, 0x75, 0xbd, 0xb1, 0x8e, 0xdb, 0xf9, 0xb5, 0xaf, 0xb5, 0x9d, ++ 0xfa, 0x33, 0x44, 0x7f, 0x60, 0xf0, 0xa4, 0xa3, 0xfc, 0xf0, 0xbf, 0x4e, ++ 0x95, 0xdb, 0xdb, 0x9d, 0x75, 0x3e, 0x82, 0x03, 0xcc, 0xc3, 0x03, 0xb8, ++ 0xae, 0x5e, 0xe9, 0x78, 0x59, 0x0e, 0x11, 0x0f, 0x17, 0xf4, 0x01, 0xbc, ++ 0xf7, 0x73, 0x98, 0xf0, 0x3e, 0xd0, 0xd1, 0x2b, 0xfd, 0x72, 0x1d, 0x9c, ++ 0x7e, 0xf4, 0x8c, 0xa5, 0xdf, 0x7c, 0x67, 0x6d, 0x36, 0xca, 0x73, 0x79, ++ 0x69, 0x73, 0x09, 0xba, 0xa8, 0xbf, 0xd5, 0x83, 0x57, 0x61, 0xbd, 0xd3, ++ 0xf3, 0x8f, 0x34, 0xda, 0xa1, 0x5e, 0xd5, 0xcc, 0xda, 0x3c, 0x64, 0xf6, ++ 0x9e, 0x74, 0xe5, 0xe7, 0xb1, 0xd2, 0xf7, 0xce, 0xaa, 0xb7, 0x63, 0xbc, ++ 0x02, 0xe9, 0xe2, 0xeb, 0x49, 0xbf, 0x6b, 0x97, 0xfa, 0xd3, 0xb4, 0x3e, ++ 0x16, 0x7a, 0x8e, 0x72, 0x40, 0x3f, 0xd7, 0xee, 0xfd, 0xdc, 0x86, 0x70, ++ 0x4b, 0x3a, 0x3e, 0x21, 0xf2, 0xfc, 0x63, 0xdb, 0xff, 0x83, 0x43, 0x11, ++ 0xe3, 0x56, 0xd6, 0xdb, 0x31, 0x4e, 0xd2, 0xaa, 0x93, 0x3d, 0x1b, 0x5b, ++ 0x6f, 0x0a, 0x1e, 0xaa, 0x1a, 0x13, 0x2d, 0x17, 0x38, 0x0b, 0x69, 0xdc, ++ 0x0c, 0x1b, 0x8f, 0x77, 0xf4, 0xac, 0xcf, 0xd7, 0xbf, 0x68, 0xbf, 0x4e, ++ 0x3a, 0x97, 0xd5, 0x1b, 0x1f, 0x16, 0x18, 0xbc, 0x3f, 0xc0, 0xfb, 0xb7, ++ 0x11, 0x7e, 0x89, 0xf7, 0x5b, 0x1c, 0x42, 0xdf, 0xf6, 0xc4, 0xfb, 0x34, ++ 0xac, 0x07, 0x78, 0xa7, 0xe7, 0x15, 0xe0, 0xfd, 0xce, 0x4b, 0xe1, 0x5d, ++ 0xda, 0xcf, 0x15, 0x42, 0x1f, 0x54, 0xe0, 0xfe, 0x09, 0xf0, 0xcd, 0xc7, ++ 0x81, 0xe9, 0xe9, 0x83, 0x61, 0xdc, 0x12, 0xd5, 0x4d, 0x7c, 0xbf, 0xf0, ++ 0x19, 0x95, 0xe4, 0x0d, 0xea, 0x4f, 0xcd, 0x4a, 0x8f, 0xea, 0x8f, 0x85, ++ 0xe3, 0x6b, 0x0f, 0xe0, 0x3c, 0x17, 0x6e, 0x56, 0x88, 0x3f, 0xe7, 0x8a, ++ 0xf3, 0xa5, 0x9f, 0x89, 0x7c, 0xfe, 0xd8, 0x3c, 0xa8, 0xf9, 0x33, 0x42, ++ 0xb4, 0xaf, 0xd3, 0x23, 0x1f, 0x2a, 0x1c, 0xe3, 0xcf, 0xc5, 0xe4, 0xb9, ++ 0x57, 0x47, 0xf9, 0x74, 0x20, 0xcf, 0x4f, 0xe3, 0xe7, 0xb5, 0x54, 0x21, ++ 0x07, 0xc5, 0x0b, 0xf2, 0x93, 0xd0, 0x0e, 0xda, 0x6f, 0xf7, 0xfd, 0x9a, ++ 0xec, 0xeb, 0x37, 0x54, 0xb6, 0x35, 0x0e, 0xde, 0x89, 0xb9, 0xd2, 0xa2, ++ 0xe5, 0x01, 0xb5, 0x36, 0x4b, 0x7e, 0x2c, 0x9b, 0x9b, 0x6c, 0xe9, 0x77, ++ 0xd2, 0x82, 0x7c, 0xda, 0xef, 0x5e, 0xec, 0xf1, 0x5d, 0xd2, 0x9f, 0x1a, ++ 0xb8, 0xd4, 0xba, 0x5e, 0xe7, 0x84, 0xac, 0xe7, 0x8b, 0x06, 0xad, 0xb4, ++ 0x9e, 0x2f, 0x1a, 0xd2, 0xd4, 0xd7, 0x52, 0xff, 0xaa, 0x8d, 0xb9, 0x96, ++ 0xef, 0xc3, 0xc2, 0x57, 0x5b, 0xbe, 0x5f, 0xb3, 0x63, 0xa4, 0xa5, 0x3c, ++ 0xbc, 0xf9, 0x3a, 0x4b, 0xfd, 0x6b, 0x5b, 0x27, 0x5a, 0xca, 0x23, 0x22, ++ 0xdf, 0xb6, 0xd4, 0x1f, 0x75, 0x74, 0xba, 0xa5, 0x3c, 0xa6, 0xed, 0x1e, ++ 0x4b, 0xfd, 0xb1, 0x27, 0x66, 0x5b, 0xbe, 0x8f, 0x6f, 0x2f, 0xb7, 0x7c, ++ 0xbf, 0xfe, 0x93, 0xc5, 0x96, 0xf2, 0xb7, 0xba, 0x7e, 0x60, 0xb5, 0x4f, ++ 0x6c, 0x8c, 0xf4, 0x21, 0x4b, 0x50, 0x48, 0x3f, 0xbe, 0x56, 0x37, 0x2e, ++ 0x1b, 0xf3, 0xb0, 0xd9, 0x68, 0x65, 0x12, 0xe2, 0xb3, 0x58, 0xe4, 0x11, ++ 0xbe, 0xb6, 0x48, 0xb7, 0x19, 0x5e, 0x7c, 0xe6, 0xd9, 0x0c, 0xd0, 0x53, ++ 0x07, 0xe7, 0x4d, 0xa5, 0xf5, 0xfe, 0xb5, 0x45, 0xe9, 0x01, 0x1f, 0x3d, ++ 0x0b, 0x03, 0xe8, 0xcf, 0x30, 0x75, 0xc2, 0xe8, 0x78, 0x79, 0x9a, 0x93, ++ 0x8d, 0xf1, 0xd9, 0xe6, 0x7c, 0xa8, 0x62, 0xa7, 0xdd, 0xa2, 0xcf, 0x26, ++ 0x1b, 0xd6, 0xf2, 0xcb, 0x92, 0x6f, 0x06, 0x72, 0xbe, 0x79, 0x35, 0x46, ++ 0x9f, 0xd9, 0x6b, 0x27, 0x44, 0xc0, 0x22, 0x64, 0x7d, 0x17, 0x0e, 0xce, ++ 0xc0, 0xf1, 0x40, 0xbe, 0xf6, 0x09, 0xbd, 0xb6, 0xef, 0x0a, 0xf5, 0xda, ++ 0x41, 0x94, 0xc3, 0xd3, 0xe9, 0x91, 0x46, 0x2c, 0x4b, 0xf9, 0x62, 0x62, ++ 0x5d, 0x2d, 0x12, 0x7c, 0x04, 0xcf, 0x80, 0x8e, 0xf9, 0x90, 0x93, 0x3c, ++ 0xb4, 0xfe, 0x06, 0xf0, 0xa5, 0x8f, 0xde, 0x87, 0x34, 0x90, 0x93, 0x89, ++ 0x4e, 0x7f, 0xff, 0xc3, 0x38, 0x1f, 0x9b, 0x3f, 0x15, 0x99, 0x6f, 0xd2, ++ 0x8c, 0xd2, 0xd7, 0x78, 0x6e, 0xa5, 0x58, 0x7f, 0xd9, 0x50, 0xdb, 0x37, ++ 0x59, 0x7f, 0xa5, 0x7c, 0x67, 0xda, 0x44, 0xbe, 0x5a, 0x0a, 0xcf, 0x57, ++ 0x7b, 0x72, 0x5e, 0x5e, 0x12, 0x33, 0xe1, 0xf5, 0x5d, 0x87, 0x4d, 0xd8, ++ 0xcd, 0x4d, 0xfc, 0x69, 0x1c, 0x75, 0x75, 0xe7, 0xa9, 0xe6, 0x9a, 0xdf, ++ 0x7f, 0x92, 0xa0, 0x99, 0xf2, 0xe3, 0x94, 0x05, 0x53, 0x29, 0x3f, 0x24, ++ 0xb3, 0x17, 0x3d, 0xa8, 0x67, 0xe6, 0xde, 0xb4, 0x1d, 0xf4, 0xaf, 0x9e, ++ 0xe5, 0xa3, 0xa7, 0x7c, 0xdf, 0x38, 0xc3, 0x16, 0x37, 0xef, 0xeb, 0x9c, ++ 0xd0, 0x9b, 0xd2, 0xbe, 0x1a, 0x16, 0xb5, 0xaf, 0xce, 0x21, 0x1d, 0xce, ++ 0x66, 0xbe, 0xf5, 0x38, 0xe6, 0x25, 0x55, 0xcf, 0xec, 0x22, 0xfb, 0x2a, ++ 0xd3, 0xd6, 0xb4, 0xe8, 0x08, 0xce, 0xeb, 0x57, 0xaa, 0x88, 0x57, 0xfa, ++ 0xf8, 0x79, 0x2a, 0x61, 0x17, 0xcf, 0xbb, 0xe9, 0xd1, 0x45, 0x47, 0x70, ++ 0x1f, 0xfa, 0x5f, 0x87, 0x90, 0x5e, 0x92, 0xe3, 0x6c, 0xaa, 0x9b, 0x72, ++ 0x93, 0x66, 0x3a, 0x37, 0xde, 0xbf, 0x17, 0x3f, 0x69, 0x98, 0x93, 0xaf, ++ 0x0f, 0x4f, 0xd7, 0x0d, 0xbd, 0x69, 0x2e, 0xe5, 0x69, 0x1b, 0xfc, 0x7c, ++ 0xa8, 0xe8, 0x3f, 0x3b, 0x54, 0x55, 0x82, 0x76, 0xf2, 0x40, 0x91, 0x5f, ++ 0xfa, 0xb8, 0x2d, 0x7e, 0x7e, 0x4b, 0x82, 0x93, 0xcf, 0x2b, 0x03, 0x49, ++ 0x8e, 0xf0, 0x1a, 0x6e, 0x92, 0x8f, 0xb3, 0xf3, 0xdf, 0xf3, 0x6a, 0x30, ++ 0x8f, 0xa7, 0x6c, 0xc1, 0x04, 0x27, 0xee, 0xd3, 0x5e, 0xdb, 0x56, 0xc8, ++ 0xfd, 0xbc, 0x80, 0x1f, 0xcf, 0x9d, 0x66, 0x47, 0xee, 0x7d, 0x1c, 0xeb, ++ 0x67, 0x67, 0x6a, 0x94, 0xdf, 0x1a, 0x3b, 0x7e, 0xc6, 0xcc, 0xe0, 0xca, ++ 0x1c, 0x98, 0x5f, 0x43, 0x8a, 0xcd, 0xef, 0xa6, 0x72, 0x97, 0x82, 0xf5, ++ 0x1d, 0x0f, 0x31, 0xd6, 0x07, 0xea, 0x37, 0xfc, 0xa7, 0x4a, 0xf0, 0x34, ++ 0x1c, 0x1c, 0x4f, 0xf9, 0x1e, 0x0e, 0x77, 0x2d, 0x43, 0xfb, 0x55, 0xce, ++ 0xeb, 0x50, 0xca, 0x53, 0x84, 0x1f, 0xb5, 0x25, 0x91, 0xd6, 0x3d, 0x26, ++ 0xf6, 0xc1, 0x65, 0x7c, 0xf5, 0x42, 0xe6, 0xdc, 0x36, 0xb4, 0x2b, 0x2e, ++ 0x6c, 0xb0, 0xd3, 0x78, 0x17, 0x60, 0x8e, 0x06, 0xf4, 0x7f, 0xa1, 0x45, ++ 0xa5, 0x7d, 0xd6, 0x23, 0x29, 0x09, 0x11, 0x1b, 0x94, 0xd5, 0x95, 0x1e, ++ 0x52, 0xa9, 0xd9, 0x68, 0x6b, 0x42, 0xfd, 0xf9, 0x2d, 0x9e, 0xb0, 0x2f, ++ 0x27, 0x8a, 0x17, 0x6d, 0xe3, 0x04, 0x3a, 0xff, 0xe2, 0xe8, 0xcf, 0xe7, ++ 0xdf, 0x90, 0xe2, 0x0e, 0xbb, 0x73, 0x68, 0xde, 0x29, 0x38, 0x6f, 0x09, ++ 0xa7, 0x9c, 0xf7, 0x80, 0x5e, 0xfc, 0xca, 0x1b, 0x04, 0x1e, 0xb3, 0xae, ++ 0xea, 0x3e, 0x97, 0xc1, 0x90, 0x8f, 0x55, 0x43, 0xa3, 0x7e, 0xe7, 0x25, ++ 0xf3, 0x73, 0x97, 0xe1, 0xba, 0x71, 0x82, 0x5e, 0xd6, 0xf9, 0x34, 0x66, ++ 0x4e, 0xbf, 0xf5, 0x6e, 0x3c, 0x2f, 0x74, 0x5c, 0x65, 0x98, 0x0a, 0xe2, ++ 0x6b, 0x6f, 0xa2, 0xf9, 0xcf, 0x87, 0xf9, 0x63, 0x7c, 0x37, 0x16, 0xbf, ++ 0x67, 0x7d, 0x39, 0x5f, 0xd8, 0x54, 0x82, 0xf3, 0x06, 0x84, 0x53, 0xdd, ++ 0x58, 0x42, 0xf3, 0xa0, 0x7a, 0xd0, 0xae, 0xea, 0xc7, 0x0a, 0x7b, 0x2a, ++ 0x07, 0xf9, 0x30, 0x38, 0x85, 0xe8, 0xda, 0xd7, 0x46, 0xe7, 0x00, 0x63, ++ 0xe1, 0x2e, 0x71, 0xf2, 0x38, 0xeb, 0x8d, 0x4e, 0x1e, 0x0f, 0xd0, 0x33, ++ 0xf3, 0x6e, 0xda, 0xde, 0x07, 0x9f, 0x83, 0x49, 0x2e, 0x6e, 0x76, 0xf6, ++ 0xba, 0xce, 0xdf, 0xe2, 0xe4, 0x7a, 0x88, 0x9e, 0x57, 0x7e, 0x9f, 0x40, ++ 0xc4, 0xb2, 0xce, 0xab, 0x01, 0x1b, 0xd9, 0x41, 0xb1, 0x70, 0x81, 0xde, ++ 0xba, 0xdb, 0x69, 0xb2, 0x6b, 0xd4, 0xa4, 0x87, 0x0a, 0xb0, 0xdf, 0xde, ++ 0xed, 0xb1, 0x5d, 0x07, 0x74, 0xb4, 0xc7, 0xdc, 0x8c, 0xec, 0x64, 0xa9, ++ 0x2f, 0x7b, 0xb3, 0xc7, 0xd0, 0x0e, 0x43, 0x7e, 0x93, 0x76, 0xd8, 0x02, ++ 0xa7, 0x55, 0xef, 0xc2, 0xfc, 0xca, 0xc5, 0xfc, 0xca, 0xe3, 0xcd, 0x2f, ++ 0x8e, 0x9e, 0xad, 0xc1, 0x7a, 0xa7, 0xef, 0x89, 0xc4, 0xb5, 0x63, 0xd2, ++ 0xf4, 0xf8, 0x7a, 0x68, 0xb3, 0xc0, 0x7f, 0x8d, 0xa1, 0x33, 0x8a, 0x2b, ++ 0xf5, 0x12, 0x0f, 0x7f, 0xc2, 0x29, 0xed, 0xc1, 0xbd, 0x07, 0x74, 0xc4, ++ 0x2b, 0xcc, 0x13, 0xf1, 0x9a, 0x09, 0xfe, 0x71, 0x09, 0xe9, 0x19, 0x7b, ++ 0xdc, 0xbc, 0xef, 0xcb, 0xf9, 0x19, 0xb9, 0x6b, 0xf2, 0x77, 0x1f, 0xc5, ++ 0xfe, 0xc0, 0x8e, 0x45, 0xee, 0x39, 0xdf, 0xe4, 0x4b, 0x4a, 0xb9, 0x84, ++ 0x1d, 0x61, 0x5f, 0xfa, 0x2b, 0x97, 0x19, 0x8f, 0x8f, 0xc4, 0xf0, 0x07, ++ 0xe0, 0x6d, 0xbd, 0x93, 0xdb, 0x7f, 0xf4, 0xec, 0x81, 0xb7, 0x54, 0xc0, ++ 0x9b, 0xcd, 0x82, 0xb7, 0xc7, 0x9d, 0x97, 0xb4, 0xff, 0xb8, 0xbe, 0xed, ++ 0x2b, 0xce, 0x0f, 0x9c, 0x13, 0x78, 0x02, 0xbd, 0xfb, 0x7d, 0xec, 0xff, ++ 0xec, 0x6d, 0xe7, 0xee, 0x44, 0xdf, 0xb0, 0xea, 0xb6, 0xaf, 0x84, 0x5f, ++ 0xcb, 0xeb, 0xa7, 0x0b, 0xfd, 0x0c, 0x7e, 0xef, 0x3f, 0x7c, 0xec, 0xa3, ++ 0xfa, 0x4b, 0x70, 0x9c, 0xa8, 0xff, 0xdb, 0x5e, 0x88, 0x7e, 0xcf, 0xf2, ++ 0x97, 0xaf, 0x4a, 0x42, 0xfb, 0x69, 0xd2, 0x9e, 0xbb, 0x0d, 0x7c, 0x9e, ++ 0x4f, 0x1d, 0x4c, 0xeb, 0xcf, 0xd9, 0x3d, 0x8e, 0x00, 0x8e, 0x73, 0x36, ++ 0x85, 0xe7, 0xd3, 0x9d, 0xdd, 0x33, 0xf6, 0x08, 0xc6, 0x07, 0x3e, 0xab, ++ 0x3b, 0x9a, 0x6b, 0xd6, 0xcf, 0x67, 0x5f, 0x3c, 0x56, 0x68, 0x87, 0x7e, ++ 0xce, 0xee, 0x3e, 0x56, 0xa8, 0x51, 0xfe, 0x6e, 0xd8, 0x62, 0x8f, 0x57, ++ 0x7d, 0xfd, 0x9b, 0x42, 0x3c, 0x27, 0x25, 0xf3, 0x9e, 0xbb, 0xe9, 0xec, ++ 0xe4, 0x7a, 0x7d, 0x83, 0x8b, 0xc7, 0x1d, 0xd2, 0xd2, 0xf5, 0x46, 0xcc, ++ 0xe7, 0xee, 0x48, 0x48, 0xa6, 0x79, 0x3f, 0x96, 0x6e, 0x7b, 0x24, 0x5e, ++ 0x3c, 0x05, 0xd5, 0x1d, 0xed, 0xab, 0x7b, 0x74, 0xda, 0x47, 0x5c, 0x3c, ++ 0xcc, 0xb7, 0xdc, 0x8d, 0xf1, 0x94, 0x1c, 0x83, 0xf2, 0x64, 0x97, 0x2b, ++ 0x81, 0xac, 0x79, 0xb8, 0x0f, 0x32, 0xcd, 0xe9, 0xc7, 0x38, 0x7d, 0x6a, ++ 0x2e, 0x1b, 0x9a, 0x93, 0x84, 0xa1, 0xc6, 0x20, 0x73, 0x03, 0x0b, 0x39, ++ 0x5e, 0x6b, 0xa2, 0xe3, 0xa0, 0x09, 0x6d, 0xc6, 0x01, 0x34, 0x63, 0x64, ++ 0x9c, 0x45, 0x2b, 0xe6, 0xfa, 0xb1, 0xeb, 0x0e, 0x9d, 0xf2, 0xba, 0x12, ++ 0x35, 0xdf, 0x13, 0x33, 0xa1, 0x9c, 0x39, 0x43, 0xa3, 0xf5, 0x49, 0xc6, ++ 0x5d, 0xfe, 0x9c, 0x90, 0x42, 0xf0, 0xc9, 0xb8, 0x4b, 0x37, 0x3c, 0x6f, ++ 0xd8, 0x69, 0xdd, 0x58, 0x9c, 0x13, 0x6c, 0x2a, 0x82, 0x76, 0x8b, 0xc7, ++ 0xa7, 0x50, 0x3b, 0xef, 0xb4, 0xb7, 0x89, 0xde, 0x9d, 0x3e, 0x5b, 0xc8, ++ 0x8e, 0xf3, 0xd1, 0xba, 0x28, 0xfe, 0xf2, 0x4f, 0x75, 0x43, 0xd3, 0x06, ++ 0x03, 0x1e, 0x8d, 0x2c, 0xdb, 0x4d, 0x64, 0x83, 0x7c, 0x05, 0xd8, 0x32, ++ 0xe5, 0xe7, 0x7b, 0x35, 0x16, 0x4a, 0x02, 0x7b, 0x64, 0x0d, 0xf0, 0xef, ++ 0x60, 0xe0, 0xdf, 0x96, 0x3a, 0x27, 0xd5, 0x6f, 0x04, 0x3b, 0xce, 0x48, ++ 0xa1, 0x7b, 0x0c, 0xa2, 0xf7, 0x70, 0x98, 0xf8, 0x7e, 0x77, 0x9d, 0x41, ++ 0xf5, 0x7e, 0x52, 0x97, 0x49, 0xed, 0x1e, 0xad, 0xf3, 0xd1, 0xb3, 0x7b, ++ 0xdd, 0x67, 0xbc, 0x1d, 0x95, 0xe3, 0xe8, 0xc3, 0xbf, 0xd7, 0x73, 0x5d, ++ 0x1d, 0xbf, 0xef, 0x43, 0x96, 0xff, 0x7d, 0x34, 0xd8, 0x55, 0x40, 0xef, ++ 0xd4, 0xb1, 0x40, 0x55, 0xc0, 0x4b, 0xaa, 0x38, 0x1f, 0x2e, 0xbf, 0x3f, ++ 0x55, 0xf7, 0xc6, 0xa0, 0x49, 0x83, 0x05, 0x32, 0x00, 0x9f, 0x7d, 0x2b, ++ 0x8d, 0x2d, 0xab, 0x2f, 0x01, 0x6f, 0xaa, 0x23, 0x9c, 0x8c, 0x47, 0x80, ++ 0x07, 0xba, 0x58, 0x68, 0x52, 0x26, 0xe6, 0xe1, 0x75, 0x3d, 0x52, 0x92, ++ 0x8c, 0xe7, 0x17, 0xea, 0x27, 0x4d, 0x1a, 0x06, 0x78, 0xc4, 0xfd, 0xe7, ++ 0xeb, 0xc0, 0x95, 0x70, 0xad, 0x6d, 0x08, 0x4d, 0x00, 0x7e, 0xa8, 0xf4, ++ 0xd5, 0x63, 0x5c, 0x2e, 0xab, 0x55, 0x69, 0xc6, 0xf5, 0x26, 0xab, 0x75, ++ 0x7d, 0x11, 0xc6, 0xf9, 0xa1, 0x1e, 0x9d, 0xeb, 0x93, 0xfd, 0xba, 0x5c, ++ 0x5c, 0x3f, 0x25, 0x1e, 0x7a, 0x52, 0xc9, 0x1d, 0x8e, 0xc1, 0x7f, 0xbe, ++ 0x6f, 0xce, 0xf6, 0x25, 0x86, 0xe3, 0x9d, 0xff, 0x1c, 0xea, 0xe2, 0x7a, ++ 0x6a, 0xb0, 0x68, 0xb7, 0x46, 0xec, 0x7b, 0x77, 0x4d, 0x73, 0xd3, 0x3d, ++ 0x09, 0x89, 0x87, 0x5c, 0xc4, 0x2f, 0x59, 0x7b, 0xaf, 0xa1, 0xfd, 0x37, ++ 0x77, 0x2f, 0xfb, 0xbe, 0xb1, 0xfd, 0x24, 0x1e, 0xfa, 0x13, 0xc5, 0x69, ++ 0xdd, 0x4a, 0xd3, 0x01, 0xdc, 0x47, 0x64, 0xf3, 0xb8, 0xbd, 0x28, 0xf9, ++ 0xa9, 0xb7, 0x76, 0x58, 0x5f, 0xbf, 0x82, 0xfa, 0x9d, 0x7e, 0x8d, 0xe2, ++ 0xb6, 0x60, 0xa6, 0xd2, 0xfc, 0xce, 0x4e, 0xeb, 0x4f, 0xf8, 0xc6, 0xfa, ++ 0xe6, 0x7b, 0x3c, 0x3a, 0xf5, 0xf8, 0x76, 0xd4, 0x68, 0x17, 0xb7, 0x53, ++ 0x57, 0xd8, 0xe3, 0xeb, 0x6f, 0x8d, 0x71, 0xfb, 0x60, 0x74, 0x5b, 0x17, ++ 0xed, 0x37, 0xe2, 0xbd, 0x4a, 0x88, 0xef, 0xac, 0xe3, 0x4d, 0x0a, 0xfa, ++ 0xd3, 0x67, 0x15, 0x9e, 0x2f, 0xd1, 0x17, 0xf0, 0xb1, 0x1b, 0xca, 0x59, ++ 0x13, 0x9a, 0xe8, 0xde, 0xa5, 0x6d, 0xce, 0xe0, 0x75, 0x2e, 0x80, 0xef, ++ 0x8f, 0xc6, 0x89, 0xbc, 0x15, 0x00, 0x8e, 0x2b, 0xff, 0xf7, 0xd9, 0xd8, ++ 0x4e, 0xe2, 0x43, 0x2d, 0xd0, 0x9d, 0xa8, 0x4f, 0xb2, 0xf6, 0x7e, 0xc0, ++ 0xcf, 0xe1, 0xd8, 0xda, 0x75, 0xcc, 0x4f, 0xfb, 0xce, 0xaa, 0x17, 0x28, ++ 0x3e, 0xa8, 0xea, 0xa5, 0x39, 0xbc, 0x5c, 0xb7, 0x02, 0xe3, 0x87, 0x69, ++ 0xde, 0xd2, 0x2d, 0xc8, 0x27, 0x2c, 0xf4, 0xc2, 0xa4, 0xd7, 0xc0, 0xe7, ++ 0x79, 0x4c, 0x9c, 0x2b, 0xc6, 0x37, 0xa8, 0xf7, 0xd6, 0xb8, 0x44, 0x39, ++ 0xf4, 0x7c, 0x43, 0x00, 0xf8, 0x64, 0x8d, 0x9d, 0x97, 0xbf, 0xb3, 0xea, ++ 0xb9, 0x06, 0x3c, 0x77, 0xbc, 0xc6, 0x5e, 0xba, 0x10, 0xcf, 0x25, 0x63, ++ 0xb9, 0x01, 0xfa, 0x5f, 0x93, 0xdc, 0x9c, 0x69, 0x83, 0xb2, 0xbb, 0xfe, ++ 0xd9, 0x86, 0xa3, 0x03, 0xb0, 0x2c, 0xeb, 0x3f, 0x4b, 0x7c, 0x76, 0xa7, ++ 0x8b, 0x9f, 0xef, 0x61, 0xee, 0xd2, 0x2c, 0xc4, 0x7b, 0x77, 0xd9, 0x80, ++ 0xf2, 0x70, 0x53, 0x59, 0xe3, 0x65, 0xe6, 0xe4, 0x4f, 0x39, 0xbf, 0xaa, ++ 0x43, 0x7f, 0x3a, 0xd2, 0x0f, 0xf8, 0xa5, 0x7a, 0x2f, 0xbf, 0x87, 0xa6, ++ 0x1b, 0x6f, 0xad, 0xeb, 0x15, 0x5c, 0x4f, 0x7e, 0x52, 0x77, 0xd4, 0xd7, ++ 0xa0, 0x09, 0x39, 0x91, 0xfa, 0x03, 0xd6, 0xe5, 0xab, 0x32, 0x19, 0xf9, ++ 0x15, 0x7a, 0x58, 0x09, 0xe7, 0x2a, 0x78, 0x1f, 0xc7, 0xca, 0x74, 0x73, ++ 0x3e, 0xc9, 0xad, 0x89, 0x8a, 0x58, 0x5f, 0xa0, 0xbd, 0x39, 0x2e, 0x18, ++ 0x73, 0xee, 0x8c, 0x8e, 0xb2, 0xe0, 0xfa, 0xda, 0xc0, 0xf3, 0x36, 0x62, ++ 0xe9, 0xfa, 0x46, 0x42, 0x51, 0x43, 0xc2, 0x18, 0x3c, 0x2f, 0x1a, 0x5c, ++ 0xad, 0xa2, 0x1e, 0x7c, 0xc1, 0x6e, 0x50, 0xde, 0x7b, 0xbb, 0x46, 0x7a, ++ 0xbb, 0x43, 0xe6, 0xbd, 0xd7, 0xda, 0xc9, 0x7e, 0xab, 0x14, 0xe7, 0x50, ++ 0xed, 0xcb, 0x82, 0xab, 0x87, 0xa1, 0x5c, 0xdc, 0xab, 0xf9, 0x31, 0x0e, ++ 0x50, 0x91, 0xd3, 0x54, 0x84, 0xf6, 0x4b, 0xc5, 0x2b, 0x39, 0xfe, 0x7a, ++ 0x16, 0xcd, 0xa3, 0xad, 0x48, 0x6e, 0x4e, 0x1f, 0xe9, 0x8e, 0xe6, 0xd1, ++ 0xca, 0xf2, 0x72, 0x11, 0x37, 0xca, 0x48, 0xae, 0x4d, 0x4e, 0xce, 0xc7, ++ 0xfd, 0x92, 0xf5, 0xd9, 0xb8, 0x9f, 0x51, 0xcd, 0x9a, 0xee, 0xfb, 0x01, ++ 0xc2, 0xfb, 0xa6, 0xca, 0x90, 0xdf, 0x3f, 0x3d, 0x30, 0x3e, 0x09, 0xef, ++ 0x05, 0xaa, 0x82, 0x32, 0xc6, 0xa9, 0xaa, 0x5a, 0x8e, 0xe9, 0x41, 0xa8, ++ 0x57, 0x90, 0xc0, 0xef, 0xa3, 0xa9, 0x6e, 0x01, 0xbe, 0x71, 0xf3, 0x7b, ++ 0x62, 0x02, 0x79, 0x8c, 0x6d, 0xd1, 0x8c, 0x04, 0xd4, 0xf3, 0x3f, 0x09, ++ 0xd4, 0x5e, 0x8d, 0x26, 0xec, 0x13, 0xae, 0xa3, 0x93, 0x5c, 0x40, 0xd7, ++ 0x67, 0x73, 0x03, 0x06, 0xd2, 0xf9, 0xa5, 0x55, 0x6f, 0x35, 0x38, 0xbf, ++ 0x05, 0x65, 0xdd, 0x18, 0xc6, 0x46, 0x60, 0xf9, 0x9d, 0x06, 0xe4, 0xb3, ++ 0x8a, 0x11, 0x36, 0xca, 0x83, 0x64, 0xa1, 0x77, 0x5e, 0x0b, 0x0c, 0x16, ++ 0xfb, 0xb1, 0x50, 0x7e, 0xc8, 0x95, 0x31, 0xd9, 0x1c, 0x97, 0xce, 0x12, ++ 0xeb, 0x78, 0xcd, 0x26, 0x37, 0x9d, 0xd7, 0x82, 0x75, 0xf9, 0x71, 0xe4, ++ 0xef, 0xea, 0x8d, 0xb6, 0x10, 0xee, 0x6f, 0xd9, 0x9c, 0x6d, 0x74, 0x4e, ++ 0xe7, 0x25, 0x97, 0x5c, 0xff, 0xad, 0xe7, 0x9b, 0x36, 0x28, 0x5c, 0x1f, ++ 0x86, 0xe6, 0xf1, 0x38, 0xe7, 0x92, 0x9b, 0x52, 0xbe, 0x4d, 0xe7, 0x9b, ++ 0x56, 0xe4, 0x1a, 0xa1, 0x4b, 0xc4, 0x5b, 0xcb, 0x2e, 0x26, 0xd0, 0x39, ++ 0x26, 0x59, 0x2e, 0x48, 0xf0, 0x51, 0xff, 0x65, 0x5a, 0x88, 0xf6, 0x79, ++ 0xca, 0x2e, 0x7a, 0xe9, 0xfc, 0xd3, 0xdf, 0x6e, 0x3c, 0xa7, 0xe5, 0x3c, ++ 0x55, 0xcf, 0xf1, 0xdc, 0x04, 0x8f, 0x1c, 0xaf, 0x32, 0x3a, 0x1e, 0xd1, ++ 0xf5, 0xd0, 0xc8, 0x5f, 0x3d, 0x3e, 0x18, 0xe8, 0xb6, 0x64, 0x97, 0xdd, ++ 0xe6, 0x30, 0xf1, 0xdd, 0x92, 0x5d, 0x62, 0xff, 0xdc, 0x15, 0xc8, 0xc0, ++ 0x7e, 0xd2, 0x74, 0x8e, 0x67, 0x86, 0xfe, 0x1b, 0xf0, 0x1a, 0xdd, 0x41, ++ 0xc3, 0xcb, 0x21, 0x0d, 0xd6, 0x81, 0x75, 0x52, 0xbe, 0x43, 0x1d, 0x0d, ++ 0x93, 0x26, 0x20, 0xdd, 0xa2, 0xdf, 0x99, 0x55, 0xfe, 0x03, 0xe8, 0x3f, ++ 0xaf, 0x4b, 0x90, 0xe5, 0x0b, 0xf1, 0xeb, 0x27, 0xc4, 0xd4, 0xcf, 0x95, ++ 0xfd, 0xff, 0x85, 0xea, 0xc7, 0xc2, 0x93, 0x96, 0x10, 0x2d, 0x3b, 0xa1, ++ 0xbe, 0xf6, 0x17, 0x47, 0x77, 0x19, 0xe1, 0x5b, 0x6f, 0x8b, 0xe9, 0x2f, ++ 0x45, 0x96, 0xf5, 0x15, 0x93, 0xfa, 0x47, 0xf9, 0xea, 0xa1, 0x55, 0xde, ++ 0xc3, 0x21, 0xe0, 0xab, 0x75, 0xc9, 0x4d, 0x45, 0xa8, 0xff, 0xbb, 0xe6, ++ 0x31, 0x1f, 0xde, 0x73, 0x85, 0xfc, 0xea, 0x37, 0xe9, 0xdb, 0x87, 0x5c, ++ 0x5c, 0xcf, 0x96, 0x5d, 0xcc, 0xb5, 0xd0, 0x3b, 0x8a, 0xf7, 0x3c, 0x0b, ++ 0x5d, 0x4e, 0xd7, 0x65, 0x5a, 0xf6, 0x25, 0x17, 0xcc, 0x5c, 0x42, 0xfb, ++ 0xa7, 0x0f, 0xa1, 0xb0, 0x60, 0x3f, 0x2c, 0xc4, 0xcf, 0xc1, 0x6c, 0xea, ++ 0xc7, 0xc2, 0xa6, 0xb8, 0xcd, 0xff, 0x87, 0xe3, 0xaf, 0x85, 0xe3, 0xba, ++ 0x5e, 0xe0, 0xf8, 0x87, 0xff, 0x62, 0x38, 0x7c, 0x96, 0xf1, 0xa2, 0x70, ++ 0x0c, 0xb6, 0xc0, 0xf7, 0xd7, 0xc2, 0xb1, 0xf5, 0xce, 0xbc, 0x6f, 0xe7, ++ 0x40, 0x95, 0xc7, 0x94, 0x90, 0x33, 0x17, 0xd7, 0x85, 0x1f, 0xf1, 0xbc, ++ 0x35, 0x35, 0x79, 0x92, 0xaf, 0x1e, 0xf7, 0x4b, 0x7e, 0xa4, 0x51, 0xdc, ++ 0x7d, 0x08, 0xe3, 0xf9, 0x28, 0xb9, 0x1a, 0x3b, 0xaa, 0x8d, 0x44, 0xf9, ++ 0x69, 0x0a, 0x60, 0xdc, 0x82, 0x2d, 0xe3, 0xf6, 0x0a, 0xbc, 0x5f, 0x69, ++ 0x1f, 0x49, 0xeb, 0x10, 0xf9, 0x0b, 0x83, 0xf6, 0x3a, 0x66, 0x61, 0x5e, ++ 0x45, 0x6e, 0x59, 0x60, 0x21, 0x3e, 0x59, 0xff, 0x7c, 0xda, 0x8f, 0x91, ++ 0xfb, 0x98, 0x4c, 0xc4, 0xf5, 0xe4, 0xfe, 0xcb, 0x10, 0x83, 0x15, 0xe1, ++ 0xbd, 0x7c, 0x6f, 0x27, 0xcc, 0xa2, 0x75, 0x2a, 0xb7, 0x74, 0x66, 0x05, ++ 0xc6, 0xbf, 0x55, 0xcf, 0xe8, 0x04, 0x5c, 0x0f, 0x1f, 0xb3, 0x85, 0x43, ++ 0x38, 0x5e, 0xe8, 0x51, 0x3e, 0x5e, 0x9a, 0x2d, 0xdc, 0xec, 0x44, 0x7b, ++ 0xc9, 0x3b, 0xd8, 0xc0, 0xf5, 0x2e, 0xcd, 0xcb, 0xf5, 0x1f, 0x5b, 0x9d, ++ 0x4f, 0xeb, 0xdf, 0x56, 0x5b, 0xee, 0xd5, 0x8b, 0x00, 0x8e, 0x15, 0x4a, ++ 0x51, 0xc2, 0x1b, 0x88, 0xe7, 0xe4, 0x5c, 0x8a, 0x63, 0xe3, 0x7b, 0xbc, ++ 0x07, 0x67, 0xab, 0x58, 0xb7, 0xd4, 0x64, 0xbf, 0x81, 0xeb, 0xd4, 0x56, ++ 0xb1, 0x6e, 0x2d, 0x17, 0xfa, 0x5d, 0xbe, 0x4f, 0x4c, 0x29, 0x9d, 0x85, ++ 0x76, 0xc4, 0xf2, 0xd5, 0x45, 0x93, 0x9d, 0xe3, 0x51, 0x0f, 0x05, 0x56, ++ 0xf6, 0x81, 0xf5, 0x66, 0xd9, 0xea, 0xa2, 0x15, 0x99, 0xe3, 0x71, 0xbd, ++ 0xf1, 0xe5, 0x3a, 0x61, 0x7d, 0x59, 0x96, 0x50, 0xb4, 0xc2, 0x09, 0x93, ++ 0xd9, 0x5a, 0xef, 0xeb, 0x6b, 0x24, 0x47, 0xcb, 0x43, 0xfe, 0x02, 0xab, ++ 0x35, 0xe9, 0x89, 0xa2, 0x15, 0x68, 0xa7, 0x34, 0xb8, 0x17, 0x97, 0xa3, ++ 0x9d, 0x03, 0xdf, 0x0f, 0xa3, 0x5f, 0xf8, 0x6c, 0x8a, 0xd4, 0x3b, 0xfc, ++ 0x7b, 0xae, 0xd4, 0x53, 0xa8, 0x97, 0x40, 0x8f, 0xa9, 0xf5, 0xdd, 0xe5, ++ 0x10, 0xea, 0xa5, 0xdc, 0x6e, 0xbd, 0x53, 0x44, 0x7a, 0x67, 0xfb, 0xd3, ++ 0x2a, 0x95, 0xcb, 0x60, 0x3c, 0xb4, 0x7b, 0x60, 0x1e, 0x21, 0xbc, 0xbf, ++ 0xab, 0x6b, 0x88, 0x46, 0xfe, 0x91, 0x0b, 0x60, 0x49, 0x80, 0xb2, 0x6b, ++ 0x58, 0x2e, 0xed, 0x6b, 0xc1, 0xbc, 0x59, 0x02, 0xc6, 0xf5, 0x87, 0xf1, ++ 0xef, 0x72, 0x5f, 0x42, 0x1f, 0x62, 0xa3, 0x7d, 0x09, 0xac, 0x8f, 0x78, ++ 0x74, 0x65, 0xf1, 0xfa, 0xfa, 0x34, 0x7e, 0x9e, 0x59, 0xf7, 0xb8, 0xc9, ++ 0x6f, 0x93, 0xfb, 0x1c, 0xaa, 0xd8, 0x57, 0x4b, 0x10, 0x79, 0x24, 0x8a, ++ 0x31, 0x8d, 0xce, 0xd9, 0x3a, 0xd7, 0x8e, 0x5c, 0x8c, 0x7e, 0x94, 0x73, ++ 0xb0, 0x75, 0xff, 0x58, 0x8f, 0xc9, 0x37, 0x51, 0x63, 0xf3, 0x4f, 0xdc, ++ 0x11, 0xb2, 0xbb, 0x1a, 0x12, 0x44, 0x9c, 0xb9, 0x0f, 0xcb, 0xa4, 0x7b, ++ 0x0d, 0xc4, 0x7b, 0xc6, 0xfc, 0x23, 0xf1, 0x99, 0x7e, 0x77, 0x43, 0x11, ++ 0xdd, 0x77, 0xe7, 0x61, 0x06, 0xe6, 0x3b, 0x67, 0x06, 0x23, 0xcc, 0x6c, ++ 0x2f, 0xc9, 0xa7, 0x03, 0xd6, 0x51, 0x9f, 0x49, 0x6e, 0x1c, 0x6e, 0x16, ++ 0x88, 0x97, 0xef, 0x70, 0x4f, 0x22, 0xb7, 0x87, 0xdd, 0x17, 0x35, 0xee, ++ 0x27, 0x2a, 0x60, 0xdf, 0xe0, 0x3a, 0xea, 0x11, 0x76, 0xb8, 0xb0, 0x8f, ++ 0xec, 0xf2, 0x1e, 0xa2, 0x98, 0x75, 0x57, 0xda, 0x4b, 0x76, 0x71, 0xdf, ++ 0xdd, 0x92, 0x9b, 0x26, 0x66, 0xe0, 0xb9, 0x21, 0xd5, 0x1d, 0x70, 0xa2, ++ 0x9d, 0x73, 0xc0, 0x18, 0x49, 0xfb, 0x29, 0x2a, 0xf3, 0xdf, 0x5a, 0x64, ++ 0xb2, 0x77, 0x1a, 0x22, 0x37, 0x51, 0x3c, 0x51, 0x33, 0x02, 0x0c, 0xed, ++ 0x9c, 0xfd, 0xc2, 0xce, 0x51, 0x0d, 0x3f, 0x33, 0xdb, 0x39, 0x8d, 0x75, ++ 0xe0, 0x80, 0xc3, 0x5a, 0xb5, 0xad, 0x30, 0x8f, 0xee, 0x97, 0x79, 0xca, ++ 0x15, 0x71, 0x0e, 0x42, 0xfa, 0x3e, 0x66, 0xf3, 0xa3, 0xde, 0x38, 0x34, ++ 0xb2, 0x3c, 0xa4, 0x60, 0x3c, 0x71, 0x29, 0x23, 0x39, 0xdd, 0x56, 0x98, ++ 0x3e, 0x11, 0xf7, 0x03, 0xb6, 0x68, 0xa5, 0x49, 0xf7, 0xa2, 0xbc, 0x1c, ++ 0x87, 0xf1, 0x7c, 0x9c, 0x6e, 0x7c, 0xff, 0x79, 0xb9, 0x82, 0xf1, 0xef, ++ 0x0b, 0xce, 0xd2, 0x24, 0xd4, 0x07, 0xeb, 0x92, 0x99, 0xc5, 0x8f, 0x2a, ++ 0x4e, 0xe4, 0xfe, 0xc8, 0x93, 0x09, 0xdc, 0xee, 0x94, 0x7e, 0x42, 0x23, ++ 0xc0, 0x13, 0x01, 0x38, 0xb4, 0x8b, 0x57, 0xd3, 0x7d, 0x3b, 0x43, 0x84, ++ 0x5d, 0xaa, 0xcf, 0x9c, 0x44, 0xf1, 0x2d, 0x4c, 0xd3, 0xc1, 0x78, 0xa5, ++ 0x83, 0xd5, 0x86, 0x0c, 0x77, 0xf4, 0x3e, 0x39, 0x47, 0xa6, 0xcd, 0x92, ++ 0x9f, 0xa8, 0x5d, 0x2c, 0xa0, 0xf8, 0xdf, 0x93, 0x09, 0x36, 0xcb, 0xfe, ++ 0xd1, 0xc3, 0xe2, 0x3e, 0x40, 0x59, 0x76, 0xb2, 0x5a, 0x1e, 0xe7, 0x05, ++ 0x9e, 0x8e, 0xe7, 0xbf, 0xcd, 0x12, 0x70, 0x3a, 0xc0, 0x1e, 0xf2, 0x91, ++ 0x7d, 0x12, 0xb3, 0x3f, 0xdf, 0xd3, 0x3e, 0x22, 0x7b, 0x45, 0xd2, 0xa7, ++ 0xdb, 0x4e, 0x51, 0xf8, 0xb9, 0xcd, 0xde, 0xec, 0xa3, 0x9a, 0x8b, 0x36, ++ 0x8b, 0x9e, 0x8d, 0x9e, 0x37, 0xd7, 0x49, 0x2f, 0x9f, 0x13, 0xe7, 0xf9, ++ 0x65, 0x9e, 0x86, 0x5b, 0xe8, 0xb3, 0xc6, 0xcc, 0x60, 0xd3, 0xf5, 0x39, ++ 0xd1, 0xf3, 0xfb, 0x9a, 0xc8, 0xd7, 0x58, 0x2b, 0xce, 0xed, 0xb3, 0x4c, ++ 0xad, 0xcb, 0x7c, 0x4e, 0x3e, 0x11, 0xe3, 0x31, 0xf0, 0xbd, 0x41, 0xe4, ++ 0x6d, 0x24, 0xc6, 0x9c, 0xbb, 0x77, 0xb9, 0x97, 0x90, 0xbf, 0xe0, 0x1a, ++ 0xaa, 0x59, 0xce, 0x69, 0x39, 0x59, 0x90, 0xda, 0x39, 0x7c, 0xd6, 0xf7, ++ 0x5a, 0x66, 0xec, 0x79, 0xfe, 0x50, 0x77, 0x9e, 0x16, 0xe5, 0x15, 0x6a, ++ 0xec, 0x49, 0x85, 0x0e, 0xef, 0x73, 0x7b, 0xb7, 0x9f, 0xc8, 0x93, 0x3a, ++ 0x9b, 0xf8, 0x7e, 0x21, 0xca, 0x2f, 0xd8, 0xbb, 0x3f, 0x77, 0xd2, 0x3e, ++ 0x02, 0x3f, 0xc7, 0x29, 0xe3, 0x59, 0xdf, 0xd4, 0x3e, 0xde, 0x8f, 0x76, ++ 0xd5, 0x18, 0xf4, 0x0b, 0xa7, 0x8c, 0xc0, 0x7e, 0xbf, 0x23, 0xd6, 0xa3, ++ 0x2c, 0x56, 0x9a, 0xc5, 0x37, 0x07, 0x9b, 0x19, 0xe5, 0xf5, 0x24, 0xf8, ++ 0xdb, 0x19, 0xbf, 0x13, 0x8c, 0xec, 0x2d, 0x55, 0xea, 0xb9, 0xd0, 0x0b, ++ 0x0d, 0xe8, 0x47, 0xa5, 0x99, 0xed, 0x3b, 0x93, 0xbd, 0x36, 0x70, 0xcd, ++ 0x0b, 0x0d, 0x0d, 0xdc, 0xef, 0xa0, 0xf2, 0x77, 0x56, 0xad, 0x26, 0x3d, ++ 0xb8, 0xc2, 0x25, 0xcb, 0x2b, 0xa8, 0x0c, 0xeb, 0x55, 0x04, 0xfd, 0x1e, ++ 0xb6, 0xc7, 0xe1, 0x43, 0x7e, 0x82, 0xf6, 0x01, 0x94, 0x1b, 0x76, 0x67, ++ 0x1e, 0xd9, 0xcb, 0x6a, 0x2e, 0xb8, 0xb4, 0x00, 0xf7, 0x24, 0xbc, 0x9f, ++ 0x10, 0xe3, 0xf9, 0x7b, 0x1c, 0x5b, 0xd1, 0x9e, 0x05, 0xbf, 0xf6, 0x4e, ++ 0x97, 0x89, 0x4f, 0xcf, 0x7a, 0x4e, 0x64, 0xb3, 0xfc, 0xb8, 0xfd, 0x85, ++ 0x2c, 0xfd, 0x65, 0x7f, 0xb3, 0xfe, 0x60, 0xfc, 0x16, 0xcc, 0x03, 0x92, ++ 0xdf, 0x27, 0x79, 0x37, 0x46, 0x54, 0xde, 0xce, 0x87, 0xed, 0x58, 0xff, ++ 0xb6, 0xf7, 0x43, 0xd0, 0xff, 0x63, 0x2f, 0x3b, 0xe8, 0xde, 0x10, 0x79, ++ 0x0f, 0x72, 0x2c, 0xbf, 0x16, 0x26, 0x72, 0xbb, 0x01, 0xf5, 0x86, 0x39, ++ 0xdf, 0x52, 0x9f, 0x39, 0x37, 0x80, 0xcc, 0x29, 0xe5, 0xd3, 0x91, 0x99, ++ 0x60, 0xc9, 0xd3, 0x96, 0xf2, 0xaa, 0x5d, 0x1c, 0x4a, 0xf2, 0x29, 0xdb, ++ 0xed, 0x4f, 0xc8, 0xe1, 0xf7, 0x73, 0x69, 0x01, 0x8a, 0xab, 0x69, 0x17, ++ 0xf3, 0x49, 0xfe, 0x9f, 0x14, 0x74, 0x6d, 0xac, 0x33, 0x2e, 0x33, 0x4e, ++ 0x4a, 0x2f, 0xe3, 0x8c, 0xa4, 0x7e, 0x7a, 0x1f, 0xa7, 0x50, 0xe8, 0x09, ++ 0x26, 0xf6, 0xb3, 0x34, 0xc3, 0x7c, 0xcf, 0x4b, 0x6f, 0xf2, 0x1a, 0xbb, ++ 0x7f, 0x17, 0xab, 0xdf, 0xe4, 0x53, 0xea, 0xb7, 0xdd, 0xa2, 0xff, 0x3b, ++ 0x12, 0xad, 0xf1, 0xe1, 0xf2, 0x8d, 0xcd, 0x47, 0x90, 0x85, 0x7e, 0x60, ++ 0x0b, 0xce, 0x48, 0x1c, 0x83, 0x79, 0x59, 0xef, 0x79, 0x71, 0x29, 0xae, ++ 0xb4, 0x45, 0x0a, 0x50, 0xde, 0x1e, 0xe8, 0xf9, 0xbe, 0x1a, 0x27, 0xb7, ++ 0xc0, 0xc5, 0xf7, 0x27, 0xf2, 0x76, 0x2c, 0x3a, 0x88, 0xec, 0x3a, 0x37, ++ 0x31, 0xd8, 0x84, 0xf6, 0xcc, 0x7d, 0x89, 0x22, 0x6e, 0x9f, 0x09, 0xeb, ++ 0x9a, 0x8a, 0xeb, 0x16, 0xcf, 0x2b, 0x5a, 0x87, 0xdf, 0x31, 0xfe, 0x1c, ++ 0xf4, 0x3d, 0x31, 0x19, 0xf5, 0xd4, 0xb4, 0x12, 0x8a, 0x3f, 0x6f, 0x4b, ++ 0x2c, 0x7d, 0x1d, 0xdb, 0xad, 0x9a, 0x5e, 0x48, 0xb1, 0x02, 0x09, 0xf7, ++ 0x9a, 0x3a, 0x9e, 0x0f, 0x27, 0xf5, 0xa5, 0x1b, 0xf1, 0x05, 0xf5, 0x1d, ++ 0x5a, 0x2d, 0xe1, 0xcd, 0xe1, 0x0e, 0x44, 0xd0, 0xbe, 0x68, 0x4c, 0xfc, ++ 0xf5, 0x64, 0xf4, 0xb1, 0x54, 0x8d, 0xcb, 0x41, 0xe5, 0x9a, 0xbd, 0x24, ++ 0x07, 0x4e, 0xcd, 0x4f, 0x7c, 0xe5, 0x74, 0xdb, 0x7c, 0xb8, 0xbe, 0x3b, ++ 0xc1, 0xbf, 0xc3, 0x75, 0xaf, 0xde, 0x6d, 0xa3, 0x78, 0xd2, 0x72, 0xbc, ++ 0xa7, 0x37, 0x07, 0xcf, 0x03, 0x4c, 0x35, 0x50, 0x5e, 0x17, 0x7b, 0x72, ++ 0x33, 0xd8, 0x25, 0xf4, 0xa3, 0x76, 0x31, 0x5d, 0xe8, 0x5f, 0xeb, 0xbd, ++ 0x37, 0x7f, 0xfb, 0x71, 0x52, 0xa9, 0x7d, 0x8f, 0xfb, 0x75, 0x0e, 0x8d, ++ 0x8f, 0x60, 0x7f, 0x9a, 0x9f, 0x51, 0x7e, 0x0b, 0x22, 0xe1, 0x43, 0x93, ++ 0x5e, 0x95, 0xeb, 0x7a, 0x6c, 0xbb, 0xd8, 0xfe, 0x25, 0x3e, 0x25, 0x7e, ++ 0x1d, 0x5a, 0x90, 0xf0, 0xaa, 0xa3, 0xdd, 0x10, 0x07, 0xae, 0xcd, 0xdd, ++ 0x71, 0x19, 0xae, 0x0f, 0x33, 0xa4, 0xfe, 0x4c, 0x7e, 0x3b, 0x2f, 0x02, ++ 0x6f, 0xab, 0x94, 0x76, 0x2f, 0xda, 0x27, 0xa0, 0x17, 0x37, 0x27, 0xa2, ++ 0x5e, 0x1c, 0xde, 0xf5, 0x6f, 0x8a, 0x8f, 0xf4, 0x69, 0x3a, 0xb7, 0x67, ++ 0x42, 0xf2, 0x3e, 0x01, 0xcb, 0xfd, 0x45, 0x32, 0x2e, 0xaf, 0xba, 0xb9, ++ 0x5d, 0x23, 0xe1, 0x5f, 0xfc, 0xc6, 0x63, 0x4e, 0xf3, 0x3e, 0x51, 0x2c, ++ 0xbc, 0xb1, 0xeb, 0xa5, 0x3b, 0xdf, 0x9a, 0x47, 0xe1, 0xec, 0x9f, 0x10, ++ 0x73, 0x9f, 0x6f, 0x3d, 0x1f, 0x47, 0x2b, 0x25, 0xbe, 0xb1, 0x4f, 0x08, ++ 0x38, 0x51, 0x4e, 0xea, 0x8d, 0x91, 0x06, 0xda, 0x2b, 0x0d, 0x9a, 0xef, ++ 0x77, 0x01, 0xca, 0xff, 0xb0, 0x93, 0xdd, 0x0c, 0x76, 0xb8, 0x65, 0x7c, ++ 0xf9, 0x5c, 0x27, 0xee, 0xef, 0x3d, 0x2c, 0xec, 0xa8, 0xd8, 0xef, 0x1e, ++ 0x71, 0xdf, 0x71, 0xec, 0xfb, 0x8f, 0x05, 0xfe, 0xd6, 0x1d, 0xb8, 0x9b, ++ 0xf4, 0x70, 0x6f, 0xf4, 0xc3, 0x03, 0xcf, 0x48, 0x5f, 0x4f, 0x2e, 0x33, ++ 0xf0, 0xfc, 0x8c, 0x5d, 0xc0, 0xeb, 0xbd, 0x4c, 0xbf, 0xbd, 0xf1, 0xd1, ++ 0x23, 0x07, 0x78, 0x5c, 0x57, 0x1b, 0xe7, 0x0c, 0xa3, 0x8b, 0x15, 0x3b, ++ 0x9e, 0x6a, 0x2f, 0x0d, 0xe0, 0x79, 0x2f, 0x75, 0x04, 0x23, 0x7b, 0x57, ++ 0x1d, 0xc0, 0xc7, 0x07, 0x5a, 0x1a, 0x18, 0x17, 0xf6, 0x8e, 0x4e, 0x61, ++ 0x43, 0x4d, 0xeb, 0xec, 0xaa, 0xc1, 0xd3, 0xf9, 0xfd, 0xcb, 0x69, 0x06, ++ 0x9d, 0xbf, 0x53, 0x3d, 0xb6, 0xd2, 0x78, 0x76, 0xa6, 0xc4, 0x53, 0x6b, ++ 0xa2, 0xcd, 0xb2, 0x3f, 0x9f, 0x29, 0xf9, 0x66, 0xc8, 0xef, 0x69, 0x3f, ++ 0xc9, 0xc4, 0x37, 0x1f, 0xa1, 0x7e, 0x89, 0xe5, 0x9b, 0x56, 0xe4, 0xe1, ++ 0x34, 0x0e, 0x87, 0x99, 0x9e, 0xab, 0x06, 0xe7, 0x66, 0xc4, 0xa3, 0x4f, ++ 0x54, 0x2f, 0x72, 0xbe, 0xba, 0x1c, 0x5f, 0x14, 0x4e, 0xe0, 0xfc, 0x9e, ++ 0x01, 0xcf, 0x2d, 0x30, 0x8f, 0x16, 0x71, 0x9f, 0x46, 0x15, 0xe2, 0x0a, ++ 0xfc, 0x9d, 0xca, 0xbb, 0xdc, 0xcc, 0x80, 0x75, 0xed, 0x2b, 0x4f, 0xd1, ++ 0x17, 0x08, 0x5f, 0x61, 0xdb, 0x41, 0x9e, 0xef, 0xde, 0x92, 0x46, 0xce, ++ 0x5f, 0xe5, 0x84, 0xf8, 0xf2, 0xb2, 0xc8, 0xcd, 0xe9, 0xb2, 0xc8, 0xcd, ++ 0xe3, 0xa8, 0x49, 0x27, 0x02, 0x3f, 0xc5, 0x7b, 0xc3, 0x5b, 0xda, 0x12, ++ 0x7c, 0x0a, 0x7c, 0x6a, 0x49, 0x89, 0xaf, 0xa7, 0x0b, 0xdc, 0x52, 0xce, ++ 0x44, 0xfe, 0x84, 0xd6, 0x5e, 0x80, 0xf6, 0x88, 0xac, 0x5f, 0x38, 0xd3, ++ 0x3a, 0x9e, 0xcf, 0xcd, 0xd7, 0xbf, 0x01, 0xb2, 0x5d, 0xe8, 0xd6, 0x14, ++ 0xb4, 0xcb, 0xa6, 0x62, 0x17, 0x80, 0xc7, 0x41, 0x7e, 0x85, 0xe7, 0x71, ++ 0xb4, 0x26, 0x86, 0xf1, 0x7e, 0x7a, 0xb0, 0x6a, 0xb5, 0xdb, 0x00, 0xaf, ++ 0x3b, 0x84, 0xff, 0xb7, 0x03, 0xfc, 0xc2, 0x69, 0xd0, 0x6f, 0x7a, 0x02, ++ 0x0b, 0xe2, 0xbc, 0xd3, 0xfa, 0x40, 0x39, 0x9f, 0xda, 0x07, 0x76, 0xb9, ++ 0xa3, 0xfd, 0xbd, 0xc9, 0x51, 0xc6, 0x26, 0x0f, 0x2a, 0xdd, 0x8e, 0xfd, ++ 0x4d, 0xce, 0xc8, 0x1a, 0xb1, 0x3c, 0x87, 0xb7, 0xc7, 0x7e, 0x0e, 0x27, ++ 0xb0, 0x06, 0xe7, 0xc8, 0x28, 0xde, 0x6f, 0x75, 0x00, 0xcb, 0xa5, 0xe0, ++ 0xf7, 0x50, 0xdf, 0x45, 0xf9, 0xd1, 0xf7, 0x87, 0x51, 0x76, 0xa1, 0x5e, ++ 0x7a, 0x7a, 0x7b, 0x81, 0x82, 0xfb, 0x92, 0xb6, 0x40, 0x3a, 0xae, 0x23, ++ 0x1f, 0x1d, 0xfb, 0x01, 0xe5, 0xc1, 0x2e, 0xc0, 0x7b, 0x8c, 0x9c, 0x78, ++ 0xa5, 0x84, 0x4a, 0x7e, 0x52, 0xe1, 0x89, 0x52, 0xba, 0xb7, 0xec, 0x53, ++ 0xfc, 0x98, 0x85, 0xf7, 0x1d, 0x95, 0x0e, 0x73, 0x8f, 0xc1, 0xfc, 0x30, ++ 0xeb, 0x3d, 0xa4, 0x6c, 0x3b, 0x3f, 0x3f, 0x23, 0xf1, 0xd5, 0x93, 0x1f, ++ 0xb8, 0xfe, 0x01, 0x38, 0x43, 0xce, 0x14, 0x0b, 0x9c, 0x6c, 0x1c, 0xc2, ++ 0xed, 0xe4, 0xed, 0x62, 0xf1, 0xdb, 0xfd, 0x14, 0x7c, 0x2c, 0xe9, 0x09, ++ 0xe8, 0xb9, 0xc6, 0x23, 0xe8, 0x89, 0x72, 0xda, 0x22, 0xee, 0xc5, 0xec, ++ 0xe6, 0x1b, 0x71, 0xaf, 0x42, 0x87, 0xb8, 0x0f, 0x6a, 0x76, 0xa2, 0xb8, ++ 0x17, 0xca, 0xe0, 0xfe, 0x95, 0xbc, 0xe7, 0xa4, 0x45, 0x0b, 0x24, 0xa2, ++ 0x7d, 0x3e, 0xbb, 0x3b, 0x3f, 0x21, 0x40, 0xe7, 0x8f, 0x2a, 0x5d, 0x81, ++ 0xa4, 0xf1, 0x48, 0xb7, 0x63, 0xdc, 0x7f, 0x3a, 0x5d, 0xc4, 0xef, 0xa7, ++ 0x3b, 0x6d, 0x0f, 0x24, 0xa1, 0xbc, 0x9e, 0x3e, 0xa6, 0x2a, 0xf5, 0x94, ++ 0xdf, 0xc1, 0xf3, 0x3e, 0x65, 0x5e, 0xdd, 0x69, 0xbb, 0x6f, 0xcd, 0xd5, ++ 0xf0, 0x7d, 0xce, 0x3f, 0xab, 0x81, 0x7a, 0xfa, 0x6c, 0xf5, 0x0b, 0x3a, ++ 0x58, 0x60, 0xd4, 0xbf, 0xa2, 0x9f, 0xd4, 0xaa, 0xd2, 0x3e, 0x64, 0xce, ++ 0xa3, 0xb3, 0xd4, 0xe1, 0x50, 0x7f, 0x2e, 0x38, 0x0c, 0xa8, 0x8f, 0x66, ++ 0x17, 0xbb, 0x43, 0x68, 0xc7, 0xb5, 0xfc, 0xbe, 0xf6, 0x7d, 0x5c, 0xcf, ++ 0xe6, 0x3c, 0xed, 0xf0, 0x2d, 0x83, 0x71, 0x5e, 0xdb, 0x38, 0xea, 0x0b, ++ 0x2c, 0x9f, 0x5a, 0xeb, 0xf1, 0x39, 0x28, 0xde, 0x9a, 0xab, 0xe0, 0xfd, ++ 0xf1, 0x4b, 0xd6, 0xe7, 0x18, 0xb4, 0x0f, 0xb9, 0x94, 0x89, 0x38, 0xf3, ++ 0xc4, 0x92, 0x62, 0x58, 0x83, 0x9f, 0xc7, 0xa1, 0xe5, 0xfe, 0x85, 0x93, ++ 0xee, 0x93, 0x17, 0xdf, 0xab, 0x1b, 0x27, 0xc1, 0xfc, 0xae, 0x4e, 0x6b, ++ 0xb1, 0x21, 0x2a, 0xff, 0xb0, 0xb6, 0xba, 0x11, 0xcf, 0xb3, 0xad, 0xa8, ++ 0x2f, 0xcd, 0xc4, 0x38, 0xc2, 0x5a, 0xf7, 0xe4, 0x46, 0x8c, 0x23, 0xa4, ++ 0xa7, 0x07, 0xda, 0x6e, 0x80, 0x75, 0x3d, 0xe2, 0xbe, 0xb1, 0x04, 0xcb, ++ 0x2d, 0x4f, 0xc9, 0xfe, 0xa6, 0x34, 0x62, 0xdc, 0xe0, 0x17, 0xb6, 0x60, ++ 0x8e, 0x02, 0xdf, 0x4f, 0xbb, 0x67, 0x95, 0x50, 0xfe, 0xf5, 0x20, 0xd9, ++ 0xff, 0x92, 0xc6, 0x00, 0xac, 0x09, 0xb3, 0x7f, 0x7c, 0xd5, 0x17, 0x27, ++ 0x30, 0x5f, 0x7b, 0x5d, 0x63, 0x09, 0xda, 0x05, 0x40, 0x57, 0x61, 0x5f, ++ 0xaf, 0x21, 0xf8, 0xe6, 0x4d, 0x90, 0xe5, 0x26, 0xbd, 0x78, 0x30, 0xb4, ++ 0x4f, 0x64, 0x96, 0x78, 0xaa, 0x3d, 0x1a, 0x97, 0xa0, 0x78, 0x6d, 0x4b, ++ 0xb7, 0x7d, 0xbe, 0xa1, 0x04, 0xe3, 0x10, 0x73, 0x26, 0xd6, 0x16, 0x6b, ++ 0xd0, 0x7f, 0xe1, 0xba, 0xa7, 0x1a, 0xf3, 0x41, 0xc5, 0x8e, 0x6d, 0x2a, ++ 0x32, 0x02, 0x50, 0xbe, 0x7e, 0xdd, 0xa6, 0x12, 0x5c, 0xff, 0x5a, 0x58, ++ 0xa0, 0x02, 0xed, 0x92, 0x1b, 0xd6, 0x3d, 0x5d, 0x82, 0x71, 0xf9, 0xd4, ++ 0x3e, 0xd6, 0xfe, 0x53, 0x55, 0x11, 0x97, 0x67, 0xdb, 0x1a, 0xb1, 0xbf, ++ 0xc2, 0x99, 0x81, 0x11, 0x0a, 0xb4, 0xff, 0x97, 0x75, 0x2f, 0x35, 0xa2, ++ 0x1f, 0x92, 0x86, 0xf9, 0xb9, 0x30, 0xde, 0x05, 0xcf, 0x9f, 0x1a, 0x43, ++ 0xfd, 0xa3, 0xfa, 0xf3, 0x96, 0xe8, 0x3d, 0x5a, 0xab, 0x51, 0x0e, 0xaa, ++ 0x9c, 0xed, 0x47, 0x30, 0x54, 0x9b, 0xbd, 0xb4, 0x4b, 0xe7, 0x79, 0xdb, ++ 0x42, 0x6f, 0xf4, 0xe7, 0xfc, 0xdc, 0x5d, 0x1e, 0xda, 0xce, 0xf3, 0xeb, ++ 0x65, 0x39, 0x93, 0x97, 0x5b, 0x96, 0xc5, 0xd7, 0x43, 0x8f, 0x7a, 0xb9, ++ 0xbf, 0xd9, 0x92, 0x10, 0xff, 0xfb, 0xab, 0x42, 0xef, 0x48, 0x79, 0x49, ++ 0x3a, 0xc1, 0x02, 0x3b, 0xe3, 0xc8, 0xcd, 0x16, 0xb7, 0xfb, 0xff, 0x48, ++ 0xee, 0x5a, 0xff, 0x6f, 0xe9, 0xb5, 0xe4, 0xcb, 0xe8, 0xb5, 0x64, 0xa9, ++ 0xd7, 0x04, 0x3e, 0xf3, 0xad, 0x7a, 0x1a, 0x86, 0x11, 0xfa, 0xfe, 0xea, ++ 0x5c, 0xd4, 0x0f, 0x0b, 0x30, 0xd9, 0xca, 0x64, 0x2f, 0x14, 0xb6, 0x4d, ++ 0xa7, 0x75, 0xe4, 0x7b, 0x5e, 0x6e, 0x3f, 0x33, 0x1f, 0x6f, 0x9f, 0x56, ++ 0xcc, 0xf3, 0x9d, 0xba, 0x5e, 0x49, 0xe4, 0xf7, 0xa4, 0x3a, 0xdb, 0xf2, ++ 0xcc, 0xfb, 0xa2, 0xc7, 0x05, 0x3e, 0x8a, 0x1f, 0x9e, 0xfa, 0x04, 0x9d, ++ 0x77, 0x6f, 0xb3, 0x33, 0x3a, 0xa7, 0xb2, 0xab, 0xe8, 0x92, 0x79, 0xa6, ++ 0x95, 0x18, 0xdf, 0x35, 0xf9, 0x1f, 0x95, 0x5a, 0x84, 0xfc, 0xfa, 0x4a, ++ 0x8c, 0xef, 0x8e, 0xc2, 0xfe, 0xde, 0xa4, 0x73, 0xa6, 0xd8, 0x0f, 0x9e, ++ 0x43, 0xc1, 0x7d, 0x0c, 0x8c, 0xcf, 0xa6, 0x2d, 0x8f, 0x4f, 0x7f, 0x69, ++ 0x4f, 0x55, 0x5e, 0x34, 0x58, 0xa8, 0x4f, 0xcf, 0x75, 0x37, 0xda, 0x7f, ++ 0x2a, 0x0b, 0x8d, 0xba, 0xfc, 0xbc, 0xa2, 0xfd, 0x59, 0xe3, 0x0f, 0x3d, ++ 0xfb, 0xd3, 0xc5, 0x7e, 0x50, 0xcc, 0xfa, 0xa8, 0xc7, 0x87, 0xf3, 0xcf, ++ 0x92, 0x4f, 0x01, 0xdf, 0x36, 0x13, 0x7f, 0xcd, 0x13, 0xfc, 0x26, 0xf7, ++ 0x95, 0xcf, 0xed, 0x19, 0xb6, 0xd5, 0xbc, 0x8f, 0x2f, 0xcf, 0x87, 0x81, ++ 0x7e, 0xfe, 0x29, 0xfe, 0x0e, 0x46, 0x08, 0xf4, 0x3c, 0xda, 0x99, 0x85, ++ 0x5a, 0xe0, 0x66, 0xac, 0x5f, 0xd8, 0x96, 0x42, 0xfb, 0x4c, 0x92, 0x3f, ++ 0x24, 0x5f, 0x48, 0xba, 0xb6, 0xa4, 0xd4, 0x52, 0xdc, 0xae, 0xeb, 0x49, ++ 0x85, 0xce, 0xeb, 0xc5, 0xc2, 0x65, 0xf3, 0x70, 0x3a, 0x16, 0x6e, 0xe4, ++ 0xf7, 0x33, 0x66, 0xcc, 0x0c, 0xaa, 0xe6, 0xfb, 0xe4, 0xa5, 0x3c, 0x40, ++ 0xff, 0x2d, 0xa2, 0xff, 0xd1, 0xe3, 0x48, 0x7e, 0x36, 0x73, 0x79, 0x00, ++ 0xb9, 0xb9, 0x17, 0xe5, 0x17, 0xef, 0xdb, 0xc1, 0x79, 0xf8, 0xdb, 0x0b, ++ 0xcc, 0xbf, 0x3b, 0x21, 0xe1, 0xaf, 0x40, 0x5e, 0x4c, 0x23, 0x3a, 0x72, ++ 0xfc, 0xbf, 0xec, 0xa2, 0xfd, 0xfe, 0xd8, 0x75, 0x32, 0x8a, 0xff, 0xbe, ++ 0x97, 0xa1, 0x67, 0x36, 0xd1, 0x53, 0xda, 0x41, 0x95, 0xbd, 0xae, 0x97, ++ 0x5e, 0x9e, 0xbf, 0x78, 0x22, 0xe2, 0xf5, 0x61, 0xfc, 0x08, 0xf9, 0x1f, ++ 0xf5, 0x49, 0xf3, 0x87, 0x74, 0x7f, 0x5c, 0x4b, 0xab, 0xca, 0x14, 0x1f, ++ 0x9f, 0x37, 0xea, 0xad, 0xc2, 0x6e, 0x7d, 0xfc, 0xf5, 0xe1, 0x89, 0x1a, ++ 0xd9, 0x63, 0xd1, 0xf5, 0xc3, 0x47, 0x76, 0x99, 0xd4, 0x9f, 0x11, 0xa7, ++ 0x33, 0x5a, 0xbf, 0x6b, 0xcd, 0xd7, 0x93, 0x71, 0x9f, 0x39, 0x55, 0xdc, ++ 0xcf, 0x9c, 0xaa, 0xe2, 0x11, 0xec, 0x28, 0x1c, 0x23, 0x3c, 0x5c, 0x8f, ++ 0x8d, 0x0b, 0xc6, 0x8f, 0x87, 0x16, 0xb8, 0x3d, 0x9c, 0x0e, 0x62, 0x1e, ++ 0x4f, 0x2e, 0x9d, 0xc8, 0x3e, 0x84, 0xf9, 0x7f, 0x4f, 0xac, 0xf3, 0xe3, ++ 0xda, 0x43, 0xf4, 0xfb, 0x49, 0x76, 0xc4, 0xe3, 0x98, 0x28, 0x3e, 0xa4, ++ 0x3e, 0xbb, 0xd5, 0xd1, 0xfe, 0xa2, 0x38, 0xf7, 0x62, 0xe1, 0x47, 0x59, ++ 0x06, 0x3b, 0xa7, 0xda, 0x36, 0xc8, 0xf4, 0xdd, 0xcd, 0xf5, 0xae, 0x1c, ++ 0x0f, 0xe0, 0x6d, 0xc0, 0xfb, 0x98, 0xd3, 0xe0, 0x89, 0x57, 0xff, 0x5f, ++ 0xf0, 0xe4, 0x88, 0x7d, 0x77, 0xce, 0x97, 0x27, 0xf7, 0x64, 0x6c, 0xa1, ++ 0xdf, 0x6d, 0x18, 0x14, 0x18, 0x81, 0xfa, 0x46, 0xf2, 0x17, 0xac, 0x27, ++ 0x62, 0xbe, 0xb6, 0xfb, 0xa7, 0xbb, 0x39, 0xff, 0x4f, 0x8f, 0x43, 0x87, ++ 0xe9, 0x82, 0xcf, 0xe6, 0x6d, 0xe4, 0xf3, 0x6f, 0xf9, 0x8f, 0xe2, 0x9b, ++ 0x91, 0x0f, 0x5a, 0xde, 0x4a, 0x49, 0x5e, 0x66, 0xe2, 0xf7, 0x7a, 0xa1, ++ 0x57, 0x64, 0xbf, 0x52, 0x9e, 0x64, 0x3b, 0xf9, 0x7d, 0x86, 0xe8, 0xef, ++ 0x5e, 0x8f, 0x97, 0x9e, 0xf5, 0x02, 0x7f, 0x08, 0x47, 0xbc, 0xfc, 0x0a, ++ 0xd9, 0x0e, 0xe7, 0x4b, 0xfa, 0x7a, 0x25, 0xd7, 0xd7, 0x30, 0xef, 0x10, ++ 0xd2, 0x09, 0xe6, 0x1d, 0xc2, 0x73, 0xf8, 0x17, 0x3c, 0x4a, 0x0c, 0x5e, ++ 0xc5, 0xfa, 0x20, 0xf0, 0x5d, 0xa5, 0x03, 0x9e, 0x01, 0x8f, 0x3b, 0xec, ++ 0xa1, 0xbe, 0x98, 0xaf, 0x95, 0xa6, 0xf2, 0x7c, 0x98, 0xcb, 0xc9, 0x2f, ++ 0xcc, 0x47, 0xfc, 0x8e, 0x80, 0x87, 0xf4, 0x4e, 0x6c, 0xff, 0x6b, 0x05, ++ 0x7f, 0x6c, 0x11, 0xf7, 0xe8, 0x1e, 0xb6, 0x81, 0x3c, 0xa3, 0x9c, 0xb9, ++ 0x39, 0xbc, 0xe7, 0xf6, 0x64, 0x51, 0xbf, 0x75, 0xa2, 0xde, 0xe5, 0xf5, ++ 0xe1, 0x95, 0xc9, 0xcf, 0x16, 0x91, 0xaf, 0x02, 0xf0, 0x53, 0x3e, 0x66, ++ 0xd5, 0xab, 0xfd, 0xb6, 0x58, 0xe1, 0xaf, 0x17, 0xf0, 0x07, 0x97, 0xe3, ++ 0x39, 0xc2, 0xd4, 0x27, 0x98, 0x7f, 0x39, 0x23, 0xbc, 0x45, 0x10, 0x5f, ++ 0x29, 0x5e, 0xbe, 0x9e, 0xb4, 0xe8, 0x41, 0xb2, 0xdf, 0xba, 0x9e, 0x64, ++ 0xe4, 0xb7, 0x0e, 0x01, 0x3b, 0xc2, 0x07, 0xe5, 0x9a, 0x52, 0xf7, 0x48, ++ 0x25, 0x27, 0x2a, 0xa7, 0x79, 0xcd, 0x0a, 0xd1, 0xb1, 0x70, 0x03, 0xac, ++ 0xd3, 0x88, 0x37, 0xa7, 0xc4, 0xdb, 0x1b, 0x3b, 0xcd, 0xe3, 0x6e, 0xf0, ++ 0x78, 0x2c, 0xf7, 0x10, 0x54, 0x0a, 0xfa, 0x0f, 0x81, 0xf5, 0xfd, 0xa7, ++ 0x00, 0xef, 0x10, 0xe8, 0xe7, 0x45, 0x82, 0x9b, 0xc3, 0x75, 0xf2, 0xf1, ++ 0xe6, 0xeb, 0x31, 0x3e, 0xd7, 0xbd, 0xde, 0x0b, 0xbe, 0xe8, 0x09, 0x67, ++ 0x44, 0xef, 0xc7, 0xe1, 0xa4, 0xbc, 0x0a, 0xb4, 0x77, 0x7c, 0xa3, 0xa3, ++ 0x70, 0x62, 0xff, 0x94, 0xe7, 0xe3, 0x2e, 0x5d, 0x86, 0xfd, 0x56, 0xff, ++ 0x66, 0x77, 0x3f, 0x73, 0xbf, 0x2f, 0x76, 0xf7, 0x3b, 0x7b, 0xa2, 0x0b, ++ 0xf5, 0xd8, 0x7a, 0xd0, 0xab, 0xa4, 0x0e, 0x82, 0x87, 0xf0, 0x1c, 0xc9, ++ 0xdc, 0xbd, 0xc9, 0x06, 0xde, 0xf7, 0x00, 0xfe, 0x82, 0x0d, 0xfd, 0x42, ++ 0x39, 0xee, 0x5c, 0x4d, 0xfe, 0xee, 0x4f, 0x7b, 0x21, 0xde, 0x77, 0x9e, ++ 0xd7, 0x3d, 0x0e, 0xe8, 0x4f, 0x93, 0xfe, 0x3b, 0xe0, 0x71, 0xf3, 0xfa, ++ 0xce, 0x83, 0x03, 0xf1, 0x1e, 0x6d, 0xa6, 0xf1, 0xf5, 0x29, 0xad, 0xe9, ++ 0xf4, 0x8f, 0x70, 0x1f, 0xa2, 0xb7, 0x75, 0xf5, 0x6f, 0xc5, 0x0f, 0x40, ++ 0x47, 0x9a, 0x77, 0xd7, 0x2e, 0x98, 0x97, 0x2f, 0x8a, 0xbf, 0x96, 0xe6, ++ 0x59, 0xcb, 0x5c, 0xa8, 0x2f, 0x4f, 0x30, 0x3f, 0xea, 0x4b, 0x39, 0xaf, ++ 0x21, 0x33, 0xdb, 0xbd, 0x98, 0x7f, 0x53, 0x23, 0xf4, 0x28, 0xe0, 0xc5, ++ 0x86, 0x7c, 0x90, 0xfa, 0xcf, 0x3e, 0xb6, 0xdc, 0x67, 0xd2, 0xcf, 0x82, ++ 0x7e, 0x43, 0x19, 0x97, 0x37, 0xe9, 0x9f, 0x0c, 0xc5, 0x0d, 0x12, 0x28, ++ 0xbf, 0xe3, 0x29, 0x10, 0x7a, 0x8b, 0x51, 0x9c, 0xe0, 0xe4, 0xab, 0xfb, ++ 0x7e, 0xca, 0xef, 0xed, 0xe0, 0xf4, 0xaa, 0x99, 0xc9, 0xe9, 0x2b, 0xe5, ++ 0xf5, 0x2b, 0x4f, 0x30, 0xc5, 0x8b, 0xf6, 0xe9, 0x5d, 0x0f, 0x4d, 0xe4, ++ 0x97, 0xe1, 0x46, 0xe8, 0x9e, 0xe6, 0xca, 0x0d, 0x7c, 0x1c, 0xa8, 0xd7, ++ 0xcc, 0x48, 0x6e, 0xdb, 0xb2, 0x67, 0x62, 0xfe, 0x25, 0xf2, 0xd3, 0x98, ++ 0x9e, 0x74, 0x4b, 0x2d, 0x6d, 0x76, 0x51, 0x7b, 0xc1, 0xff, 0x67, 0x5f, ++ 0x19, 0x1e, 0x46, 0x3e, 0x4c, 0xbb, 0xbd, 0xab, 0x18, 0xdf, 0x03, 0x3f, ++ 0x10, 0x3c, 0x2d, 0xcd, 0x9e, 0x30, 0xfa, 0xcb, 0x64, 0x2f, 0x63, 0xfb, ++ 0x7d, 0x0a, 0x5f, 0xbf, 0x58, 0x90, 0xf0, 0x32, 0x77, 0xa6, 0xe1, 0x37, ++ 0xf3, 0x89, 0x84, 0xaf, 0x9b, 0xee, 0x0c, 0xe8, 0x3e, 0x3c, 0xfa, 0x7e, ++ 0xc8, 0x4c, 0xde, 0x6f, 0x4d, 0x2b, 0xf4, 0xcb, 0xfb, 0x21, 0xf9, 0xa9, ++ 0xbc, 0x9f, 0xf1, 0xfb, 0xa9, 0x05, 0x7d, 0x80, 0xd5, 0x42, 0x8e, 0x91, ++ 0x51, 0xbd, 0x03, 0xe5, 0x88, 0x23, 0x25, 0x8a, 0x47, 0x89, 0x3f, 0xd9, ++ 0xbe, 0xfa, 0x7e, 0xfe, 0xdb, 0x3d, 0x18, 0x2f, 0x40, 0x3f, 0xaf, 0x86, ++ 0xb5, 0x53, 0xdc, 0xb4, 0x52, 0x2d, 0xed, 0x8f, 0xfe, 0x1a, 0xcb, 0x70, ++ 0xd0, 0x39, 0x5b, 0xf0, 0x7f, 0x49, 0xff, 0x1c, 0x76, 0x31, 0xcd, 0x05, ++ 0xed, 0x5f, 0x87, 0x27, 0xae, 0xef, 0x93, 0xd5, 0x45, 0x74, 0x1e, 0x6a, ++ 0xf2, 0x20, 0x85, 0xe4, 0x1c, 0x24, 0x49, 0xc6, 0xcb, 0xe8, 0xf7, 0xc6, ++ 0x6e, 0xbd, 0x21, 0x91, 0xe7, 0xbd, 0x7d, 0xf5, 0xdd, 0xc1, 0x38, 0x9f, ++ 0xb4, 0x44, 0xce, 0x77, 0xd0, 0x8f, 0x53, 0xf4, 0xe3, 0x24, 0x3b, 0x55, ++ 0xe8, 0xc3, 0x5f, 0x67, 0x83, 0x3e, 0x34, 0xf9, 0xa5, 0x87, 0x15, 0x85, ++ 0xfa, 0x39, 0xfc, 0xad, 0x6b, 0xb6, 0x2e, 0x57, 0xa2, 0xf3, 0xc4, 0xfe, ++ 0xd0, 0x6e, 0x38, 0xac, 0x4c, 0xeb, 0x4f, 0xf6, 0xac, 0x88, 0x6b, 0x00, ++ 0xde, 0x2c, 0xf9, 0x78, 0x51, 0xfe, 0x0d, 0x09, 0xb8, 0xda, 0xb3, 0xf1, ++ 0xbb, 0xd9, 0x4f, 0x42, 0xbf, 0xa6, 0xdb, 0xcf, 0x62, 0x49, 0x0f, 0xdf, ++ 0x08, 0x7e, 0xd5, 0xd8, 0x29, 0xcd, 0x11, 0xbc, 0x52, 0xbb, 0x3e, 0x94, ++ 0x7c, 0xe3, 0xf7, 0x60, 0xdc, 0xc9, 0xe0, 0x67, 0xb9, 0x60, 0xfe, 0xfd, ++ 0x91, 0x8f, 0xd1, 0x2f, 0xc8, 0x09, 0xa9, 0x5e, 0x84, 0x6b, 0x88, 0x42, ++ 0xf7, 0x47, 0x1f, 0x49, 0x08, 0xe6, 0xf3, 0x7b, 0x88, 0xf9, 0x38, 0xe9, ++ 0x22, 0xee, 0x95, 0x2e, 0xf2, 0xb4, 0xd1, 0x9e, 0xc7, 0xe7, 0x36, 0x2f, ++ 0x5f, 0x2f, 0x86, 0x27, 0xf1, 0xf5, 0xe5, 0xa1, 0x24, 0x5e, 0x4e, 0xf7, ++ 0xc6, 0x8f, 0x93, 0x3d, 0x21, 0xbe, 0xd7, 0x88, 0x7b, 0xbb, 0x57, 0x17, ++ 0xc5, 0xcf, 0x07, 0x1c, 0xe7, 0xb5, 0xc6, 0x39, 0x6f, 0x15, 0xfb, 0x3e, ++ 0xe0, 0x6f, 0x8d, 0xf3, 0xa6, 0xf1, 0xfb, 0xe0, 0x79, 0x9e, 0x32, 0xdf, ++ 0x27, 0x02, 0xbb, 0x96, 0xf0, 0x5b, 0xfc, 0xf0, 0x4c, 0xda, 0xf7, 0xbc, ++ 0xd0, 0x76, 0x47, 0x12, 0xbf, 0x9f, 0x82, 0xcb, 0xff, 0xc7, 0x4a, 0xe0, ++ 0xdf, 0xee, 0x52, 0xf0, 0x59, 0x4a, 0xf7, 0x03, 0x86, 0x7e, 0xab, 0x52, ++ 0xbe, 0xff, 0x47, 0x46, 0xc0, 0x8b, 0xf9, 0x61, 0x55, 0x09, 0xf1, 0xf3, ++ 0xcf, 0xef, 0x15, 0x70, 0x54, 0x89, 0xf9, 0x9f, 0xae, 0xe3, 0xf7, 0x49, ++ 0xcc, 0xc3, 0xfd, 0x48, 0xd0, 0x17, 0xb7, 0x0a, 0xff, 0x6c, 0x41, 0xd3, ++ 0x6d, 0x25, 0x48, 0xef, 0x05, 0xe0, 0xbf, 0xe3, 0x7e, 0xa4, 0xcc, 0x7b, ++ 0x90, 0xf4, 0x2d, 0xdb, 0xa4, 0x5a, 0xf6, 0x23, 0xe6, 0xe1, 0x7e, 0x64, ++ 0x9f, 0xbf, 0xc6, 0x7f, 0xf0, 0xf7, 0xe2, 0x3f, 0x8c, 0xb6, 0xf8, 0x0f, ++ 0x72, 0xdc, 0x58, 0x3f, 0xe2, 0x64, 0x5d, 0xa6, 0x65, 0xdf, 0x64, 0x76, ++ 0xd3, 0x20, 0x71, 0x8f, 0x07, 0xaf, 0x3f, 0x87, 0xf9, 0x09, 0xee, 0x39, ++ 0x2b, 0xfb, 0x59, 0xf6, 0x4f, 0xd9, 0xca, 0xb4, 0x2b, 0xbb, 0xe7, 0x14, ++ 0xfc, 0x86, 0x50, 0x5c, 0xf8, 0x74, 0xd2, 0xaf, 0xf2, 0xfd, 0xc9, 0x3a, ++ 0x27, 0x0b, 0x99, 0xe1, 0xf8, 0x64, 0x30, 0xe5, 0x8d, 0x8c, 0xf3, 0x06, ++ 0x1f, 0xf0, 0x5a, 0xe0, 0x48, 0x64, 0x21, 0x33, 0x1c, 0x6c, 0x02, 0xff, ++ 0x5d, 0x2f, 0x17, 0x8f, 0x5b, 0x03, 0xdd, 0x43, 0x66, 0x7b, 0x3a, 0x16, ++ 0xae, 0x55, 0xde, 0xbf, 0xd6, 0x4f, 0xcb, 0xed, 0x05, 0xcf, 0x79, 0xff, ++ 0x25, 0x7e, 0x5a, 0xe1, 0x04, 0xae, 0xcf, 0xf0, 0x52, 0x22, 0xcc, 0x81, ++ 0x19, 0x3b, 0xc9, 0x6a, 0x37, 0x6f, 0xf6, 0xf2, 0x75, 0x72, 0xb3, 0x37, ++ 0xd1, 0x62, 0x37, 0xcf, 0x9d, 0x69, 0xad, 0xb7, 0x45, 0xd4, 0xdb, 0x22, ++ 0xea, 0x5d, 0xce, 0xff, 0x37, 0xdb, 0xcb, 0xca, 0x20, 0xd4, 0x1b, 0xbc, ++ 0x3f, 0xf9, 0x7b, 0x3c, 0x39, 0x67, 0xde, 0xa2, 0xbc, 0xd3, 0xf7, 0xbc, ++ 0xdc, 0x0e, 0x38, 0x9e, 0x14, 0xd8, 0x81, 0xf2, 0xb8, 0x56, 0xe4, 0xe9, ++ 0x6f, 0xf9, 0xcb, 0xa1, 0xcc, 0x39, 0x68, 0x5f, 0xfc, 0xab, 0x9d, 0xf2, ++ 0x04, 0x8a, 0x36, 0x2f, 0x59, 0x8e, 0x79, 0xd4, 0xee, 0x66, 0xc5, 0xa0, ++ 0x73, 0x4a, 0xad, 0x56, 0x3e, 0xfa, 0xc7, 0xa5, 0xcd, 0x03, 0xe7, 0x02, ++ 0x3e, 0x5e, 0x12, 0x74, 0xaa, 0xf4, 0xf3, 0x79, 0x54, 0xfa, 0x23, 0xfa, ++ 0x60, 0x37, 0xe6, 0x75, 0xf3, 0xf1, 0xfb, 0x37, 0x1f, 0x50, 0x34, 0x93, ++ 0x9e, 0xe8, 0x5f, 0xc6, 0xeb, 0xed, 0xf3, 0xda, 0x2d, 0x71, 0xf7, 0x03, ++ 0x5e, 0x7e, 0x8f, 0xc4, 0x2f, 0xbd, 0x32, 0x3e, 0x18, 0x3e, 0x70, 0x53, ++ 0x2a, 0xd6, 0x0f, 0x68, 0xb8, 0xae, 0xf4, 0xc5, 0xdf, 0xc1, 0x01, 0x78, ++ 0xfa, 0xd6, 0x32, 0x3a, 0x07, 0xd5, 0x77, 0x34, 0xb7, 0xc7, 0xfe, 0x71, ++ 0xf4, 0x16, 0x05, 0x7f, 0x97, 0x4b, 0xce, 0x73, 0xa5, 0x6d, 0x5a, 0xbe, ++ 0x01, 0xed, 0x56, 0xa6, 0x27, 0xfa, 0x51, 0x4f, 0x67, 0x1b, 0xc1, 0xd7, ++ 0x71, 0x9e, 0x95, 0xef, 0x45, 0x22, 0x18, 0xbe, 0x19, 0xfb, 0x5e, 0x9b, ++ 0x86, 0xfe, 0x92, 0xdf, 0x08, 0x1c, 0x45, 0x7e, 0x95, 0xf3, 0xf2, 0xa9, ++ 0x46, 0x5f, 0x5c, 0x6f, 0x12, 0xdf, 0xe3, 0xf0, 0x35, 0x75, 0xc7, 0x21, ++ 0xb8, 0x9e, 0x66, 0x6c, 0x8d, 0xf0, 0x5f, 0xb6, 0x72, 0x3b, 0x56, 0x65, ++ 0x47, 0x19, 0xb7, 0x73, 0x69, 0xbf, 0x36, 0x7d, 0xd9, 0x50, 0x5a, 0x2f, ++ 0xe4, 0x7c, 0xd2, 0x53, 0x84, 0xbe, 0x4d, 0x67, 0xc1, 0xdd, 0x64, 0x6f, ++ 0xb3, 0x95, 0xb4, 0xde, 0x39, 0xf9, 0xfa, 0x99, 0xbe, 0x8c, 0xff, 0x8e, ++ 0x9e, 0xa4, 0x67, 0x34, 0x7e, 0x32, 0x6c, 0x24, 0xc6, 0x4f, 0x06, 0xad, ++ 0x8d, 0x68, 0xb3, 0xa1, 0xdd, 0xab, 0x9b, 0x6c, 0x71, 0xef, 0xdd, 0x38, ++ 0x25, 0xf0, 0x0e, 0xf3, 0xf8, 0x00, 0xe7, 0x17, 0x4b, 0x9f, 0x5e, 0xd7, ++ 0x1d, 0x51, 0xcf, 0xde, 0x4b, 0x5c, 0x4a, 0xf2, 0x7b, 0xe2, 0x94, 0xf8, ++ 0xfe, 0x1e, 0x63, 0x8f, 0xd0, 0xf7, 0xa2, 0xcd, 0xa9, 0xf7, 0x90, 0x5c, ++ 0x36, 0xe8, 0x74, 0x4f, 0xa2, 0xc4, 0xbf, 0xdf, 0x28, 0xfd, 0x23, 0xc2, ++ 0xd3, 0xb7, 0x79, 0x8b, 0x82, 0xb8, 0x39, 0x29, 0xf2, 0x19, 0x4e, 0xae, ++ 0xfe, 0xa9, 0x82, 0xf6, 0xd6, 0x77, 0x17, 0x32, 0x43, 0x8d, 0xc3, 0x4f, ++ 0xdd, 0xf2, 0xba, 0x74, 0xf7, 0xc0, 0xb9, 0x26, 0x7d, 0x03, 0xfd, 0x13, ++ 0x3d, 0xb6, 0xc4, 0xe4, 0xa7, 0x4b, 0xff, 0xc4, 0x9d, 0xc4, 0xf5, 0xf8, ++ 0x3c, 0xa3, 0x54, 0x4d, 0x4a, 0xa3, 0x7c, 0x61, 0x8a, 0xe3, 0x2d, 0xdc, ++ 0xce, 0x7f, 0x8f, 0xa3, 0x57, 0x7c, 0x5c, 0x21, 0xbe, 0x94, 0x32, 0xee, ++ 0xc7, 0x54, 0xce, 0xe0, 0xbf, 0x47, 0x5a, 0xb4, 0x59, 0x23, 0x7a, 0x57, ++ 0x34, 0xf0, 0xdf, 0x23, 0xac, 0xdc, 0xb9, 0x8b, 0xce, 0xe3, 0xb1, 0x87, ++ 0x98, 0x1f, 0xe5, 0xbd, 0xb2, 0x79, 0x97, 0x32, 0x17, 0xc6, 0xad, 0xd8, ++ 0xb9, 0x4b, 0x99, 0x67, 0xc2, 0x5f, 0xbf, 0xca, 0x30, 0xe5, 0x75, 0x5f, ++ 0xe5, 0x91, 0x71, 0xea, 0x08, 0xdd, 0x3b, 0x16, 0xcb, 0xd7, 0x18, 0xdf, ++ 0xc7, 0xf5, 0xfd, 0x88, 0x8b, 0xcb, 0x7b, 0x47, 0x91, 0x3b, 0x84, 0x71, ++ 0xeb, 0x0e, 0x7b, 0xb0, 0x12, 0xeb, 0x75, 0x64, 0x25, 0xfa, 0x71, 0x7f, ++ 0x54, 0xe2, 0xfb, 0xf5, 0x5d, 0x37, 0xd2, 0xfd, 0x07, 0x9e, 0xdd, 0x8e, ++ 0x08, 0x3e, 0x57, 0xda, 0xb6, 0x66, 0x3a, 0xa1, 0xde, 0xca, 0xab, 0x75, ++ 0x3f, 0xf2, 0x91, 0xdf, 0x08, 0x0e, 0x45, 0xbc, 0xa4, 0x68, 0xa5, 0x2d, ++ 0xd8, 0x3e, 0x39, 0xd5, 0xe3, 0xc7, 0xb8, 0xb7, 0xcf, 0xc1, 0x46, 0xd2, ++ 0x3a, 0x77, 0x85, 0x78, 0x18, 0x1b, 0xc3, 0x0f, 0x63, 0x1f, 0xe2, 0x72, ++ 0x72, 0x4f, 0x92, 0x57, 0xda, 0x59, 0x94, 0x6f, 0x35, 0x31, 0xc9, 0x23, ++ 0xed, 0x0e, 0xd2, 0x4f, 0x47, 0xec, 0x7c, 0x1e, 0xbb, 0x19, 0x87, 0x77, ++ 0x9b, 0x37, 0x30, 0x16, 0xe1, 0x61, 0x47, 0xf9, 0xef, 0x29, 0xf4, 0xad, ++ 0x8c, 0x28, 0x98, 0xa7, 0x12, 0x3b, 0x6e, 0x94, 0x9f, 0x02, 0xdf, 0x4a, ++ 0xfa, 0x06, 0xfc, 0x0d, 0xf6, 0x92, 0x8e, 0x7a, 0xbd, 0x42, 0xe8, 0x99, ++ 0xa2, 0xcd, 0xdb, 0x95, 0x0f, 0x4d, 0x70, 0x4f, 0x45, 0x63, 0x04, 0xf9, ++ 0x73, 0xe7, 0x16, 0x05, 0xe3, 0x2a, 0xf0, 0x9d, 0xf4, 0x0c, 0xd4, 0x67, ++ 0x98, 0x0f, 0xd5, 0x77, 0x27, 0x8f, 0x27, 0x55, 0xc0, 0xf7, 0x79, 0x26, ++ 0xbd, 0x22, 0xe7, 0x11, 0x47, 0xbf, 0xdc, 0x86, 0xf0, 0xb9, 0xdf, 0x6b, ++ 0x7b, 0x8d, 0xeb, 0x97, 0x08, 0x8f, 0x23, 0x0b, 0x78, 0x63, 0xe9, 0x79, ++ 0x7f, 0x12, 0xb7, 0xdb, 0x4a, 0x60, 0x59, 0xa5, 0xf7, 0x7a, 0x68, 0x28, ++ 0xfa, 0x9b, 0x47, 0x72, 0x13, 0xa8, 0x3f, 0x29, 0xef, 0xb1, 0xf2, 0x79, ++ 0xbf, 0xe0, 0xf3, 0xbe, 0x9b, 0xb6, 0x2b, 0x36, 0x37, 0xc5, 0xdb, 0xc9, ++ 0xfe, 0x92, 0xf0, 0xc9, 0x7a, 0xc7, 0x93, 0x26, 0xce, 0x49, 0x1a, 0x83, ++ 0x78, 0x68, 0x23, 0x3c, 0x54, 0x6d, 0xd2, 0x68, 0x3e, 0x93, 0xf5, 0xd2, ++ 0xc1, 0x8b, 0x4c, 0xf2, 0xb0, 0x48, 0xf4, 0x77, 0xf0, 0xae, 0xf7, 0xe9, ++ 0x5e, 0xa0, 0x0d, 0x3f, 0x3f, 0x46, 0xfc, 0x58, 0xd5, 0xa4, 0x70, 0xbb, ++ 0xbf, 0xe9, 0x98, 0x7e, 0x07, 0xae, 0x2b, 0xa1, 0xe7, 0x54, 0xdc, 0x1f, ++ 0xb9, 0x99, 0x2f, 0xe5, 0xec, 0x71, 0x71, 0x5f, 0xd6, 0xcd, 0x2d, 0x5c, ++ 0xff, 0x56, 0xb5, 0xec, 0xd2, 0xf0, 0x7e, 0x49, 0xc9, 0xa7, 0x39, 0x67, ++ 0x0e, 0xd2, 0x3d, 0x5b, 0x55, 0xcd, 0x0e, 0x86, 0xfb, 0xa5, 0xc0, 0x7f, ++ 0xdf, 0x43, 0xfc, 0xc4, 0xf2, 0xa9, 0xc4, 0x8f, 0xd4, 0xaf, 0xbd, 0xd1, ++ 0x13, 0xf4, 0x10, 0x3f, 0xa7, 0x10, 0xd2, 0x45, 0x9c, 0x3a, 0x98, 0x33, ++ 0xdd, 0x13, 0xd5, 0xcf, 0xdb, 0xbc, 0x62, 0x7f, 0xd4, 0xcd, 0xdf, 0x6f, ++ 0x48, 0xe2, 0xe5, 0x28, 0xff, 0x04, 0x57, 0x25, 0x59, 0xf4, 0xab, 0x8b, ++ 0xe4, 0x22, 0xe7, 0xcc, 0xc8, 0x83, 0x98, 0x0f, 0x5a, 0xe5, 0x57, 0xe8, ++ 0x5c, 0x65, 0x6a, 0xb1, 0xf8, 0x7d, 0x32, 0x13, 0x5c, 0xe6, 0xf3, 0x31, ++ 0xb1, 0xfa, 0x11, 0xe3, 0xe1, 0x3c, 0x7e, 0xd2, 0x9e, 0x3d, 0xdd, 0x74, ++ 0x3e, 0xae, 0x5b, 0xcf, 0x8b, 0xf6, 0x4f, 0x20, 0xbd, 0xf9, 0xfb, 0x08, ++ 0x7f, 0xcf, 0x72, 0x71, 0xbd, 0x96, 0xf0, 0xc7, 0xd2, 0xef, 0x90, 0xb0, ++ 0xc7, 0xe3, 0xf0, 0x59, 0x38, 0x29, 0xce, 0x3a, 0x26, 0xd7, 0xf5, 0x9c, ++ 0xa7, 0x77, 0x6b, 0x78, 0x8f, 0x92, 0xe4, 0x9f, 0x9b, 0x91, 0xee, 0x26, ++ 0xfe, 0xf9, 0x59, 0x12, 0xbf, 0x8f, 0xf7, 0x67, 0x49, 0x1a, 0xf5, 0xff, ++ 0x78, 0x11, 0xdf, 0xa7, 0x7a, 0xdc, 0xce, 0xd7, 0xaf, 0xc7, 0xeb, 0x9d, ++ 0x94, 0xbf, 0xf9, 0xfa, 0xdd, 0x3c, 0x9f, 0xcc, 0x73, 0x8f, 0x1e, 0xc1, ++ 0xe7, 0x61, 0xdb, 0xec, 0x4a, 0xfc, 0x7e, 0xb8, 0x2f, 0x87, 0x63, 0xa5, ++ 0x6d, 0x19, 0x9d, 0xf7, 0x03, 0xb9, 0x6c, 0x4e, 0x22, 0xfe, 0xf1, 0x32, ++ 0xae, 0x1f, 0xb9, 0x3e, 0xdc, 0xf0, 0x12, 0xd7, 0x67, 0x95, 0x21, 0x37, ++ 0xdd, 0x77, 0x5a, 0x19, 0xbc, 0x7d, 0x2e, 0xe5, 0xd9, 0xa6, 0xba, 0xfc, ++ 0x74, 0x3f, 0x68, 0xf0, 0x35, 0xfd, 0x0e, 0x4f, 0x4f, 0xbe, 0xf2, 0xed, ++ 0x3e, 0x40, 0xbf, 0x8b, 0x7c, 0x73, 0x33, 0x97, 0x3f, 0x49, 0x07, 0xd0, ++ 0xa7, 0xc4, 0x5f, 0x52, 0x1e, 0x24, 0x5e, 0xa3, 0xf8, 0xe4, 0x78, 0x97, ++ 0xf2, 0x24, 0xe9, 0xb1, 0x4d, 0xee, 0x0b, 0x00, 0xbf, 0x70, 0xfb, 0x88, ++ 0xfb, 0x23, 0xf9, 0x4c, 0xa5, 0xfd, 0x9f, 0x32, 0x67, 0xe0, 0x08, 0x9e, ++ 0xcb, 0x2c, 0x13, 0xfb, 0xa5, 0xf9, 0xe2, 0x77, 0x5f, 0xe4, 0x7e, 0xe9, ++ 0x6c, 0x41, 0x97, 0x02, 0x5b, 0xe9, 0xaf, 0x71, 0x9e, 0x3d, 0xf6, 0x4b, ++ 0xaf, 0xd0, 0xae, 0xae, 0x58, 0xfa, 0xab, 0x61, 0x18, 0x0f, 0x29, 0xcf, ++ 0x3c, 0x4a, 0x4f, 0x29, 0xb7, 0xe0, 0xf7, 0x59, 0xe4, 0xfb, 0x7d, 0x41, ++ 0xf7, 0xc3, 0xe2, 0xf9, 0xb1, 0xe0, 0x9b, 0x8a, 0xd1, 0xcd, 0x24, 0x97, ++ 0x15, 0x1f, 0xd5, 0x92, 0x3c, 0xbb, 0xa7, 0x70, 0xbd, 0xe6, 0x7e, 0xcf, ++ 0xaa, 0x8f, 0x19, 0x5b, 0x27, 0xe6, 0xbb, 0x96, 0xda, 0x4f, 0x4e, 0x6c, ++ 0x2e, 0xc1, 0xfd, 0xc6, 0xc9, 0x3f, 0x56, 0x0c, 0xf4, 0x87, 0x7b, 0x83, ++ 0x73, 0x01, 0x9e, 0x53, 0x43, 0xff, 0x68, 0xd3, 0x21, 0xef, 0x2c, 0xc4, ++ 0xaf, 0xf8, 0x7d, 0x29, 0x79, 0x9e, 0xe7, 0x0b, 0xa1, 0x27, 0x3a, 0x76, ++ 0xa8, 0xe2, 0xf7, 0x36, 0x6b, 0xf5, 0x4b, 0xd9, 0xdf, 0x97, 0xeb, 0x8f, ++ 0x45, 0x8e, 0x2b, 0x74, 0xef, 0x89, 0xf0, 0xa9, 0x3a, 0x76, 0x16, 0x8f, ++ 0xff, 0x18, 0xfd, 0xba, 0x1d, 0x49, 0xf4, 0xfb, 0x27, 0x9f, 0xed, 0xbc, ++ 0xed, 0xfb, 0x1f, 0xa7, 0xe2, 0xef, 0x8b, 0xdc, 0xe0, 0x47, 0x3b, 0x21, ++ 0x75, 0x79, 0x29, 0xf1, 0x4f, 0x57, 0x9a, 0xcb, 0xbf, 0x95, 0xc7, 0x3d, ++ 0xa7, 0x60, 0x5c, 0xa7, 0xbe, 0xf9, 0x90, 0x17, 0xcf, 0xff, 0xfc, 0x6f, ++ 0x59, 0x68, 0xc8, 0xa8, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd5, 0x7d, ++ 0x09, 0x78, 0x54, 0xd5, 0xd9, 0xf0, 0xb9, 0x73, 0x67, 0x0b, 0x99, 0x49, ++ 0x66, 0x26, 0x7b, 0xc8, 0x32, 0x09, 0x10, 0x50, 0x49, 0x98, 0x84, 0x84, ++ 0x7d, 0x99, 0x24, 0x84, 0x45, 0x16, 0x27, 0x08, 0x05, 0x64, 0x1b, 0xf6, ++ 0x00, 0xd9, 0x58, 0xda, 0x62, 0xa5, 0x7f, 0x06, 0x83, 0x88, 0x88, 0x6d, ++ 0x68, 0xad, 0x22, 0x5a, 0xbf, 0x01, 0xc1, 0x62, 0xb5, 0x35, 0x60, 0xa4, ++ 0x41, 0x02, 0x0e, 0xb2, 0x08, 0x55, 0x3f, 0x47, 0x0a, 0x16, 0x5b, 0xb4, ++ 0x23, 0x22, 0xb2, 0x84, 0x64, 0x8a, 0xad, 0xa5, 0x5f, 0xf9, 0x3e, 0xfe, ++ 0xf3, 0xbe, 0xe7, 0x9c, 0xcc, 0xdc, 0x9b, 0x09, 0xa8, 0x5f, 0xdb, 0xe7, ++ 0xff, 0xc3, 0xe3, 0x73, 0x3c, 0xf7, 0xdc, 0x7b, 0x96, 0xf7, 0xbc, 0xfb, ++ 0xfb, 0x9e, 0x33, 0x97, 0x5f, 0xee, 0x57, 0x60, 0xb0, 0x13, 0x62, 0xb6, ++ 0x68, 0x08, 0x49, 0x20, 0xe4, 0xca, 0x6b, 0xf2, 0x1a, 0xaf, 0x89, 0x90, ++ 0x87, 0x7f, 0xf1, 0xea, 0x88, 0xa1, 0x85, 0x84, 0x2c, 0xf7, 0x4a, 0x71, ++ 0x06, 0x42, 0x48, 0xeb, 0xee, 0xff, 0xf8, 0x9f, 0xd4, 0x78, 0x42, 0x2a, ++ 0x76, 0xd6, 0x58, 0x24, 0x5a, 0xaf, 0x7f, 0xf9, 0x4d, 0x7d, 0x80, 0xbe, ++ 0xa7, 0xf1, 0x6e, 0x67, 0xcf, 0x77, 0xc7, 0x5a, 0xe0, 0xbd, 0xcb, 0x2f, ++ 0x6c, 0x19, 0x41, 0xfa, 0xd2, 0xf6, 0xc6, 0x7a, 0x6c, 0xbf, 0xf2, 0xc2, ++ 0x76, 0xac, 0xbf, 0xf5, 0x8b, 0x57, 0x0f, 0xfd, 0x17, 0x7d, 0xaf, 0xd2, ++ 0x15, 0xe3, 0x80, 0xf7, 0xae, 0xbc, 0x76, 0x58, 0x0f, 0xcf, 0x2b, 0xdd, ++ 0x5a, 0x67, 0x23, 0x2d, 0x89, 0xfb, 0xa8, 0x7e, 0xaa, 0x99, 0x96, 0x9e, ++ 0x97, 0x64, 0x92, 0x48, 0xc8, 0x78, 0xc2, 0xfe, 0x9e, 0xda, 0x73, 0x58, ++ 0x6f, 0xcf, 0xa5, 0xf5, 0x46, 0x3a, 0x2a, 0xfd, 0x9e, 0x4c, 0xd7, 0x7b, ++ 0x7b, 0x65, 0xd1, 0xef, 0x1a, 0xf7, 0x68, 0x17, 0x98, 0xe0, 0x0d, 0x2f, ++ 0x21, 0x45, 0x74, 0xdc, 0x5f, 0xcc, 0x1d, 0xec, 0x86, 0x7a, 0x33, 0x5d, ++ 0x44, 0x4a, 0xe8, 0xf9, 0x46, 0x3d, 0xf1, 0x18, 0x6d, 0xb4, 0xec, 0x46, ++ 0x48, 0x14, 0x2d, 0xaf, 0x16, 0x9b, 0x3c, 0x52, 0x2c, 0x5d, 0x57, 0x89, ++ 0x69, 0x23, 0x94, 0x57, 0x7f, 0x15, 0x35, 0x1d, 0xd6, 0x5b, 0xad, 0x0f, ++ 0xe4, 0x58, 0x61, 0x3e, 0x7d, 0x89, 0x13, 0xea, 0xdd, 0x01, 0x1e, 0x45, ++ 0x30, 0xce, 0x0a, 0x5d, 0xb5, 0x09, 0xbf, 0xc7, 0x7e, 0x3e, 0xd4, 0x11, ++ 0x02, 0x65, 0x2e, 0xf1, 0x90, 0x8b, 0x7d, 0xe8, 0xfa, 0x09, 0xd9, 0x79, ++ 0xab, 0x3f, 0x8c, 0xf7, 0x6b, 0x84, 0x1f, 0x7d, 0x6f, 0x50, 0x54, 0x01, ++ 0x21, 0xd3, 0x66, 0x7d, 0x2a, 0xc1, 0x7c, 0xa2, 0xfb, 0xd6, 0xea, 0x96, ++ 0xe3, 0x3c, 0x5f, 0x66, 0xed, 0x74, 0xd5, 0xe1, 0xed, 0x03, 0x56, 0xd3, ++ 0xf1, 0xe8, 0xb8, 0xb7, 0xe0, 0x6f, 0x64, 0xa8, 0x2c, 0xb2, 0x98, 0xf0, ++ 0x7d, 0x0a, 0x10, 0x2c, 0x53, 0x9b, 0xca, 0xd3, 0xec, 0xb0, 0xfe, 0x78, ++ 0x83, 0x03, 0xd6, 0x2f, 0xd6, 0x97, 0x5a, 0xe1, 0xae, 0x37, 0xd3, 0xe7, ++ 0xf7, 0xae, 0x76, 0x3b, 0x64, 0xba, 0x8f, 0x6f, 0x5c, 0x3a, 0x35, 0xba, ++ 0x3b, 0xad, 0xff, 0xa2, 0x8f, 0xd4, 0x5f, 0x86, 0xd7, 0x65, 0x69, 0xae, ++ 0x8b, 0xf6, 0x5f, 0xed, 0x31, 0xe1, 0x38, 0x55, 0x6b, 0x4a, 0xc8, 0x67, ++ 0x74, 0xbe, 0x63, 0x60, 0x17, 0xe9, 0xf7, 0x89, 0x16, 0x12, 0x3f, 0x84, ++ 0xae, 0xa7, 0x4c, 0x4b, 0xe2, 0x4d, 0x50, 0x12, 0x72, 0x5a, 0x57, 0x00, ++ 0xfd, 0xef, 0xc2, 0x76, 0xbb, 0x81, 0x38, 0x09, 0xc5, 0x03, 0xfb, 0x9b, ++ 0xd3, 0x76, 0xad, 0xa3, 0x9f, 0x3c, 0xa5, 0x73, 0xa7, 0x14, 0x41, 0x3f, ++ 0x1b, 0xfd, 0x7a, 0x3b, 0x94, 0x3b, 0xd9, 0xfc, 0xe9, 0xf7, 0x16, 0x53, ++ 0x01, 0xf6, 0x67, 0x19, 0x02, 0xdf, 0x1b, 0xc9, 0x4a, 0xf8, 0xae, 0x7d, ++ 0xdd, 0x84, 0xf8, 0x4d, 0x12, 0xf6, 0xeb, 0xd7, 0xd9, 0x42, 0xf3, 0x26, ++ 0x24, 0x98, 0x31, 0x35, 0x97, 0xf5, 0x57, 0x08, 0x70, 0x1a, 0xeb, 0x99, ++ 0x0e, 0xef, 0x13, 0xbb, 0x1e, 0xd7, 0x77, 0x05, 0x5e, 0xc1, 0x7d, 0xf4, ++ 0xe4, 0xcd, 0xce, 0x85, 0xf2, 0x09, 0x36, 0x5f, 0x0d, 0x71, 0x03, 0xbe, ++ 0x24, 0xea, 0x69, 0x89, 0x70, 0x75, 0x67, 0x95, 0x53, 0xbc, 0x59, 0x64, ++ 0x29, 0x76, 0x5b, 0x8a, 0x42, 0x65, 0x62, 0x37, 0xd6, 0xae, 0x86, 0xeb, ++ 0x4e, 0x68, 0xa7, 0xf0, 0xbc, 0x60, 0x71, 0x62, 0x49, 0x76, 0xc7, 0x11, ++ 0x32, 0xb8, 0xf3, 0x7b, 0xa2, 0x14, 0xf0, 0x7f, 0x6b, 0x5a, 0x9b, 0x3e, ++ 0x40, 0xc7, 0x7d, 0xf2, 0xc0, 0xa7, 0x88, 0xb7, 0xd5, 0x80, 0xb7, 0x30, ++ 0xbe, 0xfb, 0x82, 0x1e, 0xd6, 0x21, 0xf0, 0x76, 0x21, 0x7c, 0x42, 0xf7, ++ 0xe1, 0xa9, 0xfd, 0x9f, 0x22, 0xde, 0x2e, 0x6c, 0x96, 0x10, 0x3e, 0xd5, ++ 0xcd, 0xc5, 0xfa, 0x05, 0xb4, 0xbc, 0x5a, 0xe7, 0x24, 0x9f, 0x69, 0x69, ++ 0x9d, 0xe3, 0xdf, 0x53, 0x52, 0x60, 0x31, 0xe0, 0xb5, 0x67, 0x7f, 0x94, ++ 0x65, 0x17, 0x85, 0x53, 0x9b, 0xc0, 0xcf, 0x86, 0x4f, 0x2f, 0xca, 0xf4, ++ 0x79, 0x76, 0x73, 0x8a, 0x5d, 0x82, 0xe7, 0xfb, 0x19, 0x9e, 0x1e, 0xd3, ++ 0x68, 0x3c, 0x00, 0xa7, 0x63, 0x3b, 0xee, 0xd9, 0x5e, 0x2f, 0x85, 0xcf, ++ 0x73, 0x1d, 0xc2, 0x47, 0xaa, 0x20, 0x48, 0x27, 0xd5, 0xb5, 0xc4, 0x6b, ++ 0xa0, 0xed, 0xc5, 0x3f, 0x5f, 0x7d, 0x6a, 0x1c, 0xad, 0x57, 0x55, 0x10, ++ 0x07, 0xd0, 0x79, 0xb5, 0x0a, 0x8f, 0xb2, 0x9e, 0x3f, 0xbf, 0x01, 0xf0, ++ 0xc5, 0x5a, 0x49, 0x0a, 0xa3, 0xec, 0xb0, 0xce, 0x4f, 0x46, 0x77, 0xa7, ++ 0xfd, 0x57, 0x57, 0x92, 0x22, 0xa0, 0xd3, 0xd4, 0x51, 0xce, 0xfd, 0x50, ++ 0x27, 0xcd, 0x12, 0xe9, 0x05, 0xf5, 0x0a, 0xd7, 0x42, 0x18, 0xff, 0xde, ++ 0xf8, 0xa5, 0x0e, 0x99, 0xf6, 0x6f, 0x1d, 0xe5, 0x6a, 0x82, 0xf1, 0xee, ++ 0x8d, 0x1f, 0xee, 0x90, 0x69, 0x7f, 0x4f, 0xa5, 0x37, 0x6e, 0x30, 0xd2, ++ 0x76, 0x4f, 0x19, 0xb1, 0xec, 0x02, 0x38, 0xe8, 0x1a, 0x4a, 0xb4, 0xb4, ++ 0xfe, 0x54, 0x99, 0xdd, 0x42, 0x21, 0x49, 0xe1, 0xb6, 0x33, 0x19, 0xda, ++ 0x49, 0x1f, 0xbd, 0x63, 0x17, 0xe0, 0xb1, 0x7b, 0x61, 0x25, 0xf4, 0x57, ++ 0x9d, 0x3c, 0xd3, 0x01, 0x78, 0xd2, 0x89, 0xfe, 0xf7, 0xaf, 0xeb, 0x03, ++ 0xf3, 0xad, 0xb6, 0x77, 0x73, 0x44, 0xd1, 0xf7, 0xc7, 0x37, 0x4b, 0x88, ++ 0x57, 0xc4, 0x63, 0x22, 0x30, 0xff, 0x6a, 0x0a, 0x5f, 0xa8, 0x8f, 0xf7, ++ 0x0e, 0xf5, 0xc2, 0x7c, 0xae, 0x71, 0xf8, 0x09, 0x38, 0xb6, 0xe9, 0xfc, ++ 0x73, 0x60, 0x7e, 0x6d, 0xaf, 0x1b, 0x88, 0x87, 0xb6, 0x8f, 0x1f, 0xc5, ++ 0xf0, 0xd5, 0x3a, 0xaa, 0x11, 0xf9, 0xc7, 0xdb, 0xfb, 0xc7, 0x9c, 0x90, ++ 0xf2, 0x42, 0x78, 0x69, 0xde, 0x67, 0xf0, 0x41, 0xdd, 0xa6, 0xb5, 0x48, ++ 0x0e, 0xe0, 0x4b, 0xe4, 0x7e, 0x03, 0xcc, 0x67, 0x01, 0x9f, 0x4f, 0x83, ++ 0x8e, 0xcc, 0x75, 0xd1, 0xef, 0xac, 0x63, 0x59, 0x3f, 0x3d, 0x36, 0x4b, ++ 0xc8, 0x2f, 0x7e, 0x0d, 0xf4, 0x94, 0x00, 0xa5, 0x86, 0x97, 0x7a, 0x8e, ++ 0xe7, 0x0d, 0xac, 0xb4, 0x78, 0xf2, 0x5c, 0x14, 0x1f, 0xae, 0xf1, 0xfd, ++ 0x47, 0x34, 0xa1, 0xfd, 0x2e, 0xe7, 0xf8, 0x52, 0xb5, 0xd0, 0x87, 0xf4, ++ 0x54, 0xf9, 0x0a, 0xeb, 0x2f, 0xde, 0xe0, 0xcc, 0x5f, 0x15, 0x86, 0xbf, ++ 0xf1, 0xa5, 0x04, 0xe9, 0x78, 0x77, 0x14, 0x99, 0x5b, 0x4e, 0x9f, 0xef, ++ 0xb6, 0xb2, 0x52, 0x8d, 0xaf, 0xa7, 0x39, 0x5d, 0x67, 0x3d, 0xbf, 0x12, ++ 0xf7, 0x7d, 0x01, 0xdd, 0x77, 0xd8, 0xd7, 0xd4, 0xcd, 0xf4, 0x39, 0xc0, ++ 0x8d, 0xe2, 0x05, 0xc0, 0x8d, 0xee, 0x23, 0xe2, 0xc1, 0xbd, 0xf1, 0x4b, ++ 0x70, 0xdf, 0x16, 0x6c, 0x96, 0x1e, 0xc0, 0x7d, 0xf4, 0x0c, 0x20, 0x50, ++ 0x4f, 0x88, 0x63, 0xeb, 0x54, 0xf7, 0x7f, 0x96, 0xf3, 0xc5, 0xdd, 0x51, ++ 0xae, 0x42, 0x89, 0xf6, 0x17, 0x4c, 0x30, 0x3b, 0x76, 0x48, 0x30, 0x1f, ++ 0xa7, 0x26, 0x0a, 0xea, 0xf9, 0x56, 0xc7, 0x0e, 0x02, 0xdf, 0xbb, 0x76, ++ 0xc2, 0x78, 0x09, 0x49, 0x51, 0x8e, 0xfa, 0x30, 0x7e, 0x45, 0x88, 0xab, ++ 0x50, 0x43, 0xc7, 0xb9, 0x94, 0x68, 0x66, 0xfb, 0xed, 0x7d, 0x5f, 0x3b, ++ 0x39, 0x17, 0xe8, 0xd1, 0x8e, 0xed, 0x09, 0x32, 0xf1, 0x11, 0xe4, 0x3f, ++ 0x24, 0xdb, 0x95, 0x1b, 0xfa, 0xae, 0xac, 0x07, 0xeb, 0xaf, 0x8c, 0xf7, ++ 0x37, 0xa1, 0xc1, 0x93, 0x47, 0xb2, 0x19, 0x3c, 0x10, 0x2e, 0x1c, 0x1e, ++ 0xde, 0x75, 0xdd, 0xa6, 0x87, 0xf3, 0xd3, 0x4f, 0x38, 0x3c, 0xbc, 0x77, ++ 0x91, 0xe9, 0xc0, 0x37, 0x8e, 0xe9, 0x89, 0xc9, 0x08, 0xfd, 0x5b, 0xe8, ++ 0x38, 0xb4, 0xbf, 0xc4, 0x1d, 0x43, 0x5f, 0xd8, 0x84, 0xf3, 0xab, 0xc7, ++ 0x7d, 0x7b, 0xdb, 0x62, 0xc1, 0xb2, 0x2c, 0xce, 0x55, 0x58, 0x0b, 0x2c, ++ 0xb8, 0x87, 0x6b, 0x35, 0xc0, 0x45, 0xac, 0x53, 0x0d, 0x8f, 0x45, 0x1c, ++ 0x1e, 0x6f, 0x4d, 0x9b, 0x93, 0xaf, 0x01, 0x3c, 0x9e, 0x62, 0x72, 0x00, ++ 0xdd, 0x3d, 0x79, 0x40, 0x9a, 0x8f, 0x78, 0xed, 0x31, 0x52, 0xa2, 0x04, ++ 0xbc, 0x67, 0x74, 0x48, 0xe8, 0x7e, 0x00, 0x5d, 0x10, 0xb7, 0x16, 0xf7, ++ 0xa3, 0xba, 0xd6, 0xe5, 0x8d, 0x8c, 0xf7, 0xe5, 0x48, 0x67, 0xd5, 0xf1, ++ 0x51, 0x8e, 0x28, 0x09, 0xf1, 0xde, 0x89, 0xf2, 0xcf, 0x63, 0xf2, 0x32, ++ 0xbc, 0x67, 0xf2, 0x2f, 0x7a, 0x2c, 0x93, 0x57, 0xc0, 0x27, 0xcb, 0x73, ++ 0x3b, 0xf3, 0x03, 0xc1, 0x67, 0x40, 0xbe, 0x01, 0x3e, 0x0b, 0xba, 0xa8, ++ 0x1e, 0x11, 0xc8, 0x81, 0xfd, 0xfd, 0xba, 0x7c, 0xa5, 0x4d, 0xc7, 0xe8, ++ 0xbc, 0x8d, 0xc2, 0x01, 0xe8, 0x48, 0xd0, 0x8d, 0xf9, 0x0d, 0x46, 0x2f, ++ 0x9b, 0xd6, 0xd9, 0x8b, 0xa1, 0x7d, 0x13, 0xa5, 0xfb, 0xf0, 0xfd, 0x3e, ++ 0xae, 0xf7, 0x20, 0xfd, 0x1e, 0xcf, 0xee, 0xe6, 0x80, 0x7e, 0x61, 0x9e, ++ 0x2e, 0x73, 0x88, 0xbf, 0x67, 0x58, 0x5c, 0x36, 0x2b, 0x85, 0x77, 0xb5, ++ 0xc6, 0xb7, 0x41, 0x9b, 0x15, 0xe2, 0xc7, 0xd5, 0x6f, 0x3c, 0x96, 0xe3, ++ 0x8e, 0x80, 0x7f, 0x82, 0x1f, 0x1b, 0xb5, 0x8c, 0xcf, 0x19, 0xbd, 0xd1, ++ 0x5e, 0xd6, 0x2f, 0x1b, 0xcf, 0x48, 0xc1, 0x6d, 0x2e, 0xc0, 0xd2, 0x03, ++ 0xf2, 0x28, 0x7a, 0x0d, 0x83, 0x8f, 0xba, 0x9f, 0x5e, 0x56, 0x21, 0x5f, ++ 0x8d, 0x96, 0x0b, 0x54, 0x8e, 0x4f, 0xa2, 0x9b, 0x14, 0xdb, 0x83, 0x90, ++ 0xb1, 0x1a, 0x77, 0x2f, 0x2b, 0xed, 0xa7, 0xca, 0x18, 0x38, 0x4e, 0x77, ++ 0x96, 0x64, 0xac, 0x09, 0xea, 0x61, 0x1e, 0x89, 0x20, 0xbb, 0x80, 0x7e, ++ 0x76, 0x44, 0x7b, 0x81, 0x6f, 0x25, 0x26, 0x12, 0xf7, 0xde, 0x08, 0xfd, ++ 0x26, 0x59, 0x19, 0x1f, 0x10, 0xfb, 0xd2, 0x60, 0x63, 0x74, 0x94, 0x18, ++ 0xc3, 0xde, 0x2f, 0xb6, 0x32, 0xfe, 0x50, 0x68, 0x65, 0x78, 0x79, 0x2f, ++ 0x2f, 0xc5, 0xfc, 0x05, 0xfe, 0xdb, 0x35, 0xee, 0x4f, 0x89, 0xdc, 0xb5, ++ 0x1c, 0x13, 0xdf, 0xd1, 0x79, 0x61, 0xbb, 0x98, 0x0f, 0xfd, 0x7e, 0x23, ++ 0x61, 0xf2, 0x17, 0xe7, 0x9b, 0xf8, 0x70, 0xce, 0x8e, 0x4d, 0x61, 0xfb, ++ 0x11, 0xa2, 0xa3, 0xbb, 0x0a, 0x60, 0x9f, 0x7a, 0x6c, 0xf6, 0x69, 0xe7, ++ 0x9b, 0x42, 0xe3, 0x08, 0x79, 0xaa, 0xde, 0x7f, 0x98, 0x3f, 0xd0, 0x0f, ++ 0xac, 0xa7, 0xbc, 0x6f, 0xd7, 0xef, 0x35, 0x1c, 0x66, 0xf4, 0xa8, 0xc6, ++ 0xc7, 0x72, 0xce, 0x17, 0x63, 0xad, 0x84, 0xbd, 0xa7, 0xf3, 0xfd, 0x15, ++ 0xe9, 0x6a, 0x85, 0x99, 0xec, 0x80, 0xf9, 0x6d, 0x25, 0xce, 0x38, 0x3a, ++ 0xaf, 0x9a, 0x43, 0xbd, 0x19, 0x3d, 0x38, 0x83, 0x39, 0xd0, 0xff, 0x11, ++ 0x9b, 0xfb, 0x15, 0xd8, 0x8f, 0x81, 0xa3, 0x38, 0x9e, 0xd3, 0xe7, 0x93, ++ 0xe9, 0xf3, 0xe5, 0x5a, 0xe2, 0x31, 0xd0, 0x3d, 0x59, 0xbe, 0x5b, 0xe7, ++ 0x0d, 0x18, 0x19, 0xcd, 0xdc, 0xa2, 0xff, 0x95, 0xd8, 0x58, 0xff, 0xed, ++ 0x66, 0xa3, 0x47, 0xa6, 0x78, 0x7e, 0xc6, 0xe6, 0x76, 0x03, 0x7e, 0x79, ++ 0x4a, 0x88, 0xc3, 0x07, 0x72, 0xe9, 0x07, 0x94, 0x7f, 0x00, 0xfd, 0x11, ++ 0x5f, 0x11, 0xf0, 0x97, 0x1a, 0x12, 0x88, 0x01, 0x38, 0x57, 0xcb, 0xfe, ++ 0x1c, 0x42, 0xf7, 0x7f, 0xb0, 0xc9, 0xbd, 0x08, 0xc6, 0x3b, 0xaf, 0xf1, ++ 0x67, 0xc0, 0x73, 0x42, 0x02, 0x88, 0xaf, 0xe7, 0xa2, 0x62, 0xf2, 0x08, ++ 0xed, 0xaf, 0x49, 0xef, 0x4b, 0xff, 0x3e, 0xcc, 0xfb, 0xa4, 0x4c, 0x76, ++ 0xd0, 0x7e, 0xae, 0x13, 0xe7, 0x78, 0x58, 0xc7, 0x75, 0xbf, 0xc6, 0xe6, ++ 0xa1, 0xeb, 0xf8, 0xb8, 0xf9, 0x77, 0xbf, 0x3a, 0x40, 0xbf, 0x9a, 0x7d, ++ 0xe0, 0xda, 0xec, 0x87, 0x00, 0x4a, 0x9b, 0xa2, 0xe7, 0x3c, 0x4b, 0xcb, ++ 0x59, 0x46, 0x8d, 0x51, 0xdb, 0x3f, 0x04, 0x8f, 0x73, 0xe6, 0xc8, 0xfc, ++ 0xf5, 0x87, 0x1c, 0x7f, 0x12, 0xea, 0x99, 0xde, 0x15, 0x5c, 0x67, 0xf0, ++ 0x02, 0x7c, 0xd4, 0xef, 0x4d, 0xb0, 0xb1, 0xfd, 0xaf, 0xb9, 0x91, 0x4a, ++ 0x3c, 0x71, 0xe1, 0xcf, 0x19, 0x1f, 0xad, 0xd1, 0x06, 0xf5, 0xa0, 0x42, ++ 0xd6, 0xdc, 0xc8, 0x20, 0x1e, 0x3a, 0xee, 0xc7, 0x1a, 0x52, 0xd1, 0x18, ++ 0x41, 0xcf, 0x0c, 0x58, 0x19, 0xff, 0x6a, 0xa2, 0xa8, 0x1f, 0xa9, 0xfd, ++ 0x73, 0x8e, 0x67, 0xbb, 0x75, 0x24, 0x67, 0x2b, 0xcc, 0x67, 0x3b, 0xe5, ++ 0x83, 0x00, 0x3f, 0xad, 0x1d, 0xf9, 0x45, 0xc5, 0x4f, 0xb3, 0x1c, 0x9b, ++ 0x68, 0xb5, 0x29, 0x3b, 0x78, 0x1c, 0xf4, 0x88, 0xe0, 0xcf, 0x24, 0xe4, ++ 0xff, 0xe7, 0x74, 0x8c, 0xef, 0xd0, 0xbf, 0x29, 0xc6, 0x01, 0x21, 0xf9, ++ 0x09, 0xea, 0x09, 0xe8, 0x87, 0x15, 0x16, 0x8f, 0x4f, 0x43, 0xf9, 0x46, ++ 0xc5, 0x6a, 0xb3, 0x4f, 0xce, 0xc3, 0xe7, 0xda, 0x61, 0xb0, 0x77, 0x1e, ++ 0x8b, 0x16, 0xf8, 0xe0, 0x7c, 0x2e, 0x17, 0x17, 0xd4, 0xbe, 0xfd, 0x77, ++ 0x29, 0x86, 0xb6, 0x6b, 0x89, 0x71, 0x18, 0xfd, 0xee, 0x0b, 0xd3, 0xc2, ++ 0x18, 0x10, 0x0b, 0x8b, 0xbf, 0xbb, 0x2a, 0x11, 0x94, 0xef, 0xa4, 0x59, ++ 0x0d, 0x48, 0x9f, 0x84, 0x8c, 0xb2, 0x80, 0x3e, 0x2e, 0x39, 0x27, 0xc8, ++ 0xb7, 0xa2, 0x6f, 0xa7, 0xcf, 0x69, 0x51, 0x6f, 0x47, 0x7c, 0xa1, 0xfb, ++ 0xeb, 0xb2, 0xb9, 0x5e, 0x80, 0xfd, 0x9e, 0x15, 0xcb, 0xe0, 0x3d, 0x6b, ++ 0x55, 0xb4, 0xd7, 0x13, 0xc6, 0xff, 0xa6, 0x71, 0xf8, 0xa8, 0xf1, 0x6c, ++ 0x37, 0xe0, 0x28, 0x9d, 0xef, 0x27, 0x12, 0x93, 0x2b, 0xea, 0x71, 0x5e, ++ 0xb5, 0x95, 0xdc, 0x07, 0x78, 0x97, 0x14, 0xe3, 0xfa, 0x35, 0xf6, 0xbf, ++ 0xea, 0x9a, 0x82, 0x9f, 0xb5, 0x49, 0x81, 0x17, 0x9f, 0x05, 0x7c, 0x5c, ++ 0x61, 0x76, 0xec, 0x62, 0xdd, 0x66, 0xb8, 0xc2, 0xe8, 0xe5, 0x1d, 0x31, ++ 0xee, 0x0d, 0x0d, 0xee, 0x5f, 0x7b, 0xbe, 0x3f, 0x67, 0x4d, 0x16, 0xe0, ++ 0x7d, 0x30, 0xe3, 0xf7, 0x14, 0xce, 0xcb, 0x5b, 0x0c, 0x16, 0x8f, 0x1d, ++ 0xda, 0xf5, 0x8a, 0xfd, 0x3f, 0x5f, 0x47, 0x19, 0x5f, 0x4e, 0xa8, 0x3e, ++ 0xff, 0x52, 0xcf, 0xd1, 0xc4, 0x04, 0xf0, 0x77, 0x6c, 0x00, 0x7c, 0x58, ++ 0xb0, 0x31, 0x9a, 0x78, 0xfa, 0x84, 0xd6, 0x01, 0x0a, 0x37, 0xe0, 0x77, ++ 0xf5, 0x0d, 0x82, 0xfd, 0xcc, 0x6f, 0x79, 0xfb, 0x2c, 0xf0, 0xf3, 0x6a, ++ 0x6d, 0x00, 0xf1, 0x67, 0xbe, 0xd1, 0x84, 0xfb, 0x53, 0x7d, 0x43, 0x8b, ++ 0xf3, 0x20, 0x1b, 0x75, 0xad, 0x01, 0xf1, 0x3d, 0x95, 0xbf, 0xfd, 0x62, ++ 0x9c, 0x27, 0x91, 0xbe, 0x1e, 0x1d, 0x66, 0xbd, 0x78, 0x0f, 0x7d, 0x98, ++ 0x44, 0x9f, 0xe3, 0xfa, 0xdd, 0xef, 0xc3, 0xba, 0x9f, 0x8e, 0x8e, 0x21, ++ 0x4e, 0x46, 0x2f, 0xde, 0xde, 0x74, 0xfe, 0xd7, 0x8d, 0xf6, 0x58, 0x1b, ++ 0x85, 0x57, 0x8d, 0x9e, 0xe2, 0x47, 0x3f, 0xec, 0xc6, 0x65, 0x0c, 0xd3, ++ 0xaf, 0x48, 0x9a, 0x59, 0xb9, 0xff, 0x2d, 0x27, 0xff, 0x0e, 0xf3, 0x59, ++ 0x68, 0x74, 0xeb, 0x41, 0xde, 0x2f, 0x9a, 0x5e, 0xab, 0x07, 0xba, 0x9c, ++ 0x15, 0xeb, 0x2b, 0xb2, 0xf4, 0x0d, 0xdf, 0xf7, 0x61, 0xf2, 0xad, 0x7b, ++ 0xbe, 0xfe, 0xbe, 0x37, 0x71, 0x3e, 0xf4, 0xb1, 0x9e, 0xd2, 0x45, 0x04, ++ 0x3a, 0xfc, 0x9c, 0xc3, 0x7f, 0x02, 0xe0, 0x24, 0x5d, 0xdf, 0xc7, 0xa9, ++ 0x8c, 0x7e, 0x3e, 0xce, 0x20, 0x15, 0x7b, 0xa1, 0xbc, 0x9b, 0x96, 0xf4, ++ 0xbb, 0x8f, 0xb3, 0x79, 0xbd, 0x80, 0xd5, 0xd5, 0xfd, 0x44, 0xd9, 0x18, ++ 0x3d, 0x7f, 0x9c, 0xc7, 0xe4, 0x95, 0x67, 0x25, 0x93, 0x1f, 0xea, 0xf7, ++ 0xfe, 0xc1, 0xc7, 0x73, 0xd9, 0x9c, 0x5f, 0x02, 0x3c, 0xc5, 0x73, 0xa7, ++ 0x8d, 0x3d, 0x7f, 0xd5, 0xe6, 0xfc, 0x0a, 0x9e, 0x53, 0x7e, 0xf8, 0x5f, ++ 0x1c, 0x5f, 0x7d, 0x56, 0xda, 0xdf, 0xac, 0x37, 0x0d, 0x88, 0xaf, 0x64, ++ 0x7d, 0x30, 0x07, 0xf6, 0xb1, 0x63, 0x5d, 0x39, 0x7c, 0xbe, 0x89, 0x91, ++ 0xe7, 0x95, 0x61, 0x63, 0xfc, 0x98, 0xf6, 0x2b, 0xd9, 0x8a, 0xf0, 0x3d, ++ 0x27, 0xea, 0xed, 0x87, 0xa2, 0xbc, 0x60, 0x87, 0x90, 0x09, 0x94, 0x3f, ++ 0x03, 0x3f, 0x5e, 0x99, 0x4e, 0x80, 0x1f, 0xd3, 0x71, 0xa3, 0x6c, 0xac, ++ 0x5f, 0x9f, 0x15, 0xdf, 0x33, 0xe0, 0x3a, 0xc8, 0x46, 0xca, 0xa7, 0x29, ++ 0xde, 0xb6, 0x17, 0xd9, 0x71, 0x5f, 0x36, 0x15, 0x53, 0xfc, 0x04, 0x3e, ++ 0x71, 0xd0, 0x60, 0x01, 0x3e, 0x21, 0xf0, 0x49, 0xe0, 0x91, 0x1a, 0x7f, ++ 0x12, 0x6d, 0x42, 0xfe, 0x31, 0x39, 0x7c, 0x1f, 0xc8, 0x61, 0x19, 0xe5, ++ 0x70, 0xa2, 0x8d, 0xc9, 0x61, 0x3d, 0xd0, 0x39, 0xed, 0x51, 0xcf, 0xf4, ++ 0xc1, 0x9e, 0xb8, 0xdf, 0x88, 0x67, 0xf2, 0xd7, 0xdf, 0xef, 0x3d, 0x46, ++ 0xb6, 0x8f, 0x94, 0xde, 0xed, 0x36, 0x94, 0xfb, 0xbe, 0xdc, 0x70, 0x7a, ++ 0x13, 0x70, 0x16, 0x7c, 0xf2, 0xe3, 0x6e, 0x4a, 0xbc, 0xd8, 0xcd, 0xf9, ++ 0x60, 0x1f, 0x0e, 0xb7, 0x0e, 0x38, 0xdb, 0xd8, 0x7b, 0xf1, 0x3d, 0x98, ++ 0xdc, 0x13, 0xf6, 0xc1, 0x20, 0xbe, 0xae, 0x57, 0x38, 0x3f, 0x17, 0xa5, ++ 0x90, 0x63, 0x03, 0xc7, 0x2a, 0xf5, 0x92, 0x57, 0xb8, 0x5e, 0xf0, 0x8a, ++ 0x35, 0x46, 0xec, 0x4b, 0x21, 0xac, 0x5f, 0xc8, 0xbf, 0x4e, 0xfb, 0xfd, ++ 0x1c, 0xdb, 0x6f, 0xfa, 0xde, 0x60, 0x58, 0xcf, 0x2c, 0x43, 0x70, 0x4e, ++ 0x1c, 0x95, 0x5f, 0xdf, 0xa1, 0x7a, 0x91, 0xbe, 0x00, 0xbf, 0x6b, 0x82, ++ 0xef, 0x3a, 0xf9, 0x29, 0x46, 0x31, 0xb9, 0x5b, 0xb3, 0xd2, 0x4c, 0x40, ++ 0x2f, 0x28, 0xb5, 0x59, 0x18, 0xfc, 0x0b, 0x83, 0x19, 0xd0, 0x1f, 0xe9, ++ 0x13, 0x44, 0x3e, 0x34, 0x9f, 0x50, 0x7e, 0x23, 0xdd, 0x79, 0xff, 0xc0, ++ 0x27, 0x90, 0x42, 0x69, 0x64, 0x69, 0x0c, 0x93, 0x3b, 0x92, 0x4c, 0x07, ++ 0x04, 0x9a, 0xe9, 0x43, 0xec, 0xd0, 0x1f, 0x85, 0xf7, 0x24, 0x5b, 0x51, ++ 0x08, 0xde, 0xea, 0xf1, 0xce, 0x41, 0x13, 0xd5, 0x03, 0xa7, 0xdb, 0x24, ++ 0x2d, 0xee, 0x57, 0x3e, 0xc9, 0x87, 0xfd, 0x9a, 0xf3, 0xc1, 0x97, 0xe6, ++ 0xd9, 0xb4, 0xcb, 0x6b, 0x16, 0xa3, 0x47, 0x43, 0xe5, 0xc8, 0x77, 0x35, ++ 0xee, 0x59, 0xd0, 0x4f, 0xeb, 0x83, 0x27, 0x51, 0xef, 0x3f, 0xa7, 0xf7, ++ 0xe5, 0x34, 0x98, 0x22, 0xb4, 0xeb, 0x7d, 0xcf, 0x3f, 0x2d, 0x85, 0xda, ++ 0xe7, 0xbe, 0x24, 0x7b, 0xf4, 0x94, 0xcf, 0x34, 0xf9, 0x5b, 0x7f, 0x36, ++ 0x8d, 0xe2, 0xe5, 0x7c, 0xbf, 0xec, 0x80, 0x21, 0xe7, 0xaf, 0xfd, 0xeb, ++ 0x7b, 0x03, 0x41, 0x9f, 0xf6, 0xeb, 0x1c, 0x60, 0xd7, 0x52, 0x7d, 0x62, ++ 0xb3, 0x16, 0xe6, 0x5d, 0xcb, 0xf4, 0xcf, 0x73, 0x1a, 0xe5, 0xfe, 0x5f, ++ 0xfd, 0x1e, 0xdb, 0x5f, 0x51, 0x7f, 0x90, 0xe3, 0x0b, 0xd5, 0xb3, 0xb4, ++ 0x64, 0x40, 0x88, 0x5f, 0x09, 0x3d, 0x61, 0x29, 0xf1, 0xf5, 0x02, 0x7d, ++ 0x62, 0x01, 0x71, 0xea, 0xa1, 0x3c, 0xbf, 0x62, 0xc9, 0x04, 0x42, 0xe1, ++ 0xb7, 0xc8, 0xb4, 0x1a, 0xf9, 0xd8, 0xe5, 0x95, 0xe3, 0x50, 0x7f, 0x5e, ++ 0x4c, 0x3c, 0xd8, 0xbe, 0x60, 0xa3, 0xee, 0x7c, 0xb8, 0x7c, 0x59, 0xd4, ++ 0xa0, 0xac, 0x2f, 0xd9, 0xaa, 0xac, 0x2f, 0xf5, 0x2a, 0xeb, 0x42, 0xff, ++ 0x4a, 0x28, 0x8d, 0xac, 0x57, 0xbc, 0xc8, 0xf9, 0xd0, 0x55, 0x2a, 0x2e, ++ 0x6e, 0xa7, 0x57, 0x6c, 0xe1, 0x78, 0x5b, 0xfa, 0xe8, 0x84, 0xa7, 0x91, ++ 0xfe, 0xfd, 0x3a, 0x62, 0xa0, 0xef, 0xad, 0x3e, 0x58, 0x9c, 0x44, 0x22, ++ 0xf4, 0x2b, 0xca, 0x9a, 0x1b, 0xd9, 0xc4, 0x1b, 0x26, 0x87, 0x42, 0xfa, ++ 0x47, 0x0e, 0xf1, 0xf6, 0x87, 0xfe, 0x6e, 0xa2, 0x3f, 0xf0, 0x79, 0xae, ++ 0x9f, 0x40, 0x7f, 0x60, 0xef, 0xae, 0x8e, 0x72, 0x26, 0x81, 0x5d, 0x72, ++ 0xb5, 0x24, 0xf2, 0xbc, 0xb7, 0xf1, 0x79, 0xd7, 0xdc, 0xe8, 0xa6, 0xe8, ++ 0xff, 0xf9, 0x4e, 0x7a, 0x4e, 0x0c, 0x8e, 0x53, 0x73, 0xc3, 0x88, 0x65, ++ 0xe7, 0x79, 0x98, 0xf0, 0xfb, 0xab, 0x8b, 0x23, 0x8f, 0xb3, 0xbb, 0x43, ++ 0x9f, 0xb2, 0x28, 0xe4, 0x69, 0xe8, 0xfb, 0x78, 0x26, 0xff, 0xb8, 0x3d, ++ 0x2f, 0xf0, 0xa1, 0xe6, 0x46, 0x32, 0x3e, 0x17, 0x75, 0xa1, 0x67, 0x87, ++ 0xbe, 0x4b, 0xc3, 0xfe, 0xa8, 0x60, 0xb3, 0x5c, 0x8c, 0x0e, 0xf1, 0x23, ++ 0x5d, 0x37, 0x36, 0x0f, 0x81, 0xff, 0x9f, 0x49, 0xc4, 0x98, 0x82, 0xfe, ++ 0xb1, 0x2d, 0xdc, 0x2e, 0x71, 0xe4, 0x81, 0x9e, 0xfb, 0x19, 0xe8, 0x51, ++ 0x40, 0x7f, 0x63, 0xec, 0x87, 0x02, 0x74, 0x8a, 0x0b, 0x1e, 0x1a, 0x9c, ++ 0xa3, 0xcd, 0x0e, 0xd1, 0x87, 0x7a, 0x1d, 0x14, 0x8f, 0xae, 0x04, 0xc2, ++ 0xe4, 0xfb, 0x21, 0x9b, 0x39, 0x1e, 0xe5, 0xb2, 0x83, 0x38, 0x60, 0x5c, ++ 0x81, 0xdf, 0x73, 0x1e, 0x2c, 0x8b, 0x75, 0xd3, 0xf9, 0xfe, 0x69, 0x6d, ++ 0x69, 0x92, 0xbb, 0x6f, 0x38, 0xdf, 0xf4, 0xe0, 0xf8, 0xd5, 0x7a, 0xa1, ++ 0xbf, 0x99, 0x14, 0xf2, 0x98, 0xa8, 0xe4, 0xf5, 0x82, 0xe6, 0x93, 0xa8, ++ 0x9f, 0x2d, 0x34, 0xba, 0x72, 0x80, 0xc9, 0x7c, 0x7e, 0xf0, 0x41, 0xc4, ++ 0xef, 0xc5, 0xc4, 0x95, 0x08, 0x78, 0xdd, 0x7e, 0xb0, 0x77, 0x86, 0xfb, ++ 0x7f, 0x21, 0xa7, 0xc5, 0x7c, 0xee, 0xf7, 0xcc, 0xd3, 0x31, 0x7d, 0x9c, ++ 0x12, 0x2d, 0xa5, 0xb7, 0xc9, 0x7c, 0x3e, 0xf7, 0xb7, 0x30, 0xfd, 0x50, ++ 0x63, 0x74, 0xea, 0x70, 0x1c, 0x27, 0xb1, 0x5b, 0x12, 0xd1, 0xe4, 0x66, ++ 0xf3, 0xa5, 0xcc, 0x52, 0x4b, 0xeb, 0xc3, 0x3b, 0xe6, 0x0f, 0xce, 0x43, ++ 0x42, 0x86, 0xf1, 0xf9, 0x4b, 0xf0, 0x3d, 0x85, 0xef, 0x70, 0x5e, 0x92, ++ 0xf9, 0xee, 0x64, 0x98, 0xb7, 0x01, 0xc6, 0xa5, 0xe3, 0x45, 0x11, 0x6f, ++ 0x32, 0x94, 0xf5, 0x83, 0x1d, 0x76, 0x28, 0x47, 0x4a, 0x2e, 0x2d, 0x9b, ++ 0x07, 0xdb, 0xe7, 0xd1, 0xa4, 0x36, 0x0d, 0xde, 0xd7, 0x18, 0x03, 0x32, ++ 0x5b, 0x27, 0x9d, 0x41, 0x22, 0x7c, 0xdf, 0x01, 0x2f, 0xac, 0x9b, 0x79, ++ 0x7d, 0xfd, 0x94, 0xeb, 0x73, 0x16, 0xc1, 0x73, 0x93, 0x19, 0xf9, 0x86, ++ 0x9e, 0xcf, 0xe3, 0x16, 0xf0, 0x3f, 0x23, 0xf2, 0x13, 0x23, 0xac, 0xdb, ++ 0x60, 0xf2, 0x5d, 0x86, 0x75, 0x99, 0x79, 0xe9, 0x29, 0x61, 0xfa, 0xb6, ++ 0x27, 0x9b, 0x38, 0xea, 0xe9, 0x6b, 0xdd, 0x48, 0x23, 0x81, 0x71, 0x4d, ++ 0xa6, 0x6b, 0x1e, 0x58, 0xac, 0x85, 0x58, 0x24, 0xa8, 0x47, 0x59, 0xae, ++ 0xfb, 0xc0, 0xee, 0xb8, 0x66, 0x31, 0x79, 0x34, 0xfd, 0x90, 0x2f, 0xca, ++ 0x71, 0x14, 0x7e, 0xad, 0xd2, 0xbb, 0x8b, 0x61, 0x5f, 0x28, 0x1f, 0x66, ++ 0x7e, 0xa8, 0xae, 0xda, 0xb5, 0x3e, 0xb4, 0x77, 0x04, 0x5f, 0xb3, 0xf1, ++ 0xf9, 0xd5, 0x73, 0xbe, 0x96, 0x42, 0x18, 0x1c, 0xe2, 0x89, 0xeb, 0xb0, ++ 0x93, 0xf2, 0x85, 0x9f, 0x98, 0x17, 0x4f, 0x20, 0x31, 0x20, 0x8e, 0xdd, ++ 0x38, 0xfe, 0x33, 0x31, 0x63, 0x4f, 0xc0, 0x7c, 0x01, 0xf0, 0x28, 0xaf, ++ 0xc7, 0x6a, 0xcf, 0x87, 0xcb, 0x8b, 0x04, 0x97, 0x56, 0xc1, 0xb7, 0x92, ++ 0xa6, 0x2b, 0xeb, 0x29, 0x6e, 0x65, 0xdd, 0x48, 0xce, 0x59, 0x00, 0x7f, ++ 0x25, 0x9f, 0x2b, 0xf9, 0x56, 0x1c, 0xda, 0x71, 0x7d, 0xc0, 0x2f, 0xa3, ++ 0xe3, 0xfc, 0x62, 0x4a, 0x37, 0x36, 0x2f, 0x81, 0x3f, 0xd9, 0x71, 0x1a, ++ 0x85, 0x3e, 0xe1, 0xe2, 0x76, 0x7d, 0xb5, 0x4d, 0x4f, 0xd0, 0x1f, 0x98, ++ 0x68, 0x34, 0x92, 0x7e, 0xa8, 0x5f, 0x64, 0xc7, 0x31, 0xfd, 0xe2, 0x13, ++ 0xba, 0xd3, 0xd4, 0xfe, 0x0b, 0x22, 0x1f, 0xce, 0x1f, 0xe9, 0xec, 0xf5, ++ 0x33, 0x0a, 0xe7, 0x0d, 0x1f, 0xc8, 0x8e, 0x87, 0xe9, 0x3e, 0x6d, 0x30, ++ 0xdb, 0xd7, 0x69, 0x41, 0x6f, 0x9b, 0x21, 0x31, 0x3d, 0x5d, 0xdb, 0xe8, ++ 0x03, 0x3f, 0xcf, 0xf6, 0x39, 0x56, 0xc7, 0x26, 0x68, 0x8f, 0x72, 0xfe, ++ 0xf8, 0xbf, 0xa1, 0xfd, 0x03, 0x99, 0x80, 0xde, 0x54, 0x03, 0xfe, 0x75, ++ 0xa4, 0x77, 0x4b, 0x31, 0x7c, 0xb7, 0x3d, 0xc3, 0x82, 0xef, 0xc5, 0x97, ++ 0x06, 0xd1, 0x2f, 0x1a, 0x7c, 0x8c, 0xa0, 0x5e, 0xd4, 0x09, 0x4f, 0x6f, ++ 0xd2, 0xf9, 0x53, 0x78, 0xbf, 0x00, 0x75, 0x0a, 0xdf, 0x9a, 0x85, 0x96, ++ 0xe5, 0xaf, 0xd0, 0xf7, 0x53, 0x5c, 0xd1, 0x0e, 0x29, 0xac, 0x7d, 0x27, ++ 0xb4, 0xd3, 0x79, 0x4a, 0x1c, 0x2f, 0xe0, 0xf9, 0xc8, 0x01, 0x60, 0xc7, ++ 0xb2, 0xbf, 0x1e, 0x2d, 0xf9, 0x7e, 0x27, 0xf8, 0x29, 0x9c, 0x32, 0xca, ++ 0xb5, 0x9a, 0x96, 0xfc, 0x23, 0x26, 0x3a, 0x8f, 0x1e, 0xee, 0x7c, 0x07, ++ 0xa0, 0x6d, 0xcf, 0x16, 0x1e, 0x47, 0x89, 0x37, 0x78, 0x59, 0x1c, 0x81, ++ 0x52, 0x2d, 0x9d, 0xc7, 0x54, 0x23, 0x9b, 0x47, 0x4d, 0x4b, 0xf1, 0x7d, ++ 0x45, 0xb4, 0xbd, 0xa7, 0xbf, 0x3f, 0x81, 0x78, 0x42, 0xf4, 0x09, 0xfb, ++ 0xcc, 0x4a, 0x68, 0xd2, 0x50, 0xfb, 0x19, 0xbe, 0x2b, 0x89, 0x46, 0xff, ++ 0xd5, 0x69, 0xee, 0x47, 0x22, 0x9c, 0x1f, 0x0c, 0x54, 0xd1, 0xdb, 0xd0, ++ 0x10, 0xfe, 0x63, 0x7b, 0xbe, 0xa8, 0x53, 0xf1, 0xef, 0x1c, 0xc0, 0xdc, ++ 0x13, 0x58, 0x8f, 0x67, 0x74, 0xe0, 0x20, 0xe2, 0x8f, 0xd1, 0xe7, 0x10, ++ 0x12, 0xfa, 0x83, 0xef, 0x4b, 0x43, 0xfd, 0x21, 0x3f, 0x1a, 0x15, 0x6a, ++ 0x0e, 0xd1, 0x1b, 0x5d, 0x5a, 0x81, 0xd1, 0x51, 0x5f, 0x49, 0xdf, 0x3b, ++ 0x56, 0x3e, 0x06, 0xf1, 0xb0, 0x06, 0xec, 0x27, 0xba, 0x1f, 0x03, 0xb5, ++ 0xbe, 0xc3, 0x40, 0xdf, 0x43, 0x79, 0x99, 0xcf, 0x4b, 0x32, 0xbf, 0x01, ++ 0xe1, 0xb9, 0x69, 0x9d, 0x53, 0x06, 0xb8, 0x17, 0x11, 0xb7, 0xbc, 0x85, ++ 0xd6, 0x07, 0x19, 0xfd, 0x71, 0x40, 0x0f, 0xc3, 0x8c, 0x81, 0x75, 0x09, ++ 0xb4, 0xbf, 0xc1, 0xd3, 0xe7, 0x25, 0x43, 0xfd, 0x20, 0x28, 0x59, 0x45, ++ 0xa8, 0x67, 0x79, 0xc0, 0x3f, 0x6f, 0x35, 0x69, 0xbc, 0xeb, 0x70, 0x13, ++ 0xf3, 0x1d, 0x40, 0x37, 0xd3, 0xa6, 0x33, 0x3f, 0xeb, 0xd4, 0xe9, 0x46, ++ 0x2f, 0xf8, 0xed, 0xa7, 0x6a, 0x09, 0x8b, 0x6f, 0x69, 0xdd, 0x59, 0xdf, ++ 0xa1, 0xed, 0xdf, 0x99, 0xc5, 0xfc, 0xbb, 0x50, 0x9f, 0x15, 0xe6, 0x3f, ++ 0x11, 0xf1, 0x8c, 0xd3, 0xd4, 0x1e, 0xd9, 0x13, 0xc1, 0x9e, 0x3c, 0x18, ++ 0xc7, 0xe4, 0x93, 0xf8, 0xbe, 0x66, 0xbd, 0x5e, 0x11, 0x37, 0xda, 0x1f, ++ 0x67, 0xc2, 0xf6, 0xff, 0x88, 0x1b, 0xbd, 0x36, 0x0e, 0xf1, 0xdf, 0x9d, ++ 0x05, 0xf4, 0xf7, 0x70, 0x1c, 0xd7, 0xab, 0xfa, 0x90, 0x3e, 0xc0, 0x57, ++ 0xc2, 0xe8, 0x7e, 0x03, 0xbc, 0xd7, 0x5a, 0xfc, 0x4e, 0x57, 0x7c, 0x41, ++ 0xd9, 0xce, 0xf9, 0xc2, 0x54, 0xe7, 0x4f, 0x75, 0xa8, 0x8f, 0x73, 0xfe, ++ 0x20, 0xf8, 0xb0, 0x0b, 0xe8, 0x90, 0x7e, 0xe7, 0x97, 0x9c, 0x3a, 0x80, ++ 0xe7, 0x47, 0x25, 0x0c, 0xfe, 0xa7, 0x8a, 0x97, 0x22, 0x7f, 0x98, 0x46, ++ 0xdc, 0xf8, 0x9c, 0x22, 0x88, 0xce, 0x15, 0xee, 0x37, 0x1a, 0x1b, 0xa6, ++ 0xc7, 0xd0, 0x71, 0xa6, 0xba, 0x94, 0x7a, 0xcd, 0xb4, 0xe9, 0x6a, 0x3d, ++ 0x87, 0xe1, 0xab, 0x18, 0x77, 0x86, 0x5b, 0xd9, 0x3e, 0x59, 0xe8, 0xa9, ++ 0x63, 0x95, 0x7a, 0xea, 0xac, 0xef, 0xdf, 0xb4, 0xa2, 0xfc, 0x4d, 0x7a, ++ 0xb1, 0xea, 0x56, 0x26, 0xc6, 0x49, 0xd0, 0xde, 0xaf, 0xa1, 0xfb, 0xc4, ++ 0xe2, 0x24, 0x5a, 0x16, 0x37, 0x59, 0xaf, 0xf7, 0x82, 0xbe, 0x53, 0xd3, ++ 0xbc, 0xe2, 0x58, 0x02, 0xd0, 0xd1, 0x5a, 0xc2, 0xe9, 0x68, 0x8f, 0xb4, ++ 0x10, 0xe3, 0x38, 0x7b, 0xa4, 0x45, 0x61, 0xfa, 0x43, 0xf7, 0x4a, 0xaf, ++ 0x04, 0x7c, 0xbf, 0x37, 0x5d, 0x93, 0x1f, 0xf7, 0x35, 0x88, 0xf1, 0xa1, ++ 0xd3, 0x3a, 0xef, 0x61, 0x88, 0x9b, 0x9c, 0x5e, 0x4a, 0x57, 0x4c, 0xe7, ++ 0x79, 0x44, 0xcf, 0xe2, 0x8f, 0x47, 0xa3, 0x88, 0x07, 0xfc, 0xcf, 0x02, ++ 0x3f, 0xcd, 0x93, 0x99, 0xff, 0x94, 0xa2, 0x31, 0xc6, 0x41, 0xd2, 0x2c, ++ 0xd1, 0x0e, 0xd0, 0xcb, 0x37, 0x6a, 0x0a, 0xd0, 0xdf, 0xba, 0x31, 0xc6, ++ 0xec, 0x08, 0xf7, 0x6f, 0x6e, 0x5a, 0xe7, 0x2e, 0x0b, 0xf7, 0xb3, 0xda, ++ 0x0d, 0xa4, 0xc0, 0xc2, 0xf1, 0x26, 0x92, 0x1d, 0x7b, 0x8c, 0xf3, 0xc3, ++ 0xa7, 0x24, 0xe6, 0xef, 0xf6, 0xcc, 0x30, 0xa2, 0xdd, 0x96, 0xd0, 0xc3, ++ 0xa5, 0x88, 0x2f, 0x24, 0xc8, 0xe4, 0x2c, 0xf8, 0x0d, 0xd7, 0xc6, 0xd9, ++ 0x51, 0xde, 0x3e, 0xc5, 0xfd, 0x1a, 0x10, 0x9f, 0xeb, 0x4f, 0x4b, 0xaf, ++ 0x44, 0x05, 0x62, 0x7c, 0xd8, 0xf7, 0x32, 0x59, 0x8f, 0x7e, 0x46, 0x15, ++ 0xff, 0x49, 0x88, 0x73, 0xa0, 0x7f, 0x3f, 0x21, 0x36, 0x17, 0xfd, 0xf4, ++ 0xd3, 0x5b, 0xf2, 0x77, 0x22, 0xbf, 0x31, 0x45, 0x39, 0x7a, 0x49, 0xa1, ++ 0xfe, 0xa7, 0xbb, 0xb7, 0x6b, 0x17, 0x81, 0xfe, 0xd4, 0xb2, 0x5d, 0xbb, ++ 0xd0, 0x14, 0xc2, 0xbb, 0xb3, 0x02, 0x5f, 0xa3, 0x49, 0x34, 0xe0, 0x6b, ++ 0x87, 0xdf, 0x6e, 0xaf, 0x01, 0xfd, 0x76, 0xdf, 0xd5, 0xb8, 0xce, 0x01, ++ 0x5e, 0x56, 0xea, 0x7d, 0x79, 0x44, 0x89, 0xcf, 0xf8, 0xbc, 0x2b, 0x39, ++ 0xb6, 0x84, 0xe3, 0x8b, 0xae, 0xc4, 0x35, 0x63, 0x11, 0x9d, 0x4f, 0xfb, ++ 0x7b, 0x7a, 0xe6, 0xc7, 0x5a, 0x4b, 0x90, 0x5e, 0x5f, 0xdb, 0x6f, 0x45, ++ 0xbf, 0xa3, 0x76, 0x32, 0x41, 0x79, 0xb2, 0xbe, 0x98, 0x20, 0x3e, 0xb4, ++ 0x6f, 0x97, 0x50, 0x4f, 0xfe, 0xc2, 0x5a, 0x81, 0xfa, 0xfb, 0x7a, 0xa9, ++ 0x01, 0xe5, 0x44, 0x9b, 0x6d, 0x34, 0xee, 0xdf, 0x32, 0xd3, 0x51, 0xb4, ++ 0x4f, 0x2b, 0x9e, 0xd3, 0x9d, 0x0f, 0xd7, 0xbb, 0x96, 0xed, 0x54, 0xd6, ++ 0x97, 0x13, 0x3f, 0xda, 0xc7, 0x95, 0xaf, 0x74, 0xc2, 0x67, 0xe4, 0x5f, ++ 0x82, 0x3f, 0x56, 0x37, 0x29, 0xbf, 0x23, 0x3d, 0x95, 0xfc, 0x31, 0x9f, ++ 0xf3, 0xfd, 0x02, 0x97, 0xe3, 0xfe, 0x32, 0x98, 0xfa, 0x74, 0x47, 0x0f, ++ 0x66, 0x1f, 0x13, 0x9f, 0x81, 0xae, 0xa3, 0xe8, 0x5d, 0x3d, 0xf7, 0xf7, ++ 0xce, 0x62, 0x72, 0x93, 0xbc, 0x28, 0x81, 0xbe, 0xd5, 0x6e, 0xbe, 0x24, ++ 0x33, 0x3a, 0x67, 0xfc, 0xb8, 0x88, 0xf7, 0xa7, 0x96, 0x43, 0x45, 0x5c, ++ 0x9f, 0x1a, 0x41, 0xf9, 0x16, 0xd8, 0x91, 0x42, 0x3f, 0xa2, 0xef, 0x63, ++ 0xfd, 0xa8, 0xa6, 0x45, 0x4e, 0xd6, 0x84, 0xe6, 0x55, 0xc8, 0xbf, 0x13, ++ 0x7a, 0x99, 0xe0, 0xdb, 0x62, 0x5f, 0x8a, 0x07, 0x81, 0x2d, 0x4c, 0x48, ++ 0x46, 0x3c, 0xd7, 0x6f, 0xb2, 0x49, 0x36, 0xec, 0x2b, 0xed, 0x1f, 0xe9, ++ 0x81, 0x8e, 0xeb, 0xd1, 0xdb, 0xb0, 0x7f, 0x0f, 0xd8, 0x5f, 0x43, 0xf9, ++ 0x78, 0x74, 0xdf, 0x3d, 0x20, 0x67, 0x3d, 0x1a, 0xa3, 0x17, 0xf0, 0x68, ++ 0x83, 0x54, 0x8b, 0x7c, 0xda, 0x48, 0x38, 0xbf, 0x96, 0xdc, 0xf5, 0xf0, ++ 0xf1, 0x6f, 0x3c, 0x1e, 0xe4, 0xdb, 0x83, 0x49, 0xed, 0xfd, 0x13, 0xb2, ++ 0x80, 0x5f, 0xfb, 0xa3, 0x01, 0x1e, 0x14, 0x1f, 0xb2, 0xe3, 0xc3, 0xf0, ++ 0xa4, 0x9e, 0xf8, 0x32, 0xf6, 0x48, 0x0a, 0x7c, 0xc1, 0xf6, 0x56, 0xeb, ++ 0x3b, 0x11, 0xf1, 0x45, 0xc8, 0x17, 0xdf, 0x47, 0x4c, 0xbf, 0x18, 0x4f, ++ 0x57, 0x0c, 0xfd, 0x94, 0x41, 0xe0, 0x86, 0x96, 0x47, 0x25, 0x66, 0xcf, ++ 0x8d, 0x31, 0x3d, 0xa9, 0x85, 0xef, 0xdf, 0xd1, 0x8c, 0x43, 0x7c, 0x18, ++ 0x4b, 0xbc, 0x5a, 0x98, 0x5f, 0x99, 0x45, 0xb9, 0xcf, 0x63, 0x92, 0x95, ++ 0xf5, 0x71, 0xf6, 0x4e, 0x78, 0x20, 0xc3, 0xb8, 0x4e, 0x0e, 0xcf, 0xf1, ++ 0x7d, 0x94, 0xed, 0x4e, 0xc1, 0xd7, 0x88, 0x92, 0xaf, 0x65, 0x91, 0x9b, ++ 0xb8, 0xcf, 0xe4, 0xb1, 0xe3, 0xdf, 0x05, 0xfb, 0x3e, 0x7a, 0x0d, 0xe9, ++ 0x03, 0x7a, 0x07, 0xd5, 0x10, 0x91, 0xde, 0xd4, 0xfc, 0x60, 0x54, 0xbc, ++ 0x49, 0xa1, 0x1f, 0x85, 0xc5, 0x3d, 0x46, 0xc5, 0x27, 0x74, 0x8e, 0x7b, ++ 0xb4, 0x73, 0x3f, 0xee, 0x10, 0x12, 0x58, 0xfc, 0x8a, 0xd4, 0x19, 0x5f, ++ 0xda, 0x8e, 0xad, 0x91, 0x93, 0xc3, 0xf0, 0x4a, 0xe0, 0xf1, 0x1b, 0x3c, ++ 0x4f, 0x42, 0x7a, 0x93, 0xc7, 0x57, 0x0b, 0x99, 0x5f, 0x2f, 0x24, 0xe7, ++ 0x19, 0xbe, 0x0c, 0xe0, 0xb5, 0x21, 0x80, 0x6f, 0xf4, 0xfd, 0x45, 0x02, ++ 0x4f, 0x32, 0x49, 0x26, 0xe0, 0xc9, 0xf0, 0xe6, 0x28, 0x9f, 0x4c, 0xe1, ++ 0x9a, 0xcf, 0xfb, 0x19, 0x02, 0x78, 0x53, 0x10, 0x92, 0xe7, 0x3e, 0x8d, ++ 0xc9, 0xae, 0xcf, 0x06, 0xfc, 0x70, 0x6c, 0x94, 0xe5, 0xce, 0x7a, 0x7b, ++ 0xa2, 0xcd, 0x8e, 0x78, 0xd2, 0x5f, 0x23, 0xe4, 0xbb, 0x23, 0x8e, 0xa0, ++ 0x7c, 0x6f, 0xac, 0xd7, 0xc2, 0xfc, 0xf7, 0x0f, 0xec, 0xee, 0x36, 0x29, ++ 0xf0, 0x62, 0x29, 0xe2, 0x85, 0x44, 0xf1, 0x02, 0xe9, 0xaa, 0x93, 0x5c, ++ 0x54, 0xb6, 0xab, 0xf0, 0x46, 0xec, 0xdf, 0x09, 0xae, 0x2f, 0x8f, 0x21, ++ 0x9e, 0x9e, 0x30, 0x1e, 0x65, 0x63, 0x47, 0x41, 0x5f, 0xf6, 0x65, 0x31, ++ 0xbc, 0x29, 0x23, 0x4e, 0xc4, 0x93, 0xb7, 0xb3, 0xc7, 0xf1, 0xf8, 0xb3, ++ 0x5b, 0x8b, 0xfd, 0x10, 0xa5, 0x3c, 0x2c, 0x35, 0x2a, 0xf1, 0x40, 0x8d, ++ 0x57, 0x74, 0x44, 0x4d, 0xf8, 0xb8, 0x6a, 0x3c, 0xeb, 0x0a, 0x6f, 0x32, ++ 0x01, 0x6f, 0x84, 0x3c, 0x8c, 0xbb, 0x33, 0xde, 0x3c, 0xde, 0x35, 0xde, ++ 0x3c, 0x7e, 0x3b, 0xbc, 0x51, 0xe3, 0x8b, 0xe0, 0x27, 0x7b, 0xa2, 0x2c, ++ 0xa5, 0xa0, 0x97, 0xd6, 0x54, 0x48, 0xc8, 0x87, 0xfb, 0xbf, 0xd7, 0xb3, ++ 0x1e, 0xea, 0xbd, 0xab, 0xb2, 0x30, 0x8f, 0x65, 0x8f, 0xd5, 0x81, 0x7a, ++ 0x6b, 0x4d, 0x2d, 0x6b, 0x2f, 0xf4, 0x3b, 0x65, 0xc8, 0x73, 0xe9, 0xb1, ++ 0x9a, 0xb7, 0x67, 0xb9, 0x4a, 0xa1, 0x5e, 0xb3, 0x86, 0xc5, 0x1b, 0x8a, ++ 0x4e, 0xb3, 0x3c, 0x98, 0x9e, 0x6b, 0x59, 0x7b, 0xfe, 0xc3, 0xb5, 0x47, ++ 0xcc, 0x20, 0xdf, 0x3d, 0xec, 0xfb, 0x37, 0x2e, 0x6f, 0x90, 0x63, 0x68, ++ 0xbb, 0x77, 0x03, 0xff, 0xbe, 0xb8, 0xa1, 0x14, 0xea, 0x35, 0x1b, 0xd9, ++ 0xf7, 0x5f, 0x40, 0xbc, 0x88, 0xee, 0xef, 0x80, 0xb3, 0xde, 0x7a, 0x78, ++ 0x7e, 0xd7, 0xe6, 0x2c, 0x07, 0x33, 0x3f, 0x99, 0x3e, 0x3b, 0x92, 0xe3, ++ 0xe9, 0x1e, 0x69, 0xef, 0x11, 0xfc, 0xae, 0x81, 0x7d, 0xb7, 0xe4, 0xb8, ++ 0xb1, 0x1b, 0x41, 0x3d, 0x98, 0xe9, 0xad, 0x23, 0xf8, 0x3a, 0x47, 0x3e, ++ 0xc7, 0xd6, 0x19, 0xff, 0xd9, 0xbd, 0x63, 0xed, 0x14, 0x7f, 0x17, 0x05, ++ 0x3d, 0xa8, 0x37, 0x5d, 0xd4, 0x54, 0x0e, 0x40, 0x7e, 0xd3, 0x85, 0x9d, ++ 0x59, 0x2c, 0x35, 0xa4, 0x41, 0x49, 0xf1, 0x06, 0xf9, 0x8c, 0xd3, 0x48, ++ 0xf1, 0x3a, 0x9b, 0xc5, 0x13, 0x77, 0xd0, 0x21, 0xde, 0x8e, 0x67, 0x7a, ++ 0xa0, 0x88, 0xc3, 0x41, 0x5e, 0x40, 0x78, 0x1e, 0xc0, 0xdb, 0xf1, 0x4c, ++ 0xde, 0x8b, 0xf7, 0x12, 0x6d, 0x84, 0xc5, 0x8d, 0xb7, 0x99, 0xd1, 0xaf, ++ 0x2b, 0xe2, 0x84, 0xbe, 0xa7, 0x89, 0x04, 0x74, 0x06, 0x6b, 0xe4, 0xf2, ++ 0x3f, 0x62, 0xdc, 0x70, 0x4c, 0x8f, 0x5a, 0x8c, 0x17, 0x8e, 0xc9, 0x14, ++ 0xf1, 0xc2, 0x80, 0x76, 0x3e, 0x1d, 0x37, 0xff, 0xd6, 0x97, 0xa3, 0x23, ++ 0xf9, 0x51, 0xfe, 0x93, 0x8f, 0x7b, 0x89, 0xe7, 0x39, 0x88, 0xe7, 0x15, ++ 0xde, 0x2c, 0x0d, 0xe0, 0xc5, 0x1e, 0x40, 0x92, 0x54, 0x00, 0x52, 0xf5, ++ 0x6f, 0x41, 0x6f, 0xda, 0x03, 0x7e, 0x54, 0x26, 0x34, 0x3c, 0x64, 0x10, ++ 0xec, 0x2b, 0xab, 0x9f, 0x8b, 0x5f, 0xb6, 0x69, 0x23, 0x35, 0xd2, 0x97, ++ 0x68, 0x6a, 0xb5, 0x1e, 0x10, 0x32, 0x19, 0xd4, 0xfe, 0xa2, 0x5d, 0x4f, ++ 0xf2, 0x13, 0x5f, 0x6c, 0x4c, 0xe7, 0xf9, 0x8f, 0xd1, 0x12, 0x1f, 0xc8, ++ 0x27, 0xa2, 0x65, 0xf3, 0x5f, 0x5c, 0x4f, 0xe5, 0xa0, 0x14, 0xe2, 0x4b, ++ 0x53, 0x05, 0xdb, 0x19, 0xd6, 0x0b, 0xe9, 0x74, 0x0a, 0xdf, 0xa7, 0xcb, ++ 0xf1, 0x5c, 0xdf, 0xe8, 0x4f, 0xfa, 0x03, 0xbf, 0x99, 0xca, 0xf7, 0xed, ++ 0x3b, 0xc6, 0x5a, 0x1d, 0x93, 0x97, 0x0d, 0x3a, 0x15, 0xfd, 0x5f, 0x43, ++ 0xfa, 0x7f, 0xa6, 0x4b, 0xbd, 0x59, 0xd9, 0xae, 0xe2, 0x0f, 0x15, 0x7c, ++ 0xdc, 0xc5, 0x5c, 0x5f, 0x5e, 0x4a, 0x82, 0xa8, 0x17, 0x5c, 0x94, 0xbc, ++ 0x58, 0x5e, 0x7a, 0x86, 0xe9, 0xcb, 0xcb, 0x4d, 0xa7, 0x51, 0xaf, 0x68, ++ 0xdf, 0xc6, 0xf4, 0xc4, 0x4a, 0x12, 0x40, 0xbd, 0x43, 0xed, 0xf7, 0x5b, ++ 0xbe, 0x5b, 0x59, 0xaf, 0x6a, 0x54, 0xd6, 0x6b, 0x9a, 0x95, 0xf5, 0xf6, ++ 0x5c, 0x0f, 0x8e, 0xd3, 0xfe, 0x4c, 0xd5, 0x00, 0xf0, 0xbf, 0x55, 0x6c, ++ 0x7d, 0x0f, 0xfd, 0xbb, 0x15, 0x82, 0x4f, 0x78, 0x95, 0x7c, 0x82, 0x2a, ++ 0x48, 0x8c, 0x4f, 0x3c, 0x7d, 0x37, 0xfa, 0x6d, 0x34, 0x46, 0xca, 0x27, ++ 0x0a, 0x01, 0x5c, 0xdd, 0x30, 0x6f, 0xa4, 0x3f, 0x71, 0xc6, 0x01, 0x3f, ++ 0x00, 0x21, 0x7b, 0x8b, 0xd6, 0x1f, 0x83, 0x4f, 0x52, 0x68, 0x5d, 0xe3, ++ 0x8a, 0x49, 0x40, 0x3f, 0xd6, 0xd8, 0xb8, 0x0b, 0x62, 0x7c, 0x19, 0xe3, ++ 0xb2, 0xef, 0x39, 0xed, 0xa1, 0x7d, 0xe9, 0xb0, 0x0b, 0x55, 0x7c, 0x22, ++ 0x5f, 0xf8, 0x63, 0x7a, 0xda, 0xd0, 0x5f, 0x25, 0xf8, 0x46, 0x3e, 0x61, ++ 0x72, 0x42, 0xad, 0x17, 0xf5, 0x49, 0x50, 0xda, 0x39, 0x42, 0xaf, 0xc8, ++ 0x07, 0xbd, 0x82, 0xe2, 0x85, 0x5f, 0x63, 0xf2, 0x6a, 0x34, 0xe1, 0x7a, ++ 0x84, 0x17, 0xe9, 0x8f, 0xda, 0x8b, 0xe3, 0xa3, 0xb2, 0x01, 0x65, 0x5c, ++ 0x32, 0xd4, 0xfb, 0xcf, 0x28, 0x34, 0xf2, 0x7d, 0x27, 0xaa, 0x7d, 0xed, ++ 0x9b, 0x70, 0x7b, 0x7b, 0x49, 0xd9, 0xae, 0xda, 0x77, 0x61, 0xaf, 0x0c, ++ 0xe0, 0xfb, 0x3e, 0x83, 0xb8, 0xbb, 0xc3, 0x3e, 0x4c, 0x21, 0xae, 0x63, ++ 0x20, 0x17, 0x4e, 0x7d, 0x54, 0xa1, 0xb0, 0x93, 0x3e, 0xfa, 0xc3, 0x68, ++ 0xe1, 0x47, 0x41, 0x7b, 0xe9, 0x9b, 0xdb, 0x49, 0x4e, 0xf9, 0xdb, 0xd8, ++ 0x49, 0x1d, 0xfb, 0x1d, 0x45, 0xf5, 0x46, 0x5a, 0x96, 0x4e, 0x1e, 0xd7, ++ 0xeb, 0x67, 0x10, 0xdf, 0x6e, 0x8a, 0xc2, 0xbc, 0xcd, 0x1a, 0x89, 0xed, ++ 0x6f, 0xe2, 0x8c, 0xd3, 0x19, 0xe1, 0x7e, 0xc3, 0x53, 0x75, 0x24, 0x41, ++ 0x1b, 0x46, 0xef, 0xf5, 0xe3, 0x0c, 0x46, 0x88, 0xef, 0xd5, 0xeb, 0x98, ++ 0x1d, 0x31, 0x79, 0xfc, 0xc7, 0x03, 0xe6, 0x87, 0xf1, 0x8b, 0x17, 0x8c, ++ 0xc5, 0x2e, 0x80, 0xd7, 0x06, 0xc9, 0xff, 0xbd, 0x3f, 0x82, 0x5d, 0x71, ++ 0x52, 0x26, 0x98, 0x17, 0xd3, 0x92, 0x80, 0xfb, 0x7d, 0xbd, 0x81, 0x3e, ++ 0xa7, 0x78, 0x76, 0xfd, 0xb9, 0x7b, 0x1c, 0x1e, 0xfa, 0xf8, 0xaa, 0x8e, ++ 0xc5, 0x0b, 0xbf, 0x90, 0x6a, 0x17, 0x43, 0x2a, 0x93, 0x98, 0xc7, 0xe2, ++ 0x35, 0xbf, 0x8d, 0xd2, 0x52, 0xf9, 0x75, 0x25, 0xfa, 0x10, 0xc6, 0x83, ++ 0xcf, 0xe8, 0xdd, 0xb3, 0x01, 0xef, 0x96, 0xbd, 0xb3, 0x0f, 0xfd, 0x91, ++ 0x95, 0xa0, 0x77, 0xf7, 0x08, 0xf5, 0xdb, 0xb5, 0xdf, 0xd1, 0x83, 0x76, ++ 0x89, 0xfe, 0x2d, 0x26, 0x07, 0x83, 0x52, 0x37, 0x07, 0xe6, 0x25, 0x10, ++ 0x4f, 0x4e, 0x78, 0x9c, 0x68, 0x56, 0x22, 0xe3, 0xaf, 0x67, 0x6c, 0xae, ++ 0xa5, 0x30, 0x7f, 0x21, 0xe7, 0x84, 0xdf, 0xff, 0xdc, 0x8a, 0x31, 0xb1, ++ 0x20, 0x0a, 0xfe, 0x42, 0x9c, 0xb1, 0x10, 0x9f, 0x94, 0x28, 0x4c, 0xba, ++ 0xdb, 0x3a, 0x8f, 0x07, 0xf9, 0x00, 0xeb, 0xc3, 0xfc, 0xcc, 0xe7, 0xa2, ++ 0x94, 0xf1, 0x05, 0x51, 0x7e, 0x2f, 0x81, 0xf9, 0xbf, 0xf7, 0x01, 0x2d, ++ 0xd1, 0xf1, 0xd2, 0xac, 0xce, 0xef, 0xc3, 0xfa, 0x2e, 0x71, 0x7b, 0xef, ++ 0x12, 0x8f, 0x53, 0x5d, 0x8a, 0x61, 0x71, 0xab, 0x87, 0x13, 0x18, 0xff, ++ 0xdd, 0xc7, 0xbf, 0xdb, 0xca, 0xcb, 0x4b, 0x3c, 0xae, 0x75, 0xc9, 0xa6, ++ 0xb4, 0x13, 0xc5, 0x7b, 0xdb, 0xf8, 0x77, 0x17, 0xea, 0x8c, 0xc6, 0xf5, ++ 0x61, 0xfb, 0x68, 0x7f, 0xda, 0x50, 0xeb, 0xc5, 0x3c, 0x28, 0x9e, 0xf7, ++ 0xb1, 0x9a, 0x30, 0xbb, 0x68, 0xbf, 0x75, 0xfb, 0xa6, 0xb0, 0xf8, 0xc1, ++ 0xae, 0x84, 0xe2, 0x7d, 0x30, 0xaf, 0x84, 0x1e, 0x4e, 0x7d, 0x0a, 0xc0, ++ 0x6f, 0x3f, 0x93, 0xbb, 0x10, 0x47, 0x86, 0x78, 0xef, 0x30, 0x8b, 0xbb, ++ 0x01, 0xe0, 0x55, 0x6d, 0x27, 0x4e, 0x88, 0x97, 0x12, 0x7b, 0x40, 0x7f, ++ 0x3f, 0xc4, 0x0d, 0xc1, 0xce, 0x44, 0x7d, 0x81, 0xe1, 0x49, 0x7b, 0x14, ++ 0x2b, 0xc5, 0xbc, 0x76, 0x25, 0x94, 0xef, 0x43, 0x38, 0xaf, 0x08, 0x20, ++ 0xdf, 0xea, 0xa8, 0x97, 0x33, 0x7e, 0xb8, 0x2b, 0xc1, 0x85, 0xe3, 0xb6, ++ 0x4f, 0x15, 0xed, 0xbc, 0xfe, 0x04, 0xab, 0x13, 0xee, 0x2f, 0x10, 0xfe, ++ 0xeb, 0xae, 0xe2, 0x58, 0xea, 0xb8, 0x15, 0xcc, 0x18, 0xf5, 0xea, 0x28, ++ 0xc6, 0xb7, 0xd4, 0xf1, 0xea, 0xd9, 0x82, 0x6f, 0xf1, 0x78, 0xf5, 0x2c, ++ 0xce, 0x87, 0x66, 0xb7, 0x30, 0x7f, 0xf8, 0x1c, 0x23, 0xd9, 0xd0, 0x9d, ++ 0xb6, 0xcf, 0x6d, 0x49, 0x62, 0xf6, 0x61, 0x8c, 0x27, 0x47, 0x11, 0xaf, ++ 0xf6, 0x44, 0x7f, 0xa3, 0x3c, 0x05, 0x81, 0x9f, 0xed, 0xe9, 0xfe, 0x8e, ++ 0x38, 0xeb, 0xb6, 0xb0, 0x38, 0x6b, 0x15, 0x8f, 0xd3, 0x55, 0x89, 0xf5, ++ 0x35, 0x29, 0xd7, 0x77, 0x24, 0xa1, 0xcb, 0x38, 0xeb, 0x91, 0x84, 0x08, ++ 0x71, 0x56, 0x75, 0x3c, 0x7f, 0x1f, 0xc8, 0xf3, 0x9e, 0x21, 0x78, 0xae, ++ 0xb4, 0xb0, 0xf5, 0x97, 0xc9, 0x95, 0xa5, 0x7a, 0xe0, 0x0f, 0x0b, 0x09, ++ 0xe6, 0x7f, 0xaf, 0x3c, 0xb9, 0xa0, 0xde, 0x48, 0xeb, 0x2b, 0x1f, 0x03, ++ 0x4f, 0x1f, 0xf2, 0x21, 0xd4, 0x4f, 0xab, 0x38, 0xbc, 0xba, 0x9a, 0x5f, ++ 0x82, 0x4b, 0x43, 0xec, 0x0a, 0xbf, 0x70, 0x37, 0x62, 0x0f, 0xb3, 0x83, ++ 0x53, 0xdc, 0x36, 0x45, 0x1d, 0x35, 0xde, 0xb0, 0xfc, 0xc9, 0xee, 0x15, ++ 0xa9, 0x8a, 0xef, 0xd3, 0x6b, 0xb3, 0x15, 0xef, 0x67, 0xae, 0xb9, 0x5b, ++ 0xd1, 0x9e, 0xe5, 0x29, 0x50, 0xd4, 0x7b, 0x6c, 0x1c, 0xa2, 0x78, 0xbf, ++ 0x57, 0x43, 0x89, 0xa2, 0xde, 0x7b, 0xeb, 0xbd, 0x8a, 0xf7, 0xf3, 0x49, ++ 0x76, 0x2c, 0xfa, 0x8f, 0x4e, 0xc8, 0xe0, 0x1b, 0x21, 0x77, 0x79, 0x27, ++ 0x2b, 0xda, 0xef, 0xd9, 0xfd, 0x80, 0xe2, 0xfb, 0x2f, 0x48, 0xed, 0x53, ++ 0xc3, 0xe8, 0x7b, 0x4d, 0x51, 0x8c, 0xff, 0x13, 0x8f, 0xd3, 0xdf, 0x77, ++ 0x40, 0x28, 0x5f, 0x38, 0xb7, 0x71, 0xbe, 0xe2, 0xfb, 0x7a, 0xa9, 0x71, ++ 0x80, 0x8f, 0xbe, 0xbf, 0xd0, 0xcf, 0xfc, 0xeb, 0xfd, 0x9a, 0x97, 0x29, ++ 0xfa, 0xbb, 0x1a, 0x33, 0x9a, 0xd9, 0x0d, 0x3c, 0x4e, 0x58, 0x4b, 0xff, ++ 0x31, 0xfe, 0x6d, 0x97, 0x51, 0xff, 0x69, 0x96, 0xc8, 0x36, 0xa9, 0x73, ++ 0xdc, 0xb0, 0xa2, 0x65, 0xcb, 0x86, 0xee, 0x24, 0x52, 0xfc, 0x90, 0xc9, ++ 0xf5, 0x65, 0x54, 0xae, 0x83, 0xde, 0xa4, 0xd6, 0x2b, 0x0c, 0x89, 0x3c, ++ 0x8e, 0x94, 0x4a, 0x52, 0x6f, 0x85, 0xd1, 0x55, 0x08, 0x0f, 0x4c, 0xa8, ++ 0x77, 0x5d, 0x7f, 0x4e, 0x46, 0xff, 0x59, 0x3e, 0xc9, 0x79, 0x7a, 0x18, ++ 0xc2, 0x47, 0x47, 0xbc, 0xf6, 0xce, 0xfb, 0x75, 0x9d, 0x30, 0xbf, 0xce, ++ 0xf5, 0x57, 0xcc, 0x0e, 0xf0, 0x8f, 0x2d, 0x39, 0xb9, 0x00, 0xf1, 0xcf, ++ 0x90, 0xac, 0xc4, 0x83, 0x28, 0xbb, 0x12, 0x0f, 0xa2, 0xfb, 0x28, 0xf1, ++ 0xc0, 0xec, 0x50, 0xee, 0x7b, 0xec, 0x20, 0xe5, 0xbe, 0xab, 0xe1, 0x6c, ++ 0x75, 0x2a, 0xf1, 0x40, 0xc0, 0x51, 0xc0, 0x39, 0x6e, 0xac, 0x12, 0x2f, ++ 0x04, 0x7c, 0x07, 0xd1, 0x7f, 0x00, 0xdf, 0x02, 0x12, 0x3c, 0x8e, 0xf9, ++ 0xd1, 0x5e, 0xc9, 0xe1, 0x23, 0x11, 0xe2, 0xb2, 0xcd, 0xdb, 0x71, 0x1d, ++ 0x77, 0xd2, 0xd3, 0xf2, 0x55, 0xf0, 0xec, 0x7f, 0xd4, 0x59, 0x6f, 0x42, ++ 0x38, 0xb1, 0x7c, 0x29, 0xa1, 0x17, 0x19, 0xb8, 0x5e, 0xa2, 0xf6, 0x93, ++ 0x77, 0xf8, 0x57, 0x12, 0xb9, 0xde, 0xc3, 0xfb, 0x11, 0x7e, 0xed, 0x0d, ++ 0x92, 0x07, 0xf5, 0x9c, 0x8e, 0xf8, 0xd5, 0x20, 0x5f, 0x86, 0x2f, 0x0b, ++ 0xf4, 0x9d, 0x5a, 0xc2, 0xfc, 0x23, 0xae, 0xb2, 0xc4, 0xc8, 0x7e, 0x34, ++ 0x7c, 0xde, 0x95, 0x1f, 0x4d, 0xc0, 0x51, 0xe8, 0x31, 0xcb, 0x41, 0x8f, ++ 0xa1, 0xe3, 0x2c, 0x22, 0x6e, 0xe4, 0x4b, 0x17, 0xb8, 0x1e, 0xb3, 0xc4, ++ 0xf4, 0x24, 0xc6, 0x01, 0xaf, 0xfe, 0x81, 0xc1, 0xb7, 0x82, 0x78, 0x91, ++ 0x5f, 0x7f, 0xe3, 0xb8, 0x36, 0xd5, 0x0b, 0x49, 0x98, 0x7f, 0x51, 0x0d, ++ 0x47, 0xa9, 0x45, 0xf2, 0x99, 0x81, 0x0e, 0x38, 0xdf, 0x4e, 0x25, 0x2d, ++ 0x82, 0x6f, 0xbb, 0x31, 0xdf, 0x81, 0xa2, 0x9d, 0x71, 0x80, 0x22, 0x9e, ++ 0xa0, 0xd4, 0x3b, 0x89, 0x53, 0x0a, 0xe7, 0x4f, 0x42, 0x0f, 0x15, 0xe3, ++ 0x09, 0x78, 0x0a, 0xbe, 0x25, 0xc6, 0x33, 0x90, 0x5a, 0x39, 0x19, 0xe8, ++ 0x40, 0xc5, 0xc7, 0x48, 0x1f, 0x75, 0x3c, 0x43, 0xe9, 0xe7, 0x10, 0x7e, ++ 0x11, 0x1c, 0x2c, 0x2c, 0x6e, 0x31, 0xb0, 0x23, 0x1e, 0xc1, 0xec, 0xc2, ++ 0x90, 0x9f, 0x8b, 0xf9, 0x35, 0xe4, 0xcc, 0xac, 0x7a, 0x02, 0xfa, 0xb6, ++ 0x45, 0xf8, 0x31, 0xfc, 0x33, 0xe1, 0xb9, 0xf0, 0x63, 0xa8, 0xed, 0xf9, ++ 0x3b, 0xc5, 0x41, 0xef, 0xf7, 0x48, 0x81, 0x67, 0xb3, 0x3a, 0xc7, 0x3f, ++ 0x45, 0x3c, 0x95, 0x2e, 0xf3, 0xb3, 0x3f, 0xd2, 0x8f, 0x87, 0x49, 0xf6, ++ 0x74, 0x18, 0x6f, 0xf2, 0x1b, 0xbd, 0x13, 0x88, 0x26, 0x92, 0x1f, 0xce, ++ 0x71, 0xf6, 0x00, 0xed, 0x47, 0xd6, 0x04, 0xe3, 0xc2, 0xfd, 0x63, 0xc2, ++ 0x5f, 0xfd, 0xb6, 0x14, 0xc0, 0x79, 0x7f, 0x87, 0x38, 0x1f, 0x21, 0x61, ++ 0xfa, 0x42, 0x35, 0x69, 0x1c, 0x3d, 0x33, 0x0b, 0xfc, 0x9d, 0x54, 0x6e, ++ 0xc5, 0x40, 0xc9, 0xfc, 0x3c, 0xa4, 0x59, 0xad, 0x8f, 0xb2, 0xf8, 0xa1, ++ 0x86, 0xae, 0x04, 0xf0, 0x7b, 0x39, 0x09, 0x8b, 0x0f, 0x66, 0x85, 0xda, ++ 0xb1, 0x2e, 0x77, 0xae, 0x8b, 0xfc, 0x94, 0x3b, 0xc9, 0xf7, 0x5e, 0x49, ++ 0x16, 0x71, 0x2e, 0x25, 0x87, 0xb5, 0x33, 0xfe, 0x26, 0xec, 0xb5, 0xae, ++ 0xec, 0x23, 0x11, 0xbf, 0x3f, 0xa6, 0xa7, 0x30, 0x29, 0x08, 0xe5, 0xa3, ++ 0x34, 0x26, 0x72, 0x3f, 0x56, 0x1e, 0xc9, 0x83, 0xfe, 0x29, 0x5d, 0x35, ++ 0x25, 0x26, 0x80, 0x3d, 0x4e, 0xe9, 0x50, 0x0a, 0xa7, 0xbb, 0x8e, 0xfc, ++ 0x15, 0x6c, 0xef, 0x44, 0x77, 0xaa, 0xf5, 0x8b, 0xf8, 0xbd, 0x6c, 0x2e, ++ 0x44, 0x3f, 0xcb, 0x82, 0xf0, 0xf5, 0x7e, 0x0d, 0x78, 0x08, 0x3d, 0xe2, ++ 0x06, 0x5d, 0x1b, 0xac, 0xf7, 0x47, 0x89, 0x76, 0x2c, 0xab, 0xba, 0x9d, ++ 0xfb, 0xd0, 0x09, 0xcd, 0x85, 0x7e, 0x45, 0x1e, 0x62, 0x8d, 0x9e, 0xe5, ++ 0xfd, 0x92, 0x46, 0xa5, 0xfe, 0x7c, 0x36, 0x51, 0xc4, 0x59, 0x99, 0x9d, ++ 0x71, 0x27, 0x38, 0x75, 0xbd, 0x0f, 0x3c, 0x9f, 0x8b, 0xef, 0xc3, 0xd7, ++ 0xd5, 0x87, 0x44, 0x3e, 0x97, 0x80, 0xdf, 0x27, 0x82, 0x0f, 0x86, 0xe0, ++ 0x7d, 0x5e, 0x01, 0xcf, 0x0e, 0x7b, 0xad, 0x03, 0xde, 0xe7, 0x23, 0xc1, ++ 0x5b, 0xc0, 0xe3, 0x5a, 0x91, 0xff, 0x45, 0xd8, 0x27, 0xd9, 0x7c, 0x3a, ++ 0x11, 0xe0, 0x9c, 0x14, 0xe3, 0xfa, 0x02, 0xf8, 0x62, 0xfa, 0xd9, 0xc0, ++ 0x45, 0x49, 0x13, 0x9a, 0x57, 0x99, 0xdc, 0x8a, 0x79, 0x9c, 0xd7, 0x9b, ++ 0x65, 0xb4, 0x8f, 0xaa, 0x87, 0xb3, 0x7c, 0x9e, 0xea, 0xfd, 0x18, 0x24, ++ 0x27, 0x6d, 0x2d, 0x06, 0x8c, 0x03, 0x56, 0x34, 0x1f, 0x41, 0xfd, 0xac, ++ 0xb5, 0x8e, 0x32, 0xd2, 0x9e, 0x5d, 0xc3, 0xa9, 0x63, 0xbd, 0x2a, 0x78, ++ 0x77, 0x65, 0xaf, 0x88, 0xf5, 0xdc, 0x52, 0xad, 0x5f, 0xe4, 0x87, 0x40, ++ 0x7c, 0x3f, 0xa9, 0xe8, 0xb6, 0x70, 0x50, 0xb6, 0x73, 0x38, 0x88, 0x7c, ++ 0x96, 0x32, 0xb9, 0x6f, 0x6c, 0x20, 0xcc, 0x2e, 0xf1, 0xf1, 0x7d, 0x8f, ++ 0xd2, 0xba, 0xa2, 0x92, 0xe8, 0xf8, 0x85, 0xbf, 0x4b, 0x8b, 0x01, 0xf8, ++ 0x94, 0xc9, 0x2d, 0xc7, 0x53, 0x01, 0x0e, 0xab, 0x25, 0x3c, 0x67, 0x34, ++ 0xd2, 0x40, 0x3c, 0xe0, 0xdf, 0x4f, 0xe1, 0xe7, 0xcd, 0x06, 0x05, 0x6a, ++ 0x1d, 0x16, 0x0a, 0x8f, 0xe4, 0x34, 0x13, 0x9e, 0x1b, 0xea, 0xfd, 0x5d, ++ 0xd9, 0x05, 0xf1, 0xcb, 0x8f, 0x57, 0xaf, 0xb2, 0xc1, 0xb9, 0xa8, 0x2b, ++ 0x75, 0x74, 0x68, 0x6a, 0x77, 0xf4, 0x96, 0x34, 0x2e, 0xc4, 0x37, 0xb2, ++ 0xf7, 0x93, 0x1f, 0x14, 0x42, 0x5c, 0x6d, 0x16, 0xe6, 0x17, 0xcf, 0x36, ++ 0xb0, 0x78, 0x7f, 0xd6, 0xf7, 0xa2, 0x7d, 0x3d, 0x28, 0x9f, 0x78, 0x53, ++ 0x4f, 0x8c, 0x40, 0x6f, 0xba, 0xec, 0x5a, 0x3c, 0x57, 0x11, 0xb4, 0xca, ++ 0x68, 0x6f, 0xc4, 0xcb, 0x64, 0x14, 0xe0, 0x97, 0x80, 0x73, 0x7c, 0x34, ++ 0x5b, 0x87, 0x78, 0x5e, 0xfc, 0xf3, 0x9d, 0x12, 0xe4, 0x21, 0x89, 0xe7, ++ 0x23, 0xeb, 0x83, 0xfd, 0x57, 0xd2, 0xf2, 0x73, 0xd8, 0xf7, 0x84, 0xd0, ++ 0x3a, 0x47, 0x96, 0x06, 0xfb, 0xd7, 0x9a, 0x42, 0x70, 0x16, 0xf9, 0x7d, ++ 0x44, 0x1b, 0xcc, 0x98, 0x1c, 0x46, 0x1f, 0x47, 0x38, 0x3c, 0xaa, 0x13, ++ 0xf4, 0x1b, 0x40, 0x1e, 0xb6, 0x19, 0xb9, 0x1d, 0xc8, 0xed, 0x41, 0x62, ++ 0xd1, 0x22, 0x1f, 0x59, 0xcd, 0xe3, 0xeb, 0xe7, 0x7a, 0x11, 0xe2, 0xc7, ++ 0x7e, 0x7c, 0x66, 0xc8, 0xa7, 0xaa, 0x8e, 0x72, 0xc6, 0x0e, 0x04, 0xff, ++ 0x16, 0xe4, 0x0f, 0xd0, 0xe2, 0x2f, 0x16, 0x67, 0xac, 0x15, 0xd7, 0x6f, ++ 0x47, 0xbd, 0x79, 0x35, 0xd7, 0xaf, 0xda, 0x78, 0x7e, 0xf6, 0xea, 0x71, ++ 0x25, 0x49, 0x60, 0x4f, 0x25, 0xd4, 0x47, 0xce, 0x63, 0x1a, 0x9d, 0xc4, ++ 0xf4, 0xfc, 0x4a, 0x1e, 0xf7, 0x16, 0xcf, 0x2b, 0xb5, 0x3e, 0xcc, 0x47, ++ 0xaa, 0x84, 0x7c, 0xe1, 0xb0, 0xfc, 0xa8, 0x6f, 0x9a, 0x2f, 0x2c, 0xf2, ++ 0xc4, 0xbb, 0x84, 0x83, 0x55, 0x4b, 0xb4, 0x14, 0x0e, 0xd5, 0x12, 0x71, ++ 0xdd, 0xee, 0xbd, 0x03, 0xff, 0x23, 0x47, 0xb4, 0x77, 0xab, 0x92, 0x34, ++ 0xb7, 0xcd, 0x63, 0x5b, 0xc8, 0xd7, 0x27, 0xf2, 0xd3, 0xaa, 0x21, 0x3f, ++ 0x8d, 0x3e, 0x5a, 0xbd, 0xbf, 0x38, 0x89, 0x44, 0xe8, 0xaf, 0x43, 0xde, ++ 0xdc, 0x18, 0xa2, 0xc8, 0x0b, 0x13, 0xf9, 0xcd, 0xd5, 0x37, 0x46, 0x60, ++ 0x5e, 0x58, 0xe9, 0xa3, 0xad, 0x78, 0xbe, 0x0f, 0xfa, 0xb1, 0x9b, 0x42, ++ 0x79, 0x69, 0x5d, 0xc1, 0xf9, 0x48, 0x22, 0x9b, 0x47, 0x35, 0xe4, 0x8b, ++ 0xf5, 0x0f, 0x7f, 0xce, 0xf8, 0x47, 0xa8, 0xff, 0x78, 0xdc, 0x87, 0x5f, ++ 0x02, 0x00, 0xc1, 0xcf, 0xd1, 0x2c, 0xa3, 0x1f, 0xf6, 0x97, 0x27, 0x34, ++ 0x63, 0x77, 0x44, 0x98, 0xef, 0x16, 0xbe, 0xfe, 0xbb, 0x13, 0xb4, 0x48, ++ 0x1f, 0xf7, 0xf8, 0x88, 0x73, 0x7b, 0x84, 0xf1, 0xc5, 0x7b, 0xe2, 0xfc, ++ 0x07, 0xc0, 0xb9, 0x3c, 0xb7, 0xf3, 0xfc, 0x9a, 0x4a, 0x02, 0x73, 0x60, ++ 0xfe, 0x90, 0x77, 0x1a, 0x69, 0xbc, 0xf5, 0x49, 0xcc, 0xce, 0x16, 0xf3, ++ 0x6e, 0xb2, 0x05, 0x16, 0x73, 0x3c, 0xc7, 0xf3, 0x17, 0x1d, 0x75, 0x8b, ++ 0x72, 0x1f, 0x5f, 0xe0, 0xfb, 0xd8, 0x74, 0x6f, 0x20, 0x03, 0xcf, 0x11, ++ 0x8d, 0x8b, 0x9c, 0x07, 0x2f, 0xf6, 0xfb, 0xa6, 0xd9, 0xfd, 0x26, 0xf0, ++ 0xdb, 0xca, 0x69, 0xf4, 0x65, 0xf0, 0xb3, 0x6b, 0x6b, 0x25, 0x4b, 0x18, ++ 0x7d, 0x75, 0xb5, 0xdf, 0x21, 0x38, 0x6b, 0x14, 0xf9, 0x7f, 0x9d, 0xe1, ++ 0xac, 0xc7, 0xfd, 0x15, 0xfd, 0x09, 0x7b, 0xe4, 0xf2, 0x56, 0x19, 0xe3, ++ 0xfb, 0x97, 0x4f, 0x71, 0x7a, 0x24, 0x4e, 0x93, 0x44, 0xe9, 0x6a, 0x1e, ++ 0x97, 0x57, 0x97, 0x09, 0x8b, 0x13, 0x5c, 0x6e, 0x90, 0xd0, 0x0e, 0x99, ++ 0xef, 0x26, 0x64, 0x0d, 0xe5, 0x2b, 0xf3, 0x76, 0x2e, 0xc7, 0x38, 0xcd, ++ 0xe2, 0x5d, 0xfd, 0x37, 0x80, 0x98, 0x82, 0xe7, 0x6b, 0x29, 0xff, 0x98, ++ 0x97, 0x4c, 0xc8, 0x08, 0x5a, 0xce, 0x5f, 0xaf, 0x8c, 0xd3, 0x2e, 0xdc, ++ 0xdc, 0xc9, 0xff, 0x46, 0xc2, 0xe5, 0x22, 0x55, 0x3b, 0xd1, 0xae, 0x5e, ++ 0xfc, 0xa4, 0xf2, 0xbb, 0x0a, 0xb2, 0xf9, 0xcf, 0xa0, 0xf7, 0x54, 0xa8, ++ 0xf4, 0x9a, 0xde, 0xdc, 0xbf, 0xb5, 0x2f, 0x89, 0xda, 0x09, 0xa0, 0xd7, ++ 0x0d, 0x20, 0x03, 0x80, 0xaf, 0xaf, 0xdc, 0xf5, 0xa5, 0x1e, 0x52, 0x6d, ++ 0xbb, 0xc2, 0xf3, 0x2b, 0x94, 0x9e, 0x7b, 0x6a, 0x81, 0xff, 0x59, 0xb0, ++ 0x3c, 0x91, 0xe4, 0x3c, 0x08, 0xfc, 0xfd, 0xf7, 0x49, 0x6e, 0x1f, 0x94, ++ 0xed, 0x1f, 0x30, 0x38, 0x5c, 0xaf, 0xbc, 0xce, 0xf8, 0xfd, 0x73, 0xf1, ++ 0x28, 0x67, 0x0c, 0xc0, 0x94, 0xe9, 0xff, 0x1a, 0x66, 0xb2, 0x78, 0xeb, ++ 0xa3, 0x94, 0x4d, 0x40, 0x9c, 0xcd, 0x60, 0x60, 0x7a, 0x8d, 0xd0, 0xe7, ++ 0x64, 0x79, 0x95, 0x1c, 0x43, 0xdb, 0x07, 0x7f, 0xbe, 0xda, 0x06, 0xfe, ++ 0xbf, 0xf8, 0x97, 0xc7, 0x8c, 0x05, 0x7d, 0x3f, 0xe1, 0xe5, 0x68, 0x27, ++ 0xc0, 0x6b, 0x53, 0xb1, 0x33, 0x1f, 0xec, 0xff, 0x4d, 0xe5, 0x26, 0xcc, ++ 0x5b, 0x30, 0x1a, 0x58, 0x9c, 0xd7, 0xfb, 0xcb, 0xc1, 0x6f, 0x81, 0xdb, ++ 0xbf, 0x67, 0xe3, 0x96, 0x12, 0xb0, 0x3f, 0x2d, 0x2d, 0x87, 0x7d, 0xe0, ++ 0x1f, 0xd9, 0xa8, 0xf9, 0x33, 0x9e, 0x1b, 0xd9, 0x38, 0x82, 0xe5, 0xb5, ++ 0x75, 0xe4, 0x4f, 0xb6, 0x94, 0xef, 0x81, 0xf9, 0x64, 0x4c, 0x61, 0xf2, ++ 0x62, 0x53, 0x96, 0x33, 0xdf, 0x12, 0xd6, 0x2f, 0xe1, 0xfa, 0x59, 0x35, ++ 0x87, 0x59, 0xfb, 0xc1, 0xde, 0x3f, 0x86, 0xf3, 0xea, 0xcf, 0x9e, 0x40, ++ 0xf5, 0x98, 0xae, 0x2f, 0x1b, 0xfd, 0x70, 0x77, 0x13, 0xb6, 0x9f, 0x22, ++ 0x7f, 0x0a, 0xc6, 0x0e, 0xd7, 0x43, 0x5b, 0xa9, 0xdc, 0x81, 0x24, 0x3c, ++ 0x51, 0xbf, 0xbb, 0x51, 0xf2, 0xe9, 0xe8, 0x7a, 0xaa, 0x9a, 0xf6, 0x60, ++ 0xbc, 0xa2, 0xf2, 0x61, 0x5f, 0xe2, 0x4c, 0x90, 0x2f, 0x2f, 0x69, 0x31, ++ 0xde, 0x23, 0xe6, 0x17, 0xff, 0x66, 0x4a, 0x09, 0xc4, 0x75, 0x84, 0x5c, ++ 0x99, 0x29, 0x59, 0x98, 0x9f, 0x91, 0xeb, 0xd9, 0x33, 0x88, 0xf8, 0x63, ++ 0x71, 0xa1, 0xe9, 0x1c, 0x0f, 0x66, 0x70, 0xfd, 0x7a, 0x66, 0x34, 0x83, ++ 0xef, 0x7c, 0xe2, 0xc8, 0x80, 0xef, 0x1e, 0x30, 0x92, 0x18, 0xf0, 0x4f, ++ 0xcf, 0x2c, 0x6d, 0x2c, 0x42, 0xb9, 0xb3, 0x5c, 0x67, 0x05, 0x79, 0x2e, ++ 0xe2, 0x1b, 0x5d, 0xeb, 0x01, 0x91, 0xfd, 0x44, 0xd5, 0x2f, 0x9a, 0xd9, ++ 0xf9, 0x57, 0x29, 0x98, 0x03, 0x9d, 0x5c, 0xa1, 0x76, 0x07, 0x61, 0xfe, ++ 0xa2, 0x88, 0x79, 0xbf, 0xe6, 0x64, 0x4e, 0x67, 0x39, 0x5c, 0xdf, 0xeb, ++ 0x49, 0x9c, 0x10, 0x4f, 0xab, 0x3e, 0xd4, 0x7b, 0x3b, 0xf8, 0x03, 0x0c, ++ 0xdd, 0x58, 0xdc, 0x95, 0xf2, 0x1b, 0xe3, 0xa0, 0x02, 0xd4, 0x77, 0x8d, ++ 0x60, 0xc7, 0x2c, 0x3d, 0x10, 0xe5, 0x63, 0x7e, 0x6a, 0x2f, 0x3f, 0xe7, ++ 0xea, 0xcc, 0x87, 0xfc, 0x8f, 0x9a, 0xc9, 0x69, 0x05, 0x98, 0x87, 0x70, ++ 0x96, 0xf2, 0x0d, 0x33, 0x9c, 0x1f, 0x0c, 0x64, 0x20, 0x9d, 0x52, 0x7e, ++ 0x22, 0x51, 0x99, 0x96, 0x93, 0x6c, 0x9e, 0xa0, 0x85, 0x73, 0x7e, 0xa9, ++ 0x54, 0x9f, 0xa2, 0xf5, 0x29, 0x5b, 0x53, 0x27, 0x68, 0x29, 0xbe, 0x57, ++ 0x67, 0x07, 0x16, 0x6b, 0x68, 0x7d, 0x6d, 0x72, 0x21, 0x6b, 0xbf, 0x3b, ++ 0x70, 0x11, 0xea, 0x1b, 0x92, 0x47, 0xb2, 0xf6, 0x82, 0xc0, 0x62, 0x99, ++ 0xd6, 0xb7, 0x27, 0x4f, 0x64, 0x75, 0x30, 0xec, 0x28, 0x62, 0xfd, 0x3a, ++ 0x79, 0xca, 0x04, 0x0f, 0xed, 0xff, 0x8a, 0x95, 0xcb, 0x69, 0x47, 0x00, ++ 0xcf, 0xfd, 0x56, 0xbf, 0xd1, 0x5b, 0x13, 0xee, 0xa7, 0xdc, 0x06, 0xc9, ++ 0x0b, 0x14, 0x3e, 0x57, 0xb8, 0xbf, 0xf5, 0x4a, 0x16, 0x99, 0x3b, 0x19, ++ 0xe0, 0xdd, 0x27, 0x80, 0xe7, 0xca, 0xc4, 0x7b, 0xff, 0x87, 0xbf, 0x27, ++ 0xf2, 0x7d, 0xc5, 0x3a, 0xc5, 0x77, 0x24, 0x39, 0x72, 0xff, 0x45, 0xfc, ++ 0xbb, 0xa5, 0xfc, 0xbc, 0xee, 0xc8, 0x68, 0xb2, 0x31, 0x8a, 0xc5, 0xa5, ++ 0x3c, 0x31, 0x14, 0xfe, 0x47, 0x5b, 0x7a, 0x63, 0x5c, 0x2d, 0x35, 0xd9, ++ 0xc6, 0xfa, 0xb7, 0xd0, 0x7e, 0x0a, 0x43, 0xfd, 0x08, 0x38, 0x8a, 0xfe, ++ 0xc4, 0xb8, 0xcb, 0x40, 0x9e, 0x02, 0x9f, 0xd5, 0x31, 0x7f, 0xa9, 0x68, ++ 0x2f, 0x49, 0x66, 0xfc, 0x9b, 0x8e, 0xb3, 0x1e, 0xc7, 0xe9, 0xe9, 0x64, ++ 0xe7, 0x50, 0x27, 0xa7, 0xe5, 0xc3, 0xbe, 0xd1, 0xfd, 0xd2, 0xf2, 0xfd, ++ 0xd2, 0x32, 0xbb, 0x73, 0x3b, 0x9b, 0x1f, 0xed, 0xd7, 0x9a, 0x87, 0x7c, ++ 0xbd, 0x3f, 0xf8, 0xbb, 0x8f, 0xde, 0xa4, 0xef, 0x67, 0x85, 0xe6, 0xad, ++ 0xc6, 0x8f, 0xfb, 0x38, 0x7e, 0x2c, 0xad, 0x67, 0xf1, 0xc4, 0xa0, 0xb5, ++ 0x07, 0xe2, 0xd1, 0xc8, 0x68, 0xa6, 0xe7, 0x91, 0x42, 0xe5, 0x3a, 0xb6, ++ 0x27, 0x33, 0xbe, 0xbf, 0x2d, 0xd9, 0xca, 0xf0, 0xa2, 0x63, 0x3f, 0x92, ++ 0x24, 0x1c, 0xa7, 0x9e, 0xc3, 0x31, 0x8d, 0xc2, 0x3d, 0xf7, 0x9b, 0xaf, ++ 0x7b, 0x1e, 0x9f, 0xcf, 0x3f, 0x7b, 0xdd, 0x61, 0xfb, 0xe5, 0x84, 0xfc, ++ 0xbe, 0xa3, 0xcd, 0x77, 0xed, 0x08, 0x5f, 0x8f, 0xc8, 0xcf, 0x16, 0xfd, ++ 0x5c, 0x59, 0xa7, 0xfa, 0x6e, 0x10, 0xcb, 0x93, 0xaa, 0xb6, 0xf5, 0xc0, ++ 0xef, 0x1e, 0x8d, 0x22, 0x46, 0x7c, 0x4e, 0x76, 0x74, 0x7c, 0x97, 0x95, ++ 0xc7, 0xf4, 0x4b, 0xd0, 0x3b, 0xc5, 0x7d, 0x0c, 0xc4, 0x33, 0x02, 0x9d, ++ 0x04, 0x95, 0x9c, 0x6b, 0x74, 0xdc, 0xaf, 0xd0, 0xc8, 0xf3, 0x05, 0x3b, ++ 0xd6, 0x37, 0xa1, 0x90, 0xaf, 0xcf, 0xc2, 0xd7, 0x67, 0x31, 0x86, 0xdd, ++ 0xab, 0xd0, 0x41, 0x8f, 0xa7, 0x83, 0x19, 0x53, 0xcc, 0x9d, 0xf1, 0xb7, ++ 0x03, 0xee, 0x1d, 0xfd, 0xf5, 0x2d, 0xe0, 0xfd, 0x29, 0xe8, 0x3a, 0x52, ++ 0x7f, 0x40, 0x1f, 0x5d, 0xed, 0xc7, 0x4f, 0xff, 0xd9, 0x78, 0x28, 0xe6, ++ 0xa9, 0x82, 0x67, 0x07, 0x9c, 0x55, 0xf3, 0x13, 0xf0, 0x04, 0x7a, 0xc6, ++ 0xef, 0xfa, 0x2a, 0xf1, 0x51, 0xcc, 0x73, 0x43, 0xc7, 0x3e, 0xaa, 0xe8, ++ 0x3a, 0xeb, 0x5b, 0x8e, 0x57, 0xcc, 0xbe, 0xab, 0x7a, 0x90, 0xe7, 0xfd, ++ 0xda, 0x95, 0xf8, 0x5c, 0xd5, 0x94, 0xa5, 0x81, 0x78, 0xb9, 0xf8, 0x6e, ++ 0x2c, 0xf8, 0xd8, 0x13, 0x42, 0xfe, 0xb6, 0x7d, 0xc9, 0xdc, 0x6e, 0x4b, ++ 0x23, 0x69, 0x5d, 0xe4, 0xbb, 0xbd, 0x91, 0x9c, 0x10, 0xd1, 0x4f, 0x87, ++ 0xcf, 0xd5, 0x76, 0x5b, 0xbb, 0x95, 0xe5, 0x39, 0xab, 0xfd, 0x06, 0xed, ++ 0x09, 0x0e, 0x3f, 0x9c, 0xc3, 0xf3, 0x5c, 0x63, 0xe7, 0xcf, 0x87, 0xaa, ++ 0xf4, 0x0d, 0x88, 0xbf, 0xec, 0x35, 0x85, 0xbe, 0x0b, 0xc9, 0x13, 0x65, ++ 0xdd, 0x90, 0xc2, 0xf8, 0x5b, 0x67, 0x3f, 0x50, 0x10, 0xcf, 0xcb, 0x16, ++ 0x1a, 0x4a, 0x5e, 0xb3, 0x3b, 0x28, 0xba, 0x24, 0x2f, 0x43, 0xfe, 0x5d, ++ 0x18, 0x5b, 0xb2, 0x2a, 0x8b, 0xd6, 0x3f, 0x4a, 0xae, 0x44, 0x7e, 0x5d, ++ 0xd8, 0xbd, 0xe4, 0xcb, 0x2c, 0xca, 0xbf, 0xff, 0x98, 0x5c, 0xc5, 0xea, ++ 0xf7, 0x94, 0x7c, 0x99, 0x0d, 0xf5, 0xad, 0x55, 0xec, 0xfd, 0x91, 0xce, ++ 0xd7, 0x80, 0xbf, 0x13, 0x4f, 0xd5, 0x84, 0x51, 0x29, 0x21, 0xfd, 0xe1, ++ 0x5c, 0xb2, 0x9d, 0xe9, 0x1f, 0xa5, 0x1a, 0x02, 0x78, 0x64, 0x90, 0x57, ++ 0x38, 0x40, 0x4e, 0x0a, 0x78, 0x76, 0x55, 0x16, 0x1a, 0x34, 0xb5, 0x11, ++ 0xcf, 0xb5, 0x76, 0xe0, 0x01, 0x8b, 0x4f, 0x0c, 0xe2, 0xf2, 0x79, 0x90, ++ 0xb0, 0xcb, 0x03, 0x5a, 0x85, 0x5d, 0xde, 0x1e, 0xc3, 0xce, 0x13, 0xb7, ++ 0x83, 0x3c, 0xa5, 0xeb, 0x0d, 0x26, 0xbb, 0xaf, 0x00, 0xfc, 0x6b, 0xa2, ++ 0x5b, 0xe7, 0x64, 0xd1, 0xae, 0x1e, 0x8e, 0xfe, 0x44, 0x0f, 0xfa, 0x90, ++ 0xe4, 0xa4, 0xfa, 0x06, 0xf8, 0x39, 0xec, 0x16, 0x32, 0x0b, 0xf2, 0xe7, ++ 0x5a, 0x37, 0xb9, 0x40, 0x3f, 0x22, 0xcb, 0x1c, 0x46, 0x2d, 0xc2, 0x93, ++ 0xfb, 0x9d, 0xe8, 0xda, 0x6e, 0xd1, 0x7e, 0x0e, 0x1c, 0x7a, 0xe9, 0xa1, ++ 0xee, 0x6c, 0x18, 0x17, 0xcc, 0x63, 0x30, 0xa7, 0xff, 0x9a, 0x43, 0x7f, ++ 0xff, 0x0a, 0xe2, 0xa2, 0x35, 0x57, 0x4c, 0x0e, 0x50, 0xff, 0x06, 0xb7, ++ 0x3c, 0xb3, 0x0a, 0xf4, 0xab, 0xc1, 0x2d, 0xef, 0xfc, 0x9d, 0xc9, 0x5b, ++ 0x76, 0x2e, 0x43, 0xcc, 0x7b, 0x30, 0xf8, 0x0f, 0xe9, 0xf3, 0x41, 0xcd, ++ 0x06, 0x9c, 0xff, 0xe0, 0x96, 0xbb, 0x16, 0xc1, 0xfb, 0x43, 0x7f, 0xd7, ++ 0xd2, 0x03, 0xf0, 0x63, 0xf8, 0x39, 0x5f, 0x3d, 0xb0, 0x83, 0xf6, 0x83, ++ 0xbf, 0xe9, 0xae, 0x38, 0x8f, 0x41, 0xbe, 0x90, 0xbe, 0xcd, 0x79, 0x8c, ++ 0x0e, 0x78, 0x7c, 0x4e, 0x95, 0xa7, 0x58, 0x84, 0x87, 0x29, 0x05, 0xe1, ++ 0x71, 0x13, 0xf3, 0xa2, 0xda, 0x12, 0x4e, 0x6d, 0x08, 0xa0, 0x9e, 0xa6, ++ 0x3c, 0xf7, 0x42, 0xf5, 0x72, 0x8c, 0xaf, 0x5e, 0x27, 0xdd, 0x1c, 0x10, ++ 0x27, 0x10, 0xe7, 0xb4, 0xd5, 0xfe, 0xca, 0xb3, 0xe5, 0x74, 0x7d, 0xf4, ++ 0xf9, 0xf0, 0x20, 0x9d, 0x41, 0x98, 0xbe, 0x3c, 0xf2, 0x06, 0xb5, 0xeb, ++ 0xc3, 0xf4, 0xec, 0x62, 0x62, 0x55, 0xd4, 0x4b, 0x8d, 0x29, 0x8a, 0xf7, ++ 0xcb, 0x2c, 0x59, 0x8a, 0xf6, 0x31, 0xc9, 0x77, 0x29, 0xda, 0xc7, 0xd9, ++ 0xf3, 0x15, 0xf5, 0xf1, 0x7d, 0x06, 0x2b, 0xde, 0x9f, 0xe8, 0x28, 0x56, ++ 0xd4, 0xef, 0x1b, 0x34, 0x4e, 0xf1, 0x7e, 0xb9, 0xb3, 0x5c, 0x51, 0xcf, ++ 0xf7, 0x35, 0x2a, 0xde, 0xef, 0x7f, 0xa2, 0x59, 0xd9, 0x7e, 0xda, 0x8e, ++ 0xfb, 0xd0, 0xff, 0x9c, 0xab, 0x14, 0xf4, 0x78, 0x87, 0xdf, 0x5d, 0x0f, ++ 0xe5, 0xc0, 0xd6, 0x86, 0xd2, 0x58, 0x3b, 0xe9, 0xe4, 0xa7, 0x2d, 0x0c, ++ 0x78, 0xeb, 0xe1, 0xf9, 0xd0, 0x9b, 0xb5, 0x45, 0x3e, 0x12, 0xe1, 0xbc, ++ 0xca, 0x32, 0x37, 0xfa, 0xf7, 0x3b, 0x9d, 0x57, 0x29, 0x66, 0xe7, 0xd7, ++ 0xdb, 0x34, 0xec, 0xbc, 0x86, 0xf0, 0xcb, 0x0e, 0x36, 0xb9, 0x8b, 0x61, ++ 0x9f, 0xde, 0x96, 0x28, 0xd8, 0x29, 0xb0, 0x47, 0x18, 0x83, 0x71, 0xb0, ++ 0x5f, 0x65, 0x73, 0x9f, 0xc0, 0xfc, 0xa8, 0xeb, 0x41, 0x82, 0x7e, 0xac, ++ 0x26, 0x7d, 0xe0, 0x47, 0x43, 0x41, 0xce, 0xcf, 0x96, 0x51, 0xef, 0x6d, ++ 0xe2, 0x79, 0x35, 0x4d, 0xd3, 0x73, 0x31, 0xdf, 0xfd, 0xac, 0x14, 0xd8, ++ 0x07, 0xf1, 0x79, 0xcf, 0x6c, 0x76, 0x1e, 0x60, 0x38, 0xd5, 0x70, 0x71, ++ 0xdd, 0x10, 0xd3, 0x94, 0x60, 0x9f, 0xdc, 0x8a, 0x75, 0x17, 0x93, 0xa5, ++ 0xaa, 0x7d, 0x5a, 0xa1, 0xa8, 0x97, 0x59, 0x1e, 0x54, 0xbc, 0x3f, 0x26, ++ 0x79, 0x9d, 0xa2, 0x7d, 0x9c, 0xfd, 0x31, 0xd5, 0x3e, 0x6d, 0x51, 0xd4, ++ 0x27, 0x3a, 0x9e, 0x51, 0xed, 0xd3, 0x76, 0xd5, 0x3e, 0xbd, 0xa4, 0x68, ++ 0x1f, 0x7e, 0x21, 0x50, 0x0f, 0x64, 0x34, 0xb2, 0xd5, 0x23, 0x9b, 0xe9, ++ 0xfc, 0x87, 0x9c, 0x6d, 0x28, 0x85, 0x7d, 0x19, 0x7a, 0xce, 0x33, 0x1b, ++ 0xe8, 0xa5, 0xd0, 0xe7, 0xae, 0x07, 0x76, 0x58, 0x74, 0xb4, 0xf6, 0x08, ++ 0x94, 0x3e, 0x6a, 0x4f, 0x81, 0x7f, 0xea, 0xad, 0xba, 0x64, 0x2c, 0x8f, ++ 0xd6, 0xd9, 0xd1, 0xbf, 0x74, 0xbc, 0xae, 0x0f, 0x96, 0x27, 0xea, 0x1c, ++ 0xf8, 0xfc, 0xb7, 0x75, 0x83, 0xb0, 0x7c, 0xb7, 0xce, 0x89, 0xe5, 0x7f, ++ 0xd6, 0x8d, 0xc5, 0xd2, 0x5f, 0xe7, 0xc2, 0xb2, 0xb1, 0xae, 0x11, 0xdf, ++ 0xdf, 0x5b, 0xd7, 0x8c, 0x25, 0x85, 0x60, 0x3a, 0xc8, 0x8b, 0xf8, 0xb8, ++ 0x8e, 0x7b, 0x13, 0xd2, 0xc1, 0x8e, 0x6f, 0xd3, 0x04, 0xaa, 0x21, 0x82, ++ 0xfa, 0xfd, 0x67, 0x0e, 0x22, 0x5f, 0x6c, 0xeb, 0x16, 0x68, 0x83, 0xfa, ++ 0xc3, 0xa4, 0x65, 0xc2, 0x28, 0x5a, 0x9f, 0x0f, 0xc6, 0x14, 0xe8, 0x57, ++ 0x50, 0xd2, 0xfd, 0xf4, 0xa4, 0x3a, 0xff, 0x2b, 0x05, 0xf2, 0x29, 0x52, ++ 0xd8, 0x73, 0x91, 0x97, 0xd0, 0xa8, 0x71, 0xe6, 0x83, 0x7e, 0xfd, 0xf8, ++ 0x33, 0xc7, 0x36, 0x6b, 0xd3, 0x09, 0x79, 0x64, 0x9d, 0x2b, 0xd9, 0x62, ++ 0x65, 0x75, 0x23, 0xad, 0xe3, 0x66, 0x43, 0x1f, 0x9e, 0x63, 0x9b, 0x9d, ++ 0x69, 0x84, 0xfc, 0x0a, 0x44, 0xc6, 0x10, 0xac, 0x4f, 0x80, 0x7a, 0x7b, ++ 0x14, 0x6b, 0xdf, 0xf0, 0xcc, 0xb1, 0x09, 0x1e, 0x9c, 0x1f, 0x8b, 0x1f, ++ 0x4f, 0x09, 0xc5, 0x8f, 0x1f, 0x4f, 0x89, 0x10, 0x3f, 0xfe, 0xd5, 0x25, ++ 0xbb, 0x19, 0xfc, 0x28, 0xa7, 0x6e, 0xf6, 0x36, 0xc3, 0xba, 0x4e, 0x71, ++ 0xbf, 0x91, 0x93, 0xe4, 0xeb, 0xe6, 0xd1, 0xb2, 0x58, 0x9b, 0xaf, 0x03, ++ 0xb9, 0x78, 0x56, 0xa5, 0x47, 0x88, 0xb2, 0x46, 0x53, 0xfc, 0x24, 0xe0, ++ 0x69, 0xa3, 0xc6, 0x31, 0x15, 0xf3, 0x80, 0xef, 0xd5, 0x11, 0xc8, 0x3b, ++ 0x9f, 0x2c, 0x31, 0x7b, 0xb4, 0x43, 0x0f, 0x4c, 0x65, 0xf2, 0xa8, 0x7d, ++ 0xa2, 0x01, 0xed, 0x9d, 0xd3, 0x1a, 0xe7, 0x22, 0xcc, 0x6f, 0x92, 0x82, ++ 0xcf, 0x03, 0xbc, 0x5e, 0x49, 0xf9, 0x10, 0xe1, 0xd7, 0x6e, 0x0e, 0x66, ++ 0x00, 0x1c, 0x7e, 0x99, 0x72, 0x86, 0xd5, 0x13, 0x82, 0xcf, 0x4b, 0x8e, ++ 0xb0, 0xba, 0x8e, 0xad, 0xf3, 0x85, 0x94, 0xd3, 0x5d, 0xad, 0x73, 0x37, ++ 0xcc, 0xa7, 0xd3, 0x3a, 0x53, 0xd8, 0x7d, 0x31, 0xc4, 0xe7, 0x4c, 0x07, ++ 0xf9, 0x2b, 0xea, 0xa7, 0xcb, 0x9d, 0x55, 0x20, 0x27, 0x4e, 0x17, 0x3b, ++ 0x7b, 0xc1, 0x7c, 0x4e, 0xb9, 0x0c, 0x48, 0x3f, 0x1e, 0x97, 0xd9, 0x0b, ++ 0xf9, 0x95, 0x44, 0xeb, 0x2c, 0x9a, 0x1a, 0xe6, 0x4f, 0xe9, 0x9d, 0xaa, ++ 0xc3, 0xef, 0xa6, 0xe8, 0x19, 0x9d, 0x91, 0x07, 0xe4, 0x88, 0xe7, 0xc4, ++ 0xcb, 0x52, 0x99, 0x9e, 0x85, 0xfb, 0x06, 0xf6, 0xdc, 0x8c, 0x68, 0xd4, ++ 0xc3, 0x4f, 0x6b, 0x22, 0x9f, 0xf3, 0x9e, 0xcd, 0xe1, 0x73, 0xb5, 0x5b, ++ 0x64, 0xff, 0xca, 0x1c, 0xde, 0x5e, 0x72, 0xbf, 0x19, 0xfb, 0x6b, 0x5f, ++ 0x1d, 0x85, 0xf1, 0xdb, 0x76, 0x57, 0x6f, 0xd4, 0x83, 0xda, 0x6b, 0x29, ++ 0x94, 0x28, 0x7d, 0xb4, 0x5f, 0xaa, 0xbd, 0xf6, 0x3a, 0xb6, 0x1b, 0x44, ++ 0x68, 0x0b, 0xe3, 0x94, 0x33, 0x39, 0x9f, 0xfa, 0x55, 0xcb, 0xaa, 0xbf, ++ 0x9e, 0xa1, 0xef, 0x7f, 0xb2, 0x3a, 0xda, 0x81, 0x3c, 0xdc, 0x72, 0x37, ++ 0xca, 0xa7, 0x07, 0xf8, 0xcb, 0xb3, 0xe3, 0x8c, 0xa8, 0xb7, 0xcc, 0x9e, ++ 0x9c, 0x5e, 0x02, 0x72, 0x69, 0x26, 0x8f, 0x77, 0xcd, 0x31, 0x6b, 0x13, ++ 0x31, 0xec, 0xa5, 0xb5, 0xea, 0xe1, 0x0a, 0xa0, 0x85, 0xa6, 0xfc, 0x0d, ++ 0x20, 0xfe, 0x17, 0xc7, 0x97, 0xeb, 0xad, 0xb4, 0x5e, 0x91, 0xb6, 0x62, ++ 0x03, 0x94, 0xcb, 0x7a, 0x6e, 0xd1, 0xc3, 0x91, 0xcf, 0xca, 0xbe, 0x7b, ++ 0x36, 0x80, 0xfa, 0x58, 0x45, 0x49, 0xab, 0x08, 0xed, 0xa5, 0xc0, 0x7b, ++ 0x75, 0x74, 0x5e, 0x73, 0xd7, 0xc8, 0x76, 0x66, 0x3f, 0x89, 0x73, 0x86, ++ 0xcb, 0xbf, 0x51, 0x7e, 0x85, 0xc0, 0xc3, 0xd3, 0x3c, 0x4f, 0x86, 0xc2, ++ 0x17, 0xed, 0xc2, 0xb9, 0xa9, 0x92, 0xc2, 0x2e, 0x99, 0x9b, 0xca, 0xf4, ++ 0x86, 0x6b, 0x29, 0x5c, 0x6f, 0xcb, 0x25, 0xb9, 0xb7, 0x94, 0x71, 0x9c, ++ 0x3f, 0x03, 0x3d, 0xb4, 0xce, 0x7e, 0x2f, 0xa7, 0x0b, 0x7f, 0xbb, 0xb2, ++ 0x9d, 0xeb, 0x6d, 0x1f, 0xea, 0xd9, 0xb8, 0xea, 0x7b, 0x26, 0xc4, 0xb8, ++ 0x6e, 0x3e, 0x8f, 0xd3, 0x7a, 0xe2, 0x94, 0x40, 0x8f, 0x7b, 0xc0, 0x8c, ++ 0xf8, 0x91, 0x37, 0xfd, 0xcb, 0x87, 0x8b, 0xe8, 0xfa, 0xf3, 0x5a, 0x2c, ++ 0x1a, 0x8c, 0xc3, 0x0b, 0x3e, 0xee, 0x67, 0xf7, 0x7d, 0x15, 0x5d, 0x70, ++ 0x23, 0x9f, 0x1b, 0xd8, 0x1a, 0x78, 0xf1, 0x0c, 0x41, 0x3c, 0x6f, 0x06, ++ 0x3a, 0xb9, 0x93, 0x9c, 0xba, 0xdf, 0xb3, 0x0e, 0xe5, 0xc3, 0xe0, 0xbf, ++ 0x50, 0xf9, 0x03, 0x7c, 0xf1, 0xa6, 0xfb, 0x93, 0x33, 0xd8, 0x1a, 0x1f, ++ 0xf1, 0xfc, 0xa5, 0xaf, 0xae, 0x82, 0xf3, 0xc7, 0x5a, 0xe4, 0x6b, 0x47, ++ 0xeb, 0xd6, 0x60, 0xfd, 0x78, 0x9d, 0x07, 0xcb, 0x13, 0x75, 0x1b, 0x39, ++ 0x7f, 0x6c, 0xc0, 0xf6, 0x77, 0xeb, 0xb6, 0x72, 0xfe, 0xe8, 0xe5, 0xfc, ++ 0x71, 0x37, 0x3e, 0x6f, 0xa9, 0x9b, 0x8e, 0xe5, 0xa1, 0x3a, 0x37, 0x96, ++ 0x49, 0x31, 0xae, 0xc4, 0x54, 0xa0, 0x0b, 0xa3, 0x1b, 0xf3, 0x31, 0x8f, ++ 0x3d, 0x63, 0x20, 0x32, 0xc4, 0x19, 0x5a, 0x0c, 0x88, 0xa7, 0x94, 0x02, ++ 0x9e, 0x7f, 0x36, 0x1e, 0xf2, 0x5f, 0x0c, 0x16, 0x38, 0x67, 0xa7, 0xce, ++ 0x83, 0x51, 0xf3, 0xdb, 0x8e, 0xfd, 0x6f, 0xea, 0x74, 0x8f, 0x45, 0x76, ++ 0x6a, 0x51, 0x58, 0xde, 0x0b, 0xe8, 0x67, 0x99, 0x5d, 0xe3, 0xcf, 0x29, ++ 0x62, 0x37, 0x03, 0x3f, 0x19, 0xb2, 0x2d, 0x65, 0x22, 0xf0, 0x8f, 0x53, ++ 0x76, 0xbb, 0x19, 0xf4, 0xd6, 0xa1, 0xa9, 0xa9, 0xac, 0xee, 0xb4, 0x9b, ++ 0x75, 0xb4, 0x3e, 0x6c, 0x1b, 0xaf, 0xbb, 0xed, 0x66, 0x03, 0xad, 0x0f, ++ 0x4f, 0xed, 0x3e, 0x11, 0xf4, 0xde, 0x53, 0x1e, 0xbb, 0x39, 0x8a, 0xd6, ++ 0x47, 0x6c, 0xeb, 0xce, 0xda, 0xbd, 0x04, 0x83, 0xd4, 0xa5, 0xdb, 0xec, ++ 0x13, 0x81, 0xff, 0x14, 0x13, 0xe9, 0x28, 0xd0, 0x43, 0xa9, 0x31, 0x6b, ++ 0x14, 0xa4, 0xc8, 0x96, 0x59, 0x8a, 0x8f, 0x02, 0x1d, 0x8c, 0x49, 0x9e, ++ 0x37, 0x0a, 0xe8, 0x60, 0x6f, 0x8a, 0x1d, 0xf1, 0x61, 0x9c, 0x7d, 0xdd, ++ 0x51, 0xa8, 0x8f, 0xef, 0xb3, 0x5d, 0x0b, 0x47, 0x6b, 0x9c, 0xa6, 0xfc, ++ 0xf5, 0xf0, 0x5d, 0x49, 0x7c, 0xb9, 0x16, 0xbe, 0x1b, 0x95, 0xb6, 0x62, ++ 0x3d, 0x7c, 0x37, 0xba, 0xe7, 0x16, 0x6d, 0xf8, 0x77, 0x63, 0xfb, 0xee, ++ 0x59, 0x0f, 0xf5, 0x09, 0x8e, 0xed, 0x5a, 0xd0, 0x07, 0xf7, 0xa6, 0xb0, ++ 0xf8, 0xa7, 0xe8, 0x47, 0xd4, 0x45, 0xbb, 0xe0, 0xaf, 0x22, 0x4f, 0xab, ++ 0x5f, 0x8b, 0x0b, 0xf9, 0x78, 0x5e, 0xb3, 0x0b, 0xf9, 0x78, 0x87, 0x3f, ++ 0x62, 0x4a, 0xf9, 0x23, 0xe0, 0xa7, 0xab, 0x69, 0x96, 0x2c, 0x12, 0xcc, ++ 0x63, 0x8a, 0xd4, 0x11, 0x7c, 0x87, 0x5c, 0xb8, 0xea, 0x9b, 0x94, 0x5a, ++ 0x28, 0x9f, 0x9d, 0xbc, 0xed, 0x1e, 0xf3, 0x3a, 0x4a, 0x5f, 0x35, 0x50, ++ 0x1f, 0x82, 0xf5, 0x27, 0xd6, 0x45, 0xe6, 0xbb, 0xd3, 0x52, 0x23, 0xf0, ++ 0xdd, 0xdf, 0x73, 0x3a, 0x05, 0xb9, 0x09, 0xf9, 0xcf, 0xbf, 0xd7, 0xb3, ++ 0x7b, 0x38, 0x7e, 0xc3, 0xd7, 0x57, 0xd3, 0x32, 0xcf, 0x3c, 0x0f, 0xed, ++ 0x19, 0xb7, 0x19, 0xe4, 0xeb, 0xc1, 0x14, 0x26, 0x27, 0x0f, 0x73, 0xf9, ++ 0xf8, 0x67, 0x5e, 0x7e, 0xc5, 0x9f, 0xd7, 0x68, 0x9c, 0xf3, 0x60, 0xff, ++ 0x2b, 0x52, 0x79, 0xdc, 0xb6, 0x33, 0x5d, 0x57, 0xc2, 0x3c, 0x28, 0xdd, ++ 0xaa, 0xce, 0x05, 0x74, 0xd1, 0xce, 0xe9, 0xba, 0x3a, 0x95, 0xcb, 0x07, ++ 0x7e, 0xdf, 0x41, 0x15, 0x61, 0xe7, 0x87, 0xee, 0x94, 0xaf, 0xb5, 0x34, ++ 0xdc, 0x7e, 0xcb, 0x82, 0xbc, 0x9c, 0xc6, 0xe3, 0x90, 0x27, 0xaa, 0xce, ++ 0x7f, 0x10, 0xf9, 0x8d, 0xea, 0xbc, 0x5f, 0xca, 0x17, 0xf1, 0x5e, 0x17, ++ 0xd2, 0xac, 0xcc, 0x1b, 0xed, 0xb0, 0x3f, 0xba, 0x31, 0xbe, 0x07, 0xc7, ++ 0x15, 0xc1, 0xe8, 0x78, 0x34, 0xb5, 0x4b, 0x7e, 0xf6, 0xf8, 0x1d, 0xd6, ++ 0xfd, 0x78, 0xa4, 0x75, 0x2f, 0x25, 0x2c, 0x9f, 0x59, 0xbd, 0x0e, 0xe2, ++ 0x4e, 0x40, 0xda, 0x12, 0xf9, 0xcd, 0x9d, 0xd7, 0x13, 0x88, 0xbc, 0x9e, ++ 0x4e, 0xeb, 0x68, 0x50, 0xdc, 0xbf, 0x20, 0xfc, 0xec, 0x54, 0x0f, 0x7a, ++ 0x16, 0xe6, 0x53, 0x36, 0xd7, 0x4c, 0xc0, 0x7f, 0x13, 0xce, 0x27, 0xce, ++ 0xdc, 0x86, 0x4f, 0xa8, 0xf9, 0xce, 0x3f, 0x8b, 0x9f, 0xdd, 0x86, 0xdf, ++ 0x34, 0xc2, 0x3c, 0xd5, 0xfc, 0x46, 0x9c, 0x6f, 0x56, 0x97, 0x42, 0x9f, ++ 0x83, 0x73, 0x51, 0x90, 0x6f, 0x07, 0xf7, 0xb4, 0x80, 0x9f, 0xfe, 0xa1, ++ 0x44, 0xf7, 0x01, 0xc0, 0xdb, 0xf6, 0x92, 0xe0, 0x57, 0x1a, 0xb0, 0xcf, ++ 0xe2, 0x03, 0x88, 0x67, 0x69, 0x56, 0xf7, 0x21, 0x78, 0x2e, 0xe9, 0x59, ++ 0xdc, 0x5d, 0xe4, 0xb1, 0x5e, 0xd2, 0x78, 0x7e, 0x0d, 0x7a, 0xd1, 0x6f, ++ 0xb7, 0x2d, 0x42, 0x3e, 0xd4, 0x06, 0xc2, 0x81, 0xd2, 0xe3, 0x5b, 0xb4, ++ 0x0e, 0xfe, 0xd3, 0x61, 0x16, 0xd7, 0x51, 0x98, 0x17, 0xe9, 0xc3, 0xf0, ++ 0xa7, 0xab, 0xfc, 0xcc, 0x77, 0xb8, 0x1e, 0xd2, 0xb9, 0x64, 0x74, 0x25, ++ 0xf2, 0x14, 0xdb, 0xb7, 0xff, 0x3d, 0x03, 0xfd, 0x58, 0x77, 0xc0, 0xf7, ++ 0xae, 0xe0, 0x50, 0x26, 0x0f, 0x0b, 0x40, 0xfe, 0xff, 0xf5, 0x41, 0xd1, ++ 0xa8, 0xf2, 0xb4, 0x4a, 0xc4, 0x27, 0x15, 0x40, 0x9e, 0x75, 0x22, 0xea, ++ 0x11, 0xad, 0xe9, 0x7a, 0x2d, 0x94, 0xff, 0x6c, 0x3b, 0xb1, 0x35, 0x3d, ++ 0x07, 0xfb, 0x57, 0xdb, 0x8b, 0xad, 0x29, 0x83, 0x8c, 0x6c, 0xdc, 0xd1, ++ 0x63, 0xa1, 0x6c, 0xd6, 0xbb, 0xb7, 0xce, 0x03, 0x3b, 0x69, 0xb0, 0x01, ++ 0xed, 0xa4, 0xf7, 0x79, 0x7e, 0xdf, 0xa4, 0xf3, 0x37, 0xe3, 0x41, 0x5e, ++ 0x4d, 0x92, 0x7d, 0x89, 0x79, 0x52, 0x67, 0x3b, 0xb3, 0xf5, 0xe4, 0xac, ++ 0x12, 0x7b, 0x5e, 0x67, 0x7b, 0x93, 0xae, 0x6f, 0x14, 0xac, 0xef, 0x4e, ++ 0x76, 0xa7, 0xcb, 0xe8, 0xb7, 0x01, 0x18, 0xd5, 0xf6, 0x67, 0xe5, 0x9a, ++ 0xaf, 0x08, 0xe4, 0x43, 0x0f, 0x5d, 0x73, 0x93, 0xc0, 0x7d, 0x63, 0x77, ++ 0xb6, 0x47, 0x89, 0x0c, 0x6c, 0xa2, 0xe0, 0xac, 0xe3, 0x08, 0x94, 0x45, ++ 0x17, 0x9c, 0x98, 0x86, 0x33, 0xe0, 0x52, 0xed, 0x11, 0x28, 0x07, 0xff, ++ 0x85, 0x99, 0xe7, 0x77, 0xca, 0x27, 0x1a, 0x72, 0xa3, 0xf1, 0x08, 0x3b, ++ 0x0e, 0xde, 0x57, 0x79, 0xbf, 0xc2, 0xa0, 0x77, 0x98, 0xbd, 0xca, 0xcb, ++ 0x4e, 0xf7, 0xb0, 0x2d, 0xf3, 0x28, 0xf3, 0xd4, 0x8a, 0x7d, 0x45, 0x98, ++ 0x3f, 0x21, 0x07, 0x62, 0xa0, 0xbc, 0x26, 0x05, 0xd0, 0xef, 0x25, 0x6b, ++ 0xd8, 0xbd, 0x0b, 0xe2, 0xbe, 0x05, 0x6a, 0xc7, 0xa6, 0x76, 0x4f, 0x00, ++ 0xbb, 0x97, 0xe5, 0x4b, 0x8d, 0x84, 0x3c, 0x23, 0x3a, 0xb9, 0xb2, 0x1f, ++ 0x7c, 0x34, 0xe7, 0x21, 0xa4, 0xfb, 0x28, 0xd4, 0x7f, 0x3a, 0xec, 0xd8, ++ 0xd7, 0x35, 0x98, 0x1f, 0xd0, 0xa4, 0x75, 0xc6, 0x0e, 0x07, 0x3b, 0x76, ++ 0x4d, 0x2f, 0xc7, 0x3a, 0x5a, 0xff, 0x93, 0x3f, 0xe1, 0x67, 0x07, 0x68, ++ 0x59, 0x63, 0xf9, 0x8a, 0x84, 0xdf, 0xcf, 0x56, 0xb9, 0xe6, 0xba, 0xa2, ++ 0xde, 0xba, 0x2e, 0x74, 0xbf, 0x0f, 0xe4, 0x41, 0x57, 0xfe, 0x8f, 0x8c, ++ 0x72, 0xa7, 0x92, 0x90, 0x8d, 0xb0, 0x5f, 0x95, 0xe4, 0x2d, 0xfd, 0xca, ++ 0x30, 0x39, 0x48, 0x1a, 0xff, 0xdc, 0x01, 0xf7, 0x7e, 0x94, 0xcf, 0x95, ++ 0x03, 0xe0, 0xd0, 0xae, 0xd2, 0x4e, 0x72, 0xd2, 0xf7, 0xca, 0xb9, 0xbd, ++ 0x41, 0x3c, 0x8f, 0xb0, 0x3a, 0xb7, 0xb3, 0x08, 0xf9, 0x7c, 0xa2, 0x93, ++ 0xf6, 0x5b, 0x9e, 0xc0, 0xdf, 0x27, 0x33, 0x58, 0x7b, 0xba, 0x68, 0x7f, ++ 0x80, 0xd5, 0x7b, 0x89, 0xfe, 0xf6, 0x4f, 0xc4, 0x7a, 0x8a, 0xa8, 0xf3, ++ 0xfe, 0xee, 0x12, 0xf5, 0x2d, 0xac, 0x9e, 0x25, 0xbe, 0xdf, 0xcb, 0xea, ++ 0xb9, 0x62, 0xfc, 0xf7, 0xd9, 0x78, 0x66, 0xf6, 0x7e, 0x69, 0xf7, 0xef, ++ 0x4d, 0x02, 0xfd, 0x43, 0xf0, 0xf7, 0x71, 0xdd, 0x95, 0xf7, 0xf2, 0x50, ++ 0x7e, 0x3f, 0xb1, 0xfb, 0xed, 0xf3, 0x49, 0x94, 0xed, 0x5c, 0x1e, 0x88, ++ 0x7b, 0x78, 0xca, 0x7e, 0x30, 0x2e, 0xfa, 0x3d, 0xa0, 0xe7, 0x46, 0x09, ++ 0x73, 0xdf, 0x2a, 0xd7, 0xea, 0xd0, 0xbf, 0x7d, 0xd5, 0xd6, 0x98, 0x17, ++ 0x7e, 0x1e, 0x59, 0xe4, 0x9f, 0xb8, 0x4a, 0xcd, 0x4e, 0xd0, 0xf7, 0xaa, ++ 0xf6, 0xf5, 0xde, 0x21, 0xf3, 0x7c, 0x1c, 0xd0, 0x37, 0x7e, 0xc4, 0xe3, ++ 0xca, 0x65, 0xb2, 0x09, 0xe3, 0x11, 0xd7, 0x37, 0x33, 0x3e, 0xdf, 0x95, ++ 0xbe, 0xb6, 0x78, 0xcd, 0x1b, 0x8a, 0xfd, 0xec, 0xd4, 0xce, 0xef, 0x49, ++ 0xc6, 0x40, 0x1d, 0x1d, 0xef, 0xda, 0x13, 0x49, 0x98, 0xdf, 0x4e, 0x7a, ++ 0xfa, 0x31, 0x0e, 0xbe, 0xbc, 0xbb, 0x24, 0xe2, 0xed, 0x78, 0x9e, 0x55, ++ 0xe4, 0x7b, 0xc5, 0xf7, 0x20, 0x4e, 0xb0, 0x4f, 0xe3, 0x7f, 0x13, 0xc5, ++ 0xee, 0xa1, 0xbc, 0xe0, 0x47, 0xfe, 0xbb, 0xf8, 0x37, 0xcc, 0xdf, 0x5b, ++ 0xf5, 0xcc, 0x11, 0x94, 0x73, 0xf3, 0x65, 0x3b, 0xe2, 0xf1, 0xf1, 0x2c, ++ 0xf7, 0x0a, 0x80, 0x4f, 0x9b, 0x99, 0xdd, 0x37, 0xb8, 0x78, 0xcd, 0x21, ++ 0xa4, 0xd7, 0xb5, 0x99, 0x5c, 0x4f, 0xb0, 0x04, 0xfb, 0x86, 0xc3, 0xf3, ++ 0xc1, 0xce, 0xf0, 0xff, 0xe1, 0x1d, 0xe0, 0xff, 0xc3, 0x7f, 0x27, 0xfc, ++ 0xd5, 0x7e, 0x66, 0x71, 0x1e, 0x7a, 0xd9, 0x37, 0xcc, 0x4b, 0x6b, 0x33, ++ 0xb3, 0x38, 0xa8, 0x83, 0xef, 0xd3, 0x79, 0x8d, 0x7d, 0x00, 0x87, 0xd7, ++ 0xd3, 0x40, 0xe7, 0xd7, 0x16, 0xf9, 0x73, 0xac, 0x32, 0x24, 0x0d, 0xfb, ++ 0x13, 0x59, 0xbe, 0xd1, 0xbb, 0x45, 0x60, 0x07, 0x5d, 0xaf, 0x35, 0xe3, ++ 0xfd, 0x44, 0xb3, 0x56, 0x7d, 0x9c, 0x17, 0x7e, 0x1e, 0x45, 0x94, 0x6a, ++ 0xfd, 0xff, 0x73, 0xa0, 0xa3, 0x84, 0x10, 0xbc, 0x76, 0x75, 0xe7, 0xfa, ++ 0x5e, 0x08, 0xbe, 0x2f, 0xdd, 0x01, 0xbe, 0x2f, 0xfd, 0x3b, 0xe1, 0x9b, ++ 0xa4, 0x0d, 0xe8, 0x1d, 0x10, 0x37, 0x3d, 0xcb, 0xee, 0x0b, 0x1b, 0xe0, ++ 0x3f, 0xaf, 0x0f, 0xcf, 0x73, 0x39, 0xd9, 0x9d, 0xc9, 0xdd, 0xd8, 0x66, ++ 0x16, 0x27, 0x52, 0xe7, 0x6b, 0x9d, 0xec, 0x6e, 0x66, 0x78, 0xc5, 0xe3, ++ 0x31, 0x55, 0x93, 0xdf, 0x1d, 0x06, 0xf1, 0x18, 0x41, 0x0f, 0x23, 0xa3, ++ 0x49, 0x23, 0xf8, 0xd7, 0x29, 0x5e, 0x3b, 0x38, 0x5e, 0x3b, 0x00, 0xaf, ++ 0x05, 0xfe, 0x86, 0xe2, 0x32, 0xf4, 0xbb, 0x08, 0xf4, 0x15, 0xc2, 0x5f, ++ 0xc2, 0xec, 0x62, 0x0e, 0x27, 0x7f, 0x67, 0xbc, 0x3d, 0x7d, 0x07, 0xb8, ++ 0x9e, 0xfe, 0x77, 0xc2, 0xb5, 0x89, 0xea, 0xbf, 0x18, 0xc7, 0x7c, 0x3d, ++ 0x0a, 0xfd, 0x27, 0x6a, 0x38, 0xff, 0x8d, 0xd3, 0xbb, 0x80, 0xb7, 0x31, ++ 0xed, 0xf6, 0x70, 0x36, 0xa6, 0xfd, 0x6b, 0xe0, 0x6c, 0x4c, 0xb3, 0x2b, ++ 0xf2, 0xd2, 0x04, 0xbc, 0xbb, 0x92, 0x4f, 0xea, 0xfd, 0x11, 0xf3, 0x8e, ++ 0x40, 0xa7, 0x45, 0xdf, 0x86, 0x4e, 0x1f, 0x4d, 0xe7, 0x7c, 0x4a, 0x1b, ++ 0xc0, 0x3c, 0x51, 0xf5, 0xbe, 0xc7, 0xa6, 0x75, 0xda, 0xf7, 0xb8, 0xb4, ++ 0xdb, 0xef, 0xbb, 0xb2, 0xfd, 0x5f, 0xbc, 0xef, 0x6a, 0xb8, 0xa9, 0xcb, ++ 0x4a, 0x1e, 0xdf, 0x54, 0x3f, 0xcf, 0x4f, 0xd3, 0xfc, 0x4b, 0xe1, 0xf8, ++ 0xff, 0x9b, 0xff, 0x7c, 0x76, 0xed, 0x61, 0x45, 0xfb, 0xdc, 0x35, 0x27, ++ 0x15, 0xed, 0xf3, 0x3c, 0x1f, 0x28, 0xea, 0xc3, 0x02, 0xfe, 0x52, 0x40, ++ 0x73, 0xe1, 0x0f, 0x1f, 0x71, 0x29, 0x88, 0xfa, 0xe5, 0xb7, 0xf5, 0xab, ++ 0x77, 0xe5, 0x4f, 0x9f, 0xf4, 0xda, 0x12, 0x0d, 0xc4, 0xdb, 0x06, 0xf9, ++ 0x99, 0x3f, 0xbf, 0x2d, 0xdd, 0xbd, 0x01, 0xf0, 0xeb, 0x7d, 0x8d, 0xb7, ++ 0xde, 0x4c, 0xe1, 0x3a, 0xf0, 0x5c, 0x23, 0xbb, 0xa7, 0xab, 0x22, 0x07, ++ 0xf3, 0x87, 0x56, 0xf1, 0x39, 0x7e, 0x39, 0xec, 0x6f, 0x9f, 0x3c, 0x44, ++ 0xf1, 0xe6, 0x4b, 0x62, 0x40, 0x7f, 0xa7, 0xef, 0xf0, 0x5d, 0x5a, 0x7b, ++ 0x6e, 0x67, 0x3c, 0x28, 0xbe, 0xa1, 0x21, 0xce, 0xb0, 0x3c, 0xb4, 0x62, ++ 0xa3, 0x55, 0xeb, 0x44, 0x7f, 0x0d, 0x71, 0x46, 0xc2, 0x9b, 0xc7, 0xd3, ++ 0x18, 0xde, 0x61, 0xfe, 0x0f, 0xa5, 0xf7, 0xe9, 0x46, 0xa2, 0x8b, 0xa7, ++ 0x74, 0x3e, 0x7d, 0xba, 0x84, 0xf9, 0x4e, 0xd3, 0x09, 0xcb, 0x87, 0xa6, ++ 0xa5, 0xcf, 0x4d, 0xdb, 0x27, 0x69, 0x89, 0x0f, 0xee, 0x35, 0x2e, 0x37, ++ 0x69, 0x7d, 0x06, 0x8c, 0xf3, 0x29, 0xcf, 0x2f, 0x1b, 0xf8, 0xbd, 0xc7, ++ 0x24, 0x3e, 0x4e, 0x71, 0x8e, 0x59, 0x76, 0xca, 0x98, 0x97, 0x36, 0x75, ++ 0x10, 0x8b, 0x0f, 0x3e, 0x60, 0x6a, 0xc4, 0x73, 0xa4, 0x33, 0x4e, 0x3c, ++ 0x7c, 0xed, 0x21, 0xda, 0x4e, 0xd6, 0x7b, 0x8a, 0x58, 0xbe, 0xb5, 0x38, ++ 0x7f, 0xf6, 0x07, 0xcd, 0x37, 0x89, 0xfb, 0x3d, 0x9e, 0x46, 0x98, 0x9f, ++ 0x5d, 0xe2, 0x71, 0x64, 0x49, 0x87, 0xf7, 0x61, 0xa9, 0xbf, 0x9b, 0xcb, ++ 0xd7, 0x3b, 0x49, 0x5e, 0x27, 0x43, 0xbe, 0x4b, 0xf0, 0x03, 0x82, 0x7a, ++ 0xb7, 0xa0, 0x3b, 0xba, 0xbe, 0x13, 0x86, 0x02, 0x76, 0xbe, 0x02, 0x7e, ++ 0x77, 0xa2, 0x9c, 0xe8, 0x7c, 0xbd, 0xf1, 0x7c, 0xf3, 0x96, 0x52, 0x78, ++ 0xbf, 0xf2, 0xb4, 0x1d, 0xe1, 0x52, 0x33, 0x68, 0x5d, 0x1e, 0xec, 0x63, ++ 0xcd, 0x28, 0xe9, 0x53, 0x43, 0x5e, 0xc8, 0xae, 0xa9, 0x59, 0xf3, 0x17, ++ 0xec, 0xa7, 0x4c, 0x7e, 0xa5, 0x1e, 0xde, 0xbf, 0x7e, 0x96, 0xb9, 0xc2, ++ 0x07, 0xb6, 0x52, 0x3b, 0xc5, 0x1e, 0xee, 0xaf, 0x0c, 0xcc, 0x01, 0xba, ++ 0xbc, 0x93, 0xfd, 0x23, 0xe6, 0x7d, 0xae, 0xce, 0x87, 0xf8, 0xf4, 0x49, ++ 0xdd, 0x09, 0x2c, 0xdf, 0x1f, 0xf1, 0x4e, 0x11, 0xe8, 0x19, 0x81, 0x3a, ++ 0x7f, 0x44, 0xbf, 0xe4, 0xb7, 0xf5, 0x0f, 0x08, 0xbf, 0x80, 0xf0, 0x13, ++ 0x08, 0x3e, 0x20, 0xee, 0xe1, 0x7b, 0x3d, 0x8d, 0xf3, 0x05, 0xa3, 0xd4, ++ 0x1d, 0xef, 0x4f, 0xd3, 0xb2, 0x52, 0xf0, 0xcb, 0x03, 0x9d, 0xf9, 0xeb, ++ 0x9b, 0x77, 0xe0, 0xaf, 0x6f, 0xfe, 0x3b, 0xf9, 0xeb, 0xd7, 0xc5, 0xf3, ++ 0xca, 0x64, 0x26, 0x17, 0xd5, 0xf8, 0xad, 0xc6, 0x6b, 0x81, 0xcf, 0x70, ++ 0x5f, 0x37, 0xfc, 0xde, 0xc0, 0x03, 0x54, 0xdf, 0x03, 0xb9, 0x3a, 0x93, ++ 0x78, 0x72, 0x2b, 0x29, 0x9f, 0x9d, 0xbe, 0xa4, 0x41, 0x37, 0x54, 0xfa, ++ 0xf6, 0x78, 0xbd, 0xcc, 0x74, 0x21, 0x83, 0x44, 0x38, 0x67, 0xf2, 0xcd, ++ 0xf9, 0xb9, 0x1d, 0xf7, 0x4d, 0x2e, 0x95, 0xd1, 0x3e, 0x10, 0xf9, 0x09, ++ 0x62, 0x1f, 0xae, 0xa7, 0x75, 0xd2, 0x33, 0xbf, 0x4a, 0x4b, 0xb8, 0xed, ++ 0xbe, 0x29, 0xdb, 0xff, 0xed, 0x7a, 0xfc, 0x85, 0x39, 0xdf, 0x4e, 0xae, ++ 0x11, 0x85, 0x3e, 0x60, 0x4d, 0xef, 0xb4, 0xee, 0x84, 0xf4, 0xdb, 0xaf, ++ 0x5b, 0xd9, 0xfe, 0x2f, 0x5e, 0x77, 0xd8, 0xf9, 0x97, 0x39, 0xb2, 0x26, ++ 0x74, 0xde, 0x03, 0xf2, 0x87, 0x21, 0x8f, 0xb1, 0xdd, 0xcb, 0xce, 0x33, ++ 0x56, 0x64, 0x35, 0xe0, 0x3d, 0xf1, 0x64, 0x50, 0x30, 0x06, 0xf4, 0xc6, ++ 0xa5, 0x07, 0x65, 0xc4, 0x43, 0xa2, 0x75, 0x6a, 0x53, 0xc2, 0xee, 0x97, ++ 0x6a, 0x25, 0xbe, 0x0f, 0x01, 0x1f, 0x97, 0x0c, 0x5b, 0x82, 0xe7, 0xe0, ++ 0x3a, 0xdd, 0x0b, 0x65, 0x6a, 0xc2, 0x73, 0x71, 0xea, 0xfb, 0xa1, 0x44, ++ 0xbe, 0x70, 0x35, 0xef, 0x47, 0x7d, 0x4f, 0x54, 0x35, 0xcf, 0x13, 0xae, ++ 0x56, 0xe5, 0xed, 0x0c, 0x49, 0xe7, 0xe7, 0x08, 0x0b, 0x48, 0x01, 0xcb, ++ 0xaf, 0x50, 0xea, 0xa5, 0xea, 0xb2, 0xad, 0x8e, 0x28, 0xfc, 0x92, 0x6d, ++ 0x37, 0xeb, 0xd0, 0x0f, 0x50, 0x92, 0xbe, 0xf7, 0x47, 0x9e, 0xb4, 0xd0, ++ 0x3e, 0x8c, 0xed, 0xbc, 0x6f, 0x13, 0xee, 0xb0, 0x6f, 0x13, 0xfe, 0x9d, ++ 0xfb, 0xa6, 0xc6, 0x57, 0xd9, 0xbc, 0x13, 0xcf, 0x43, 0x7d, 0x53, 0x7c, ++ 0x25, 0x76, 0xe7, 0x3c, 0x98, 0xb7, 0xe0, 0xc3, 0xb3, 0x20, 0x87, 0x8b, ++ 0x8e, 0x3b, 0xeb, 0x80, 0xc1, 0x0b, 0xf7, 0xf9, 0x8b, 0x7b, 0xad, 0xdb, ++ 0x25, 0x76, 0xff, 0x4c, 0xfb, 0xa7, 0x04, 0xfd, 0x46, 0x77, 0xba, 0x17, ++ 0x79, 0xf0, 0x69, 0x37, 0x9e, 0xe7, 0x1c, 0xf8, 0xae, 0x53, 0x66, 0x79, ++ 0x04, 0x2c, 0xdf, 0x40, 0xe8, 0x29, 0x42, 0x6f, 0x19, 0xda, 0x1a, 0x94, ++ 0xd9, 0xfd, 0xf5, 0xfc, 0x1c, 0x14, 0xcf, 0x0b, 0xfa, 0xba, 0xfc, 0xcb, ++ 0xe1, 0xb7, 0xa0, 0x9e, 0x23, 0xfc, 0x6f, 0xff, 0x2c, 0xbf, 0xb5, 0x90, ++ 0x73, 0x7b, 0x8c, 0x8c, 0x3e, 0x84, 0x7f, 0xb0, 0x30, 0xe0, 0x42, 0x3d, ++ 0xae, 0x4d, 0xe7, 0x2b, 0x82, 0x7b, 0xe8, 0x3d, 0xfb, 0xa3, 0x22, 0xea, ++ 0x01, 0x3f, 0x49, 0x67, 0xfb, 0xd4, 0xd5, 0xbd, 0xad, 0x49, 0x31, 0xee, ++ 0x9f, 0xa4, 0x43, 0x3b, 0xe7, 0xef, 0xe2, 0xfe, 0xd6, 0x32, 0x99, 0xdd, ++ 0xd3, 0x7c, 0xdd, 0x2f, 0xa3, 0xff, 0x6e, 0xf5, 0x0f, 0x7f, 0xf7, 0xeb, ++ 0x67, 0xed, 0x77, 0xb6, 0xeb, 0x6b, 0x2c, 0xd7, 0x23, 0xda, 0x45, 0xa2, ++ 0xac, 0xd1, 0xb0, 0x73, 0x12, 0x05, 0xa5, 0x76, 0xcc, 0xdb, 0x03, 0x7b, ++ 0x09, 0xfc, 0x77, 0xc2, 0x9f, 0xa7, 0x7e, 0xff, 0x50, 0x66, 0xc9, 0xce, ++ 0x74, 0xf4, 0x2f, 0x0d, 0xc3, 0xfb, 0x34, 0xaf, 0x6f, 0x65, 0xf3, 0xe9, ++ 0x6a, 0x5f, 0x6a, 0xd6, 0x04, 0x71, 0xfc, 0x2e, 0xdb, 0xf9, 0xf8, 0x35, ++ 0x07, 0x8b, 0x2c, 0xe1, 0xf7, 0x60, 0x7c, 0x9e, 0x2e, 0x09, 0x7c, 0xb6, ++ 0x5c, 0x34, 0x86, 0xf6, 0xf5, 0xeb, 0xee, 0xff, 0xf0, 0xe0, 0x74, 0x85, ++ 0x7e, 0xf3, 0xff, 0xba, 0xdd, 0x30, 0x49, 0xa6, 0xaa, 0x23, 0x95, 0x8f, ++ 0xb9, 0x92, 0x97, 0xe9, 0xa7, 0x84, 0xe9, 0xa9, 0xb3, 0x88, 0x1f, 0xcb, ++ 0x39, 0x24, 0x88, 0xa5, 0x9b, 0xb0, 0x7c, 0xfa, 0xf9, 0xc4, 0x81, 0xe5, ++ 0x42, 0xe2, 0xc2, 0xd2, 0x95, 0xe9, 0xfe, 0x28, 0x1d, 0xf3, 0x5b, 0x82, ++ 0x89, 0x98, 0x0f, 0xb9, 0xef, 0x1f, 0x7d, 0x01, 0x6f, 0xae, 0x8d, 0x18, ++ 0xda, 0x00, 0xb9, 0x73, 0xff, 0x2a, 0x3d, 0xad, 0x3d, 0xdf, 0x8e, 0xe3, ++ 0xb7, 0xbf, 0xfe, 0x8f, 0x0c, 0xc8, 0x6b, 0xb9, 0x13, 0xfd, 0xf7, 0x8b, ++ 0x71, 0xb6, 0xa6, 0x47, 0x88, 0x27, 0xff, 0x67, 0xb1, 0x8c, 0xf1, 0x13, ++ 0x92, 0xbc, 0x12, 0xe9, 0xa1, 0x9c, 0xdf, 0x92, 0x40, 0x46, 0xb1, 0xb8, ++ 0xd8, 0x8f, 0x12, 0xb3, 0xd8, 0x3d, 0xf5, 0x1d, 0xfc, 0x2f, 0x69, 0xbb, ++ 0xe0, 0x7f, 0x10, 0x6f, 0xcd, 0xfd, 0x54, 0xc3, 0xf2, 0x43, 0x96, 0x4a, ++ 0x78, 0x7f, 0x6b, 0x73, 0x40, 0x83, 0xa4, 0x95, 0xbb, 0x28, 0xcb, 0x0b, ++ 0xf7, 0xf1, 0x34, 0x37, 0xb1, 0xf6, 0xdc, 0x2a, 0xab, 0x57, 0xa2, 0xf5, ++ 0xdc, 0xc1, 0x51, 0xac, 0x7d, 0x85, 0xd5, 0x0b, 0xe7, 0x1e, 0x66, 0x93, ++ 0x00, 0xd2, 0xe3, 0x5c, 0x38, 0xf5, 0x20, 0xc3, 0x39, 0x18, 0xc6, 0xdf, ++ 0xc4, 0x3d, 0xe5, 0x54, 0x63, 0xcf, 0x06, 0x3d, 0x6b, 0x51, 0x8b, 0x91, ++ 0xe5, 0xef, 0x93, 0x40, 0x4f, 0xe0, 0xe3, 0x79, 0x5d, 0xd8, 0x37, 0x63, ++ 0x33, 0x98, 0x5d, 0xdc, 0x2f, 0x9b, 0xf1, 0xed, 0x7e, 0x25, 0x4a, 0x3f, ++ 0x44, 0x4c, 0x06, 0xe3, 0x03, 0x55, 0x99, 0x25, 0x4b, 0x33, 0x68, 0xb9, ++ 0x2a, 0xc3, 0x19, 0x0b, 0x65, 0x3f, 0x9b, 0x7f, 0xd3, 0x4f, 0x0b, 0xd1, ++ 0x2f, 0x8f, 0xbf, 0xa3, 0xf2, 0xc5, 0xe0, 0x07, 0x31, 0x7e, 0x28, 0xbe, ++ 0x7b, 0x32, 0xb3, 0x24, 0x1e, 0xde, 0x7b, 0x55, 0x62, 0xf9, 0xe6, 0x9e, ++ 0x83, 0xfc, 0xf7, 0x06, 0x48, 0x30, 0x31, 0xfc, 0xfe, 0x50, 0x57, 0x66, ++ 0x69, 0x6a, 0x06, 0x1d, 0x3f, 0x2b, 0x83, 0x30, 0x3a, 0xea, 0x02, 0xae, ++ 0xf0, 0x7b, 0x73, 0xae, 0x08, 0xf6, 0x9c, 0xc8, 0x67, 0xec, 0x07, 0x36, ++ 0x15, 0xfa, 0xc7, 0xd9, 0x3d, 0x54, 0xaf, 0x4a, 0xac, 0x5e, 0xf0, 0xbc, ++ 0xed, 0xbe, 0xf5, 0x7d, 0xd1, 0x87, 0xef, 0x01, 0xbd, 0xf6, 0xc9, 0x4c, ++ 0xf7, 0x3d, 0x38, 0x7f, 0x3d, 0x21, 0x26, 0x98, 0xff, 0xcf, 0x0d, 0xde, ++ 0x1d, 0xa8, 0x7f, 0xd6, 0x66, 0x80, 0x3f, 0x72, 0xc9, 0xf3, 0x06, 0x0d, ++ 0xe8, 0x05, 0x1f, 0x51, 0xb1, 0x0a, 0xe7, 0x4a, 0xfe, 0x58, 0x67, 0xc4, ++ 0xf2, 0x63, 0x6a, 0xe7, 0x42, 0xf9, 0x27, 0x6a, 0xe7, 0x42, 0xf9, 0x29, ++ 0xb5, 0x73, 0xa1, 0xfc, 0x8c, 0xda, 0xb9, 0x50, 0x2e, 0xba, 0xe1, 0x20, ++ 0x84, 0xf2, 0x8f, 0xf7, 0x32, 0x9c, 0xa3, 0x32, 0x8a, 0x42, 0xf1, 0x36, ++ 0xf5, 0x7c, 0x87, 0x73, 0x78, 0x76, 0x8c, 0x7f, 0x50, 0x8f, 0xe3, 0x57, ++ 0x65, 0xba, 0x11, 0xbe, 0x1d, 0xfb, 0xbd, 0x9f, 0x78, 0x21, 0x1e, 0xf2, ++ 0xaa, 0x35, 0x98, 0x6a, 0xbb, 0x0d, 0xbe, 0x75, 0xcd, 0x67, 0x3c, 0xdc, ++ 0xde, 0x8b, 0x9c, 0x9f, 0xd5, 0x9f, 0xef, 0x7b, 0x5e, 0x93, 0x16, 0xe5, ++ 0x78, 0x5e, 0x73, 0x20, 0x66, 0x71, 0xd8, 0x7b, 0x93, 0x33, 0xf4, 0xd8, ++ 0x9e, 0xfb, 0xfa, 0x05, 0x3c, 0x1f, 0xda, 0x66, 0xe9, 0x80, 0xaf, 0x53, ++ 0xa2, 0x4b, 0x9e, 0xa4, 0x61, 0xf5, 0xc9, 0xcf, 0xf7, 0x41, 0xf8, 0x56, ++ 0x65, 0x3a, 0x97, 0xc2, 0x3e, 0x52, 0xfa, 0xfe, 0x0e, 0x94, 0x79, 0xcd, ++ 0xbf, 0xfb, 0x09, 0x9c, 0xe7, 0xa1, 0xfd, 0x63, 0x1e, 0x41, 0xbb, 0x14, ++ 0x7c, 0x0a, 0xf5, 0x7c, 0xd5, 0x3a, 0xd4, 0x70, 0x10, 0xeb, 0x7a, 0xd5, ++ 0xea, 0xdf, 0x04, 0xdf, 0xbf, 0xfa, 0x7a, 0x36, 0xac, 0x84, 0xf2, 0x1b, ++ 0xc2, 0xe8, 0x06, 0xf0, 0x48, 0x8a, 0xb4, 0xde, 0x75, 0x08, 0xd7, 0xfb, ++ 0x0c, 0xc1, 0x42, 0x38, 0xa7, 0x72, 0xdf, 0x2d, 0x39, 0x62, 0xde, 0x70, ++ 0x55, 0x66, 0x31, 0xc2, 0x59, 0x27, 0xf0, 0x4d, 0xc0, 0x89, 0xef, 0xd7, ++ 0xb7, 0xa5, 0xeb, 0x8e, 0x78, 0x36, 0xc7, 0x53, 0x22, 0xee, 0xd7, 0x00, ++ 0xde, 0x69, 0x07, 0x39, 0x74, 0x33, 0x06, 0xf4, 0xba, 0x72, 0x1e, 0xaf, ++ 0x6f, 0x6e, 0xea, 0xf9, 0x3e, 0xac, 0xcf, 0x73, 0x42, 0x26, 0xbd, 0xec, ++ 0x88, 0xbf, 0x0a, 0xba, 0x7b, 0x8e, 0xef, 0x8f, 0x28, 0x73, 0x0f, 0xea, ++ 0x5d, 0xb0, 0x4f, 0xaf, 0x1e, 0xbc, 0xd8, 0x13, 0xee, 0x5b, 0xa5, 0xfb, ++ 0xd2, 0x13, 0xee, 0x5f, 0xdd, 0x9c, 0xd1, 0x4b, 0x91, 0xdf, 0x94, 0x3b, ++ 0xf8, 0xef, 0xdb, 0x7e, 0x1a, 0x8f, 0xef, 0xe3, 0xef, 0x7c, 0xce, 0x20, ++ 0xdb, 0xcb, 0x20, 0x9f, 0x64, 0xa6, 0xf1, 0xf0, 0x31, 0x58, 0xd2, 0x6c, ++ 0xcb, 0xa7, 0x65, 0x90, 0x4f, 0x32, 0x37, 0x59, 0x3a, 0x0e, 0xe5, 0x3c, ++ 0x7b, 0xd6, 0x68, 0xc8, 0x23, 0x11, 0xf9, 0xee, 0x0b, 0xfa, 0x14, 0x1f, ++ 0x07, 0x52, 0x9a, 0xe0, 0x28, 0x47, 0x7d, 0xac, 0x18, 0x98, 0x4b, 0x98, ++ 0x3c, 0x28, 0x35, 0x46, 0xf3, 0xcb, 0x9f, 0x85, 0xfc, 0x89, 0x53, 0xd4, ++ 0xc7, 0x24, 0x77, 0x57, 0xbc, 0x3f, 0xce, 0xde, 0x43, 0xd1, 0x3e, 0xbe, ++ 0xcf, 0x3d, 0x8a, 0x76, 0x31, 0xee, 0x04, 0x47, 0x7f, 0xc5, 0x7b, 0xfd, ++ 0x6c, 0xc1, 0x6c, 0xb0, 0xbf, 0xe8, 0x3a, 0xd8, 0x7d, 0xd7, 0xbb, 0x64, ++ 0xcc, 0xbb, 0xcb, 0x7d, 0xfd, 0xf4, 0xbd, 0xf7, 0xd0, 0xfa, 0xa4, 0x17, ++ 0xa7, 0xe2, 0xfd, 0x7e, 0xaf, 0xf2, 0xf6, 0x49, 0x7b, 0x4b, 0xf1, 0xf7, ++ 0x03, 0xdb, 0x29, 0x3c, 0xf5, 0x54, 0x91, 0xba, 0x34, 0xe8, 0xb1, 0xa7, ++ 0x7e, 0x0a, 0x9d, 0xa9, 0xf4, 0xfb, 0xca, 0x83, 0x2f, 0x1c, 0x77, 0xda, ++ 0x6f, 0xa3, 0xdf, 0xdf, 0x41, 0xaf, 0x17, 0xfc, 0x75, 0x79, 0x8b, 0xb1, ++ 0x08, 0xf8, 0xeb, 0xd7, 0xd5, 0xf3, 0xd5, 0xfb, 0xb2, 0x3f, 0x83, 0x9f, ++ 0x0b, 0xe4, 0x7a, 0x7f, 0x57, 0xf8, 0xd2, 0x41, 0x0f, 0x92, 0x9d, 0xe1, ++ 0x0b, 0xbf, 0x67, 0x4b, 0x8d, 0x2f, 0x90, 0x59, 0xca, 0xf0, 0x8f, 0x95, ++ 0x93, 0x4e, 0xb1, 0x73, 0x60, 0xdf, 0x94, 0x8f, 0x7d, 0x0e, 0x7c, 0x2c, ++ 0xec, 0x1c, 0x66, 0x47, 0xa9, 0xf2, 0xb7, 0xf5, 0xd3, 0x3b, 0xde, 0x5f, ++ 0x05, 0xfe, 0xf7, 0xf7, 0x64, 0x82, 0xe7, 0xea, 0xf8, 0xf9, 0xbc, 0xc5, ++ 0xf0, 0xff, 0x72, 0x08, 0xcf, 0xc9, 0xc2, 0xed, 0x8f, 0xc0, 0x7d, 0x52, ++ 0xf4, 0xb9, 0x07, 0xf4, 0x4f, 0x38, 0x07, 0xea, 0xa4, 0xfd, 0xff, 0x39, ++ 0x83, 0xeb, 0x4d, 0x95, 0x87, 0x1f, 0x49, 0x29, 0x0c, 0xb5, 0x93, 0xd5, ++ 0x9f, 0x2a, 0xde, 0x27, 0x6b, 0xa5, 0x0d, 0x8a, 0xfa, 0xfa, 0x2c, 0x65, ++ 0x7d, 0x73, 0xf1, 0x86, 0xf0, 0xef, 0xbb, 0xe2, 0x87, 0x8b, 0xb7, 0xce, ++ 0xd3, 0xbb, 0xf1, 0xfc, 0xa6, 0x14, 0xf1, 0xf7, 0x5a, 0xc5, 0x7c, 0xca, ++ 0xde, 0x8a, 0xc2, 0xfc, 0xbc, 0x89, 0x90, 0x77, 0x42, 0x1f, 0x55, 0x17, ++ 0x7e, 0xa0, 0x85, 0xf8, 0xea, 0xc4, 0x2e, 0xe4, 0xa7, 0xe0, 0x3b, 0x33, ++ 0x64, 0x52, 0x1b, 0xa9, 0xfd, 0x66, 0x06, 0xf3, 0xdf, 0x4f, 0x78, 0x2b, ++ 0x0a, 0xf3, 0x59, 0xbe, 0x69, 0xbf, 0x1f, 0x51, 0x58, 0x62, 0xbe, 0xe0, ++ 0x6f, 0x98, 0xfc, 0xfc, 0x28, 0xd6, 0xaf, 0x0d, 0xdf, 0x77, 0x43, 0x26, ++ 0xeb, 0xff, 0x5a, 0xd1, 0x96, 0x1f, 0x7e, 0x05, 0x71, 0xcf, 0xfd, 0x04, ++ 0xf3, 0x37, 0xaf, 0x59, 0x19, 0xdf, 0xcf, 0x6b, 0xfa, 0x42, 0xa3, 0xa1, ++ 0x65, 0xbf, 0x6e, 0x0c, 0x5f, 0xf2, 0x2c, 0x01, 0x0d, 0xc8, 0x93, 0xf6, ++ 0x8a, 0x68, 0x0f, 0xe4, 0xe7, 0xd7, 0x2c, 0x35, 0x63, 0x5e, 0x67, 0xbf, ++ 0xec, 0xe0, 0x87, 0xc6, 0x7c, 0x42, 0x62, 0x33, 0x37, 0xff, 0xd8, 0x48, ++ 0xf7, 0xed, 0x0f, 0x70, 0x98, 0x31, 0x4c, 0x9e, 0xb6, 0x83, 0x8d, 0x43, ++ 0xeb, 0xc9, 0xff, 0xf1, 0x38, 0xf2, 0xfb, 0xf1, 0x6f, 0x45, 0xf9, 0x34, ++ 0xdf, 0x62, 0x3d, 0xc9, 0x54, 0x87, 0x42, 0x79, 0x5d, 0xc2, 0xe8, 0x7b, ++ 0x0e, 0xe0, 0x0d, 0x97, 0x2b, 0xe0, 0x3b, 0xaf, 0x79, 0x84, 0x74, 0xc8, ++ 0x19, 0xe0, 0x07, 0xb0, 0x7e, 0xa8, 0x4f, 0xca, 0xfc, 0xf1, 0xfb, 0x4f, ++ 0xd2, 0x71, 0x6b, 0x4e, 0x32, 0xfa, 0x86, 0x4c, 0x39, 0xb5, 0xdd, 0x3e, ++ 0x33, 0xcc, 0x6e, 0x27, 0xcf, 0x31, 0xba, 0x34, 0xd2, 0x7f, 0xa0, 0xcf, ++ 0x2d, 0x3b, 0xda, 0xa0, 0x07, 0x7b, 0xee, 0xce, 0xf4, 0xdd, 0x88, 0x79, ++ 0x33, 0x5f, 0x97, 0xae, 0x0b, 0x32, 0x95, 0xf6, 0x7b, 0x04, 0x3a, 0x3e, ++ 0x35, 0x9e, 0xee, 0x4b, 0xcd, 0x7e, 0x76, 0xbf, 0xc4, 0xf5, 0x96, 0x5e, ++ 0x78, 0xae, 0xb5, 0x2b, 0xf9, 0x5d, 0xb3, 0x55, 0x83, 0xf4, 0x27, 0xea, ++ 0x6d, 0x2d, 0xf2, 0x58, 0xc0, 0x57, 0xf5, 0xf9, 0x70, 0x01, 0x4f, 0x62, ++ 0xc9, 0x51, 0xdc, 0xe3, 0xb4, 0x72, 0xf8, 0xdf, 0x26, 0x83, 0x9c, 0x5c, ++ 0x79, 0x50, 0xcb, 0x92, 0x3d, 0xba, 0x1a, 0x67, 0xa3, 0x86, 0xd8, 0xc3, ++ 0xc6, 0x79, 0xf5, 0x90, 0xa1, 0x82, 0xfd, 0x0e, 0x25, 0x9b, 0x7f, 0xbb, ++ 0x90, 0xcf, 0x07, 0xff, 0x6a, 0x2b, 0xee, 0xcb, 0xca, 0x75, 0x11, 0xe4, ++ 0x1c, 0x95, 0xcb, 0xba, 0x78, 0x90, 0xcb, 0xe5, 0xec, 0xf7, 0x15, 0xce, ++ 0x1c, 0x4c, 0x2a, 0x01, 0xf8, 0x9f, 0x91, 0x88, 0xcf, 0x8e, 0xe7, 0xae, ++ 0x58, 0x9e, 0xf1, 0xfd, 0xac, 0x3b, 0x78, 0x6e, 0xc2, 0xfb, 0x43, 0x92, ++ 0xfb, 0x68, 0xc3, 0xef, 0x37, 0x14, 0x76, 0xe4, 0xd4, 0x83, 0x53, 0x7b, ++ 0x81, 0x1e, 0xf9, 0x61, 0xd3, 0xfc, 0x33, 0x74, 0x67, 0xc8, 0xa2, 0xcc, ++ 0x1e, 0x38, 0xde, 0x34, 0xe2, 0x41, 0xbd, 0xf7, 0x8c, 0xd5, 0x95, 0x0e, ++ 0xfe, 0x86, 0x49, 0x3c, 0xde, 0x7f, 0xc6, 0x1a, 0x6c, 0x05, 0x7e, 0x7c, ++ 0x66, 0x78, 0xb4, 0x04, 0xf1, 0x7b, 0xda, 0xff, 0x7a, 0x12, 0x76, 0x5f, ++ 0xdf, 0x19, 0x9d, 0x2b, 0x9d, 0xdd, 0x03, 0x21, 0xf2, 0x8a, 0xef, 0xfe, ++ 0x56, 0xf7, 0xb6, 0x95, 0xc9, 0x6b, 0x8b, 0xc7, 0x43, 0xbc, 0x7a, 0x16, ++ 0xb1, 0x80, 0x1d, 0x79, 0x9f, 0xcc, 0xf4, 0x5a, 0xf2, 0x26, 0xa3, 0x4b, ++ 0xc1, 0xef, 0x6a, 0x24, 0xbf, 0x0d, 0xe6, 0xe9, 0xca, 0x9c, 0xfc, 0xfd, ++ 0x4c, 0xfa, 0x5d, 0xd2, 0x9a, 0x1f, 0xa1, 0x5d, 0xd9, 0x01, 0x37, 0x2d, ++ 0xff, 0x9d, 0xa6, 0xaf, 0xa9, 0xd7, 0x76, 0xd8, 0xaf, 0xbb, 0x25, 0x76, ++ 0x3f, 0x89, 0x83, 0xe9, 0xfb, 0xd5, 0xc3, 0xae, 0xfe, 0x6c, 0x1a, 0x9c, ++ 0x73, 0xa3, 0x76, 0xb6, 0x44, 0xe7, 0x33, 0xbf, 0xf9, 0x30, 0xde, 0xc3, ++ 0xa3, 0xb6, 0xab, 0x3b, 0xec, 0x9b, 0xff, 0xa5, 0x7f, 0xb4, 0xb3, 0x7d, ++ 0xe4, 0xda, 0x92, 0x59, 0x14, 0xf2, 0x7b, 0xab, 0xed, 0xa4, 0x0e, 0xbd, ++ 0x5c, 0xe8, 0x77, 0xbb, 0x58, 0x9e, 0xfb, 0x91, 0xe1, 0x4f, 0xb7, 0x2d, ++ 0xa7, 0xf5, 0xd5, 0xbb, 0xa2, 0x11, 0x8e, 0x97, 0x9f, 0x37, 0x78, 0x80, ++ 0x7f, 0x5f, 0xde, 0x61, 0x40, 0x7b, 0xe7, 0xb2, 0x2d, 0x78, 0x6e, 0x15, ++ 0xd4, 0xf7, 0xe6, 0x3a, 0x3c, 0x38, 0x5a, 0x0e, 0x9e, 0xef, 0x12, 0xf8, ++ 0xbd, 0x44, 0x63, 0xff, 0x3d, 0xc8, 0x1d, 0xf2, 0x5b, 0x1d, 0xde, 0xb7, ++ 0xf1, 0xc5, 0xcf, 0x0d, 0xf8, 0x7b, 0x1e, 0x4b, 0x5f, 0xb8, 0x6b, 0x07, ++ 0xd8, 0x4f, 0x5f, 0xa4, 0xdb, 0x5f, 0x7e, 0x05, 0xfc, 0x7b, 0x2f, 0x27, ++ 0xe0, 0x7d, 0x00, 0x24, 0x99, 0x7d, 0x3f, 0x91, 0xd3, 0x23, 0xd0, 0x97, ++ 0x9d, 0xee, 0x87, 0xfc, 0x0b, 0x33, 0xea, 0x0d, 0x4b, 0x5f, 0x4b, 0x41, ++ 0xfe, 0x25, 0xf6, 0xef, 0xd2, 0xcf, 0xa3, 0xf0, 0x1c, 0xfc, 0xe5, 0x13, ++ 0xf7, 0xc7, 0x82, 0x1f, 0xac, 0x55, 0xb3, 0x87, 0xfd, 0x8e, 0xa4, 0x6c, ++ 0xf2, 0x00, 0x1f, 0x5e, 0xbe, 0x23, 0x0a, 0xf5, 0x3e, 0xa2, 0x77, 0xbf, ++ 0x06, 0xeb, 0x2f, 0xfd, 0xc5, 0xc4, 0x69, 0xfd, 0x61, 0xfc, 0xdf, 0x25, ++ 0x10, 0x58, 0x4f, 0x7b, 0xcb, 0x6b, 0xe8, 0x7f, 0x0c, 0xed, 0x6f, 0x64, ++ 0xb9, 0x7e, 0xbd, 0xa5, 0x07, 0xe3, 0x03, 0x1d, 0x72, 0x96, 0xe5, 0xcd, ++ 0xce, 0x0d, 0xdd, 0xcb, 0xbc, 0x1f, 0xf0, 0xa7, 0x8a, 0x88, 0x7b, 0x10, ++ 0x59, 0xde, 0x6c, 0x81, 0x2c, 0xb1, 0xdf, 0x95, 0x7c, 0x22, 0xf2, 0x39, ++ 0xf0, 0xdf, 0x66, 0xf2, 0x38, 0xa9, 0xf0, 0x97, 0xc4, 0x11, 0x63, 0x32, ++ 0xd0, 0xa1, 0x9b, 0xb0, 0x7b, 0x1f, 0x9f, 0xe8, 0x8d, 0xf7, 0xea, 0x9e, ++ 0xcf, 0xe4, 0xe7, 0x97, 0x49, 0x90, 0x9f, 0x77, 0x14, 0xf8, 0x76, 0xae, ++ 0xfa, 0x00, 0xfa, 0x4b, 0x0c, 0x2c, 0x5f, 0xaf, 0x8b, 0x7b, 0x2d, 0x3f, ++ 0xcc, 0x64, 0xe7, 0x82, 0x17, 0x1b, 0xff, 0xa2, 0xf0, 0x9b, 0x54, 0xaf, ++ 0xb9, 0xa1, 0xac, 0xf7, 0x65, 0xbf, 0xb3, 0x5c, 0x50, 0x6f, 0xef, 0xbf, ++ 0x82, 0x96, 0xab, 0x38, 0x9c, 0xff, 0x91, 0xe4, 0xfa, 0x08, 0xd6, 0xb7, ++ 0xac, 0x71, 0xcb, 0xbe, 0x77, 0x11, 0x2e, 0xcf, 0x7d, 0xef, 0x0f, 0x30, ++ 0xee, 0x09, 0x13, 0xfa, 0x69, 0xc8, 0xbb, 0x0c, 0x7e, 0x6a, 0xfb, 0x65, ++ 0xb1, 0x31, 0xc8, 0xe3, 0x0e, 0xdb, 0x15, 0x71, 0xf5, 0x8b, 0xcf, 0xfc, ++ 0x1e, 0xf3, 0x47, 0x2e, 0xbe, 0x7e, 0x0f, 0xfe, 0xbe, 0xd8, 0x7c, 0xd9, ++ 0x7f, 0x11, 0xee, 0xc7, 0x6a, 0x33, 0xfb, 0x3f, 0x79, 0x88, 0x96, 0x7b, ++ 0x4f, 0x9c, 0xc2, 0x7d, 0x51, 0xcf, 0xb7, 0x53, 0x1c, 0x5e, 0x62, 0x7c, ++ 0xa5, 0x12, 0xd6, 0xd1, 0x1f, 0xf2, 0x57, 0x5c, 0xed, 0x99, 0x48, 0xb7, ++ 0x8c, 0xde, 0xcf, 0x6f, 0xca, 0x45, 0xf8, 0x09, 0x3f, 0x6d, 0xfb, 0xe5, ++ 0xc8, 0xf6, 0x95, 0x98, 0xa7, 0xe8, 0x5f, 0xcc, 0x4f, 0xf4, 0x2f, 0xde, ++ 0xfb, 0xef, 0x4c, 0xa6, 0xdf, 0x5f, 0xd3, 0xfb, 0xf3, 0x40, 0x2e, 0xef, ++ 0x84, 0x38, 0x44, 0x98, 0x3e, 0x7f, 0x2d, 0xc6, 0x9f, 0x07, 0x3f, 0x75, ++ 0xbb, 0x33, 0x9d, 0xe5, 0x73, 0x5f, 0xb3, 0xd1, 0x7a, 0x18, 0xde, 0xfc, ++ 0x5f, 0x8a, 0x9c, 0x0c, 0xc3, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xad, 0x58, ++ 0x0d, 0x6c, 0x14, 0xd7, 0x11, 0x9e, 0xb7, 0x7b, 0xb7, 0x77, 0xc6, 0x77, ++ 0xf6, 0x81, 0x8d, 0x7f, 0xe2, 0x1f, 0xf6, 0xce, 0xc4, 0x18, 0x7c, 0xf8, ++ 0x16, 0xff, 0xd5, 0xb1, 0x4d, 0x39, 0xfc, 0x83, 0x28, 0x42, 0xcd, 0xf1, ++ 0x93, 0xd4, 0x4a, 0x21, 0x6c, 0x9a, 0x40, 0x28, 0xc4, 0xf8, 0x64, 0x43, ++ 0x8b, 0x92, 0xaa, 0xac, 0x7b, 0x95, 0xf9, 0x11, 0x51, 0x5c, 0x35, 0x8a, ++ 0xa0, 0x4d, 0xab, 0x83, 0x08, 0x14, 0x55, 0x54, 0x18, 0x17, 0x22, 0x8a, ++ 0x30, 0xbd, 0x04, 0x15, 0x70, 0x1b, 0xd1, 0x43, 0x89, 0x14, 0x92, 0x5a, ++ 0x68, 0xeb, 0x36, 0xd4, 0x6d, 0x0c, 0xe7, 0xd2, 0xa4, 0x2d, 0x6a, 0x24, ++ 0x77, 0xe6, 0xed, 0x1e, 0x77, 0xeb, 0x9f, 0xb4, 0x89, 0x7a, 0x96, 0x6f, ++ 0x3c, 0xef, 0xcd, 0x9b, 0x37, 0xf3, 0xcd, 0xbc, 0x99, 0xf7, 0xdc, 0x01, ++ 0xf8, 0xa9, 0x06, 0xe8, 0x70, 0x82, 0x3d, 0x37, 0x17, 0x69, 0x07, 0x53, ++ 0x22, 0x38, 0xd4, 0x01, 0xa0, 0xc1, 0x3c, 0x4e, 0x63, 0x2a, 0xce, 0x3f, ++ 0x57, 0x70, 0x01, 0x6c, 0x35, 0x24, 0x0c, 0x21, 0x67, 0x1e, 0xc0, 0x63, ++ 0x60, 0x7e, 0x72, 0x73, 0x6c, 0x50, 0x0f, 0xb0, 0x91, 0xfe, 0x96, 0x71, ++ 0xbc, 0xe1, 0xb7, 0xf7, 0x59, 0x16, 0xc0, 0x13, 0x30, 0x60, 0x87, 0x32, ++ 0x80, 0x9b, 0x42, 0xef, 0x1e, 0x49, 0x04, 0x18, 0x1f, 0xf8, 0xa1, 0x5d, ++ 0x75, 0x91, 0x50, 0x9b, 0xe7, 0x76, 0x05, 0x00, 0xd3, 0x3e, 0x10, 0x26, ++ 0x2b, 0x01, 0x26, 0xe9, 0xb3, 0x62, 0x3a, 0x05, 0xb0, 0x01, 0xc9, 0xd1, ++ 0x67, 0x52, 0xa4, 0x6f, 0x0d, 0x60, 0x3e, 0x7e, 0xb7, 0x40, 0x45, 0x18, ++ 0xf5, 0xdc, 0xf1, 0xb8, 0x34, 0x21, 0x00, 0x50, 0x2a, 0x33, 0x1b, 0x97, ++ 0x2b, 0x81, 0x12, 0x92, 0xc3, 0x79, 0x25, 0x56, 0x8b, 0x74, 0xd0, 0xa1, ++ 0x44, 0xd0, 0x9e, 0x3d, 0x42, 0xc8, 0x27, 0xe3, 0xba, 0xe7, 0xa4, 0x58, ++ 0x15, 0x88, 0xa9, 0x75, 0x7b, 0x04, 0x95, 0x8f, 0x8f, 0xb3, 0xb7, 0xb7, ++ 0x81, 0x8f, 0xb6, 0x8b, 0x55, 0x85, 0xdc, 0x00, 0x89, 0xb9, 0x12, 0xb0, ++ 0x6c, 0xa4, 0xf3, 0x95, 0x78, 0x10, 0xf1, 0xd0, 0x3e, 0x01, 0xe5, 0x04, ++ 0xea, 0x49, 0xd8, 0xa1, 0x63, 0x10, 0xf7, 0xad, 0x6d, 0x15, 0xc2, 0x83, ++ 0xdc, 0x0f, 0xdb, 0xa8, 0x8e, 0xfb, 0x0a, 0xc0, 0xb8, 0x7d, 0xb5, 0x95, ++ 0x38, 0xee, 0x07, 0x58, 0x4e, 0xe3, 0x4e, 0xd3, 0x6e, 0x2f, 0x8e, 0x07, ++ 0xac, 0xf2, 0x29, 0x7f, 0xac, 0xfc, 0x05, 0x59, 0xe0, 0xfe, 0xd5, 0xe6, ++ 0x08, 0xe1, 0x01, 0xff, 0x74, 0x3c, 0x36, 0xd0, 0x7c, 0x1d, 0x40, 0x04, ++ 0x62, 0x22, 0xe1, 0x8a, 0x9f, 0x8d, 0x4e, 0xc4, 0xbd, 0xc9, 0xc4, 0x1d, ++ 0x20, 0x28, 0x02, 0xc6, 0x65, 0x97, 0xc9, 0xef, 0x72, 0xba, 0x62, 0x62, ++ 0x15, 0xda, 0x9d, 0xe5, 0xd4, 0x44, 0xf4, 0xa7, 0xe9, 0x22, 0xc6, 0x05, ++ 0xf9, 0x26, 0x5b, 0xec, 0x4d, 0xa2, 0x2c, 0x08, 0xb0, 0x17, 0xe3, 0x0b, ++ 0xe7, 0xed, 0xe3, 0x0f, 0xec, 0x20, 0x1c, 0x0a, 0x2a, 0x6d, 0xa4, 0xa7, ++ 0xd1, 0x0c, 0x2f, 0x43, 0x5d, 0x9b, 0x50, 0xae, 0x8f, 0x85, 0x81, 0xf6, ++ 0x75, 0x42, 0x3f, 0xa7, 0x87, 0x58, 0x9c, 0xdb, 0xf1, 0x65, 0x98, 0xe0, ++ 0x34, 0x08, 0x1e, 0x1b, 0x51, 0x84, 0x9f, 0xd3, 0x36, 0x08, 0x71, 0xba, ++ 0x0a, 0xc2, 0x9c, 0xae, 0x86, 0x7e, 0x4e, 0xd7, 0xc0, 0x00, 0xa7, 0x6b, ++ 0x21, 0xce, 0x29, 0x2c, 0x89, 0x45, 0xc0, 0x4b, 0x3b, 0x7d, 0xc7, 0x73, ++ 0x3b, 0x13, 0xc9, 0x57, 0x9e, 0x15, 0x26, 0x91, 0xd6, 0x7e, 0x0d, 0xc2, ++ 0x03, 0xae, 0xe9, 0x38, 0xec, 0x31, 0x71, 0x9a, 0x1d, 0x07, 0x8d, 0x51, ++ 0x3e, 0x7e, 0x5e, 0x1c, 0x56, 0x81, 0x5a, 0xc0, 0xf5, 0x4d, 0xc5, 0xa3, ++ 0xb8, 0x82, 0xe7, 0xf7, 0x54, 0x3c, 0x1c, 0x94, 0x8f, 0x18, 0xb7, 0x0c, ++ 0x88, 0x16, 0x10, 0x5d, 0x0e, 0xba, 0x48, 0x74, 0x05, 0x25, 0x2e, 0xea, ++ 0x59, 0x09, 0xb2, 0x8d, 0xf8, 0x56, 0x08, 0x72, 0xbe, 0xfd, 0x7f, 0xc4, ++ 0xa1, 0x41, 0x57, 0x6d, 0xaa, 0x7f, 0x06, 0x3c, 0x5a, 0x67, 0xce, 0x8b, ++ 0xef, 0x9a, 0x79, 0x21, 0x12, 0x86, 0x75, 0xa9, 0x38, 0x9d, 0x91, 0x65, ++ 0xce, 0x27, 0xe3, 0x05, 0x68, 0x67, 0x68, 0xe9, 0xf4, 0x38, 0x26, 0xc7, ++ 0x6b, 0x33, 0x5b, 0xfe, 0x2e, 0x7b, 0x00, 0x8e, 0x46, 0xdb, 0x42, 0xb6, ++ 0x42, 0xe4, 0x6b, 0x5a, 0x7a, 0xca, 0x90, 0xff, 0x99, 0xbc, 0xd1, 0xe0, ++ 0x9b, 0x5a, 0x7e, 0xe1, 0x43, 0xfe, 0x54, 0xf4, 0x31, 0x83, 0x0f, 0xb4, ++ 0xd4, 0xd8, 0x15, 0x80, 0xde, 0xde, 0xc7, 0x43, 0x6d, 0x8f, 0x00, 0xa8, ++ 0x19, 0x59, 0x55, 0x10, 0xa0, 0xc2, 0x51, 0x2e, 0x50, 0xfe, 0xec, 0xf6, ++ 0x18, 0xf8, 0xab, 0xbd, 0x7b, 0x14, 0x0f, 0x9e, 0x23, 0xb5, 0xc4, 0xa5, ++ 0x90, 0x7f, 0x4e, 0x07, 0x62, 0x86, 0xf8, 0x89, 0x65, 0x22, 0x34, 0x20, ++ 0x6d, 0x93, 0xd4, 0x97, 0x65, 0xb4, 0xb3, 0x74, 0x75, 0xbc, 0xcf, 0x40, ++ 0xb8, 0x25, 0xbf, 0x03, 0xcf, 0xef, 0x78, 0xdc, 0x0e, 0x87, 0x70, 0xfd, ++ 0x7e, 0xc9, 0x90, 0x77, 0xe0, 0x3a, 0x67, 0x75, 0xca, 0x2f, 0x1c, 0xd7, ++ 0x32, 0x90, 0x1f, 0x1c, 0xac, 0xec, 0x61, 0xbe, 0xd9, 0xf7, 0x47, 0xfd, ++ 0xc7, 0x48, 0xbf, 0xda, 0xfb, 0xb0, 0x06, 0x64, 0xc7, 0x39, 0xa6, 0x7c, ++ 0xd6, 0x3e, 0x3f, 0xce, 0x57, 0x4f, 0x92, 0x3c, 0x38, 0xcb, 0x81, 0xe2, ++ 0x5e, 0xe4, 0x34, 0xf4, 0x8c, 0x0f, 0x56, 0x56, 0x52, 0x5c, 0xce, 0x10, ++ 0x48, 0x34, 0x9f, 0xeb, 0xad, 0x21, 0xdc, 0xfe, 0x92, 0x1f, 0x3a, 0x43, ++ 0xf2, 0x09, 0xb7, 0x91, 0x5f, 0x67, 0x28, 0x07, 0xe7, 0xcf, 0x4e, 0xdf, ++ 0x97, 0x83, 0xa7, 0x49, 0x7e, 0xea, 0x78, 0xe2, 0x43, 0x34, 0x00, 0xd7, ++ 0xbf, 0x25, 0xab, 0xe7, 0x68, 0xbe, 0x2b, 0xf3, 0xd3, 0x72, 0xaa, 0x4b, ++ 0x77, 0x97, 0xbd, 0xd3, 0xa7, 0x7b, 0x53, 0x79, 0xca, 0x70, 0xff, 0x4d, ++ 0xe8, 0x77, 0x24, 0x08, 0x51, 0x89, 0xd7, 0x91, 0x66, 0xcf, 0x6d, 0xac, ++ 0xa3, 0x80, 0x31, 0x99, 0xc4, 0x78, 0x26, 0xb6, 0xa2, 0x1e, 0xc4, 0xa1, ++ 0x36, 0xa4, 0x46, 0xec, 0x38, 0xfc, 0xa5, 0x4d, 0x13, 0xf5, 0x58, 0xa4, ++ 0x48, 0x6f, 0x8c, 0xea, 0x5d, 0x97, 0xa4, 0x97, 0x2e, 0xc3, 0x75, 0x2f, ++ 0x6f, 0xb8, 0x25, 0x19, 0x79, 0x56, 0x6c, 0xe4, 0x99, 0x59, 0x87, 0x86, ++ 0x2e, 0x0d, 0xbf, 0x50, 0x64, 0xb0, 0x21, 0x48, 0x3b, 0x57, 0x5d, 0x97, ++ 0xee, 0xff, 0xe3, 0xf7, 0x88, 0x5f, 0xd7, 0x3d, 0x97, 0x42, 0xe2, 0xa9, ++ 0xf3, 0x74, 0xb4, 0x07, 0xb2, 0x48, 0xc8, 0x65, 0xa9, 0x1b, 0xc9, 0x73, ++ 0xd6, 0x78, 0xde, 0x11, 0x13, 0xb3, 0x88, 0x5f, 0xbc, 0x95, 0xe4, 0x96, ++ 0xbf, 0x33, 0x52, 0x46, 0x7e, 0xad, 0x18, 0xd1, 0x23, 0x6e, 0xd2, 0x33, ++ 0xf4, 0x5e, 0x91, 0x61, 0x87, 0xd9, 0x17, 0x82, 0xff, 0x64, 0x5f, 0xa4, ++ 0x2f, 0xb4, 0x8b, 0x54, 0x9c, 0x01, 0xba, 0xcf, 0x89, 0x51, 0x07, 0xe2, ++ 0xd5, 0xcd, 0xc2, 0x97, 0xdd, 0xc4, 0xff, 0x9c, 0x29, 0x1a, 0xda, 0xff, ++ 0x67, 0x27, 0xe6, 0x47, 0x36, 0xc9, 0x07, 0x5d, 0x85, 0xe8, 0xd7, 0x76, ++ 0xd3, 0xaf, 0xce, 0xe1, 0x13, 0x7d, 0x6e, 0xa4, 0xdb, 0x5f, 0x7d, 0x7a, ++ 0x2d, 0x54, 0xd1, 0x71, 0xb0, 0xf3, 0xfa, 0x2d, 0xe3, 0x0f, 0x9d, 0xff, ++ 0x9d, 0xaf, 0xdb, 0x53, 0xf5, 0x9c, 0x7f, 0x63, 0x20, 0xd0, 0xcf, 0x2e, ++ 0x48, 0x7e, 0x62, 0x12, 0xe5, 0x41, 0xe7, 0x80, 0x55, 0xae, 0x0b, 0x0e, ++ 0xff, 0x8d, 0xea, 0x4e, 0x57, 0x7a, 0x9d, 0x47, 0xbb, 0x26, 0x64, 0x77, ++ 0x2e, 0xc7, 0xdb, 0xec, 0x57, 0x40, 0x2d, 0x04, 0xf5, 0x3d, 0x6b, 0xae, ++ 0x25, 0x3f, 0x5c, 0x64, 0xf7, 0x90, 0x14, 0x75, 0x30, 0xa4, 0x3f, 0xe9, ++ 0x51, 0x3c, 0xc4, 0x9b, 0xe7, 0x07, 0x2e, 0x7e, 0x0f, 0xd2, 0xe5, 0xe1, ++ 0xd5, 0x1c, 0x1e, 0xfb, 0xe4, 0x79, 0xfa, 0xe6, 0x01, 0xb4, 0x3d, 0x27, ++ 0x85, 0x57, 0xe0, 0xa4, 0x23, 0x48, 0xb8, 0x07, 0x4e, 0xe6, 0x07, 0xc9, ++ 0xbf, 0x80, 0x04, 0x5b, 0x42, 0x1c, 0xef, 0x28, 0xcf, 0xe3, 0x00, 0xe6, ++ 0x06, 0xc3, 0x7c, 0x3a, 0x3d, 0x77, 0xc2, 0x27, 0xe0, 0x3e, 0xa7, 0x87, ++ 0x2a, 0x14, 0xac, 0xa0, 0x70, 0x61, 0x5f, 0x10, 0xfe, 0xb8, 0x30, 0x65, ++ 0x5f, 0xb7, 0x79, 0x9e, 0xda, 0xc5, 0x53, 0xad, 0x12, 0xe6, 0xc1, 0xbd, ++ 0x67, 0xc0, 0x83, 0x47, 0x12, 0xba, 0x87, 0x5f, 0x8b, 0x38, 0x91, 0xef, ++ 0x3e, 0x08, 0x24, 0x01, 0xf7, 0xe8, 0x0b, 0xf5, 0xdc, 0x1b, 0x13, 0xa2, ++ 0xa4, 0xa7, 0x71, 0xb8, 0xa6, 0x80, 0xe2, 0x7d, 0xd6, 0x3c, 0x9f, 0x8e, ++ 0x02, 0x01, 0xe4, 0x34, 0x9c, 0x32, 0xe4, 0x39, 0x20, 0x57, 0xa4, 0xf8, ++ 0x24, 0xbe, 0x0e, 0x33, 0x3e, 0x99, 0x15, 0xf3, 0x2c, 0xf3, 0x6e, 0xe5, ++ 0x21, 0xcb, 0xfa, 0xec, 0x06, 0x9f, 0x75, 0xbd, 0x16, 0x8c, 0xfb, 0xeb, ++ 0xa9, 0x1e, 0x1b, 0xeb, 0xe7, 0x06, 0x97, 0x58, 0xe4, 0xf7, 0x67, 0xad, ++ 0xba, 0x46, 0x79, 0xb9, 0x3c, 0xbe, 0x6d, 0x2d, 0xe1, 0x92, 0xb3, 0xba, ++ 0xda, 0x32, 0x5f, 0x0f, 0x4e, 0x7e, 0x7f, 0xa8, 0x2b, 0x76, 0x29, 0x51, ++ 0x5c, 0x0f, 0x1f, 0x1b, 0xfd, 0xbc, 0x01, 0x7f, 0x78, 0x3f, 0x80, 0xb0, ++ 0x48, 0xfe, 0x35, 0xe9, 0x00, 0x3f, 0xc2, 0x78, 0x34, 0x8e, 0xdb, 0x2c, ++ 0x71, 0xcf, 0xd0, 0x31, 0x1f, 0x51, 0x2e, 0xe3, 0xdd, 0xb4, 0xb8, 0xe3, ++ 0xaf, 0x43, 0xb6, 0xf2, 0xcb, 0xbc, 0x66, 0x1e, 0x14, 0x43, 0x71, 0x7a, ++ 0x1e, 0xa4, 0x70, 0x76, 0x3d, 0xc0, 0x91, 0xe7, 0xc1, 0x30, 0x0a, 0x11, ++ 0xce, 0x6e, 0x29, 0x8a, 0x57, 0x8e, 0x69, 0x38, 0xd5, 0xc3, 0xc2, 0x6c, ++ 0x9a, 0xaf, 0xbb, 0x26, 0x42, 0x94, 0xe3, 0xde, 0xa3, 0xc4, 0x70, 0x7c, ++ 0x7e, 0xc8, 0x8a, 0x77, 0x7e, 0x87, 0x15, 0xef, 0x42, 0xd5, 0x8a, 0x6f, ++ 0xd1, 0x76, 0x2b, 0xbe, 0x25, 0x61, 0x2b, 0xbe, 0x0b, 0xf6, 0x5a, 0xf1, ++ 0xf4, 0x6a, 0x56, 0xfc, 0xca, 0x0e, 0x34, 0x5a, 0xe4, 0x1f, 0xee, 0x6f, ++ 0xb1, 0xf0, 0x8b, 0x8e, 0xac, 0xb1, 0xc8, 0x2f, 0x8e, 0xae, 0xb7, 0xf0, ++ 0x95, 0xaf, 0x3f, 0x61, 0x91, 0x5f, 0x3a, 0xf0, 0x0d, 0xcb, 0x7c, 0xe0, ++ 0xfc, 0x0e, 0xcb, 0x7c, 0x32, 0xaf, 0xa6, 0xc6, 0x7d, 0x59, 0xac, 0xdb, ++ 0x22, 0x37, 0x35, 0xee, 0x35, 0xd7, 0x9e, 0xb7, 0xe8, 0x4d, 0xc6, 0x59, ++ 0xc3, 0x9f, 0xff, 0x67, 0x9c, 0x77, 0x4d, 0x89, 0xf3, 0xf3, 0x68, 0x1b, ++ 0x9d, 0xbb, 0xeb, 0x59, 0x63, 0x87, 0xe9, 0x18, 0x7e, 0x35, 0xd3, 0xa8, ++ 0x4b, 0xed, 0x62, 0x73, 0x3c, 0x48, 0xf1, 0x6e, 0xb6, 0x2b, 0x14, 0xd3, ++ 0xdf, 0xc9, 0x39, 0xad, 0x6e, 0x3a, 0xef, 0x66, 0x1f, 0x0a, 0x99, 0x7d, ++ 0x08, 0xd4, 0x3e, 0x1e, 0xf7, 0x90, 0x99, 0x27, 0x4a, 0x5c, 0xb9, 0x4c, ++ 0x75, 0xb4, 0xfa, 0x66, 0xa8, 0x35, 0x0b, 0xf9, 0x5a, 0x3d, 0x7c, 0x99, ++ 0xca, 0x71, 0xfd, 0x58, 0x7f, 0x6b, 0xb6, 0xcc, 0xd3, 0x44, 0xf6, 0xa0, ++ 0x3c, 0x33, 0x71, 0x79, 0xb4, 0x81, 0x81, 0xcd, 0x72, 0x5e, 0x90, 0xcf, ++ 0x4b, 0xe1, 0xb6, 0x41, 0xeb, 0x15, 0xb3, 0x51, 0xb8, 0xe9, 0xd3, 0x68, ++ 0x84, 0x97, 0x4b, 0x4a, 0x2a, 0xdc, 0x7f, 0xbd, 0x39, 0xcf, 0x1a, 0x8c, ++ 0xba, 0xbe, 0x2e, 0x98, 0x01, 0xb6, 0x34, 0x3c, 0x96, 0x9b, 0xe3, 0x00, ++ 0x7e, 0x6e, 0x5f, 0xb3, 0x31, 0x05, 0x1b, 0xcc, 0xf7, 0x00, 0xde, 0xcb, ++ 0x41, 0xa2, 0x7b, 0xb9, 0xe0, 0x8c, 0x46, 0xbc, 0x33, 0xdd, 0x27, 0x95, ++ 0x23, 0x22, 0xbf, 0x27, 0xa9, 0xfc, 0xde, 0x74, 0x95, 0xa9, 0x76, 0xa2, ++ 0x1b, 0x9d, 0xf1, 0x52, 0xea, 0x5f, 0xc7, 0xf2, 0xd4, 0x23, 0x5e, 0xac, ++ 0xf3, 0x77, 0x05, 0x45, 0xe6, 0xf7, 0x2c, 0xa6, 0x47, 0xc8, 0xa9, 0x04, ++ 0x39, 0xc6, 0x9b, 0xce, 0x8d, 0x50, 0xd0, 0x4f, 0xf7, 0x77, 0xfc, 0xf3, ++ 0x21, 0xac, 0xbb, 0xc2, 0xf5, 0x90, 0xe6, 0xe7, 0xe6, 0x7b, 0x74, 0xb4, ++ 0x5f, 0x35, 0xed, 0x39, 0xe1, 0x55, 0x8f, 0x91, 0x9e, 0x51, 0xe6, 0xe9, ++ 0xab, 0xc1, 0xb5, 0xd7, 0x1b, 0x3f, 0x2a, 0xa5, 0xfe, 0xe3, 0x10, 0x11, ++ 0x09, 0xac, 0x83, 0x81, 0xac, 0xe0, 0x6b, 0x34, 0xaf, 0xed, 0x6f, 0x9e, ++ 0xcb, 0xfb, 0x6a, 0x3e, 0xfa, 0x87, 0x75, 0x54, 0x17, 0x64, 0x7e, 0x7f, ++ 0xd0, 0x9e, 0x67, 0xfc, 0x3d, 0xf0, 0x11, 0x29, 0x7b, 0x24, 0xed, 0x9c, ++ 0x1e, 0xb0, 0xf3, 0xbe, 0x03, 0xe6, 0xfb, 0x68, 0xb3, 0x89, 0x57, 0xf2, ++ 0x7d, 0xb4, 0xc9, 0xdc, 0x7f, 0x14, 0x55, 0x6c, 0xc7, 0x3a, 0xbd, 0xf9, ++ 0xfc, 0x55, 0x8e, 0xcb, 0xce, 0x82, 0x71, 0xb0, 0xe5, 0xf0, 0x7c, 0xe3, ++ 0xf7, 0xa4, 0xa7, 0x8b, 0x5d, 0xd5, 0x87, 0xc8, 0xa7, 0x60, 0x8d, 0xb2, ++ 0x7e, 0x29, 0x8d, 0x27, 0xdf, 0x4b, 0x45, 0xe2, 0xe7, 0xe9, 0x8b, 0xed, ++ 0xa2, 0x3f, 0x5b, 0x9f, 0xe1, 0xbe, 0x98, 0xa4, 0x3b, 0x0b, 0xc6, 0xf8, ++ 0x7b, 0xee, 0xc1, 0xfa, 0x53, 0x46, 0x1f, 0x99, 0x5d, 0xbf, 0xc6, 0xfb, ++ 0x6c, 0xca, 0x6f, 0x43, 0xff, 0xe8, 0xc1, 0x4c, 0xde, 0x5f, 0x46, 0x0f, ++ 0x96, 0xb4, 0x10, 0x4d, 0xe9, 0xbf, 0xcb, 0xf5, 0x6f, 0x0e, 0xdf, 0xb0, ++ 0xe4, 0xc9, 0x96, 0xbd, 0xef, 0x5b, 0xf2, 0xef, 0x29, 0xed, 0x0f, 0x96, ++ 0x79, 0x3d, 0x77, 0xc2, 0x5e, 0x84, 0xfe, 0xeb, 0x6f, 0x14, 0xae, 0xfa, ++ 0x3a, 0xe2, 0x77, 0xe7, 0x9c, 0xa3, 0x9e, 0xde, 0x8d, 0x18, 0xb7, 0x9b, ++ 0xde, 0xba, 0x94, 0x7e, 0xfd, 0xc5, 0x45, 0x6d, 0xb4, 0xdf, 0x7f, 0xf7, ++ 0xf3, 0xaf, 0x1c, 0xdf, 0x91, 0x7d, 0x71, 0xb0, 0x2d, 0x4c, 0xf9, 0x79, ++ 0x6b, 0xdf, 0x4d, 0xce, 0xeb, 0xfb, 0x74, 0x4e, 0xa7, 0xfa, 0x99, 0x7c, ++ 0x67, 0x26, 0xa9, 0xf4, 0x16, 0x54, 0xd8, 0x30, 0x3e, 0x13, 0x6c, 0x8e, ++ 0x72, 0xdc, 0x3b, 0x7d, 0x9f, 0x2d, 0x3e, 0xe3, 0x5d, 0x32, 0xb2, 0x32, ++ 0xaf, 0x85, 0xfa, 0xec, 0x48, 0x89, 0x64, 0x33, 0x68, 0xb9, 0xc1, 0x17, ++ 0x36, 0x38, 0x0d, 0x7e, 0xd5, 0x6a, 0xa2, 0x09, 0xbb, 0xeb, 0x00, 0xbd, ++ 0x33, 0x47, 0x18, 0x04, 0x19, 0xe6, 0xc3, 0x26, 0x16, 0xfa, 0xe9, 0x53, ++ 0xe8, 0xf7, 0x0b, 0x79, 0xea, 0x27, 0x94, 0x7f, 0x5d, 0x3b, 0x26, 0xaa, ++ 0x6c, 0x78, 0x1e, 0xba, 0x02, 0xfa, 0x93, 0x0c, 0xe3, 0x59, 0x3c, 0x57, ++ 0xfd, 0x17, 0xf9, 0xcf, 0xf0, 0x7a, 0x57, 0x38, 0x8f, 0xdb, 0x59, 0x4e, ++ 0xf7, 0x8e, 0x31, 0x41, 0xab, 0x62, 0x58, 0x0b, 0xaa, 0x7d, 0x85, 0xeb, ++ 0x6c, 0x18, 0x97, 0xb1, 0x39, 0xda, 0x5d, 0xea, 0xc4, 0x4b, 0x8e, 0xe7, ++ 0x1a, 0xbc, 0x64, 0x9c, 0x8f, 0x46, 0xdf, 0x24, 0x3f, 0x0f, 0xcd, 0x1e, ++ 0x55, 0xf0, 0xa1, 0x9e, 0x0f, 0x99, 0x18, 0xe3, 0xf9, 0xfc, 0x4b, 0x16, ++ 0x3d, 0xc1, 0xf3, 0x4d, 0x97, 0xd6, 0xbb, 0xf9, 0x79, 0xea, 0xa0, 0x77, ++ 0x17, 0xbd, 0x77, 0xe9, 0xbd, 0x91, 0xc8, 0x30, 0x68, 0x86, 0x8f, 0x71, ++ 0xff, 0xe6, 0x4c, 0xa1, 0x0b, 0x7d, 0x46, 0x3d, 0x6b, 0x34, 0x69, 0xbb, ++ 0x78, 0xb8, 0x9c, 0xd1, 0xfd, 0xe0, 0x88, 0x03, 0xe8, 0x3c, 0xe0, 0x3e, ++ 0x41, 0x81, 0xf6, 0x19, 0x72, 0x44, 0x4f, 0x20, 0x9f, 0x87, 0xb6, 0xd3, ++ 0x3d, 0xe5, 0xd7, 0x92, 0x71, 0x9f, 0xaf, 0xfe, 0x95, 0x23, 0x46, 0x75, ++ 0x63, 0x9b, 0xf3, 0x63, 0x1e, 0xa7, 0x12, 0x9f, 0x97, 0xeb, 0xc9, 0x2d, ++ 0xc3, 0xca, 0x85, 0xeb, 0x72, 0x5f, 0x72, 0x44, 0x23, 0x64, 0x9f, 0x1e, ++ 0x2f, 0x5d, 0x87, 0xf6, 0xf5, 0xdb, 0xf1, 0xfe, 0x42, 0xef, 0xe9, 0x77, ++ 0x71, 0x1e, 0xcf, 0xdd, 0x9d, 0x17, 0x17, 0x1d, 0x3f, 0x94, 0x16, 0x8f, ++ 0x12, 0x33, 0x0e, 0xf0, 0x0c, 0x80, 0x31, 0x9f, 0x7f, 0x8c, 0xe6, 0x3b, ++ 0x87, 0x47, 0x6f, 0x51, 0x1d, 0xb9, 0xe2, 0x55, 0xbd, 0xe4, 0xff, 0xa8, ++ 0x20, 0xd7, 0x53, 0x1d, 0xe9, 0xcc, 0x7a, 0x53, 0xa2, 0xfa, 0x53, 0xe3, ++ 0x93, 0xf9, 0x3a, 0xb4, 0x97, 0xfb, 0x8f, 0xf5, 0xe0, 0xfb, 0x8c, 0xe3, ++ 0xec, 0xf4, 0xfc, 0x09, 0xf3, 0x75, 0x0b, 0x16, 0x9b, 0x6c, 0x7a, 0xbf, ++ 0x09, 0xea, 0x62, 0x5a, 0xdf, 0xe9, 0xd4, 0x25, 0xd2, 0x87, 0x19, 0xc1, ++ 0xef, 0x7f, 0xb3, 0xf9, 0x7f, 0x67, 0x6b, 0xfc, 0x15, 0x3f, 0xd2, 0xbb, ++ 0x6e, 0xa5, 0x94, 0xf6, 0x49, 0xee, 0x8b, 0x76, 0xd4, 0x90, 0x9e, 0xa4, ++ 0xdf, 0x49, 0x3b, 0x52, 0x7a, 0x3e, 0x3b, 0xaf, 0xb7, 0x39, 0x27, 0x2c, ++ 0xe7, 0xf7, 0xf6, 0xd1, 0xfd, 0xe5, 0x74, 0x4e, 0x10, 0x5f, 0x95, 0xec, ++ 0xaf, 0x16, 0xd9, 0x96, 0xf5, 0x33, 0xac, 0x7f, 0xdc, 0x8c, 0xdb, 0xbf, ++ 0xf3, 0x43, 0x2b, 0x7d, 0x48, 0x77, 0x84, 0x7f, 0xf0, 0xc6, 0xdb, 0x72, ++ 0x6a, 0x3e, 0xc1, 0xfa, 0xbf, 0xf5, 0x01, 0xc5, 0x6b, 0xd8, 0xc5, 0xeb, ++ 0xdc, 0x6c, 0xeb, 0xa7, 0xfa, 0xd9, 0x79, 0x69, 0x98, 0xe3, 0x81, 0x7e, ++ 0x3e, 0x49, 0xfe, 0xa5, 0xf9, 0xf9, 0x28, 0xed, 0x93, 0xf4, 0xf3, 0xce, ++ 0xd0, 0x7b, 0xaf, 0xf8, 0xe5, 0x2f, 0xee, 0x5f, 0xa2, 0x24, 0x2e, 0x91, ++ 0xde, 0xc4, 0xb1, 0xfb, 0xa5, 0x32, 0xae, 0xef, 0xbc, 0x78, 0xf5, 0x26, ++ 0xe5, 0x4f, 0xa7, 0xf9, 0xce, 0x87, 0xb3, 0xd6, 0xf7, 0xbb, 0x63, 0x0e, ++ 0xbe, 0x13, 0xe7, 0xa5, 0xd5, 0x73, 0xaa, 0x71, 0x0b, 0xf8, 0x34, 0x4b, ++ 0xbf, 0x3f, 0x39, 0x92, 0xeb, 0x8b, 0x6d, 0xd6, 0xf5, 0x78, 0x51, 0x16, ++ 0x70, 0xbf, 0xb3, 0xe6, 0xfb, 0xe1, 0x3c, 0x9d, 0xdb, 0x19, 0xde, 0x99, ++ 0x67, 0xe3, 0x02, 0x6f, 0x95, 0x67, 0x0b, 0xf0, 0x7e, 0x46, 0x7d, 0x00, ++ 0xfb, 0x2e, 0xd5, 0xfd, 0x64, 0xdf, 0xdd, 0x7d, 0x43, 0xe0, 0xf9, 0xb8, ++ 0xdb, 0x0b, 0x7c, 0x9e, 0xec, 0xa2, 0xfc, 0x67, 0xfa, 0x15, 0xde, 0x07, ++ 0x92, 0xff, 0x47, 0x88, 0x30, 0xec, 0x6f, 0x98, 0x07, 0xdd, 0x92, 0xfa, ++ 0x6d, 0xca, 0x0f, 0x50, 0x7b, 0x78, 0x5f, 0x10, 0x17, 0xb8, 0x14, 0xca, ++ 0xe3, 0xc1, 0xdf, 0xac, 0x31, 0xdf, 0x4b, 0x46, 0x9f, 0xa9, 0x33, 0xfb, ++ 0x4a, 0x1d, 0xe9, 0x21, 0xfb, 0xfd, 0xd9, 0xbc, 0xdf, 0xd4, 0x9a, 0xfb, ++ 0xd6, 0x3b, 0xf1, 0x1e, 0xe3, 0xa3, 0x92, 0xad, 0x99, 0xff, 0x2f, 0x31, ++ 0xff, 0xaf, 0x70, 0xf0, 0x0a, 0x7f, 0x67, 0xfd, 0x07, 0x74, 0x15, 0x3e, ++ 0xc9, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 usem_int_table_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfb, 0x51, ++ 0xcf, 0xc0, 0xf0, 0x03, 0x8a, 0xb7, 0xc9, 0x33, 0x30, 0x98, 0x29, 0x31, ++ 0x30, 0x24, 0x2a, 0x33, 0x30, 0x9c, 0x01, 0xe2, 0x24, 0x79, 0x84, 0x1c, ++ 0xad, 0xb0, 0x2a, 0x07, 0x65, 0xfa, 0x5f, 0x30, 0x32, 0x30, 0xbc, 0x02, ++ 0xe2, 0x37, 0x40, 0xfc, 0x8e, 0x91, 0x74, 0xfd, 0x3f, 0x85, 0x10, 0xec, ++ 0x87, 0xbc, 0x0c, 0x0c, 0xbf, 0x80, 0xfc, 0x8d, 0x40, 0x5a, 0x4c, 0x80, ++ 0x81, 0xe1, 0x26, 0x90, 0xfd, 0x1b, 0x88, 0xbf, 0x03, 0xf9, 0xe2, 0x7c, ++ 0x0c, 0x0c, 0xca, 0x40, 0x6c, 0x06, 0xe4, 0xbb, 0x00, 0xe9, 0x3c, 0x20, ++ 0xf6, 0x07, 0xe2, 0x3f, 0x40, 0x7e, 0x1b, 0x1f, 0x6e, 0xf3, 0xff, 0x0a, ++ 0xe1, 0xb7, 0xff, 0xaa, 0x00, 0x2a, 0x9f, 0x57, 0x10, 0x95, 0xff, 0x91, ++ 0x1f, 0xbf, 0xfe, 0x0e, 0x41, 0xfc, 0xf2, 0xbc, 0x04, 0xec, 0xc7, 0x86, ++ 0x4f, 0xa8, 0x91, 0x1f, 0x1f, 0x3c, 0xea, 0xb4, 0x4f, 0x33, 0xd4, 0xc4, ++ 0x37, 0x19, 0x50, 0xf9, 0xa7, 0x65, 0x18, 0x18, 0xee, 0xca, 0x32, 0x30, ++ 0x28, 0xc8, 0x43, 0xf8, 0xd7, 0x90, 0xe4, 0x8d, 0x80, 0x62, 0x67, 0x64, ++ 0x20, 0xec, 0xad, 0x62, 0x0c, 0x0c, 0x7b, 0xe5, 0x18, 0x18, 0x2e, 0x33, ++ 0x60, 0x37, 0x77, 0x1b, 0x50, 0x7e, 0x1f, 0x50, 0xde, 0x0e, 0x6a, 0x0e, ++ 0x00, 0xb5, 0xbc, 0x7b, 0x1e, 0x68, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 usem_pram_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe5, 0x7d, ++ 0x0b, 0x78, 0x54, 0xd5, 0xb5, 0xf0, 0x3e, 0x73, 0xce, 0x99, 0x57, 0x66, ++ 0x26, 0x93, 0x84, 0x84, 0x84, 0xf0, 0x98, 0x24, 0x80, 0x3c, 0x02, 0x0e, ++ 0x01, 0x02, 0x48, 0xa8, 0x93, 0x07, 0x14, 0x25, 0xc0, 0x08, 0xa8, 0x68, ++ 0x11, 0x06, 0x51, 0x08, 0x8f, 0x3c, 0x44, 0xed, 0x97, 0x6b, 0xdb, 0xcb, ++ 0xf0, 0x4a, 0xd1, 0xd2, 0x36, 0xd6, 0xb6, 0xd2, 0x5e, 0xd4, 0x01, 0xe1, ++ 0x5e, 0xa4, 0x58, 0x03, 0x44, 0x8d, 0x1a, 0x60, 0x80, 0x60, 0x51, 0xc1, ++ 0x06, 0xeb, 0x03, 0xab, 0xd6, 0x00, 0xb6, 0x08, 0x02, 0x19, 0xa0, 0xea, ++ 0x48, 0xf1, 0xf7, 0x5f, 0x6b, 0xed, 0x7d, 0x92, 0x73, 0x26, 0x33, 0x40, ++ 0x7b, 0xfb, 0xdf, 0xbf, 0xdf, 0xff, 0x8f, 0xb5, 0xdb, 0x7d, 0xce, 0xde, ++ 0xfb, 0xec, 0xbd, 0xde, 0x6b, 0xed, 0xb5, 0x77, 0x54, 0x96, 0xce, 0x58, ++ 0x1f, 0xc6, 0xbe, 0xc1, 0xdf, 0x8d, 0x8c, 0x3d, 0x20, 0x31, 0x86, 0x8f, ++ 0xb4, 0x12, 0x7e, 0xff, 0xeb, 0x9b, 0x0c, 0xc6, 0xa6, 0x5a, 0xe1, 0xbf, ++ 0x64, 0xc6, 0xc6, 0xcb, 0x0e, 0xc6, 0x46, 0x30, 0x36, 0xc5, 0xc1, 0x42, ++ 0x16, 0x68, 0x33, 0xa5, 0x08, 0x1e, 0x76, 0x63, 0xec, 0xcd, 0x4d, 0x52, ++ 0x48, 0xc6, 0x3e, 0xd0, 0x2e, 0x58, 0xc8, 0xd8, 0x22, 0xc6, 0x7f, 0x53, ++ 0x15, 0xd6, 0x24, 0x5d, 0xcf, 0xd8, 0x85, 0xd1, 0x3b, 0xeb, 0x86, 0x79, ++ 0x18, 0x93, 0x7c, 0x3e, 0x56, 0x5b, 0x00, 0xa5, 0xc7, 0xcd, 0x66, 0x61, ++ 0x59, 0xb4, 0xf7, 0x2b, 0xc9, 0xc5, 0x58, 0xf2, 0x68, 0x13, 0x63, 0x03, ++ 0x78, 0x9f, 0x6f, 0xe0, 0xdf, 0x14, 0x9f, 0x9d, 0xc6, 0xd2, 0xea, 0x69, ++ 0x13, 0x53, 0x0d, 0xf5, 0x74, 0x7f, 0x0f, 0x43, 0xfb, 0xee, 0x33, 0x73, ++ 0x0d, 0xef, 0xb3, 0x02, 0x83, 0x0c, 0xef, 0xb3, 0x2b, 0x0a, 0x0c, 0xf5, ++ 0x5e, 0x35, 0x37, 0x18, 0xda, 0xf7, 0xa9, 0x2d, 0x31, 0xd4, 0x73, 0x82, ++ 0x37, 0x1b, 0xda, 0xe7, 0xad, 0x99, 0x66, 0xa8, 0xf7, 0xab, 0xbf, 0xd3, ++ 0xd0, 0xfe, 0xba, 0x75, 0x77, 0x1b, 0xde, 0x0f, 0x0c, 0x2d, 0x32, 0xbc, ++ 0x1f, 0xbc, 0x65, 0xa9, 0xa1, 0x3e, 0xa4, 0xe1, 0x21, 0x43, 0xfb, 0xeb, ++ 0x9b, 0x56, 0x18, 0xde, 0x0f, 0x0b, 0x3f, 0x62, 0x78, 0x3f, 0xfc, 0xe0, ++ 0xcf, 0x0c, 0xf5, 0x91, 0xad, 0xbf, 0x36, 0xb4, 0x1f, 0x75, 0x74, 0xa3, ++ 0xe1, 0xfd, 0x98, 0xb6, 0xad, 0x86, 0xf7, 0x63, 0x3f, 0xdd, 0x61, 0xa8, ++ 0x8f, 0x8b, 0xbc, 0x6c, 0x68, 0x7f, 0x63, 0x74, 0x9f, 0xa1, 0x5e, 0xcc, ++ 0xde, 0x30, 0xb4, 0x2f, 0xb5, 0xfe, 0xc1, 0x50, 0x1f, 0xef, 0xfe, 0xc0, ++ 0xd0, 0xfe, 0xdb, 0x99, 0x27, 0x0c, 0xef, 0x6f, 0xf2, 0x7c, 0x66, 0x78, ++ 0xaf, 0xd1, 0xc1, 0xa4, 0x01, 0x17, 0x0d, 0xcf, 0x27, 0x7b, 0xff, 0x66, ++ 0xe8, 0xa7, 0x30, 0x3f, 0x00, 0x9b, 0x31, 0x33, 0xab, 0xa1, 0xd2, 0xca, ++ 0xea, 0xa9, 0xb4, 0xb3, 0x06, 0x2a, 0x1d, 0xac, 0x95, 0xca, 0xef, 0xf6, ++ 0x0e, 0xdc, 0x49, 0xf4, 0xf9, 0x64, 0xb0, 0x8e, 0x01, 0xdd, 0xad, 0x0c, ++ 0x46, 0xfe, 0x94, 0x06, 0xe5, 0x9b, 0xa3, 0xf3, 0x92, 0x03, 0xf9, 0x38, ++ 0x9a, 0x8f, 0x31, 0xa0, 0xdb, 0x29, 0x7c, 0x68, 0x36, 0xc5, 0xea, 0x08, ++ 0xcb, 0x40, 0x67, 0x16, 0x2b, 0x0b, 0xda, 0x80, 0x14, 0x5c, 0x51, 0xa0, ++ 0xb7, 0x34, 0xa0, 0xbb, 0x28, 0xa3, 0xd2, 0x1d, 0x05, 0x7a, 0x1b, 0x0e, ++ 0x74, 0x17, 0xb5, 0x52, 0x99, 0x1a, 0x4d, 0xa5, 0xe7, 0x69, 0x51, 0x37, ++ 0x95, 0xdd, 0xa2, 0x3d, 0xe8, 0x79, 0x7a, 0x34, 0x93, 0xca, 0x8c, 0x68, ++ 0x2e, 0x95, 0xdd, 0xa3, 0x1e, 0x2a, 0x33, 0xa3, 0x83, 0xa8, 0xcc, 0x8a, ++ 0x0e, 0xa0, 0xb2, 0x47, 0xb4, 0x80, 0xfa, 0x65, 0x47, 0xbd, 0x54, 0xf6, ++ 0x8c, 0xde, 0x40, 0xcf, 0x7b, 0x45, 0x47, 0x53, 0xd9, 0x3b, 0x5a, 0x42, ++ 0xcf, 0xfb, 0x44, 0x7d, 0x54, 0x7a, 0xa2, 0x37, 0x53, 0x99, 0x13, 0x9d, ++ 0x48, 0x65, 0x6e, 0x74, 0x1a, 0xb5, 0xcb, 0x8b, 0xfa, 0xa9, 0xec, 0x1b, ++ 0xbd, 0x93, 0x9e, 0xf7, 0x8b, 0xce, 0xa4, 0xb2, 0x7f, 0xf4, 0x6e, 0x2a, ++ 0xaf, 0x8b, 0x06, 0xa8, 0x1c, 0x10, 0x5d, 0x44, 0xe5, 0xc0, 0x68, 0x05, ++ 0x95, 0x83, 0xa2, 0x4b, 0xa9, 0xdf, 0xe0, 0x68, 0x0d, 0x95, 0xf9, 0xd1, ++ 0x87, 0xe8, 0xf9, 0x90, 0x68, 0x2d, 0x95, 0x43, 0xa3, 0x2b, 0xa8, 0xbc, ++ 0x3e, 0x1a, 0xa4, 0xd2, 0x1b, 0x7d, 0x84, 0xda, 0x0d, 0x8b, 0xae, 0xa1, ++ 0xb2, 0x20, 0xfa, 0x33, 0x7a, 0x3e, 0x3c, 0x5a, 0x4f, 0xe5, 0x88, 0xe8, ++ 0xaf, 0xe9, 0xf9, 0xc8, 0xe8, 0x3a, 0x2a, 0x0b, 0xa3, 0x1b, 0xa9, 0x1c, ++ 0x15, 0x0d, 0x51, 0x39, 0x3a, 0xba, 0x95, 0xca, 0x31, 0xd1, 0x2d, 0x54, ++ 0xde, 0x10, 0xdd, 0x41, 0xfd, 0xc6, 0x46, 0x1b, 0xa8, 0x2c, 0x8a, 0xbe, ++ 0x4c, 0xcf, 0xc7, 0x45, 0x9b, 0xa8, 0xfc, 0x16, 0xd2, 0x5b, 0x1a, 0xd2, ++ 0x5d, 0x98, 0x4a, 0x5f, 0xf4, 0x75, 0x7a, 0x5e, 0x1c, 0x3d, 0x48, 0x65, ++ 0x49, 0xf4, 0x2d, 0x7a, 0x5e, 0x1a, 0x6d, 0xa5, 0xb2, 0x2c, 0xfa, 0x47, ++ 0x7a, 0x3e, 0x3e, 0x7a, 0x94, 0xca, 0x09, 0xd1, 0xe3, 0x54, 0x7e, 0x3b, ++ 0xda, 0x46, 0xe5, 0xc4, 0xe8, 0x69, 0x2a, 0x6f, 0x8a, 0x7e, 0x4a, 0xe5, ++ 0xcd, 0xd1, 0x0b, 0xd4, 0x6f, 0x52, 0x34, 0x42, 0x65, 0x79, 0xf4, 0x12, ++ 0x3d, 0x9f, 0x1c, 0x8d, 0x52, 0xa9, 0xc9, 0x3b, 0x36, 0x5a, 0x3d, 0xd3, ++ 0xa6, 0xd1, 0x5f, 0x2e, 0xfe, 0xff, 0x2c, 0xf7, 0x5f, 0x06, 0x83, 0x5c, ++ 0x62, 0x01, 0xd3, 0x37, 0x50, 0x32, 0x07, 0xd0, 0xc1, 0x98, 0xce, 0xf6, ++ 0xb1, 0x25, 0x48, 0x3b, 0x92, 0x93, 0x2a, 0xd0, 0x55, 0x12, 0xd0, 0x77, ++ 0x0a, 0xc8, 0x42, 0x94, 0x87, 0x53, 0x6a, 0xa4, 0xd0, 0xb7, 0x73, 0x80, ++ 0x3e, 0xba, 0xb5, 0xb5, 0x60, 0x5d, 0x1d, 0x6d, 0xf1, 0x58, 0xa0, 0x7e, ++ 0x17, 0x8b, 0xa8, 0x48, 0xbf, 0x1f, 0xb1, 0x36, 0x27, 0xca, 0xd3, 0xbd, ++ 0x63, 0x4e, 0xf6, 0x6c, 0x03, 0x7a, 0x7d, 0x33, 0x3d, 0xdc, 0x0b, 0x88, ++ 0x1b, 0x7f, 0x24, 0x6f, 0x55, 0x9c, 0x53, 0x1e, 0xca, 0xdb, 0x33, 0x4a, ++ 0x1b, 0x3c, 0x9f, 0xd2, 0x6d, 0x5f, 0x7a, 0xc0, 0x81, 0xfd, 0x81, 0x37, ++ 0x0a, 0x90, 0xbc, 0xe1, 0xfb, 0x48, 0xdf, 0x40, 0x8e, 0x38, 0xce, 0x5d, ++ 0x0a, 0x0b, 0xba, 0x60, 0xaa, 0x47, 0x70, 0x84, 0x31, 0xd4, 0x2e, 0x6c, ++ 0x81, 0xfa, 0xac, 0x72, 0xe6, 0x2b, 0x80, 0xf6, 0x75, 0x63, 0x2c, 0x33, ++ 0x43, 0xf0, 0x9d, 0xba, 0x02, 0x7f, 0x85, 0x1f, 0xca, 0x1f, 0xe7, 0xf8, ++ 0x67, 0x62, 0xf9, 0x3a, 0x32, 0x0f, 0xcc, 0x7f, 0xbf, 0x28, 0x8f, 0x30, ++ 0x13, 0x95, 0x3f, 0xee, 0xed, 0xa6, 0x72, 0xd6, 0x7d, 0xfd, 0x38, 0x3f, ++ 0x95, 0x01, 0x10, 0xb3, 0xae, 0x0e, 0x87, 0xf4, 0x0c, 0xde, 0x8f, 0x39, ++ 0x22, 0xbd, 0xfd, 0x43, 0xae, 0xbd, 0x9f, 0xc2, 0xa0, 0xdf, 0xc8, 0xce, ++ 0xf6, 0xcf, 0x30, 0xff, 0x3b, 0xf8, 0x3c, 0x58, 0xc2, 0x06, 0xd4, 0x38, ++ 0x3a, 0xdb, 0xc1, 0xf3, 0xa3, 0xd8, 0x2e, 0xce, 0xf3, 0x0f, 0xe2, 0x3d, ++ 0x6f, 0x30, 0x81, 0x20, 0x00, 0x7d, 0x15, 0x4c, 0x35, 0x87, 0x36, 0xa3, ++ 0x7e, 0x62, 0x9e, 0xe4, 0x5b, 0x70, 0x5e, 0x56, 0x4f, 0xf2, 0x34, 0x67, ++ 0xe2, 0x79, 0x3d, 0xbc, 0x2c, 0x33, 0x5f, 0xe9, 0xab, 0x9f, 0x67, 0x88, ++ 0xe6, 0xf7, 0xb0, 0xc4, 0x66, 0x36, 0xd0, 0xf8, 0xbe, 0xcc, 0x69, 0x43, ++ 0x68, 0x7c, 0xc2, 0x77, 0x30, 0xd5, 0x1a, 0xda, 0x9c, 0x43, 0xa8, 0x30, ++ 0xd0, 0xcb, 0x5f, 0x11, 0x9e, 0xd0, 0x2f, 0xdf, 0xee, 0x6f, 0xa7, 0xf5, ++ 0x41, 0x3f, 0xbf, 0x13, 0xe1, 0xe3, 0xbe, 0x26, 0xb8, 0x40, 0xbf, 0x2f, ++ 0x08, 0x9e, 0x0a, 0xf4, 0x1b, 0x72, 0xed, 0xfd, 0x12, 0x97, 0xf5, 0x4c, ++ 0xcc, 0xc3, 0x43, 0xe3, 0x89, 0xe7, 0xd5, 0x16, 0x16, 0x94, 0x00, 0x4e, ++ 0x91, 0xcd, 0xce, 0xd0, 0xc6, 0x1c, 0x5c, 0x93, 0x87, 0xe4, 0x67, 0x85, ++ 0x5b, 0x08, 0xd0, 0x6e, 0x00, 0x0c, 0xd0, 0xeb, 0x15, 0x29, 0x08, 0x42, ++ 0xc6, 0x5a, 0x76, 0x27, 0x85, 0x4d, 0xd0, 0xbe, 0x68, 0xb3, 0x73, 0x23, ++ 0xda, 0x01, 0xed, 0x25, 0xc1, 0x8c, 0xa9, 0x08, 0x87, 0x8d, 0x2a, 0xdb, ++ 0x0c, 0x4d, 0x56, 0xec, 0xfe, 0xd1, 0xbb, 0xff, 0x01, 0xf5, 0xa2, 0x0d, ++ 0x2a, 0xb3, 0x40, 0x7d, 0xe1, 0xc5, 0x9f, 0x17, 0x32, 0xa0, 0xa3, 0xeb, ++ 0x24, 0x89, 0x7f, 0x3f, 0xe8, 0xdb, 0xdb, 0x17, 0xc6, 0x0f, 0x30, 0xed, ++ 0xe7, 0x93, 0x70, 0xfc, 0x05, 0x8c, 0x8f, 0xdf, 0x2e, 0x09, 0xb8, 0x6e, ++ 0x4e, 0x26, 0xbc, 0x7d, 0x5a, 0xb6, 0xa9, 0x6e, 0x2c, 0x94, 0x6d, 0xbb, ++ 0x2a, 0xcb, 0x19, 0xc8, 0xf1, 0x93, 0x00, 0xd6, 0x2c, 0xa0, 0xef, 0x85, ++ 0x76, 0xa6, 0x60, 0x39, 0xab, 0x66, 0xbb, 0x99, 0xe8, 0x34, 0xa8, 0x7e, ++ 0xd2, 0xa6, 0xe9, 0x17, 0xe2, 0x67, 0xa5, 0xb3, 0x2e, 0x77, 0xad, 0x2f, ++ 0xc0, 0xba, 0xc6, 0xff, 0xb0, 0xee, 0x85, 0x21, 0xb5, 0xb3, 0x0e, 0xff, ++ 0x2e, 0xde, 0x62, 0xac, 0xeb, 0xe0, 0x45, 0x76, 0x50, 0xe4, 0xbc, 0x12, ++ 0xda, 0x48, 0x74, 0x95, 0xcd, 0xe1, 0xa3, 0xc1, 0xcb, 0x97, 0xcd, 0xe1, ++ 0x27, 0xe0, 0x55, 0x76, 0x5e, 0x09, 0x9a, 0xba, 0x11, 0xbc, 0x42, 0x28, ++ 0x07, 0x92, 0x25, 0x0f, 0xc1, 0xa1, 0xe2, 0xbc, 0x12, 0x96, 0x61, 0x9c, ++ 0x0a, 0x80, 0x23, 0xb2, 0x60, 0xc5, 0xae, 0x87, 0x33, 0x10, 0x4e, 0x8b, ++ 0xb7, 0xd8, 0xdc, 0x9f, 0xe8, 0xbe, 0x5b, 0xd9, 0x90, 0x62, 0xa8, 0x57, ++ 0x37, 0x65, 0xb9, 0x3f, 0xd1, 0xe9, 0xd1, 0x0b, 0x07, 0x9f, 0x76, 0xe1, ++ 0xfa, 0x97, 0x66, 0x9a, 0xdc, 0x9f, 0x80, 0x7c, 0x3b, 0xb3, 0xcc, 0x97, ++ 0xf6, 0x09, 0xa0, 0xec, 0xdc, 0xb2, 0x89, 0x54, 0x6a, 0xf4, 0x51, 0xd9, ++ 0x90, 0xe3, 0x76, 0x18, 0xc6, 0x31, 0xd6, 0x2f, 0xd4, 0x4b, 0x13, 0x1b, ++ 0x48, 0x7f, 0x7a, 0x92, 0x67, 0x0c, 0x49, 0x4c, 0x67, 0x4b, 0x33, 0xcd, ++ 0xee, 0x4f, 0x80, 0x55, 0x4f, 0x6f, 0xe1, 0xfa, 0xf6, 0xf4, 0x32, 0xab, ++ 0x1b, 0xbf, 0x73, 0x66, 0x99, 0xdb, 0xcd, 0xbf, 0x9b, 0x49, 0xa5, 0x06, ++ 0xaf, 0x25, 0xb5, 0x76, 0x6a, 0xaf, 0xcd, 0x2f, 0xd1, 0xb8, 0xff, 0xec, ++ 0xf9, 0x31, 0xd6, 0xc8, 0x4e, 0x58, 0x51, 0x9e, 0xc3, 0xbb, 0xbc, 0xc4, ++ 0xed, 0x13, 0xf2, 0x93, 0xf2, 0x57, 0x33, 0xf1, 0x49, 0xb3, 0xfa, 0x05, ++ 0xd2, 0x8d, 0x15, 0xfe, 0xfd, 0xc6, 0x44, 0x74, 0x44, 0x75, 0x6d, 0xdc, ++ 0xea, 0x06, 0x39, 0x68, 0xb9, 0x1e, 0x9f, 0x6f, 0x33, 0x7c, 0x0f, 0xfa, ++ 0x79, 0xfe, 0xa2, 0xd3, 0x2f, 0x89, 0xf9, 0x56, 0x61, 0x7f, 0xd1, 0xd1, ++ 0xe5, 0xfd, 0x38, 0x00, 0xf1, 0xa9, 0x95, 0xf0, 0x1c, 0x80, 0x11, 0x93, ++ 0x61, 0xbc, 0x76, 0xc5, 0xb1, 0x06, 0xed, 0xa8, 0xc9, 0x82, 0x7e, 0xaa, ++ 0xb1, 0x1d, 0xc8, 0x83, 0x4a, 0x6b, 0x9b, 0x39, 0x00, 0x8f, 0xce, 0x36, ++ 0x72, 0x7c, 0x24, 0xfa, 0xce, 0xe9, 0x65, 0x5b, 0xb2, 0x51, 0xae, 0x55, ++ 0x58, 0xeb, 0xcd, 0x28, 0xac, 0x2a, 0x1a, 0x06, 0x96, 0x21, 0x3f, 0x9d, ++ 0x6d, 0x5c, 0x99, 0x81, 0xfa, 0x65, 0xb1, 0x7c, 0xe1, 0xbb, 0xfe, 0x38, ++ 0xfd, 0x7f, 0xac, 0xf1, 0x6d, 0x48, 0x8d, 0x18, 0xf5, 0x65, 0x48, 0xcc, ++ 0x13, 0xc6, 0x35, 0xf0, 0x19, 0x73, 0x74, 0xac, 0x1b, 0xea, 0x67, 0x4c, ++ 0xf0, 0x29, 0x47, 0xd7, 0x71, 0x1f, 0x97, 0xb8, 0xde, 0xa9, 0xda, 0x76, ++ 0x64, 0xc2, 0x58, 0x98, 0x7f, 0x55, 0xd3, 0x79, 0x33, 0xce, 0x63, 0xb2, ++ 0x14, 0x78, 0x5c, 0x4a, 0xef, 0x5c, 0xbf, 0x84, 0xeb, 0x87, 0x71, 0x16, ++ 0x6d, 0x39, 0x46, 0x7c, 0xfe, 0xa9, 0x1a, 0xec, 0xff, 0xbd, 0x9c, 0x2b, ++ 0xc0, 0xb3, 0xcb, 0x3c, 0x1d, 0x99, 0x7f, 0x49, 0xd2, 0xcd, 0x2f, 0x08, ++ 0x86, 0x24, 0xf0, 0xeb, 0xdd, 0xa3, 0x05, 0xbf, 0x32, 0xcf, 0xed, 0x1f, ++ 0x00, 0x7f, 0x9e, 0x7a, 0x43, 0x65, 0x8f, 0xc0, 0x3c, 0xd8, 0x65, 0x68, ++ 0x05, 0xef, 0x7b, 0x8b, 0xb7, 0xf7, 0x30, 0xbf, 0x0b, 0xe1, 0x75, 0x77, ++ 0xe3, 0x62, 0x92, 0x3f, 0xa7, 0x50, 0xfe, 0xa0, 0x1e, 0x66, 0xf5, 0x85, ++ 0x48, 0x1f, 0x67, 0x99, 0x69, 0x22, 0xae, 0xef, 0x2c, 0x7b, 0xcb, 0x35, ++ 0x5c, 0x07, 0xbf, 0x7d, 0x92, 0x59, 0xc0, 0x07, 0x4c, 0x59, 0x90, 0x07, ++ 0x16, 0xfa, 0x14, 0xc1, 0x2d, 0x0b, 0xf5, 0x80, 0xa5, 0xa2, 0xae, 0x55, ++ 0x1e, 0x8a, 0xcf, 0x95, 0xa0, 0x90, 0x4b, 0xd2, 0x37, 0x24, 0x4f, 0x42, ++ 0x12, 0xe9, 0x89, 0x0a, 0xfe, 0x3c, 0xc8, 0xac, 0xcb, 0x69, 0x1d, 0x6b, ++ 0xb8, 0x3c, 0x0a, 0xc2, 0x3f, 0x58, 0xbf, 0xb7, 0xde, 0x28, 0x9f, 0x16, ++ 0xac, 0x33, 0xd6, 0xe7, 0xb3, 0x69, 0x19, 0x0a, 0xc8, 0x97, 0xf9, 0x3f, ++ 0x57, 0x61, 0x44, 0x90, 0x6f, 0x7a, 0xf9, 0x07, 0xf0, 0x7b, 0x46, 0xe2, ++ 0x7a, 0x77, 0x01, 0xab, 0xa9, 0x73, 0xc3, 0xfc, 0x9f, 0x30, 0x03, 0x9e, ++ 0x60, 0xfe, 0x77, 0xbb, 0x99, 0x92, 0x0d, 0xeb, 0xab, 0x7c, 0xf1, 0x89, ++ 0xc2, 0xb9, 0x50, 0x7f, 0x4d, 0xe2, 0x7a, 0xec, 0xf4, 0x32, 0x98, 0x7e, ++ 0x7f, 0x18, 0x27, 0x95, 0xaf, 0x7f, 0x51, 0x6d, 0xc8, 0xec, 0xcb, 0xef, ++ 0xba, 0xbe, 0x13, 0x8d, 0xc3, 0x6f, 0x1b, 0xcb, 0x68, 0x3c, 0x92, 0x93, ++ 0xc1, 0x45, 0x9a, 0xfe, 0x65, 0x1e, 0xa5, 0x90, 0xa4, 0x25, 0x18, 0xb9, ++ 0x89, 0xd7, 0x9f, 0xdd, 0x28, 0xfb, 0x6c, 0x2e, 0x6c, 0x07, 0xcf, 0x75, ++ 0xf2, 0x79, 0xde, 0x1a, 0xe3, 0xfa, 0xae, 0xb6, 0xfe, 0xd8, 0xf5, 0x32, ++ 0xf6, 0x33, 0xa2, 0xb7, 0x45, 0x5b, 0x6e, 0x61, 0x48, 0x67, 0xda, 0x7a, ++ 0x34, 0x7c, 0x69, 0xeb, 0x51, 0xb7, 0x48, 0xbe, 0x50, 0x1c, 0x3e, 0x68, ++ 0x13, 0xf4, 0xaa, 0xc9, 0xb5, 0x88, 0x80, 0x9f, 0x66, 0x77, 0x7c, 0x1e, ++ 0x53, 0xbf, 0x14, 0x53, 0xff, 0x26, 0xa6, 0xae, 0xd1, 0xb7, 0x2a, 0xf8, ++ 0x1b, 0xe8, 0xfe, 0x73, 0x69, 0x24, 0xf2, 0x73, 0x64, 0x02, 0xa7, 0x93, ++ 0x36, 0xae, 0xd7, 0x44, 0x3b, 0x73, 0x67, 0xbb, 0x4b, 0x57, 0x6a, 0x67, ++ 0x11, 0xfc, 0x02, 0xed, 0xbe, 0xb9, 0x52, 0x3b, 0x5b, 0xe7, 0x78, 0x8a, ++ 0x29, 0xbd, 0x6b, 0xbb, 0xca, 0x17, 0x9f, 0x7d, 0x21, 0x08, 0xf4, 0xbd, ++ 0xe8, 0xb9, 0x5f, 0xb8, 0x18, 0xd0, 0xe3, 0x29, 0xa5, 0x3e, 0xc3, 0x0b, ++ 0xcf, 0x97, 0x6c, 0x5e, 0xed, 0x42, 0x38, 0x7d, 0xaa, 0x04, 0x5d, 0x48, ++ 0x37, 0xa7, 0x42, 0xf2, 0xc4, 0x78, 0xf0, 0x1a, 0x63, 0x92, 0x34, 0x7b, ++ 0xc3, 0x21, 0x01, 0xde, 0xab, 0x34, 0xfa, 0x2f, 0x5a, 0x3e, 0x05, 0xf5, ++ 0xfb, 0x17, 0x9b, 0x55, 0xf7, 0x23, 0x80, 0x97, 0xea, 0x2d, 0x96, 0xb0, ++ 0x05, 0xf0, 0x5d, 0xd5, 0xb8, 0xb0, 0x9c, 0x0d, 0xa5, 0xfa, 0x31, 0x5e, ++ 0xff, 0xe1, 0x79, 0xa4, 0x8f, 0xea, 0x26, 0xf5, 0xb8, 0x1e, 0xaf, 0x8b, ++ 0xfe, 0xeb, 0x17, 0x19, 0x1e, 0x27, 0xe1, 0x21, 0xdb, 0x84, 0x36, 0x30, ++ 0x0b, 0x67, 0x33, 0x28, 0xab, 0x36, 0xfd, 0x79, 0x02, 0xda, 0xd1, 0xd5, ++ 0x2c, 0x42, 0xf4, 0x1c, 0xdb, 0x0f, 0xbf, 0x8f, 0xae, 0x1d, 0xc8, 0xeb, ++ 0xb9, 0xe6, 0xe4, 0xae, 0xef, 0x35, 0xbf, 0xb1, 0x9a, 0x3f, 0x62, 0xd5, ++ 0x8d, 0x3f, 0x3a, 0x8f, 0x7e, 0x63, 0x35, 0x53, 0x8e, 0xeb, 0xe9, 0xa8, ++ 0x02, 0x69, 0x19, 0xec, 0xbc, 0x41, 0x26, 0x67, 0x37, 0xf4, 0x17, 0xd8, ++ 0x28, 0x36, 0x0a, 0xe5, 0x8a, 0x06, 0x07, 0x16, 0x4a, 0x27, 0xb9, 0xbc, ++ 0xf2, 0x99, 0xc7, 0x87, 0x1e, 0x83, 0x79, 0x9c, 0xd9, 0xf4, 0x86, 0x4b, ++ 0xd2, 0xc1, 0x07, 0x2c, 0x24, 0x82, 0xcb, 0x85, 0x86, 0x79, 0x1f, 0xa7, ++ 0x5d, 0x41, 0x2f, 0x9c, 0x03, 0xfa, 0x64, 0xfd, 0xf5, 0xfd, 0x42, 0xd4, ++ 0xcf, 0xd3, 0x04, 0x13, 0xe8, 0x0e, 0xd5, 0x66, 0x5e, 0x2e, 0x51, 0xc3, ++ 0xae, 0xb1, 0x00, 0xcf, 0x25, 0x1b, 0x54, 0x2f, 0x50, 0x26, 0x5b, 0xf2, ++ 0xec, 0xd3, 0xff, 0xf9, 0x6b, 0xe0, 0x3b, 0xf6, 0xbe, 0xc5, 0xdb, 0x0f, ++ 0xe0, 0xbd, 0xf8, 0xd9, 0x03, 0xef, 0xde, 0x00, 0xf5, 0xc5, 0xdb, 0xd5, ++ 0x6e, 0xe5, 0x7c, 0x19, 0x0e, 0x29, 0xa3, 0x13, 0x1f, 0xd5, 0xf0, 0x2f, ++ 0xc6, 0x65, 0x34, 0xf8, 0x2f, 0xda, 0x79, 0xc0, 0xec, 0x19, 0xc2, 0x9f, ++ 0x7f, 0x3f, 0xb5, 0x13, 0x0f, 0x8b, 0xb7, 0xef, 0x35, 0xb3, 0x21, 0x5d, ++ 0xe1, 0x56, 0xda, 0xb0, 0xd7, 0xdc, 0xe6, 0x88, 0x83, 0x8f, 0x86, 0x63, ++ 0x13, 0xd0, 0x9e, 0x59, 0xf9, 0xcc, 0x97, 0x66, 0xc4, 0xf7, 0xa9, 0xdd, ++ 0x12, 0xeb, 0x9e, 0xd3, 0xb5, 0x7f, 0xc5, 0x86, 0x03, 0x64, 0xbf, 0x20, ++ 0x9c, 0x08, 0x7f, 0x02, 0x3f, 0x1d, 0xf8, 0xea, 0x82, 0xa7, 0xf0, 0x94, ++ 0x97, 0x47, 0x50, 0x3b, 0x37, 0xca, 0xeb, 0x44, 0x78, 0x72, 0xa2, 0xae, ++ 0x1e, 0x49, 0x74, 0xfc, 0xdb, 0x97, 0xe1, 0xfb, 0x15, 0x7f, 0xb4, 0x78, ++ 0x71, 0xfd, 0x15, 0xbf, 0xbd, 0xdf, 0x85, 0xeb, 0x38, 0xa9, 0xd4, 0x70, ++ 0x7a, 0x7e, 0x62, 0x75, 0x86, 0x0f, 0xbe, 0x5b, 0xa1, 0x06, 0x33, 0xdc, ++ 0x54, 0xf2, 0xe7, 0x15, 0x4f, 0x3e, 0x48, 0x74, 0xb6, 0xe0, 0xc8, 0x83, ++ 0x64, 0x97, 0x01, 0x7d, 0x64, 0x99, 0x48, 0x67, 0x04, 0xb3, 0x70, 0x7d, ++ 0xf7, 0xae, 0xbf, 0x95, 0xd6, 0x37, 0x9f, 0x05, 0x88, 0xde, 0x2a, 0x9e, ++ 0x90, 0xfd, 0x21, 0x94, 0x03, 0x0a, 0x9b, 0xb8, 0x3d, 0x0e, 0x3f, 0x3c, ++ 0x27, 0xf8, 0xe1, 0xe4, 0x46, 0x90, 0x94, 0xb0, 0xbe, 0x93, 0x28, 0x1f, ++ 0xd1, 0xce, 0x7d, 0x4b, 0x16, 0xf2, 0xf1, 0x3e, 0xb2, 0x23, 0x1f, 0x14, ++ 0x6b, 0x05, 0x4b, 0x86, 0xea, 0x9f, 0x5b, 0x39, 0x9e, 0xea, 0x4c, 0x26, ++ 0x2d, 0x2e, 0x67, 0x35, 0xd0, 0xe9, 0xa6, 0x1f, 0x92, 0x1c, 0x3d, 0xdd, ++ 0xcb, 0xd7, 0xdd, 0x9d, 0x4f, 0x70, 0xd0, 0xe4, 0x26, 0xc9, 0x53, 0xf9, ++ 0xc8, 0xf8, 0xee, 0x1c, 0x3f, 0x5c, 0xfe, 0x52, 0x3f, 0xa0, 0xbb, 0x52, ++ 0x7c, 0x8e, 0xed, 0x5b, 0x55, 0x9f, 0x6d, 0xa8, 0xa1, 0x9f, 0x90, 0x97, ++ 0xfc, 0xfb, 0x0f, 0x88, 0xef, 0xc3, 0xbc, 0xed, 0x68, 0x7f, 0x9c, 0xcc, ++ 0xe0, 0x7a, 0x22, 0x76, 0x7d, 0x7f, 0x34, 0x69, 0xf2, 0x11, 0xf4, 0xab, ++ 0x8e, 0xbe, 0x74, 0x7c, 0xcd, 0xf9, 0x7c, 0xd3, 0xc3, 0x9c, 0xaf, 0x35, ++ 0x3e, 0x0f, 0xdd, 0x32, 0x11, 0xdf, 0xff, 0xf5, 0x6d, 0xce, 0x3f, 0xd8, ++ 0x0f, 0xf5, 0x0f, 0xcc, 0x2b, 0xdc, 0x9d, 0xde, 0xef, 0x9d, 0x21, 0x91, ++ 0x1c, 0xb0, 0xb0, 0x70, 0x3c, 0x7e, 0xde, 0xa4, 0x0a, 0x7e, 0x36, 0xbe, ++ 0x07, 0x09, 0x4d, 0xf6, 0x1b, 0xcc, 0x5b, 0x91, 0x92, 0xf5, 0x74, 0x02, ++ 0xe3, 0xa7, 0x12, 0xfc, 0xc9, 0x2e, 0x99, 0xff, 0x73, 0xe8, 0xa7, 0xb3, ++ 0xa7, 0xab, 0xf1, 0x7b, 0xd4, 0xce, 0xdc, 0xf9, 0x3c, 0xa7, 0x93, 0x6f, ++ 0x17, 0x08, 0xfe, 0xdf, 0x8a, 0xfc, 0x9f, 0xd4, 0xc9, 0xff, 0x6c, 0x7d, ++ 0xfa, 0x35, 0xf9, 0x67, 0x4b, 0xd4, 0xd0, 0x7f, 0xfe, 0x1a, 0xf9, 0x15, ++ 0xf8, 0x33, 0xe8, 0x41, 0x7e, 0x55, 0xfd, 0xb8, 0xee, 0xcf, 0xb6, 0xed, ++ 0x7f, 0xf7, 0x4e, 0xa0, 0xeb, 0xcf, 0x1a, 0x34, 0x3e, 0x35, 0xca, 0xcd, ++ 0x58, 0x3e, 0xad, 0xd8, 0xf1, 0x20, 0x43, 0xfa, 0x8c, 0xe5, 0xd3, 0xcf, ++ 0x7a, 0xd6, 0xb0, 0xb8, 0x7c, 0x0a, 0xcf, 0xe3, 0xf2, 0x69, 0xcf, 0xb6, ++ 0xff, 0x11, 0xb9, 0xa9, 0xc1, 0xed, 0x48, 0x0c, 0xdc, 0x40, 0x0e, 0x3e, ++ 0xf5, 0xb2, 0x27, 0x31, 0xfc, 0x62, 0xe5, 0x60, 0xb5, 0xc9, 0x13, 0x57, ++ 0x0e, 0xc2, 0xef, 0x6d, 0x56, 0xd8, 0x95, 0xee, 0x34, 0x7a, 0xd3, 0xe8, ++ 0x6c, 0xd1, 0x6f, 0x2a, 0xfb, 0xa0, 0xbc, 0xe9, 0xa0, 0x47, 0x8d, 0xde, ++ 0x3a, 0xe8, 0x51, 0xa3, 0xb7, 0xd8, 0x75, 0x1a, 0xe1, 0x16, 0xfb, 0x7e, ++ 0x3d, 0xca, 0x1b, 0x9d, 0x7d, 0xa0, 0xae, 0x60, 0x41, 0x27, 0xe0, 0x39, ++ 0xb2, 0x4b, 0x26, 0x3f, 0xb1, 0xdd, 0x13, 0x71, 0xa5, 0xc2, 0x77, 0x57, ++ 0xdb, 0xd8, 0x1c, 0xb4, 0xb3, 0xdb, 0xdd, 0xa2, 0x9e, 0xc2, 0xeb, 0x91, ++ 0x74, 0x73, 0x1d, 0xca, 0x05, 0xed, 0x79, 0xc4, 0xc6, 0xe3, 0x0d, 0xed, ++ 0xfe, 0x88, 0x2b, 0x45, 0x67, 0x3f, 0x1f, 0x6b, 0x96, 0x5d, 0x1e, 0x78, ++ 0xdf, 0x16, 0x62, 0x13, 0xe3, 0xd9, 0xd5, 0x20, 0x71, 0xe9, 0xfb, 0x6d, ++ 0x2c, 0xd1, 0xfb, 0xe5, 0x04, 0xbf, 0xf1, 0xb2, 0xa3, 0x77, 0xed, 0x08, ++ 0xf4, 0xab, 0x64, 0x2f, 0xda, 0x6e, 0xf7, 0x2c, 0xbf, 0xdd, 0x85, 0x21, ++ 0x8b, 0xf6, 0xe6, 0xbc, 0xa9, 0x33, 0xe1, 0xf9, 0xbd, 0xaf, 0xc9, 0x14, ++ 0xd3, 0x68, 0xb7, 0xbb, 0x86, 0xe2, 0xbc, 0xc0, 0x6f, 0x57, 0xb2, 0x00, ++ 0xbe, 0xf3, 0x04, 0x9e, 0x3f, 0x65, 0xc1, 0x5f, 0x16, 0xc1, 0xba, 0xe6, ++ 0x35, 0x73, 0xbb, 0xf8, 0x9e, 0xb5, 0x46, 0x78, 0xcc, 0x77, 0x3c, 0x60, ++ 0x46, 0x39, 0x03, 0xf6, 0x67, 0x27, 0x1d, 0xe8, 0xe8, 0x45, 0xdb, 0x27, ++ 0xa8, 0x58, 0x6f, 0x7c, 0xbf, 0x88, 0xad, 0x25, 0x7c, 0x2d, 0x8a, 0xa1, ++ 0x9f, 0x80, 0xf0, 0x77, 0xb2, 0x64, 0x41, 0x3f, 0xc3, 0xd8, 0x30, 0xe1, ++ 0x6f, 0x98, 0x70, 0xbc, 0xa5, 0x42, 0x4e, 0x8d, 0x97, 0xf3, 0xa7, 0xce, ++ 0x04, 0xb8, 0xb7, 0x1f, 0x94, 0x99, 0x05, 0xea, 0x17, 0x9a, 0x65, 0x56, ++ 0x87, 0xeb, 0xdc, 0x26, 0x85, 0x18, 0xf2, 0x71, 0x30, 0x9d, 0xe8, 0xb0, ++ 0x0a, 0xe4, 0x03, 0xd3, 0xf9, 0x85, 0x67, 0x90, 0xce, 0xcc, 0x89, 0xf9, ++ 0xf7, 0xcc, 0xf3, 0x1f, 0x15, 0x7e, 0x0f, 0x9a, 0x2c, 0x79, 0xe1, 0x83, ++ 0xa1, 0xff, 0x01, 0xe5, 0x99, 0x17, 0xde, 0xef, 0xff, 0x0a, 0xd6, 0x5f, ++ 0x7c, 0xaf, 0xf7, 0x07, 0xac, 0x6b, 0xfb, 0xd2, 0xdd, 0x5f, 0xcd, 0x46, ++ 0xf9, 0xde, 0xbe, 0xdb, 0xc2, 0x28, 0x4e, 0xb2, 0xfb, 0x77, 0xbd, 0xbf, ++ 0x87, 0xf5, 0x97, 0x2d, 0x5e, 0x8a, 0x73, 0xac, 0xb0, 0xf0, 0xf8, 0xd4, ++ 0x6e, 0x67, 0xa8, 0x1f, 0xbe, 0xef, 0x05, 0xf8, 0x46, 0x7d, 0xb9, 0xeb, ++ 0xcb, 0xa1, 0x6d, 0xa4, 0x6f, 0x56, 0x11, 0x9e, 0xca, 0x64, 0xee, 0x47, ++ 0x5c, 0x68, 0xfe, 0xdb, 0x9f, 0xa4, 0x6e, 0x58, 0xc2, 0xaa, 0x50, 0x8f, ++ 0xee, 0x4e, 0x22, 0xfb, 0xba, 0xfa, 0x65, 0x5b, 0x08, 0x9d, 0xce, 0xf6, ++ 0x5d, 0x5f, 0x16, 0x06, 0x1c, 0xff, 0xbc, 0xf5, 0x54, 0x99, 0x59, 0x80, ++ 0xe8, 0xcf, 0xc9, 0x66, 0xee, 0x40, 0x7a, 0x4d, 0x01, 0xc4, 0xc1, 0xf7, ++ 0xab, 0x5f, 0x19, 0xf3, 0xf4, 0x72, 0xf8, 0x7e, 0x65, 0xe3, 0x5e, 0xf3, ++ 0x3c, 0x78, 0x5f, 0xba, 0xe7, 0xeb, 0xa1, 0x28, 0x57, 0xda, 0x77, 0x70, ++ 0xfb, 0xe0, 0x9c, 0xda, 0xf6, 0x24, 0xf3, 0x32, 0x36, 0x55, 0xfe, 0xc5, ++ 0x72, 0x15, 0xf0, 0x75, 0x0e, 0x6d, 0xb5, 0x1e, 0x20, 0x97, 0xe4, 0x77, ++ 0x8b, 0x83, 0x8e, 0x78, 0x70, 0xe1, 0x70, 0x68, 0x07, 0x38, 0xe0, 0xba, ++ 0x00, 0x2e, 0x15, 0x28, 0x0f, 0x13, 0xc1, 0x63, 0xfe, 0xbf, 0x2c, 0x3c, ++ 0xce, 0xcf, 0xc6, 0xef, 0x2f, 0x69, 0x1e, 0xc5, 0xe4, 0x1c, 0x3d, 0x5c, ++ 0x24, 0x1f, 0x7f, 0xee, 0x0c, 0x59, 0x25, 0x5a, 0x3f, 0x7f, 0xbe, 0xfb, ++ 0xcb, 0xa1, 0x28, 0x77, 0x3f, 0x6b, 0x58, 0x4e, 0xfa, 0xfb, 0x6a, 0xeb, ++ 0x5e, 0x8d, 0xeb, 0x4e, 0xff, 0x7f, 0x69, 0xdd, 0x52, 0xf8, 0x5a, 0xd6, ++ 0xbd, 0xe9, 0x5f, 0x76, 0xdd, 0x9c, 0xfe, 0x07, 0xc9, 0x5c, 0x1f, 0xc5, ++ 0xf2, 0x41, 0x57, 0x3a, 0x7f, 0xf1, 0xbb, 0x54, 0xff, 0xad, 0xd3, 0x4b, ++ 0xf3, 0xbd, 0x46, 0xfe, 0x6f, 0xf9, 0x97, 0x5d, 0xff, 0x3f, 0x88, 0xf7, ++ 0x1d, 0x12, 0xed, 0xc7, 0x5d, 0x0d, 0xef, 0x27, 0xfe, 0x65, 0xd7, 0x7d, ++ 0x35, 0xbc, 0xbf, 0x26, 0xf0, 0xee, 0x74, 0x63, 0xbc, 0xb7, 0x7d, 0xd7, ++ 0xd7, 0xbd, 0x99, 0x6e, 0xfd, 0x57, 0x5b, 0xb7, 0x49, 0xf9, 0x57, 0x95, ++ 0x6f, 0x57, 0x5e, 0xb7, 0x66, 0xf7, 0xb4, 0x9a, 0x6a, 0xdc, 0x23, 0x60, ++ 0x7e, 0xef, 0xb3, 0xfa, 0x5b, 0x73, 0xa0, 0xfc, 0xbd, 0xef, 0x62, 0x37, ++ 0x74, 0x47, 0x81, 0x07, 0xfc, 0xf1, 0xfc, 0x86, 0x02, 0x85, 0xfb, 0x0d, ++ 0x16, 0x8c, 0x33, 0x61, 0xc3, 0x5b, 0x25, 0x2d, 0x5e, 0xd4, 0x6a, 0xd8, ++ 0xc7, 0xed, 0x59, 0x41, 0x76, 0xc6, 0x14, 0xdf, 0x8f, 0xc9, 0x3e, 0x60, ++ 0x4a, 0x4d, 0x6b, 0x31, 0xb4, 0x6f, 0x2d, 0x99, 0xe7, 0x7d, 0x84, 0x5a, ++ 0x14, 0x1c, 0x0d, 0x60, 0x7d, 0xc6, 0x38, 0x51, 0x37, 0xfa, 0x53, 0x6f, ++ 0x4a, 0xcc, 0x27, 0x81, 0x1d, 0x3b, 0xa5, 0x64, 0xd2, 0x41, 0xb4, 0xef, ++ 0xa6, 0xfa, 0x64, 0xb2, 0xff, 0xa0, 0x24, 0xbb, 0xef, 0x9d, 0xde, 0x13, ++ 0xf8, 0xf3, 0xd1, 0x46, 0x3f, 0xe2, 0x8e, 0x18, 0x3f, 0xe0, 0xf6, 0x99, ++ 0xc6, 0xf7, 0xb7, 0x8a, 0xf1, 0x6e, 0x63, 0x4b, 0xdd, 0x23, 0x00, 0x5e, ++ 0xb7, 0xf5, 0x54, 0xdc, 0x21, 0x00, 0xd1, 0x1d, 0xc5, 0x35, 0x2a, 0xae, ++ 0xe7, 0x8e, 0xbb, 0x24, 0x56, 0xaf, 0x8b, 0x57, 0xde, 0x1a, 0x33, 0x9e, ++ 0x4b, 0x61, 0x22, 0x4e, 0xf2, 0x8f, 0xc1, 0xef, 0x9e, 0x0e, 0xf8, 0x2d, ++ 0x25, 0x78, 0xb0, 0x62, 0xd9, 0xbb, 0x99, 0x5d, 0x03, 0xfc, 0x18, 0x87, ++ 0x77, 0xeb, 0x8c, 0x61, 0x21, 0x8c, 0xc3, 0x30, 0xc5, 0xcb, 0xe1, 0x77, ++ 0x5b, 0xa5, 0x97, 0xe2, 0xa0, 0xc2, 0xcf, 0x54, 0x45, 0x7f, 0xd5, 0xb1, ++ 0xa6, 0x15, 0xf9, 0x56, 0x65, 0x46, 0xff, 0x52, 0xf3, 0x13, 0x13, 0xc1, ++ 0x99, 0x09, 0xbf, 0x93, 0xc6, 0xc9, 0xed, 0x84, 0xbb, 0xea, 0x93, 0xc9, ++ 0xef, 0xd4, 0x8d, 0x47, 0xf0, 0xd0, 0xf0, 0xf1, 0xf7, 0xe2, 0x41, 0xc3, ++ 0xdf, 0x7f, 0x17, 0x1f, 0x85, 0x88, 0x8f, 0x38, 0xfb, 0x67, 0x0b, 0xad, ++ 0xd6, 0x5b, 0x71, 0xff, 0xc2, 0x3a, 0x40, 0x22, 0xbf, 0x7d, 0xea, 0x5a, ++ 0x99, 0xf2, 0x60, 0xac, 0xf9, 0x12, 0xc1, 0xd1, 0x3f, 0x5a, 0xa5, 0xfd, ++ 0x9d, 0x3f, 0x9b, 0xfc, 0x85, 0x68, 0x38, 0x97, 0x0f, 0x1f, 0x55, 0xf5, ++ 0x10, 0x1f, 0xd6, 0x8b, 0xf0, 0x59, 0x28, 0xe0, 0x38, 0x9f, 0xd5, 0x90, ++ 0xdd, 0xc9, 0x2e, 0x7f, 0xf3, 0x4d, 0x11, 0xee, 0x1b, 0x11, 0x84, 0xe0, ++ 0xbd, 0x8f, 0xb1, 0xc9, 0xe0, 0x87, 0xcc, 0x2f, 0x92, 0xc2, 0x76, 0x58, ++ 0xff, 0x02, 0x85, 0x05, 0x93, 0x0b, 0x30, 0xae, 0x29, 0xb1, 0xe3, 0xfa, ++ 0xb8, 0x66, 0xc8, 0x58, 0xc7, 0xdf, 0xb7, 0x32, 0x3a, 0xc7, 0xb9, 0x5a, ++ 0xfb, 0x44, 0xf2, 0xe1, 0x9f, 0x5d, 0x7e, 0x0c, 0xf2, 0xe8, 0x78, 0x5f, ++ 0xf0, 0x57, 0xb0, 0x54, 0xe8, 0xf3, 0x8a, 0xde, 0x4f, 0x9c, 0xd3, 0xcc, ++ 0xe1, 0x58, 0xbd, 0x44, 0x0a, 0xe5, 0x12, 0x1d, 0x85, 0x55, 0xbf, 0x6e, ++ 0x5f, 0xe7, 0x7d, 0x41, 0xd7, 0x1f, 0x7f, 0x7f, 0x38, 0xc9, 0xb9, 0xe2, ++ 0x9f, 0x0e, 0x49, 0x26, 0xff, 0xd5, 0x37, 0x88, 0xec, 0xfd, 0x6a, 0x61, ++ 0xef, 0x5f, 0x08, 0x7a, 0x92, 0x31, 0x5e, 0x73, 0xa1, 0x39, 0x2f, 0x19, ++ 0xe3, 0x31, 0x17, 0x0e, 0x96, 0xba, 0xf4, 0x72, 0x51, 0x2b, 0x8f, 0x08, ++ 0x3f, 0xf2, 0x0f, 0xcb, 0xac, 0x54, 0xb6, 0x97, 0x49, 0xf5, 0x32, 0xfa, ++ 0x5b, 0x2c, 0x32, 0x85, 0xf4, 0x70, 0x99, 0x8d, 0xa1, 0xdc, 0x89, 0xed, ++ 0xf7, 0x92, 0xa2, 0xc5, 0x5d, 0x6a, 0xcc, 0x14, 0x97, 0x87, 0x9f, 0x5c, ++ 0x88, 0x78, 0xe4, 0xbf, 0x05, 0xd0, 0x35, 0x39, 0x55, 0x87, 0xb7, 0xb5, ++ 0x93, 0x4f, 0x29, 0x43, 0xbb, 0xe2, 0x01, 0x7f, 0xc7, 0x75, 0xfb, 0x24, ++ 0xff, 0x5d, 0xf8, 0xa2, 0xdf, 0x8a, 0x70, 0x3d, 0x62, 0x6b, 0x9b, 0xe0, ++ 0x8f, 0xb3, 0xde, 0x37, 0x04, 0xfc, 0xca, 0xf7, 0x7d, 0x65, 0xc6, 0x38, ++ 0xc1, 0xb4, 0xe6, 0x1c, 0x15, 0xe1, 0x32, 0xad, 0x4c, 0x36, 0xe4, 0xdd, ++ 0xec, 0x57, 0x84, 0x3f, 0x35, 0x9c, 0x0d, 0xc7, 0x79, 0x95, 0xef, 0xbb, ++ 0xc9, 0x35, 0x06, 0xf1, 0x72, 0x50, 0xf6, 0xda, 0x00, 0xbe, 0xd5, 0xcd, ++ 0xe7, 0xcd, 0x81, 0x38, 0xfb, 0x6d, 0xb1, 0xf0, 0xc4, 0xf1, 0x31, 0x2e, ++ 0x7c, 0x42, 0xf5, 0xce, 0x47, 0x78, 0x9e, 0xf8, 0xb1, 0x8d, 0x05, 0x81, ++ 0x1f, 0x0e, 0x8b, 0xfd, 0x1f, 0x78, 0xe5, 0x43, 0xf9, 0x05, 0x43, 0xf9, ++ 0x30, 0x3e, 0xf6, 0xb6, 0xc2, 0xf7, 0x15, 0x06, 0xaa, 0x3c, 0x2e, 0x3e, ++ 0xbd, 0xbc, 0x58, 0x4d, 0x87, 0xef, 0xe6, 0x37, 0xba, 0x87, 0xa1, 0x8a, ++ 0xe9, 0x21, 0xda, 0x0f, 0x54, 0x3d, 0xf4, 0x3e, 0x5b, 0xf4, 0xd3, 0xda, ++ 0xf5, 0x58, 0xc2, 0xdb, 0x1d, 0x33, 0xbb, 0xab, 0xe2, 0xad, 0x7f, 0xb2, ++ 0x99, 0xaf, 0x7f, 0x01, 0xf3, 0x7e, 0x77, 0xb4, 0xf4, 0xaf, 0x87, 0xb7, ++ 0xe2, 0x9f, 0x3a, 0xc3, 0x25, 0xa8, 0xdf, 0xcb, 0x24, 0x92, 0x23, 0x5d, ++ 0xe9, 0x9a, 0x11, 0x7f, 0x5c, 0x98, 0x28, 0x85, 0x50, 0xff, 0xa2, 0x1f, ++ 0x4b, 0xf5, 0x72, 0x89, 0xf4, 0xff, 0x61, 0x2d, 0xff, 0x60, 0x1a, 0xd7, ++ 0x97, 0x1a, 0xdd, 0xc7, 0xc2, 0x59, 0x52, 0x39, 0x9c, 0xb5, 0xef, 0xe7, ++ 0xa8, 0x9c, 0x9e, 0xcd, 0x2a, 0x87, 0x8f, 0x06, 0x67, 0x0d, 0xbe, 0xb1, ++ 0xf3, 0xd5, 0xda, 0x83, 0xbc, 0xba, 0x51, 0x1f, 0x5f, 0x99, 0xda, 0x34, ++ 0xec, 0xb7, 0x68, 0x9f, 0x54, 0x35, 0x4b, 0x6e, 0x0c, 0xfd, 0x55, 0x29, ++ 0x6d, 0x66, 0xe4, 0xc3, 0xea, 0xa6, 0x47, 0x55, 0xdc, 0x2f, 0xb8, 0xc3, ++ 0xc3, 0xc7, 0x65, 0x8a, 0x7f, 0xa8, 0x7e, 0xbf, 0x76, 0xa0, 0xaa, 0xd0, ++ 0x7c, 0xf6, 0x17, 0x8c, 0x25, 0xfb, 0xf1, 0xe2, 0x5a, 0x6e, 0x1f, 0xfb, ++ 0xee, 0x39, 0xef, 0x42, 0x3b, 0xe8, 0xb0, 0xc9, 0xfb, 0xfb, 0xb1, 0xc8, ++ 0x8f, 0x6f, 0xca, 0x94, 0x4f, 0x90, 0x08, 0x8e, 0x1f, 0x2c, 0xdb, 0x32, ++ 0xa3, 0x4c, 0xd1, 0x8f, 0x9b, 0x43, 0xf3, 0x9c, 0xbe, 0xa4, 0x58, 0xc5, ++ 0x70, 0xd0, 0x77, 0x96, 0xec, 0x55, 0xbb, 0xeb, 0xe8, 0x69, 0xa0, 0x9a, ++ 0x4a, 0xef, 0xb5, 0xe7, 0x3d, 0x96, 0x78, 0x0a, 0xf0, 0x39, 0x7c, 0x8f, ++ 0xe6, 0x11, 0xfc, 0x89, 0x85, 0x61, 0x1e, 0x47, 0x7e, 0x43, 0x6b, 0x49, ++ 0x12, 0xbc, 0xff, 0x4e, 0x4d, 0x0a, 0xa7, 0xc3, 0x8a, 0x86, 0xbd, 0x66, ++ 0xaa, 0xe7, 0x50, 0x7b, 0xed, 0x7b, 0xda, 0x77, 0x62, 0xf9, 0x69, 0x46, ++ 0x79, 0x92, 0xa1, 0x3e, 0xaf, 0xb4, 0xad, 0x27, 0xc2, 0xa5, 0xdc, 0x12, ++ 0x7e, 0xc0, 0x1b, 0x87, 0x4e, 0x5b, 0x54, 0x6d, 0x9f, 0xe4, 0xef, 0xd4, ++ 0x13, 0x3e, 0xa0, 0xdb, 0xa1, 0xff, 0x3f, 0xe8, 0x89, 0xf3, 0x13, 0x7c, ++ 0x71, 0xe0, 0xf6, 0x98, 0xda, 0x45, 0x3f, 0x74, 0x8f, 0xa7, 0x1f, 0x96, ++ 0x2e, 0xf7, 0x74, 0x47, 0xf8, 0x2f, 0xdd, 0x95, 0xd7, 0x1d, 0x99, 0x63, ++ 0xe9, 0x6b, 0xe3, 0x33, 0xe2, 0xe9, 0x87, 0x77, 0x96, 0xf1, 0xfd, 0xc0, ++ 0xf7, 0x40, 0x9e, 0x61, 0xd9, 0x3e, 0x03, 0xf4, 0xc3, 0xf5, 0x3a, 0xfd, ++ 0x30, 0xc3, 0x46, 0xf4, 0x11, 0xdb, 0xef, 0x07, 0xea, 0x35, 0xea, 0x07, ++ 0x0d, 0x5f, 0xff, 0xc3, 0x72, 0xe6, 0x1d, 0xd4, 0x0f, 0x71, 0xf8, 0xba, ++ 0x5e, 0x35, 0xea, 0x87, 0xdb, 0x9a, 0xe7, 0x92, 0x7e, 0xb8, 0x6d, 0x86, ++ 0xcc, 0x3c, 0xba, 0x78, 0xdc, 0x0f, 0x55, 0xb1, 0xcf, 0x95, 0x50, 0x3f, ++ 0x14, 0x67, 0xdc, 0x41, 0x75, 0xd5, 0x9b, 0x14, 0x87, 0x6e, 0xde, 0x11, ++ 0x7e, 0x09, 0xc2, 0x15, 0x4b, 0xfc, 0x0e, 0xea, 0x89, 0x3d, 0x42, 0xee, ++ 0xc7, 0xea, 0x8b, 0x44, 0xf2, 0x7c, 0x9a, 0x59, 0x12, 0xfb, 0xd5, 0x57, ++ 0x91, 0xe7, 0xff, 0x97, 0xe0, 0xac, 0xc9, 0xf3, 0xa5, 0xe0, 0xbf, 0xa0, ++ 0x1d, 0xd8, 0x95, 0x0e, 0x19, 0xc9, 0xeb, 0xa5, 0x77, 0x80, 0x3c, 0x97, ++ 0x90, 0x1e, 0xb9, 0x3c, 0x5f, 0x7a, 0x97, 0x88, 0x4b, 0xc6, 0xc8, 0x57, ++ 0x3f, 0xca, 0xd7, 0x11, 0x7a, 0xf9, 0xca, 0xfb, 0x57, 0x05, 0xb8, 0x3e, ++ 0xa8, 0x6e, 0xca, 0x79, 0x7c, 0x16, 0xbc, 0xbf, 0xb3, 0x5e, 0xf5, 0x5a, ++ 0xa1, 0xfd, 0x9d, 0x9d, 0xf2, 0xb6, 0x50, 0x2f, 0x6f, 0xf7, 0x08, 0x79, ++ 0x0b, 0x70, 0xee, 0xed, 0x8e, 0x83, 0xdf, 0x99, 0xb3, 0x92, 0x98, 0xc7, ++ 0x28, 0xaf, 0xfa, 0xa2, 0x9c, 0x3a, 0x31, 0xec, 0x77, 0xf9, 0x3b, 0x91, ++ 0xee, 0x0f, 0xcb, 0xb4, 0x8f, 0xf8, 0x67, 0xa1, 0xc7, 0x0f, 0x0d, 0xfb, ++ 0xdd, 0x08, 0x8c, 0x9f, 0x77, 0x33, 0x2b, 0x44, 0x3f, 0x7f, 0x16, 0xf2, ++ 0xeb, 0xdc, 0xb2, 0xd0, 0x8c, 0x32, 0xe0, 0xe3, 0xd2, 0x7b, 0xb8, 0x3d, ++ 0x5c, 0xb9, 0x4d, 0x26, 0x38, 0x54, 0x35, 0x72, 0x3b, 0xaf, 0xaa, 0xaf, ++ 0x3d, 0xe4, 0x81, 0xfa, 0x84, 0x82, 0xaf, 0x68, 0x3f, 0x70, 0xf1, 0x2e, ++ 0xbe, 0x1f, 0x08, 0x80, 0x2a, 0x2f, 0xd6, 0xe1, 0x71, 0xf1, 0xe1, 0xb6, ++ 0xba, 0x6c, 0x7c, 0xbf, 0x41, 0xa2, 0xfd, 0xcc, 0xf9, 0xde, 0xc5, 0x14, ++ 0xc7, 0x67, 0xeb, 0x78, 0x9c, 0xd8, 0x0a, 0xff, 0xf0, 0xbc, 0x0e, 0x1f, ++ 0xc5, 0x91, 0x2b, 0x05, 0xbc, 0x16, 0x36, 0x6f, 0xa0, 0x78, 0xf3, 0xc2, ++ 0x90, 0x31, 0x0e, 0x5d, 0xd9, 0xf7, 0xe6, 0x53, 0xe8, 0x0f, 0x68, 0xf2, ++ 0x77, 0xf1, 0x96, 0x98, 0xf7, 0xde, 0x87, 0x69, 0xbf, 0xa2, 0x12, 0xe3, ++ 0xcd, 0x3a, 0x3f, 0x44, 0x16, 0xf6, 0xc3, 0xbd, 0x72, 0x38, 0x7f, 0x27, ++ 0xe6, 0x76, 0xfe, 0x9e, 0xfb, 0x55, 0xb1, 0xf8, 0xd7, 0xda, 0x75, 0xac, ++ 0xbf, 0xe2, 0xbf, 0xb9, 0xfe, 0x23, 0xb0, 0xfe, 0x11, 0xff, 0xfc, 0xf5, ++ 0x5f, 0xeb, 0xba, 0x55, 0xb3, 0xe0, 0xf7, 0x02, 0x36, 0x02, 0xf9, 0xe3, ++ 0xcf, 0x26, 0x1f, 0xf1, 0x7b, 0xf0, 0x75, 0x58, 0x3f, 0x7c, 0xe7, 0x9e, ++ 0x47, 0xfb, 0x75, 0xd7, 0xe7, 0x19, 0xa5, 0x09, 0xbe, 0x3c, 0x6c, 0x0a, ++ 0xd4, 0x65, 0x61, 0xbb, 0x2a, 0x89, 0xda, 0x2d, 0x58, 0xbf, 0xfd, 0x40, ++ 0x06, 0xd4, 0x67, 0x35, 0xb0, 0x61, 0x18, 0xa6, 0x5f, 0xb0, 0xce, 0xa8, ++ 0x17, 0x3b, 0xf4, 0x70, 0xa3, 0x87, 0xf4, 0xec, 0xac, 0x9a, 0xed, 0xd2, ++ 0xdd, 0xf9, 0x08, 0x6f, 0x56, 0x83, 0x74, 0x36, 0xaf, 0xc0, 0x12, 0xc0, ++ 0xfd, 0xd4, 0x23, 0xb6, 0x08, 0xc9, 0x2f, 0x8d, 0xee, 0xc6, 0x99, 0x39, ++ 0x3d, 0x8f, 0x15, 0xdf, 0x3d, 0xd1, 0x23, 0x52, 0x46, 0x7e, 0x44, 0x93, ++ 0xe4, 0x26, 0xbe, 0x08, 0xdb, 0xb8, 0x5f, 0x01, 0xf0, 0xb7, 0x41, 0x7d, ++ 0xff, 0x98, 0x2f, 0x27, 0x08, 0x78, 0x53, 0x3c, 0xa6, 0xba, 0x89, 0xe3, ++ 0xa7, 0x1a, 0xf0, 0x81, 0x7c, 0x35, 0xa1, 0x59, 0xd4, 0xb7, 0x70, 0x3b, ++ 0xec, 0x3b, 0xa0, 0x6f, 0x68, 0x3f, 0xac, 0x79, 0xaf, 0x8a, 0xfd, 0x2a, ++ 0xa0, 0x7d, 0x1a, 0xc9, 0x9b, 0x41, 0x86, 0x7d, 0x2e, 0xdc, 0x9f, 0x2b, ++ 0xce, 0xd0, 0xe1, 0x6d, 0xd7, 0x31, 0x4e, 0xb7, 0x9b, 0x25, 0x2f, 0x8b, ++ 0x83, 0xb7, 0x01, 0xf0, 0x4f, 0x5c, 0xbc, 0xfd, 0x93, 0xe8, 0x55, 0x83, ++ 0xc7, 0x38, 0xb3, 0xb0, 0xe7, 0x05, 0xfe, 0x8e, 0xd8, 0x5a, 0xcb, 0x87, ++ 0xd3, 0x3e, 0x94, 0xe4, 0xdd, 0x88, 0x8d, 0x9b, 0x53, 0x68, 0x1f, 0xe5, ++ 0x93, 0xfa, 0x3c, 0xc2, 0xe3, 0x24, 0x41, 0xbf, 0xb1, 0x74, 0x8d, 0xf6, ++ 0xbd, 0x47, 0x17, 0x4f, 0xba, 0x05, 0x27, 0x0e, 0xf2, 0x95, 0x4d, 0xb4, ++ 0x51, 0x9e, 0x1b, 0x7d, 0x37, 0x97, 0xdb, 0x3f, 0x7a, 0x79, 0x12, 0xeb, ++ 0x37, 0x57, 0xb3, 0x56, 0xb2, 0x63, 0x26, 0x4b, 0x81, 0x8f, 0x14, 0x5d, ++ 0x5e, 0xdb, 0x6d, 0x22, 0xff, 0x44, 0xdb, 0xa7, 0xd5, 0xb5, 0x7b, 0x5c, ++ 0xbd, 0x42, 0x3b, 0x96, 0xe9, 0x36, 0xa1, 0x9c, 0xbc, 0x5f, 0xcb, 0xb7, ++ 0xc4, 0xfc, 0xe1, 0x0c, 0xca, 0x5b, 0xa2, 0xdf, 0xfe, 0x5e, 0x85, 0xef, ++ 0xcd, 0x82, 0xf5, 0x5e, 0x5c, 0x23, 0x7b, 0x71, 0xff, 0xe7, 0x76, 0x93, ++ 0xe7, 0xdd, 0x22, 0xe4, 0xdf, 0x47, 0x54, 0x86, 0x74, 0x79, 0xf1, 0x90, ++ 0xea, 0xe3, 0x76, 0x67, 0x12, 0xc9, 0xdd, 0xb9, 0x87, 0x4f, 0xa8, 0x18, ++ 0x0a, 0x99, 0x0b, 0x30, 0x41, 0x7c, 0xcf, 0xfd, 0x01, 0x97, 0xaf, 0x27, ++ 0x70, 0x30, 0x78, 0xf6, 0x47, 0xd0, 0x5b, 0x3e, 0xdc, 0xab, 0x67, 0x0d, ++ 0x23, 0x31, 0x7f, 0x78, 0x86, 0x77, 0xef, 0x78, 0x0f, 0xe0, 0xe5, 0xd6, ++ 0x11, 0x47, 0x56, 0xe3, 0x3e, 0xdc, 0xf4, 0x52, 0xf7, 0xbb, 0xef, 0x22, ++ 0x7c, 0x1f, 0x96, 0x19, 0xc2, 0xf7, 0xf8, 0x9a, 0x52, 0xf2, 0x4f, 0xee, ++ 0xbf, 0x4f, 0x22, 0xba, 0x3e, 0x0a, 0x70, 0xc4, 0xfe, 0xb7, 0xce, 0xc8, ++ 0x79, 0xf7, 0x5d, 0xf8, 0xee, 0x5d, 0x6b, 0xd2, 0x69, 0x5f, 0x6d, 0x96, ++ 0xef, 0xc0, 0x78, 0xa4, 0xb3, 0x79, 0x53, 0x9d, 0x0e, 0xdc, 0x5f, 0x9b, ++ 0x34, 0x40, 0x66, 0x01, 0x1d, 0x1c, 0xef, 0x62, 0xad, 0xab, 0x51, 0x5e, ++ 0xcf, 0xaa, 0xb9, 0xef, 0x56, 0x9c, 0x6f, 0x05, 0xe8, 0x01, 0x8c, 0xb3, ++ 0x56, 0x34, 0x1f, 0x19, 0xdf, 0x1d, 0xeb, 0xeb, 0x25, 0xaf, 0x07, 0xc6, ++ 0xaf, 0x0e, 0x06, 0xcc, 0xdd, 0x01, 0x85, 0xad, 0xeb, 0xce, 0x9b, 0x31, ++ 0xde, 0x31, 0x1f, 0xda, 0x21, 0x7a, 0xaa, 0xd7, 0xf3, 0x76, 0xd5, 0x9b, ++ 0x24, 0xaf, 0x0d, 0xe9, 0xb1, 0xf9, 0x51, 0x92, 0x3b, 0xf3, 0x37, 0x49, ++ 0xcc, 0x8d, 0xed, 0xc1, 0xde, 0xb3, 0xf2, 0x71, 0x43, 0x56, 0x18, 0xb7, ++ 0x75, 0x3d, 0xf4, 0x87, 0xfa, 0x02, 0xec, 0x8f, 0xe3, 0x6e, 0x4a, 0xb9, ++ 0x0d, 0xf7, 0xd1, 0xaa, 0x0f, 0xc9, 0xbc, 0xff, 0xe8, 0xe5, 0xaf, 0xa2, ++ 0x5c, 0x9a, 0x0f, 0xfd, 0xe0, 0x35, 0x6b, 0xdd, 0x74, 0x1f, 0x8d, 0xb7, ++ 0x70, 0xbd, 0xc4, 0x32, 0x61, 0xbc, 0x8a, 0xd1, 0x39, 0x3f, 0x19, 0x8d, ++ 0xe3, 0x1d, 0x52, 0xbd, 0xf8, 0xfe, 0xbd, 0xbd, 0xbf, 0x32, 0xe3, 0xbc, ++ 0x67, 0xc3, 0xf7, 0xb2, 0x60, 0xfc, 0x79, 0x72, 0xdb, 0x78, 0x6c, 0xcf, ++ 0xbe, 0x27, 0xb9, 0x37, 0x53, 0xbc, 0x89, 0xe7, 0xc9, 0xb6, 0x0b, 0x3e, ++ 0x60, 0x6f, 0x67, 0x71, 0xfe, 0x92, 0x44, 0x5d, 0xd8, 0x81, 0x9a, 0x3e, ++ 0xfc, 0x83, 0x39, 0x97, 0xe8, 0x69, 0x7e, 0xed, 0xf2, 0x3a, 0x5c, 0x57, ++ 0x5b, 0x30, 0x3d, 0x07, 0x5d, 0xa0, 0xea, 0xa6, 0xf3, 0x66, 0xb4, 0xeb, ++ 0x3e, 0x01, 0x38, 0x07, 0xc0, 0x6e, 0x3b, 0x21, 0xf2, 0xd8, 0xf6, 0x07, ++ 0x4f, 0x98, 0xdb, 0x74, 0x72, 0x2a, 0x62, 0xce, 0xa3, 0xfe, 0xf7, 0x34, ++ 0x15, 0x13, 0x7f, 0xdf, 0xcb, 0xfc, 0xb4, 0xdf, 0x1d, 0x58, 0xce, 0xf5, ++ 0xf0, 0xb1, 0xd5, 0xb6, 0x90, 0x84, 0xf6, 0x87, 0xea, 0x26, 0x3d, 0xb9, ++ 0x7f, 0xf5, 0x75, 0xbf, 0xc4, 0xf5, 0x9f, 0x7b, 0x56, 0xa5, 0xfd, 0xd1, ++ 0x73, 0xbd, 0xda, 0x28, 0x1e, 0x7b, 0x72, 0xbd, 0xca, 0x82, 0x30, 0xc7, ++ 0x95, 0xeb, 0x65, 0x92, 0x1b, 0x27, 0xb7, 0xf1, 0x38, 0x90, 0xfc, 0x84, ++ 0x4a, 0xf5, 0x05, 0x0f, 0x9a, 0xa9, 0xbe, 0x7f, 0xfd, 0xf4, 0x09, 0x28, ++ 0x0f, 0x4f, 0x02, 0xfc, 0x91, 0x0e, 0x4b, 0x9f, 0x18, 0x6f, 0xc6, 0xfa, ++ 0x02, 0x90, 0xeb, 0x96, 0x38, 0xf2, 0x63, 0xbe, 0x67, 0x11, 0x97, 0x17, ++ 0x31, 0xf2, 0x61, 0xc1, 0x3a, 0x23, 0xff, 0x77, 0x91, 0x17, 0x0f, 0x4c, ++ 0xe0, 0xf2, 0x3d, 0x46, 0x1e, 0x54, 0xf6, 0xac, 0xa3, 0x38, 0x5f, 0xac, ++ 0x9c, 0xa8, 0x66, 0x0e, 0x4d, 0x3e, 0x14, 0x60, 0xbd, 0x35, 0x9c, 0x45, ++ 0xf4, 0x5b, 0x75, 0x48, 0x65, 0x68, 0xcf, 0x55, 0x29, 0xee, 0xd9, 0xeb, ++ 0x90, 0x6e, 0x66, 0xd9, 0x70, 0xa7, 0x18, 0xf8, 0x22, 0x7c, 0x00, 0xe5, ++ 0xda, 0xc5, 0x90, 0xe4, 0x09, 0xc2, 0xfb, 0xef, 0xcc, 0x79, 0x69, 0x24, ++ 0xc2, 0xef, 0x2f, 0x08, 0x6f, 0xe4, 0x8b, 0xb5, 0x69, 0xb4, 0x9f, 0x3a, ++ 0x3f, 0x34, 0x97, 0xe0, 0xaa, 0xe5, 0x13, 0x2e, 0x58, 0x67, 0xa4, 0x67, ++ 0x2d, 0x7f, 0xe9, 0x8e, 0x80, 0xcc, 0x7c, 0x7a, 0x3d, 0x50, 0x91, 0xc4, ++ 0x7c, 0xba, 0x76, 0xef, 0xfd, 0x00, 0xe8, 0x12, 0xbe, 0x37, 0xa7, 0x49, ++ 0x0a, 0xd9, 0x24, 0xac, 0x1f, 0x7b, 0xf5, 0xc1, 0x11, 0x54, 0x77, 0x23, ++ 0x1d, 0x56, 0xd5, 0x0a, 0x7d, 0xba, 0xd6, 0x49, 0x74, 0xfb, 0xde, 0xbf, ++ 0x9d, 0x5f, 0x8d, 0x74, 0x39, 0xfb, 0xfb, 0x12, 0xcd, 0x9f, 0x05, 0x03, ++ 0x75, 0xa8, 0x57, 0xaa, 0xd6, 0x49, 0x1e, 0x8c, 0x63, 0x2e, 0xf8, 0x3e, ++ 0xef, 0xbf, 0x00, 0xfa, 0x23, 0xbd, 0xbc, 0xf7, 0x2b, 0x4e, 0x3f, 0x40, ++ 0xc7, 0x1e, 0xa4, 0xf3, 0xaa, 0xf5, 0x8f, 0xbe, 0x4a, 0xed, 0x37, 0x49, ++ 0x1e, 0x1c, 0xff, 0xbd, 0x0d, 0x73, 0x49, 0xff, 0x56, 0x04, 0x65, 0x46, ++ 0xef, 0x37, 0x1d, 0x23, 0xfb, 0x18, 0xf4, 0x00, 0xe5, 0x01, 0xed, 0x0f, ++ 0xca, 0x19, 0x48, 0xe7, 0x55, 0xab, 0x2c, 0x6e, 0xc4, 0xa3, 0x46, 0x2f, ++ 0x1a, 0xfd, 0x1d, 0x53, 0xc5, 0x39, 0x01, 0xab, 0x77, 0xe8, 0x74, 0xe8, ++ 0xb7, 0xc1, 0xec, 0xa1, 0x75, 0xc7, 0xd2, 0x9d, 0x3c, 0x33, 0x87, 0xe8, ++ 0xab, 0x7a, 0x9b, 0x4a, 0xf4, 0x51, 0x1d, 0xe4, 0xf4, 0x74, 0xec, 0x59, ++ 0x99, 0xe8, 0x70, 0xff, 0xea, 0xdb, 0x89, 0x7e, 0xce, 0x6d, 0x96, 0x12, ++ 0xd0, 0x5f, 0xa9, 0x39, 0x0b, 0xe9, 0x2f, 0xc4, 0xdf, 0x77, 0xd0, 0xdf, ++ 0x33, 0x92, 0xa0, 0x3f, 0x4e, 0xd7, 0x27, 0x1f, 0xe0, 0xf4, 0x58, 0x8a, ++ 0xef, 0x91, 0xfe, 0x9e, 0x17, 0xf6, 0x29, 0x63, 0x0e, 0xbd, 0xdd, 0xa1, ++ 0xd1, 0x9f, 0x46, 0x4f, 0x57, 0xa3, 0xbb, 0x2e, 0x7a, 0x29, 0x01, 0xbd, ++ 0x81, 0x6d, 0x7c, 0x1b, 0xce, 0xeb, 0xfe, 0xd5, 0x36, 0x9a, 0x77, 0x69, ++ 0xdd, 0x4b, 0xb7, 0xd5, 0x12, 0xdf, 0xa8, 0xb4, 0x3f, 0x5f, 0x5a, 0xf7, ++ 0x6f, 0x19, 0xc8, 0xa7, 0xf3, 0x15, 0x9e, 0x87, 0xa1, 0xc1, 0xb1, 0x52, ++ 0xe1, 0x79, 0x3a, 0x5d, 0xe6, 0xf1, 0xf3, 0xe5, 0xe6, 0xac, 0x6b, 0x99, ++ 0x4f, 0xcc, 0x3c, 0xf6, 0x76, 0xea, 0xc5, 0x02, 0xd4, 0x8b, 0x98, 0x57, ++ 0x12, 0x86, 0xef, 0xfc, 0x6e, 0xdb, 0xd3, 0x94, 0xbf, 0x76, 0x76, 0xeb, ++ 0x31, 0xca, 0x4b, 0x5c, 0xfc, 0x0a, 0xe0, 0x1d, 0xda, 0x9f, 0xdb, 0xe6, ++ 0x64, 0x61, 0xb2, 0xa7, 0x43, 0x24, 0x5f, 0x16, 0x35, 0xca, 0x94, 0x17, ++ 0xca, 0x94, 0x70, 0xe1, 0x74, 0xdd, 0xf9, 0x11, 0x2d, 0xdf, 0x62, 0xf1, ++ 0x73, 0x4e, 0x82, 0xef, 0xa2, 0x1d, 0x96, 0x50, 0x39, 0xf4, 0x5f, 0xf4, ++ 0xc2, 0x89, 0xa1, 0xb4, 0x1f, 0xbe, 0x22, 0xf2, 0x2a, 0xf2, 0x4f, 0x70, ++ 0xab, 0xc4, 0xe3, 0xf2, 0xc1, 0xb6, 0xa1, 0xd3, 0x31, 0xaf, 0x52, 0xe1, ++ 0x79, 0x1f, 0xb1, 0x7a, 0x77, 0x8c, 0x85, 0xc7, 0x6b, 0xce, 0xbc, 0x94, ++ 0x34, 0x13, 0xed, 0x1f, 0x69, 0xcb, 0x5e, 0xda, 0x4f, 0x5a, 0xd4, 0x70, ++ 0xbb, 0x6a, 0xd1, 0xc5, 0x27, 0xbd, 0x16, 0x95, 0xbe, 0x0b, 0xed, 0x68, ++ 0x9f, 0x26, 0x08, 0x78, 0xc7, 0x7d, 0x44, 0x9c, 0xdf, 0x2d, 0x43, 0xf4, ++ 0xf3, 0x5b, 0xce, 0xc7, 0x7b, 0x86, 0xf3, 0xcd, 0xa2, 0x26, 0x95, 0xec, ++ 0xa2, 0x45, 0x5b, 0x36, 0x50, 0x5c, 0xaf, 0x7a, 0xcb, 0x79, 0xca, 0x7b, ++ 0x2d, 0x7d, 0xee, 0x59, 0x17, 0xc2, 0xa1, 0xba, 0x49, 0x36, 0xe6, 0x43, ++ 0x6d, 0x91, 0xc3, 0x16, 0xca, 0xd7, 0x92, 0x8f, 0x59, 0xb8, 0x7c, 0x32, ++ 0xe4, 0x25, 0x55, 0x35, 0xf2, 0x73, 0x19, 0x55, 0x0d, 0x22, 0xef, 0x27, ++ 0x26, 0x2f, 0x66, 0xf1, 0x73, 0xbb, 0x5e, 0x08, 0x02, 0x68, 0x16, 0xef, ++ 0xfc, 0x2f, 0x17, 0xf2, 0xd1, 0xe9, 0xd6, 0xcd, 0x2e, 0x84, 0x27, 0x8c, ++ 0x47, 0xf9, 0x44, 0x53, 0x47, 0x27, 0xc8, 0x37, 0xba, 0x5a, 0x9e, 0x51, ++ 0xc3, 0xc3, 0x71, 0xf3, 0x8c, 0x4e, 0xe3, 0x7f, 0x00, 0x81, 0xcc, 0xb6, ++ 0x18, 0xf3, 0x33, 0xd9, 0x16, 0x2e, 0xa7, 0x00, 0xeb, 0x85, 0xfe, 0x38, ++ 0xf1, 0x4c, 0xcd, 0x5e, 0x59, 0xfc, 0xec, 0xe7, 0x4f, 0x62, 0xde, 0xeb, ++ 0x99, 0x1d, 0x9f, 0x3d, 0x89, 0xf3, 0x5e, 0xf2, 0xbf, 0x2e, 0x3e, 0x89, ++ 0x79, 0x1b, 0x6c, 0xb7, 0xcd, 0x8d, 0xf6, 0x43, 0xf5, 0xd6, 0x77, 0x28, ++ 0x7f, 0x50, 0xeb, 0x57, 0x6b, 0x11, 0xfe, 0xcf, 0x33, 0xff, 0x45, 0x79, ++ 0x97, 0xe7, 0xde, 0xb7, 0x90, 0xfd, 0x77, 0x6e, 0xd7, 0xc9, 0xde, 0x68, ++ 0x1f, 0x9c, 0xdb, 0xfe, 0x55, 0x06, 0xe6, 0x53, 0x3e, 0xb0, 0x6b, 0x3c, ++ 0xc5, 0x1f, 0x1e, 0x78, 0xbe, 0xb4, 0x3b, 0x8b, 0xe3, 0xdf, 0x6a, 0x25, ++ 0xd2, 0x65, 0xe8, 0x1a, 0xf2, 0x3e, 0x63, 0xf1, 0xb0, 0xbf, 0x51, 0x0e, ++ 0x3b, 0x60, 0x9e, 0x67, 0x8f, 0x5a, 0x88, 0xbf, 0x3b, 0xf2, 0xc5, 0x1a, ++ 0x2a, 0x79, 0xfe, 0x9d, 0x47, 0xe4, 0x89, 0x6d, 0x8b, 0x9f, 0x57, 0xab, ++ 0xe5, 0x37, 0x55, 0x35, 0x4e, 0x9f, 0x3a, 0x0e, 0xe5, 0x5b, 0x23, 0xd7, ++ 0xe3, 0x1d, 0xf9, 0x4e, 0x57, 0xcb, 0x0f, 0x7b, 0x1b, 0xf0, 0x79, 0xfd, ++ 0x35, 0xe0, 0x6d, 0x9b, 0xc8, 0xff, 0x8b, 0xc1, 0xdb, 0x59, 0xfc, 0x0f, ++ 0xc0, 0xcf, 0x2f, 0x2c, 0xc6, 0xfc, 0xb0, 0xcf, 0x1b, 0xef, 0x7d, 0xea, ++ 0xd7, 0xf8, 0xae, 0x31, 0xfe, 0x79, 0x32, 0x8d, 0x8f, 0xaf, 0x06, 0x2f, ++ 0x2d, 0x6f, 0x77, 0x9e, 0xc5, 0x17, 0xb2, 0x20, 0xdf, 0xec, 0xf8, 0x0d, ++ 0xe5, 0xe1, 0x21, 0xbe, 0xca, 0x3d, 0xa8, 0xe7, 0x3f, 0xef, 0x8d, 0x71, ++ 0xcb, 0x4f, 0xd5, 0x08, 0xc5, 0x03, 0x23, 0xbb, 0x2c, 0x6e, 0xcc, 0xdb, ++ 0x5a, 0xb4, 0xeb, 0x3d, 0xe2, 0x8f, 0x73, 0xcf, 0x1f, 0xa1, 0xbc, 0x58, ++ 0x26, 0xf2, 0x67, 0xcf, 0xb1, 0x8e, 0x1f, 0xcf, 0x77, 0x14, 0x31, 0x89, ++ 0xea, 0x4d, 0x4e, 0x9e, 0x57, 0x26, 0xe0, 0x8e, 0x79, 0x67, 0x1e, 0x17, ++ 0x3d, 0x17, 0xf9, 0x65, 0x9c, 0x6e, 0xb5, 0xbc, 0xb3, 0x44, 0xf9, 0x66, ++ 0xef, 0x58, 0x72, 0xc5, 0xb9, 0x0b, 0x9e, 0x17, 0x57, 0xe9, 0x69, 0x35, ++ 0x23, 0xfc, 0xf5, 0x79, 0x68, 0xd2, 0x68, 0xc4, 0xd3, 0x31, 0x43, 0xfe, ++ 0x9e, 0xb6, 0xee, 0xd8, 0xf1, 0xdc, 0x08, 0x87, 0x51, 0xfa, 0xbc, 0xc9, ++ 0x44, 0xf9, 0x7c, 0xc2, 0x1e, 0xef, 0xc0, 0x13, 0x97, 0xc3, 0xe7, 0x36, ++ 0x88, 0x3c, 0xca, 0x8e, 0xfc, 0x48, 0xc6, 0x7a, 0x16, 0x60, 0xbe, 0x0f, ++ 0xd7, 0x77, 0xd5, 0x21, 0xe9, 0x3d, 0x16, 0x87, 0x1f, 0xb5, 0xbc, 0xc9, ++ 0xd6, 0x58, 0x7e, 0x0c, 0x5d, 0x5b, 0xbe, 0xe4, 0xd5, 0xe7, 0xfb, 0x8f, ++ 0xc1, 0x63, 0xbf, 0x85, 0xc7, 0x9f, 0x34, 0xb8, 0x9c, 0xb9, 0x1c, 0x5f, ++ 0x1e, 0x7f, 0x26, 0xf8, 0x1b, 0xfc, 0x92, 0xd3, 0x16, 0xdd, 0xb9, 0x94, ++ 0x39, 0xc2, 0x2f, 0xd1, 0xf2, 0xc8, 0xb4, 0xf9, 0xd6, 0x35, 0x70, 0xbd, ++ 0x7b, 0x66, 0x0b, 0xb7, 0x0b, 0x63, 0xf9, 0xb9, 0x4a, 0xc4, 0xdb, 0x63, ++ 0xbf, 0xf3, 0x95, 0xf8, 0x4e, 0x55, 0xd3, 0xde, 0xa1, 0x28, 0x77, 0xce, ++ 0xec, 0x7b, 0x49, 0xd0, 0x1b, 0xa7, 0xe7, 0xaa, 0x6d, 0xc7, 0xcc, 0x41, ++ 0x21, 0x9f, 0x43, 0x7a, 0xf9, 0x8c, 0xe3, 0xc5, 0x91, 0x27, 0xb2, 0x95, ++ 0x8f, 0x07, 0x7e, 0x6c, 0xdc, 0xf1, 0xaa, 0xb7, 0x9d, 0x8f, 0x3b, 0xde, ++ 0x69, 0xc5, 0x77, 0x3b, 0xce, 0xff, 0x74, 0x2b, 0xb7, 0x33, 0x4e, 0x37, ++ 0xc8, 0x13, 0x43, 0x71, 0xc6, 0x3f, 0x2b, 0xf4, 0x4f, 0xc7, 0xba, 0x9d, ++ 0x66, 0xf2, 0xab, 0x64, 0x97, 0x9d, 0xe4, 0xcf, 0x03, 0xce, 0xd1, 0x47, ++ 0x93, 0xbb, 0x61, 0x69, 0xa6, 0xfc, 0x85, 0x95, 0xcb, 0x45, 0xbe, 0xc3, ++ 0x0f, 0xbc, 0x99, 0x08, 0xe7, 0x95, 0xce, 0x9b, 0x19, 0xce, 0x67, 0x35, ++ 0xc2, 0x47, 0xe7, 0x67, 0xaa, 0xee, 0x00, 0x43, 0x3b, 0x47, 0xcd, 0xf4, ++ 0x8f, 0x40, 0xff, 0x49, 0x9b, 0xaf, 0xf6, 0xde, 0xdc, 0xcd, 0xc4, 0x42, ++ 0x7a, 0xfc, 0x2b, 0xc1, 0x9e, 0x18, 0x77, 0x9d, 0x92, 0xfb, 0xa5, 0x82, ++ 0xfa, 0xa5, 0x75, 0x99, 0xf1, 0x5c, 0x47, 0xab, 0xe2, 0x3e, 0x90, 0x06, ++ 0xe3, 0xb5, 0x96, 0x49, 0x5e, 0xb4, 0x67, 0xbb, 0xd2, 0x99, 0x71, 0xfc, ++ 0x5b, 0x7c, 0xb2, 0x21, 0x1e, 0x86, 0xb1, 0x67, 0x5c, 0xd7, 0x05, 0xaf, ++ 0x89, 0xf0, 0xe9, 0x34, 0x85, 0xdd, 0xd0, 0x84, 0x39, 0x6d, 0xad, 0x99, ++ 0xe4, 0xc8, 0x79, 0x98, 0x47, 0xc9, 0xa0, 0x94, 0x6e, 0xda, 0xdf, 0x7e, ++ 0x64, 0xd9, 0x96, 0x5e, 0x78, 0xce, 0xca, 0xc5, 0xbc, 0x12, 0xbe, 0x77, ++ 0x7a, 0x3b, 0xce, 0xb7, 0xd0, 0x78, 0xc9, 0x2c, 0x36, 0xcf, 0x9a, 0xbd, ++ 0xdd, 0xb7, 0x90, 0x89, 0x23, 0xc0, 0xf8, 0xde, 0xbd, 0x17, 0xe3, 0x12, ++ 0xf6, 0x01, 0x6c, 0x00, 0x9e, 0xdf, 0x71, 0x33, 0xbb, 0x17, 0xef, 0x57, ++ 0x78, 0x4c, 0x9c, 0x7b, 0x5c, 0xeb, 0x0c, 0x90, 0xbe, 0x4d, 0xc8, 0x37, ++ 0x5e, 0x7e, 0xee, 0x45, 0x8b, 0x13, 0x25, 0x8f, 0x56, 0x0c, 0xe7, 0x62, ++ 0x52, 0x7c, 0xc6, 0x7a, 0x5a, 0xcc, 0x39, 0x48, 0x4d, 0x5e, 0xd3, 0x11, ++ 0x3a, 0x80, 0xff, 0x04, 0x71, 0xef, 0x43, 0xca, 0x78, 0xbe, 0x7e, 0x8c, ++ 0x57, 0xf5, 0xcb, 0xe8, 0x9c, 0x6f, 0x4a, 0x3a, 0xf3, 0x86, 0xf1, 0xfd, ++ 0x64, 0x07, 0xe5, 0x33, 0x3b, 0x1c, 0x7c, 0x7e, 0xda, 0x7c, 0x61, 0x3e, ++ 0x24, 0x0f, 0x00, 0x4c, 0x7c, 0x3e, 0xf9, 0x6d, 0x41, 0xb4, 0xc3, 0x61, ++ 0x5e, 0x31, 0x7c, 0xcc, 0xe8, 0xdc, 0x13, 0xcc, 0xef, 0x78, 0xcc, 0xfc, ++ 0x0c, 0x76, 0xdc, 0x1d, 0x56, 0xa1, 0x1f, 0x14, 0xa6, 0xa0, 0x1c, 0x71, ++ 0x58, 0x5b, 0x99, 0x80, 0xf3, 0x05, 0x63, 0x9e, 0x69, 0x90, 0x61, 0xde, ++ 0x41, 0x72, 0x07, 0x5c, 0xe1, 0x3d, 0x8c, 0x93, 0x23, 0x4d, 0xb5, 0x60, ++ 0xde, 0x82, 0x1b, 0xbd, 0xe0, 0x3c, 0xfa, 0x5e, 0x4c, 0xbf, 0x9e, 0x6e, ++ 0xfd, 0x79, 0xb1, 0xeb, 0x85, 0xde, 0x28, 0xca, 0x64, 0xf9, 0x74, 0xae, ++ 0xb0, 0xb9, 0x1b, 0xc9, 0xad, 0xdc, 0xda, 0x12, 0x76, 0x02, 0xea, 0x52, ++ 0x3d, 0xa7, 0x8f, 0xbe, 0x6b, 0x19, 0xd1, 0x7d, 0xdf, 0x88, 0xc8, 0x63, ++ 0x59, 0x65, 0x27, 0x7b, 0x4c, 0xbb, 0x77, 0x40, 0x52, 0x58, 0x50, 0x2d, ++ 0xe8, 0xa4, 0x37, 0x80, 0xc8, 0x0a, 0x3c, 0x17, 0xaa, 0xac, 0x01, 0x9a, ++ 0x81, 0x7e, 0xcd, 0x91, 0x12, 0xd3, 0xbd, 0x00, 0xd4, 0x06, 0x7c, 0x05, ++ 0xe3, 0xdf, 0x6b, 0xf5, 0x3d, 0x68, 0x85, 0x76, 0x75, 0xb7, 0x04, 0x32, ++ 0x4d, 0xc3, 0x70, 0x39, 0xc5, 0xab, 0x5a, 0x8a, 0xe8, 0x14, 0xef, 0x40, ++ 0x8c, 0x30, 0x99, 0x96, 0xfb, 0x5a, 0x0e, 0xf6, 0x22, 0x51, 0xc3, 0xd8, ++ 0x0d, 0xf8, 0xde, 0xd7, 0x82, 0xb4, 0x5a, 0xaf, 0xd5, 0x41, 0x20, 0xe2, ++ 0x7d, 0x0b, 0xf5, 0xf6, 0x8e, 0xba, 0xcf, 0x0a, 0x72, 0xb2, 0x3e, 0x97, ++ 0xd7, 0x57, 0xae, 0xf1, 0xad, 0x5a, 0x03, 0xe3, 0xc9, 0x4e, 0xff, 0x4a, ++ 0x2b, 0xf2, 0xb1, 0xd5, 0x3d, 0x88, 0xf6, 0x2f, 0xc2, 0xd7, 0x76, 0xee, ++ 0x5d, 0x9b, 0xe7, 0x80, 0x4d, 0xe1, 0x52, 0x3b, 0x4c, 0xe2, 0xe6, 0x08, ++ 0x00, 0x14, 0xf0, 0xdf, 0x0f, 0x79, 0x90, 0xec, 0xe4, 0x56, 0x33, 0x12, ++ 0xc9, 0x66, 0x87, 0x56, 0x0f, 0x93, 0x1d, 0xed, 0x6f, 0x3c, 0x42, 0x7e, ++ 0x79, 0x65, 0xc3, 0x11, 0x7a, 0x6f, 0xc2, 0x3a, 0x94, 0x7d, 0xd2, 0xc2, ++ 0xa5, 0xd9, 0xb0, 0xce, 0x8d, 0xd6, 0x5b, 0xca, 0x32, 0x07, 0xc2, 0x78, ++ 0x8d, 0x73, 0x33, 0x4d, 0x20, 0xa2, 0x7f, 0x63, 0xbd, 0xa5, 0x45, 0x49, ++ 0xd7, 0xc3, 0xe1, 0x56, 0x03, 0x1c, 0x94, 0x15, 0xd3, 0x5b, 0x0e, 0x8e, ++ 0xd3, 0xc3, 0x61, 0x7a, 0x0b, 0xea, 0xeb, 0x6b, 0x85, 0xc3, 0x6f, 0xd6, ++ 0x4c, 0x5f, 0xb5, 0xa6, 0xe7, 0xb5, 0xaf, 0x3b, 0xcb, 0xe6, 0xdf, 0x8a, ++ 0x78, 0x99, 0x54, 0x6c, 0x22, 0x39, 0x35, 0xea, 0xa8, 0x83, 0xfc, 0x35, ++ 0xf8, 0xd9, 0x28, 0x3e, 0x25, 0xc6, 0xd9, 0x90, 0xe0, 0xdc, 0xa3, 0x66, ++ 0x8f, 0x6b, 0xed, 0x34, 0x3a, 0x4a, 0x44, 0x27, 0x79, 0xcc, 0x3d, 0x88, ++ 0xeb, 0x17, 0x23, 0xbd, 0xd4, 0x63, 0x7e, 0x37, 0xc6, 0xef, 0x02, 0x01, ++ 0x6f, 0xd9, 0xf0, 0x4e, 0x3a, 0x65, 0xee, 0xc0, 0x70, 0x3c, 0x9f, 0x9e, ++ 0x65, 0xbb, 0x3b, 0x6c, 0xd5, 0xc5, 0xf5, 0x26, 0x15, 0x2f, 0x95, 0x73, ++ 0x61, 0x3e, 0x94, 0x33, 0x03, 0xcf, 0xd3, 0x6b, 0x83, 0xb6, 0xfe, 0x40, ++ 0xa7, 0xe9, 0x3e, 0x13, 0xe5, 0x23, 0x67, 0xd9, 0x02, 0x07, 0x70, 0x5d, ++ 0xae, 0x99, 0x91, 0x30, 0xe6, 0xea, 0x8c, 0x62, 0x81, 0xfb, 0xa5, 0xbc, ++ 0x4e, 0x7a, 0xd7, 0xbe, 0x53, 0xb7, 0x8b, 0xfb, 0xa9, 0x75, 0x73, 0x4d, ++ 0xa1, 0x15, 0x24, 0x0f, 0xda, 0x24, 0x5c, 0x77, 0x27, 0xde, 0xdb, 0x62, ++ 0xf0, 0x1e, 0xe1, 0x78, 0x6f, 0x3a, 0x46, 0x78, 0xaf, 0x6a, 0x3e, 0xc6, ++ 0xf1, 0xde, 0xb4, 0xbc, 0xc4, 0x2e, 0xf6, 0x37, 0xd0, 0x0f, 0xac, 0x67, ++ 0x91, 0x61, 0x88, 0xcf, 0x0f, 0xd6, 0x54, 0x96, 0x29, 0x40, 0xd7, 0x7d, ++ 0x92, 0x22, 0x75, 0x48, 0x0f, 0x2a, 0x5b, 0x5c, 0x56, 0x6e, 0x23, 0xb8, ++ 0xbf, 0x8f, 0xeb, 0xe9, 0x02, 0x77, 0x31, 0x3f, 0x0d, 0xfe, 0x89, 0xf0, ++ 0x56, 0x7f, 0x30, 0xf7, 0x47, 0xf9, 0xe8, 0x27, 0x1d, 0x32, 0xd1, 0x7e, ++ 0x86, 0x06, 0xaf, 0x8e, 0x76, 0x36, 0x9e, 0x77, 0xb7, 0xc7, 0x1e, 0xf8, ++ 0x0b, 0x7e, 0xa7, 0x7a, 0x74, 0xdb, 0xab, 0x28, 0xde, 0x77, 0x1c, 0x7c, ++ 0x8b, 0xf6, 0xd5, 0x5d, 0x87, 0xa6, 0xed, 0xc5, 0xfe, 0xae, 0x19, 0x80, ++ 0x09, 0x4f, 0xe7, 0x77, 0xeb, 0x0f, 0xad, 0x28, 0x41, 0xfa, 0xaf, 0x8f, ++ 0x50, 0x58, 0x0d, 0xe4, 0x4c, 0x24, 0x88, 0x76, 0x47, 0x62, 0x78, 0x70, ++ 0xbe, 0xe8, 0x80, 0x47, 0xe3, 0x31, 0x82, 0x8f, 0x09, 0xeb, 0xf0, 0x7c, ++ 0xab, 0x38, 0x97, 0x52, 0xd4, 0x24, 0xf9, 0x50, 0xef, 0xf6, 0x49, 0x02, ++ 0xbb, 0x04, 0xca, 0xaf, 0xac, 0xdc, 0x2f, 0x74, 0xda, 0x64, 0x5a, 0x8f, ++ 0xd3, 0xc6, 0xf5, 0x7b, 0xfa, 0xa1, 0x7d, 0x32, 0xfa, 0x19, 0x45, 0xab, ++ 0x4c, 0xd4, 0x3e, 0x1d, 0xcb, 0x7c, 0xfd, 0xfa, 0x57, 0x89, 0x7e, 0x8a, ++ 0x21, 0xcf, 0x4c, 0xc3, 0xa7, 0x46, 0x47, 0x40, 0x38, 0x49, 0xb7, 0xc0, ++ 0x9c, 0xc7, 0x24, 0x07, 0xcc, 0xb6, 0x91, 0x7a, 0xba, 0x49, 0x4d, 0xca, ++ 0x85, 0xf7, 0xa3, 0x5a, 0xee, 0xbe, 0x1f, 0xf5, 0x9b, 0xd6, 0xef, 0x27, ++ 0xcb, 0x98, 0xf7, 0x1e, 0xdd, 0xf9, 0x72, 0xa0, 0x9f, 0x13, 0x06, 0x7a, ++ 0x1b, 0xa2, 0xda, 0x10, 0x6e, 0x5a, 0x7b, 0xa4, 0x4b, 0x7f, 0x9c, 0x7b, ++ 0x17, 0xa0, 0x5f, 0x37, 0x5b, 0x3a, 0xff, 0x0e, 0xc6, 0x55, 0xb7, 0xb7, ++ 0x2c, 0x95, 0xe9, 0x9c, 0xe2, 0x35, 0xe2, 0xb5, 0xd0, 0xc2, 0x6a, 0x70, ++ 0xfe, 0x85, 0x49, 0xac, 0x66, 0x07, 0xf4, 0x2f, 0x4c, 0x86, 0x12, 0xeb, ++ 0x69, 0xa2, 0xde, 0x5d, 0xd4, 0xb3, 0x45, 0xd9, 0x47, 0x3c, 0x1f, 0xcc, ++ 0xeb, 0x79, 0x1f, 0x7a, 0x4d, 0x92, 0x03, 0xe3, 0x34, 0x3c, 0x6e, 0x38, ++ 0xd4, 0x26, 0xf6, 0x73, 0x15, 0xf7, 0x20, 0xe4, 0xa3, 0xa1, 0x36, 0x1e, ++ 0x1f, 0x2f, 0xca, 0xb4, 0x93, 0xfc, 0xd7, 0xf8, 0x55, 0x01, 0x70, 0xe2, ++ 0x7e, 0xa3, 0x22, 0xf6, 0x1d, 0x73, 0x23, 0xb9, 0x26, 0xc4, 0xa3, 0xc6, ++ 0xbf, 0x4a, 0xc4, 0x14, 0x76, 0x82, 0x1e, 0xcc, 0x55, 0x3c, 0x26, 0xdc, ++ 0x7f, 0x7e, 0x7d, 0x19, 0xc0, 0x41, 0x49, 0x2c, 0x5f, 0x6e, 0x1e, 0xc8, ++ 0xcf, 0x8f, 0xc5, 0x3e, 0x1f, 0x6b, 0x33, 0x19, 0xce, 0x83, 0xfb, 0x3a, ++ 0xcf, 0x77, 0x8e, 0x45, 0x3c, 0x55, 0x5a, 0xdb, 0x7e, 0x32, 0x0d, 0xde, ++ 0x56, 0x0d, 0xbc, 0x48, 0xfb, 0x3f, 0x2b, 0x92, 0xaa, 0xc6, 0x5e, 0xe9, ++ 0x1c, 0x78, 0xec, 0x3c, 0x5e, 0xbf, 0xfc, 0xbb, 0x24, 0xa4, 0xaf, 0xe6, ++ 0xa8, 0x25, 0xee, 0x79, 0x91, 0x07, 0xc4, 0xfa, 0x0f, 0x2e, 0x9b, 0x49, ++ 0xfd, 0x1e, 0xd6, 0xce, 0x83, 0x08, 0xbb, 0xe5, 0x5b, 0x24, 0x9a, 0xa0, ++ 0xec, 0xcb, 0xe3, 0x47, 0x85, 0x96, 0xa0, 0x92, 0x8a, 0xfa, 0x2f, 0x89, ++ 0xc7, 0x3b, 0x0a, 0x93, 0xb8, 0x7e, 0x64, 0xdd, 0x73, 0xe8, 0x9e, 0x8c, ++ 0x42, 0xec, 0x8b, 0xc2, 0xfa, 0xba, 0x41, 0x94, 0xb7, 0x52, 0x98, 0x16, ++ 0x2a, 0xa7, 0xfa, 0xe0, 0x3c, 0xc6, 0xf3, 0x3e, 0x75, 0xf9, 0x85, 0x16, ++ 0xd6, 0x61, 0x5f, 0x11, 0xca, 0x73, 0x11, 0x9f, 0x81, 0x95, 0x78, 0xae, ++ 0x86, 0xc9, 0x39, 0x34, 0xfe, 0x8d, 0xcc, 0x68, 0x4f, 0x15, 0x66, 0xd7, ++ 0xec, 0xa7, 0xf7, 0x96, 0x1c, 0xda, 0x87, 0x62, 0x51, 0x6e, 0xdf, 0x68, ++ 0xf6, 0xd0, 0x78, 0xb1, 0xbf, 0x52, 0xd8, 0xa7, 0xbe, 0x8c, 0xe6, 0x99, ++ 0xcc, 0xc7, 0x29, 0x66, 0xc6, 0xf3, 0xc3, 0x85, 0xd7, 0x05, 0x15, 0xbc, ++ 0xe7, 0x82, 0xe5, 0xe5, 0xd0, 0xbc, 0x4a, 0xad, 0x31, 0xef, 0x07, 0xf3, ++ 0xfb, 0x45, 0xb4, 0x75, 0x8c, 0xef, 0x62, 0x47, 0xd5, 0x7b, 0xf1, 0x9e, ++ 0x91, 0x49, 0x03, 0xe6, 0x7a, 0xcb, 0xc4, 0xf3, 0x8b, 0xf0, 0x6f, 0x1f, ++ 0x0b, 0x9b, 0x73, 0x4b, 0x7e, 0xa7, 0x7c, 0xbf, 0xc9, 0x73, 0x87, 0xb7, ++ 0xcc, 0x60, 0x7f, 0xd4, 0x7b, 0x91, 0x0f, 0xdf, 0xf8, 0x5a, 0x9e, 0x13, ++ 0x6f, 0x1f, 0xfc, 0xb0, 0xe0, 0xfb, 0x83, 0xcb, 0xfc, 0x5e, 0xdc, 0x6f, ++ 0x7c, 0xce, 0x06, 0xf8, 0x00, 0xbf, 0xbb, 0xc4, 0x23, 0xad, 0x72, 0x7a, ++ 0xae, 0x0e, 0xbf, 0x58, 0xbc, 0xc5, 0xc2, 0xef, 0x5b, 0xcd, 0xf3, 0xc9, ++ 0x7e, 0x8b, 0x85, 0x5b, 0xf1, 0x87, 0xde, 0xb2, 0x54, 0x4f, 0x57, 0x38, ++ 0xc5, 0xc2, 0x65, 0x3c, 0xab, 0x1f, 0x40, 0xf7, 0xd7, 0x08, 0x38, 0xc7, ++ 0xc2, 0xe5, 0x75, 0x2b, 0xa7, 0x87, 0xd7, 0xf3, 0x2d, 0x21, 0xf4, 0x2f, ++ 0x5e, 0x57, 0x00, 0xce, 0x80, 0xaf, 0xd7, 0x3d, 0x12, 0xf9, 0x1b, 0x85, ++ 0xe2, 0x7e, 0x0d, 0x20, 0x72, 0x4e, 0x2f, 0x1a, 0xfd, 0x24, 0xe5, 0x70, ++ 0x7a, 0x49, 0x36, 0xc2, 0x3d, 0x16, 0xbe, 0xb1, 0xf0, 0xd4, 0xe4, 0xc0, ++ 0xab, 0x08, 0x2f, 0xca, 0x2f, 0xf1, 0x95, 0x8f, 0xcf, 0xe8, 0x5c, 0x7f, ++ 0x61, 0xf7, 0x9a, 0x96, 0x14, 0x1d, 0xbd, 0x68, 0xeb, 0x2f, 0xcc, 0x16, ++ 0x74, 0xba, 0xa7, 0x3f, 0x9f, 0x87, 0x26, 0x37, 0xae, 0x13, 0x72, 0x44, ++ 0xc8, 0x0f, 0xcd, 0x5e, 0x1e, 0x2f, 0xc6, 0x03, 0x7b, 0x99, 0xec, 0xe1, ++ 0xd2, 0x74, 0x27, 0xc5, 0x65, 0x4b, 0x2b, 0xf9, 0x38, 0xa5, 0xfd, 0x1c, ++ 0x1b, 0x31, 0xbf, 0x81, 0x85, 0x6f, 0xa4, 0x7c, 0xd9, 0x42, 0x26, 0x7e, ++ 0x51, 0x6e, 0xdf, 0x82, 0x3d, 0xca, 0xe9, 0xb3, 0x79, 0xc2, 0x29, 0xf4, ++ 0xaf, 0xfb, 0x58, 0x02, 0xab, 0x9c, 0x18, 0x87, 0x90, 0x52, 0x68, 0x5f, ++ 0x09, 0xe0, 0x7e, 0x3c, 0x06, 0xee, 0xc7, 0x8d, 0x70, 0x37, 0xda, 0xc9, ++ 0xb1, 0x70, 0x78, 0x0e, 0xff, 0x63, 0x4c, 0x57, 0x78, 0x69, 0xf4, 0xd6, ++ 0x62, 0x13, 0x76, 0x75, 0x0f, 0xd6, 0x13, 0xed, 0xde, 0xa1, 0x2f, 0x8d, ++ 0x48, 0x46, 0xf9, 0xcd, 0x9a, 0x53, 0xe3, 0xfa, 0xe9, 0xa3, 0x8e, 0xfa, ++ 0x3b, 0xc6, 0x11, 0x74, 0x4b, 0x74, 0x29, 0xb1, 0x40, 0xc7, 0x73, 0x37, ++ 0xd0, 0x41, 0xd3, 0x80, 0xd5, 0x8f, 0xa1, 0x39, 0x33, 0xd6, 0x5a, 0x2f, ++ 0x23, 0xfd, 0x8d, 0x65, 0xbe, 0x34, 0xbc, 0xcf, 0x04, 0x93, 0x64, 0x71, ++ 0x9e, 0xda, 0xbc, 0x86, 0x4b, 0xfe, 0x77, 0x50, 0x9e, 0x8d, 0x69, 0x9b, ++ 0x98, 0xa6, 0xbf, 0xdf, 0x44, 0xfb, 0xbe, 0x06, 0xe7, 0x71, 0x02, 0xce, ++ 0xe3, 0x58, 0x70, 0x2f, 0xc6, 0x51, 0xc6, 0x31, 0xe5, 0xaf, 0xfa, 0x78, ++ 0x83, 0x36, 0xde, 0x9f, 0x6c, 0x22, 0xde, 0x90, 0xcd, 0xb2, 0x71, 0x3d, ++ 0x45, 0xb8, 0x39, 0x90, 0xde, 0x39, 0x9e, 0xb6, 0xbe, 0x3e, 0x79, 0x2c, ++ 0x4c, 0xf7, 0xdf, 0x48, 0x56, 0x3a, 0xa7, 0x07, 0xff, 0x0b, 0x9a, 0x53, ++ 0x3b, 0xbf, 0xa7, 0xe5, 0x3f, 0x4f, 0x72, 0x4e, 0xfb, 0xd4, 0x46, 0x72, ++ 0xb8, 0x86, 0xf1, 0x3c, 0x9f, 0x30, 0x21, 0xb1, 0x48, 0xbc, 0x2f, 0x12, ++ 0xf7, 0x8c, 0xb1, 0x88, 0x92, 0xe8, 0x5e, 0x29, 0xf6, 0x4d, 0x52, 0xe7, ++ 0xfc, 0xbe, 0xb0, 0x49, 0x0a, 0xdd, 0x93, 0x21, 0xe6, 0x77, 0x76, 0x8b, ++ 0x35, 0x88, 0xf9, 0x46, 0x0f, 0x49, 0x81, 0x4b, 0xf8, 0x9d, 0x33, 0xd2, ++ 0xa1, 0xa1, 0xc4, 0xaf, 0x4a, 0xb8, 0x3f, 0xdd, 0x33, 0x11, 0xf3, 0xfe, ++ 0x62, 0x53, 0x4b, 0x15, 0xbe, 0x87, 0x76, 0xf3, 0xa9, 0x9d, 0x58, 0xd7, ++ 0x62, 0x99, 0xc7, 0x79, 0x23, 0xbb, 0x2c, 0x74, 0x9f, 0x4f, 0x42, 0xfb, ++ 0xd3, 0x0a, 0xaa, 0x4b, 0x27, 0x07, 0x8a, 0xec, 0x5c, 0x8e, 0x8c, 0xc7, ++ 0x78, 0x5f, 0x1e, 0xc9, 0x0b, 0x05, 0xcb, 0xdd, 0xe7, 0x79, 0xde, 0x78, ++ 0x71, 0x53, 0x81, 0x82, 0xdf, 0x39, 0x70, 0x81, 0xe7, 0x59, 0x97, 0x30, ++ 0x9f, 0x82, 0x7e, 0xd7, 0x8d, 0x51, 0xa3, 0xbf, 0x76, 0x55, 0x3a, 0x75, ++ 0xc7, 0xc6, 0x6f, 0xc4, 0xbd, 0x44, 0x4a, 0xa4, 0x37, 0xc2, 0x55, 0xb3, ++ 0xcb, 0xf2, 0xed, 0x81, 0xee, 0x76, 0xc0, 0xd7, 0x2a, 0x21, 0xdf, 0x9a, ++ 0xcf, 0x4f, 0xf0, 0x20, 0xbe, 0x36, 0x0e, 0x18, 0x79, 0xf3, 0x74, 0x68, ++ 0x92, 0x3b, 0x70, 0xf8, 0x34, 0x34, 0x2b, 0x4c, 0xd6, 0x56, 0x15, 0xf5, ++ 0xdd, 0x5d, 0x82, 0xae, 0x46, 0x23, 0x5d, 0x49, 0x64, 0xf5, 0x68, 0x74, ++ 0xe5, 0xb1, 0xa3, 0x1d, 0xbd, 0x26, 0x86, 0xae, 0xdc, 0xa9, 0x06, 0x3f, ++ 0x6e, 0x16, 0x0b, 0xd3, 0x81, 0xc7, 0xa2, 0x1a, 0xf5, 0x92, 0xc1, 0x1f, ++ 0x14, 0x76, 0x48, 0xac, 0x7d, 0xde, 0x69, 0x97, 0xd7, 0xc7, 0xf5, 0xe7, ++ 0x58, 0x0b, 0x38, 0xa8, 0x40, 0x3f, 0xb3, 0x05, 0x7c, 0x57, 0xa5, 0x98, ++ 0x83, 0x28, 0xb7, 0x94, 0xfb, 0x78, 0xbe, 0xcf, 0x5d, 0x8c, 0xf5, 0xc6, ++ 0x3c, 0xa0, 0xbb, 0x6a, 0x54, 0x83, 0xff, 0x39, 0x3b, 0x45, 0x21, 0xfc, ++ 0xcd, 0x5e, 0x6e, 0xa3, 0x3c, 0x4f, 0xbc, 0x37, 0x6a, 0x2e, 0xd4, 0x03, ++ 0xf0, 0x9c, 0xce, 0x35, 0x0c, 0xe0, 0xf7, 0x48, 0x75, 0xe0, 0xb3, 0x56, ++ 0xd7, 0x1f, 0xe9, 0xc0, 0x91, 0x41, 0x74, 0x3b, 0x5b, 0xec, 0x87, 0xff, ++ 0x49, 0xe2, 0x7e, 0xf8, 0xec, 0x94, 0x4f, 0xd2, 0xc9, 0x69, 0x0f, 0xaa, ++ 0x17, 0xf4, 0xf4, 0x19, 0xfb, 0xfd, 0x84, 0xe3, 0xc6, 0xf4, 0x5b, 0x25, ++ 0xf1, 0x78, 0xce, 0x2a, 0xd5, 0x97, 0xe9, 0xd5, 0xd9, 0x1b, 0x13, 0xed, ++ 0xdc, 0x7e, 0xba, 0xe0, 0x2e, 0x5b, 0x67, 0xba, 0xc2, 0xfd, 0x06, 0x01, ++ 0x6b, 0x8f, 0x7c, 0x45, 0x77, 0x1f, 0x50, 0x5b, 0x8a, 0x75, 0x66, 0xbc, ++ 0x7b, 0x24, 0xb4, 0xf1, 0x34, 0x7b, 0xaf, 0x28, 0xc0, 0xfd, 0xf0, 0x44, ++ 0xe3, 0xf6, 0x8d, 0x94, 0x91, 0x1d, 0x66, 0xfa, 0x79, 0x58, 0x46, 0xfb, ++ 0xba, 0x6f, 0x84, 0x91, 0x3d, 0x5c, 0x14, 0xf1, 0x99, 0xe6, 0x19, 0xec, ++ 0x72, 0xee, 0x8f, 0x76, 0xb1, 0xcb, 0xf1, 0x3e, 0x03, 0xa8, 0x2f, 0x69, ++ 0xdc, 0xcb, 0xed, 0xf2, 0x86, 0xe5, 0x64, 0xdf, 0x2f, 0x01, 0xfb, 0x1e, ++ 0xe5, 0xf9, 0x06, 0xdc, 0xf3, 0xec, 0xc1, 0xf8, 0x84, 0xf2, 0xc9, 0x5e, ++ 0xef, 0xf0, 0x2b, 0x31, 0xbf, 0xa5, 0xa8, 0x41, 0xea, 0xf0, 0x3b, 0x15, ++ 0xc0, 0x7b, 0x5e, 0x3d, 0x6f, 0xbf, 0xea, 0x91, 0x71, 0xea, 0xc3, 0x0a, ++ 0xfa, 0x85, 0x81, 0x4c, 0xd5, 0x8b, 0xe1, 0x81, 0x92, 0xd5, 0x56, 0xf0, ++ 0x73, 0xea, 0x72, 0x98, 0x8d, 0x81, 0x9f, 0xb3, 0xc2, 0x5e, 0x32, 0x7e, ++ 0x2d, 0xfa, 0xa5, 0xa9, 0x3e, 0x89, 0xa5, 0x50, 0x7d, 0xb5, 0x23, 0xeb, ++ 0xda, 0xfd, 0xd8, 0x55, 0xf6, 0xe2, 0xd5, 0xe8, 0xc7, 0x26, 0xf2, 0x27, ++ 0xab, 0xed, 0x1e, 0x82, 0x5f, 0x22, 0x7f, 0x52, 0x76, 0xfa, 0x57, 0xd9, ++ 0x75, 0x71, 0x00, 0x90, 0x8b, 0x71, 0xed, 0x8f, 0x49, 0xce, 0x92, 0x35, ++ 0xd8, 0x4e, 0x93, 0x17, 0x0f, 0x9b, 0xc2, 0x79, 0x3f, 0xed, 0x46, 0xf9, ++ 0x41, 0x94, 0x5f, 0x71, 0x73, 0xed, 0xdd, 0x64, 0xef, 0x4f, 0xae, 0xad, ++ 0xf0, 0xe2, 0x95, 0x6e, 0xed, 0xfb, 0x2e, 0xf7, 0xc7, 0xfc, 0x8a, 0x22, ++ 0x81, 0xef, 0x5f, 0xd8, 0xb9, 0x3d, 0x59, 0x9d, 0xc4, 0xed, 0x48, 0x49, ++ 0x0a, 0xfc, 0x02, 0xf9, 0xb3, 0x75, 0xc0, 0xd3, 0x6b, 0x0b, 0x80, 0x3f, ++ 0x66, 0x35, 0xf1, 0xbc, 0x0d, 0xdb, 0x75, 0x97, 0x7b, 0xd3, 0x7d, 0x40, ++ 0x23, 0x9f, 0xfe, 0x79, 0x01, 0x8c, 0xff, 0x51, 0x44, 0xa1, 0xf8, 0x42, ++ 0xb3, 0x93, 0xc7, 0x9b, 0x3f, 0x62, 0x12, 0xd9, 0xab, 0x45, 0x47, 0x2c, ++ 0xfe, 0x46, 0xc0, 0xc3, 0x65, 0x90, 0x50, 0x76, 0x9d, 0xdf, 0x72, 0x99, ++ 0x95, 0x51, 0x9d, 0xf5, 0xcc, 0x30, 0x9c, 0x0f, 0xfe, 0x88, 0xed, 0xcd, ++ 0xfb, 0x29, 0x7c, 0x27, 0x58, 0xc3, 0xf3, 0x94, 0x2e, 0xd4, 0xe4, 0x24, ++ 0x23, 0xde, 0x9b, 0x55, 0x63, 0xfc, 0x77, 0xab, 0x9d, 0xe7, 0xb7, 0x6d, ++ 0x15, 0xf4, 0x37, 0x0b, 0xef, 0x8d, 0x1c, 0x8e, 0xed, 0xc2, 0xd9, 0x78, ++ 0x7f, 0xcb, 0x2c, 0x25, 0xac, 0x52, 0x7e, 0x46, 0xd4, 0xcc, 0xef, 0x39, ++ 0x84, 0x79, 0xe0, 0x7c, 0x9a, 0x6d, 0xc6, 0x71, 0x76, 0xda, 0xb9, 0xdf, ++ 0xb5, 0xd3, 0xce, 0xed, 0xf8, 0x59, 0xe2, 0xde, 0xc9, 0x66, 0x5b, 0xec, ++ 0x38, 0x0a, 0x1f, 0x5f, 0xdc, 0x33, 0x17, 0x0b, 0xf7, 0x34, 0x7b, 0xe9, ++ 0x8b, 0xb8, 0x9e, 0xcb, 0xcc, 0xd7, 0x44, 0x78, 0x02, 0x79, 0x85, 0x7a, ++ 0xa1, 0x68, 0x44, 0xcb, 0x51, 0xb4, 0x17, 0xae, 0xae, 0x7f, 0x7c, 0x12, ++ 0xea, 0x9f, 0xea, 0xcb, 0x52, 0xb8, 0x0f, 0xc6, 0xa7, 0x1b, 0x55, 0xf2, ++ 0xdf, 0xcf, 0x88, 0x73, 0xe2, 0x67, 0x1b, 0xf7, 0x67, 0xdc, 0x0d, 0x65, ++ 0xe5, 0xf6, 0x3f, 0xb8, 0xd0, 0xdf, 0x7b, 0x4d, 0xe0, 0xe9, 0xac, 0xd2, ++ 0x4a, 0xf7, 0xbc, 0x2c, 0x79, 0x5e, 0xa6, 0x7b, 0x0a, 0xe0, 0xbb, 0x19, ++ 0xdf, 0xa1, 0xfe, 0xf3, 0x0a, 0xf9, 0x39, 0x2b, 0x7e, 0x4e, 0x48, 0xd3, ++ 0xcb, 0x05, 0x5f, 0xef, 0xcf, 0xf6, 0xf3, 0xe0, 0x20, 0x9d, 0xfb, 0xd1, ++ 0xec, 0xce, 0x71, 0xd6, 0x60, 0x08, 0xe7, 0xd7, 0xbc, 0x5c, 0x26, 0xb9, ++ 0x01, 0x7a, 0xdb, 0x70, 0xef, 0xcf, 0x8d, 0xe2, 0xde, 0x9f, 0x58, 0x7b, ++ 0xf4, 0x63, 0xbb, 0x16, 0x67, 0xce, 0xa0, 0xbc, 0x9f, 0x07, 0xdc, 0xfc, ++ 0x3b, 0x89, 0xf8, 0xbf, 0x28, 0x9a, 0xca, 0x42, 0x3a, 0xf9, 0x50, 0xa4, ++ 0x84, 0x65, 0x9c, 0x7f, 0x51, 0x34, 0x83, 0x85, 0x00, 0xbe, 0x67, 0x0f, ++ 0xe6, 0x3e, 0x56, 0x8e, 0xf4, 0xca, 0x54, 0x6f, 0x3f, 0x1c, 0x56, 0x61, ++ 0x2d, 0x64, 0x0f, 0x8b, 0xfd, 0x1b, 0xf8, 0xb5, 0xe0, 0xfd, 0x74, 0xbb, ++ 0x45, 0x65, 0x4f, 0xe3, 0xc5, 0xe9, 0x63, 0x89, 0xf9, 0xdc, 0xab, 0x06, ++ 0x43, 0x9b, 0x6f, 0x85, 0x03, 0xdd, 0xc8, 0x3e, 0xc6, 0x10, 0x68, 0x61, ++ 0xa7, 0xdd, 0x77, 0x63, 0xd4, 0x18, 0x57, 0x8d, 0xb5, 0x93, 0x4b, 0x9a, ++ 0x87, 0xad, 0x42, 0x93, 0xf2, 0x0c, 0x3e, 0x40, 0xfa, 0x8b, 0xf0, 0x7b, ++ 0x91, 0xba, 0xd8, 0xcf, 0x91, 0x09, 0x71, 0xed, 0x66, 0xc6, 0x1e, 0x25, ++ 0x38, 0x14, 0x3c, 0x9f, 0x37, 0x09, 0xef, 0x7b, 0x29, 0x78, 0xcd, 0xe4, ++ 0xc6, 0xef, 0xee, 0x41, 0xbe, 0xc6, 0x78, 0x7e, 0xe3, 0x45, 0xba, 0x8f, ++ 0xa4, 0x8a, 0x85, 0x6f, 0xc3, 0xf7, 0x55, 0x8d, 0xb2, 0x3b, 0xcc, 0xae, ++ 0x14, 0xcf, 0x5a, 0xf5, 0xc6, 0x8d, 0x30, 0x8f, 0x3d, 0x11, 0xc5, 0x83, ++ 0xfc, 0xbf, 0x27, 0xd2, 0x62, 0x1d, 0x4a, 0x75, 0x13, 0xc5, 0x31, 0x8a, ++ 0x0e, 0x17, 0x0d, 0x46, 0xbe, 0x6d, 0x8e, 0x28, 0x14, 0xff, 0x2f, 0x3a, ++ 0xdf, 0x92, 0x34, 0x2f, 0xbf, 0xd3, 0x7e, 0x69, 0xbe, 0x6c, 0xa2, 0xe7, ++ 0x7b, 0x2e, 0xef, 0xa3, 0xe7, 0xda, 0xb8, 0xcd, 0x91, 0xd4, 0xc1, 0xa8, ++ 0x8f, 0xb7, 0x9b, 0xb8, 0x3f, 0xdd, 0xf2, 0xea, 0xa5, 0x24, 0x94, 0xa7, ++ 0x7b, 0x2e, 0x5f, 0x48, 0xe3, 0xf7, 0x0f, 0x2d, 0xd7, 0xee, 0x05, 0x8a, ++ 0xb5, 0x9b, 0x09, 0x2e, 0xa5, 0x4e, 0xb9, 0x23, 0xce, 0xac, 0xb7, 0xd3, ++ 0x99, 0x5c, 0xf4, 0x36, 0xe6, 0x2b, 0x8d, 0x4f, 0x56, 0x99, 0x4c, 0x78, ++ 0xe0, 0xfe, 0x66, 0x17, 0xfb, 0xe3, 0x43, 0xb6, 0xca, 0xc9, 0xba, 0xda, ++ 0x21, 0x25, 0x68, 0xd7, 0xc8, 0x71, 0xec, 0x91, 0x4e, 0x78, 0x1b, 0xec, ++ 0xe7, 0xfe, 0x49, 0xc2, 0x7e, 0xec, 0xc5, 0x0a, 0xf0, 0x3e, 0xb7, 0xa6, ++ 0xcb, 0x69, 0x8b, 0xe9, 0x5c, 0x67, 0x73, 0x92, 0x7b, 0x05, 0xc5, 0x9d, ++ 0xb8, 0xfd, 0xd0, 0xde, 0x72, 0xfa, 0x67, 0x93, 0xf0, 0xf9, 0x21, 0x99, ++ 0x9f, 0xeb, 0xbf, 0x2c, 0x13, 0x3f, 0xed, 0xdb, 0xbd, 0xb8, 0x4f, 0x9b, ++ 0x43, 0x0f, 0xef, 0x3a, 0xc2, 0xdf, 0x17, 0x59, 0xe7, 0xcf, 0xbd, 0x02, ++ 0xed, 0xbf, 0x38, 0x60, 0xa7, 0x78, 0x39, 0x53, 0xbc, 0x83, 0xe3, 0xc5, ++ 0x45, 0x3a, 0xe3, 0xc4, 0xe1, 0x1e, 0x7c, 0x7f, 0x2b, 0xd8, 0x83, 0xdf, ++ 0x3f, 0xc3, 0xe3, 0x00, 0xdf, 0xea, 0x8c, 0x03, 0x14, 0x25, 0x8d, 0xe4, ++ 0xf7, 0x37, 0xa1, 0x5a, 0xea, 0xbf, 0xfe, 0x98, 0x19, 0xe3, 0x28, 0x7b, ++ 0xec, 0xfe, 0x6f, 0x25, 0x11, 0xdf, 0x34, 0x24, 0xa1, 0x9c, 0xa8, 0xb0, ++ 0x73, 0xb9, 0x14, 0x64, 0x25, 0xd9, 0x60, 0x24, 0xb1, 0xe7, 0x0f, 0x9a, ++ 0x4a, 0x90, 0x4e, 0x46, 0x2c, 0xf7, 0x10, 0xbe, 0xb7, 0xaa, 0x60, 0x4a, ++ 0x21, 0x5f, 0x6c, 0xe6, 0x7e, 0xfb, 0x56, 0x3c, 0x07, 0x0a, 0xe3, 0x2c, ++ 0x6c, 0xa8, 0x37, 0xe7, 0xe8, 0xf0, 0xbb, 0x50, 0xec, 0x37, 0x7d, 0xaa, ++ 0x06, 0x7b, 0xa7, 0xea, 0x9e, 0xff, 0x3e, 0x89, 0xfb, 0xa5, 0x9f, 0x1e, ++ 0x58, 0xf4, 0x14, 0xe5, 0x23, 0xbc, 0x6f, 0x61, 0xfd, 0xe2, 0xd8, 0x9f, ++ 0xa1, 0x24, 0x2e, 0x07, 0x77, 0x9a, 0x83, 0x93, 0xb6, 0x61, 0xbb, 0xe3, ++ 0x26, 0x3a, 0xe7, 0xd1, 0xf2, 0xea, 0xcb, 0xaf, 0xf6, 0x00, 0xfc, 0x2e, ++ 0x3c, 0xea, 0x19, 0x86, 0xf2, 0x7f, 0x59, 0x92, 0x87, 0xe0, 0xd5, 0x74, ++ 0x68, 0x6b, 0x5d, 0x0f, 0x68, 0xd7, 0xf4, 0x21, 0x6a, 0x49, 0x30, 0xb9, ++ 0x37, 0xcd, 0x95, 0x4d, 0xf0, 0xdd, 0x57, 0x98, 0x87, 0xc7, 0xf3, 0xde, ++ 0x36, 0xd1, 0x7c, 0x3b, 0xe2, 0x9f, 0x60, 0x07, 0xe2, 0x7a, 0x7f, 0x20, ++ 0xe6, 0xf3, 0xca, 0x41, 0x93, 0x61, 0xff, 0xea, 0x15, 0x3b, 0xd7, 0x6b, ++ 0x95, 0x49, 0x2a, 0xbd, 0x9f, 0x97, 0xc4, 0xe3, 0x69, 0x3b, 0x0e, 0x96, ++ 0xa4, 0x61, 0xfe, 0xe9, 0x1e, 0x7b, 0x60, 0x3e, 0xc2, 0xb3, 0xfa, 0x93, ++ 0xb6, 0x3a, 0x97, 0xa7, 0x33, 0xfe, 0xa7, 0xd9, 0x81, 0x63, 0xde, 0xde, ++ 0x31, 0x69, 0x08, 0xfc, 0xe7, 0x98, 0x33, 0x26, 0x37, 0xa2, 0xcf, 0xf3, ++ 0xf6, 0x46, 0x19, 0xd7, 0xeb, 0xf9, 0x94, 0xb1, 0x14, 0xa9, 0x6b, 0x7c, ++ 0x0a, 0xc6, 0xab, 0x41, 0x3c, 0x68, 0xe3, 0xbd, 0x72, 0x86, 0x8f, 0x07, ++ 0xf3, 0xd8, 0x87, 0xfc, 0x16, 0x59, 0xce, 0xdc, 0x94, 0x97, 0xc9, 0xfc, ++ 0x3f, 0xca, 0x87, 0xfa, 0x2b, 0xad, 0x4a, 0x2a, 0xe6, 0x2d, 0x6d, 0x15, ++ 0xfb, 0xaa, 0x1a, 0x1e, 0xb4, 0xf5, 0x68, 0xf3, 0xf0, 0x34, 0x30, 0xdf, ++ 0x06, 0x07, 0xb1, 0x86, 0x6f, 0xc7, 0x95, 0xe2, 0xcc, 0x22, 0x3f, 0x72, ++ 0xb8, 0x90, 0x9b, 0x5f, 0xdb, 0x7d, 0xc1, 0x24, 0x1e, 0x07, 0x24, 0x7b, ++ 0xfb, 0xd3, 0x03, 0x76, 0xb2, 0xbb, 0x76, 0x8a, 0x78, 0x35, 0xcb, 0x9c, ++ 0xdb, 0x07, 0xe1, 0xa7, 0xe1, 0x69, 0xbd, 0x28, 0x63, 0xe7, 0x93, 0xe8, ++ 0xfb, 0x8f, 0x27, 0x71, 0xbd, 0xa1, 0x95, 0x5b, 0x55, 0x4f, 0x90, 0xe8, ++ 0xe1, 0x79, 0xae, 0x6f, 0xb7, 0x3a, 0xc3, 0xd6, 0x3c, 0x94, 0x7f, 0x2f, ++ 0xe5, 0x51, 0xdd, 0x13, 0x0c, 0x26, 0x0d, 0xc5, 0x3c, 0xa8, 0xa6, 0x7e, ++ 0x5e, 0xdc, 0xef, 0xc3, 0xfc, 0xcf, 0x24, 0xdd, 0x3e, 0xeb, 0x38, 0x41, ++ 0xe7, 0x9e, 0x86, 0x88, 0x39, 0x47, 0x87, 0x87, 0xc4, 0x72, 0x8d, 0xc3, ++ 0xbd, 0x83, 0x7e, 0x94, 0x06, 0xa2, 0xab, 0xa6, 0xa3, 0x8c, 0xf8, 0x6d, ++ 0xd1, 0x96, 0xfb, 0x78, 0x7c, 0x11, 0xe4, 0x81, 0xb8, 0xcf, 0x89, 0xf6, ++ 0x8f, 0x91, 0x2f, 0xc4, 0x3e, 0x72, 0x96, 0xc4, 0x4b, 0x17, 0xf2, 0xc9, ++ 0x98, 0xe6, 0x0d, 0x2b, 0xb3, 0x3d, 0x74, 0xbe, 0x80, 0xf6, 0x6d, 0x35, ++ 0x38, 0x78, 0x90, 0x2f, 0xa0, 0xdc, 0x2d, 0xf0, 0x82, 0x70, 0xc1, 0xf7, ++ 0x2f, 0x89, 0x75, 0x6b, 0xef, 0x5f, 0x14, 0xf0, 0x1b, 0x2f, 0xe7, 0x27, ++ 0xeb, 0xf3, 0x11, 0x63, 0xcb, 0x3d, 0xcb, 0x32, 0x29, 0xa6, 0xa8, 0xd5, ++ 0x5f, 0x12, 0xf3, 0x5f, 0xc8, 0x1e, 0x25, 0x3b, 0x74, 0xe1, 0xe5, 0x7a, ++ 0xb2, 0x4f, 0x3d, 0x35, 0xbc, 0x5c, 0xf8, 0x00, 0x2f, 0xfb, 0xaf, 0x9f, ++ 0x6b, 0xc6, 0xf8, 0xef, 0xc2, 0x75, 0xf1, 0xef, 0xad, 0x1b, 0x95, 0xc4, ++ 0xed, 0x97, 0xb3, 0x82, 0x0f, 0x98, 0xc9, 0xde, 0x03, 0xf3, 0x39, 0x3a, ++ 0xf4, 0x63, 0x12, 0xd7, 0xaf, 0xa7, 0x1a, 0x1f, 0xdb, 0x9f, 0x4d, 0xfa, ++ 0x24, 0xf0, 0x2a, 0xd2, 0xc7, 0x0d, 0x4d, 0x8f, 0xfe, 0x12, 0xc1, 0xa4, ++ 0xd1, 0xff, 0xa9, 0x4d, 0x2a, 0xf5, 0xd7, 0xe4, 0x88, 0xd6, 0xff, 0x0d, ++ 0x31, 0xfe, 0xf3, 0x6f, 0x73, 0xfe, 0x19, 0xb3, 0x49, 0x2d, 0xc1, 0x7b, ++ 0x8c, 0xc6, 0x04, 0x99, 0x1b, 0xe3, 0xe4, 0xaf, 0x6c, 0xda, 0x2c, 0xa3, ++ 0x5c, 0x7f, 0x05, 0xf9, 0x23, 0x87, 0xcb, 0x0d, 0xd4, 0xc7, 0x9f, 0x1e, ++ 0x78, 0x24, 0xe9, 0x21, 0xa4, 0x83, 0x63, 0x26, 0x86, 0xf1, 0xf8, 0x9d, ++ 0x66, 0x56, 0xb1, 0x5d, 0x87, 0xdf, 0x96, 0x0d, 0x2f, 0x1a, 0xe4, 0xc1, ++ 0xa2, 0x2d, 0xcb, 0x27, 0xe1, 0x38, 0xa3, 0xda, 0x52, 0x25, 0x94, 0xff, ++ 0x9a, 0x1c, 0xd0, 0xf0, 0xbd, 0xd3, 0xec, 0xbd, 0x89, 0xe4, 0xc9, 0x94, ++ 0x18, 0x79, 0x52, 0xc6, 0xfb, 0x47, 0x05, 0x3c, 0x1f, 0x13, 0xf2, 0xe4, ++ 0xb1, 0x89, 0x20, 0x4f, 0xe0, 0x51, 0xca, 0xa6, 0x14, 0x09, 0xc7, 0xd9, ++ 0x69, 0x8e, 0x7f, 0xaf, 0xd5, 0x67, 0x1a, 0xdf, 0x09, 0x7a, 0x1c, 0xdb, ++ 0x29, 0x77, 0x3f, 0xe3, 0x72, 0xb7, 0xcd, 0x95, 0x07, 0xe3, 0x54, 0x4d, ++ 0xbe, 0x40, 0xf1, 0xd7, 0x8e, 0xef, 0x08, 0xba, 0x7b, 0xac, 0x4c, 0xa3, ++ 0xbb, 0x1c, 0x09, 0xe1, 0x08, 0xf6, 0xbc, 0xa9, 0x2f, 0xae, 0x1b, 0xe0, ++ 0x83, 0xf4, 0x0f, 0xf6, 0xfc, 0x9c, 0x69, 0xf9, 0xc4, 0xa5, 0x07, 0x15, ++ 0xda, 0xf7, 0x11, 0xfb, 0x48, 0x22, 0x6f, 0x82, 0x38, 0x4c, 0xc7, 0xbf, ++ 0x9a, 0x9c, 0xfb, 0xda, 0x1e, 0xf8, 0x1b, 0xf2, 0x49, 0x61, 0x59, 0xcd, ++ 0x4a, 0xf4, 0x33, 0xd2, 0xca, 0x83, 0x44, 0xd7, 0xa7, 0xa4, 0x40, 0x9f, ++ 0x54, 0xd0, 0x57, 0xa7, 0x90, 0xaf, 0xe3, 0xc8, 0x85, 0xe3, 0x62, 0x3d, ++ 0x5f, 0xa8, 0x81, 0x3e, 0xee, 0x38, 0xef, 0x3b, 0xf9, 0x88, 0xf5, 0x40, ++ 0x3e, 0xa8, 0x60, 0x01, 0x13, 0xae, 0x83, 0xad, 0x97, 0xdc, 0xfa, 0xf3, ++ 0x0f, 0x9e, 0xf5, 0x9c, 0xde, 0x52, 0x1c, 0x92, 0x21, 0x7f, 0x5c, 0xab, ++ 0x6b, 0xf0, 0xba, 0x91, 0x75, 0xdc, 0x33, 0x98, 0xe2, 0x48, 0x27, 0x3d, ++ 0x65, 0xc6, 0xbc, 0xca, 0xfe, 0x21, 0xae, 0xa7, 0x98, 0x54, 0x42, 0xf4, ++ 0xc8, 0x4c, 0x37, 0xf7, 0x40, 0x7e, 0x3b, 0xa5, 0x32, 0xa2, 0x9f, 0x53, ++ 0x20, 0x17, 0x11, 0x6e, 0x0b, 0xed, 0x46, 0x3f, 0x44, 0x5b, 0x57, 0x4f, ++ 0x07, 0xe7, 0xab, 0x2f, 0x52, 0xf8, 0x3a, 0xfe, 0x28, 0xf8, 0x8e, 0x7c, ++ 0xdc, 0x91, 0xd4, 0x8e, 0xdb, 0x59, 0xc5, 0x26, 0xda, 0x87, 0x45, 0xfa, ++ 0x20, 0x7a, 0x9b, 0x92, 0x4a, 0x7e, 0x0a, 0x38, 0x46, 0x0a, 0xf1, 0x79, ++ 0xc7, 0x3e, 0x43, 0x58, 0x96, 0xb8, 0x3c, 0x90, 0x71, 0x1e, 0x6e, 0xf4, ++ 0xdf, 0x28, 0x0e, 0xb4, 0x81, 0xe7, 0x85, 0x6d, 0xdb, 0x40, 0x74, 0x93, ++ 0x32, 0xd1, 0x4d, 0xe7, 0x19, 0x1e, 0x53, 0xbc, 0xb6, 0x14, 0x5d, 0x1c, ++ 0xb7, 0x65, 0xf3, 0xe3, 0xe4, 0x37, 0x22, 0x3d, 0xe1, 0x1c, 0x12, 0xd1, ++ 0x63, 0x05, 0xd2, 0x23, 0x8b, 0x43, 0x87, 0x21, 0xa0, 0x43, 0xe8, 0x97, ++ 0x3a, 0xb1, 0x86, 0xf0, 0x08, 0xf8, 0x1d, 0xe5, 0x80, 0x71, 0x53, 0xca, ++ 0x02, 0x32, 0xd2, 0x4d, 0x2c, 0x7e, 0xb5, 0xfd, 0x43, 0x0d, 0x1e, 0x3b, ++ 0x63, 0xf6, 0x1b, 0xbf, 0xe7, 0xe0, 0x7c, 0x39, 0x51, 0x94, 0x9e, 0x04, ++ 0x79, 0x27, 0x9d, 0x7a, 0xc2, 0x28, 0x6f, 0x01, 0x5f, 0xdf, 0xe6, 0xf8, ++ 0xea, 0xa4, 0x6f, 0xc4, 0x9b, 0xc6, 0x6f, 0xc3, 0x1d, 0x57, 0xa6, 0xf3, ++ 0x90, 0x83, 0xdf, 0x07, 0x5e, 0xf7, 0xd1, 0x3c, 0xca, 0xf7, 0xd0, 0xf6, ++ 0x99, 0xb4, 0x7d, 0x63, 0xed, 0xfb, 0x77, 0x08, 0x7a, 0x49, 0xb4, 0x4f, ++ 0x94, 0x65, 0x0b, 0xcc, 0x74, 0x18, 0xf6, 0xa3, 0x96, 0xd2, 0x7e, 0x97, ++ 0xc6, 0x27, 0xda, 0xdf, 0xa5, 0x58, 0xba, 0x99, 0xe7, 0xbd, 0x6d, 0xc7, ++ 0x37, 0x08, 0xf7, 0x16, 0x7b, 0x48, 0x7f, 0x5e, 0xcf, 0xad, 0x30, 0x1f, ++ 0xe2, 0xb3, 0xc2, 0x91, 0x43, 0xdf, 0xd3, 0xf0, 0xeb, 0xa9, 0x35, 0xb3, ++ 0xbe, 0xe0, 0x2f, 0x7c, 0x91, 0x33, 0xb7, 0x05, 0x5f, 0x7d, 0xbb, 0x35, ++ 0x58, 0x3e, 0x04, 0xd6, 0xb1, 0xdd, 0x1c, 0x9c, 0x31, 0x99, 0xec, 0x6e, ++ 0xef, 0x4d, 0x38, 0xfe, 0x4d, 0xe5, 0x26, 0xf7, 0x23, 0x12, 0xe6, 0x0b, ++ 0xb8, 0x25, 0x8c, 0x77, 0x10, 0x89, 0x23, 0x5f, 0x1c, 0xe2, 0xdf, 0x61, ++ 0x1e, 0xaf, 0x61, 0xde, 0x4b, 0x05, 0xdc, 0x35, 0x3c, 0x69, 0x70, 0x48, ++ 0xa4, 0xaf, 0x12, 0xe1, 0x27, 0x24, 0xe0, 0x93, 0x2e, 0xde, 0xc7, 0xf2, ++ 0x75, 0xb9, 0x83, 0xf3, 0x73, 0xbe, 0xe3, 0x5a, 0xf9, 0x3a, 0x28, 0x23, ++ 0xdd, 0xbb, 0x58, 0x60, 0x05, 0xde, 0x3f, 0xcd, 0x8a, 0xb8, 0x1c, 0xea, ++ 0xe0, 0xeb, 0x22, 0x46, 0xfb, 0x88, 0x6b, 0xc5, 0x78, 0xda, 0x73, 0xad, ++ 0x1e, 0x87, 0xaf, 0xd7, 0x3a, 0x46, 0xea, 0xf8, 0x7a, 0x74, 0x9b, 0x91, ++ 0xaf, 0xc1, 0xc2, 0x15, 0xfa, 0x94, 0xf8, 0x2b, 0x7d, 0x93, 0xca, 0xf3, ++ 0x68, 0x05, 0x9f, 0x7d, 0x61, 0xe3, 0xf3, 0xfd, 0x95, 0x83, 0xdb, 0x63, ++ 0xe9, 0xa8, 0x3f, 0x00, 0x7f, 0xe9, 0x41, 0xbe, 0x9f, 0xba, 0x54, 0xd0, ++ 0x19, 0x50, 0x10, 0xe5, 0xe5, 0xd5, 0x6f, 0xb2, 0x30, 0xc4, 0x83, 0xc6, ++ 0xf7, 0xae, 0x19, 0xac, 0x44, 0xc5, 0x7d, 0x59, 0xd4, 0x37, 0xd8, 0x6a, ++ 0x46, 0xe0, 0xe8, 0x38, 0xdc, 0x8f, 0xcd, 0x34, 0x7b, 0x70, 0x7f, 0xf8, ++ 0x94, 0x1a, 0x21, 0x3c, 0x9d, 0x02, 0x07, 0xb5, 0x9e, 0xf0, 0xe9, 0xa7, ++ 0x3c, 0x93, 0x53, 0x07, 0x6e, 0xe0, 0xf2, 0x60, 0x72, 0x87, 0xfe, 0xf1, ++ 0xe1, 0x7e, 0x4f, 0xf0, 0x8f, 0x3d, 0xf9, 0x7e, 0x8e, 0xdc, 0x4c, 0x74, ++ 0xbd, 0x74, 0x3c, 0x23, 0xfd, 0xd1, 0xb2, 0x79, 0x14, 0xd1, 0x41, 0x45, ++ 0x79, 0xae, 0x84, 0x74, 0xb6, 0x68, 0x4b, 0x8a, 0x84, 0xef, 0x53, 0xcb, ++ 0xdc, 0x26, 0x59, 0x27, 0x17, 0x47, 0xd5, 0x9a, 0x58, 0xdf, 0xe1, 0x44, ++ 0xb7, 0xcf, 0x39, 0x74, 0x72, 0x71, 0x54, 0xb0, 0x46, 0x46, 0xb8, 0xf4, ++ 0x49, 0x0b, 0x64, 0xaa, 0x29, 0x60, 0x37, 0x38, 0xe6, 0x4c, 0xd0, 0xc7, ++ 0x7f, 0x5e, 0x81, 0xba, 0x3e, 0xfe, 0x03, 0xf5, 0xba, 0xbf, 0x27, 0xfe, ++ 0xb3, 0x7b, 0xed, 0x5d, 0x75, 0x18, 0xff, 0x69, 0x4f, 0xf2, 0x35, 0x23, ++ 0x3e, 0xb2, 0x6c, 0xfe, 0xdd, 0xf8, 0xfd, 0xc2, 0xec, 0x1a, 0x99, 0xe9, ++ 0xe4, 0xc5, 0xd5, 0xec, 0xa6, 0x6a, 0x11, 0x3f, 0xfa, 0x70, 0xf5, 0xeb, ++ 0x9b, 0xe7, 0xc2, 0xba, 0x67, 0x3d, 0x1c, 0x59, 0x8d, 0x6f, 0xe7, 0x60, ++ 0x7c, 0x75, 0x00, 0xe6, 0x05, 0xf0, 0xf8, 0x6a, 0x75, 0xf3, 0x11, 0x8a, ++ 0xbb, 0x36, 0x0b, 0x7e, 0x1e, 0x2e, 0xf9, 0x0f, 0xe3, 0x77, 0xef, 0xaa, ++ 0xb9, 0xc9, 0x18, 0x67, 0x8d, 0x5c, 0xdb, 0x77, 0xbb, 0x09, 0xbe, 0x65, ++ 0x1f, 0x32, 0x82, 0x7f, 0x37, 0x7f, 0x8d, 0x8c, 0xf1, 0x08, 0x4d, 0x2e, ++ 0x7c, 0x80, 0x7f, 0x8f, 0x81, 0xfb, 0x8d, 0x12, 0xee, 0xab, 0x69, 0xfc, ++ 0x80, 0x72, 0x05, 0xed, 0x4f, 0x2d, 0xbf, 0x01, 0xe3, 0x5e, 0xce, 0xd4, ++ 0x4e, 0xb9, 0x8c, 0xf5, 0x64, 0x9d, 0x5e, 0x5d, 0x5b, 0x6e, 0x8a, 0x7b, ++ 0x5f, 0xed, 0x69, 0x87, 0xc3, 0xa0, 0xb7, 0x34, 0x39, 0xc8, 0x9a, 0xff, ++ 0xf6, 0xc2, 0x43, 0xda, 0xbd, 0x99, 0x5c, 0x2e, 0x9e, 0x76, 0xe8, 0xf4, ++ 0xfe, 0x63, 0xe5, 0xc7, 0xe9, 0x3c, 0x31, 0x13, 0xf7, 0xd0, 0xdd, 0x2f, ++ 0x7c, 0xc8, 0xa7, 0x56, 0x78, 0x7f, 0x7f, 0x5d, 0xb7, 0xce, 0x73, 0xec, ++ 0xc3, 0x2c, 0xe6, 0x20, 0xe6, 0x4f, 0x82, 0xdb, 0xeb, 0x71, 0xeb, 0xf2, ++ 0x61, 0xa5, 0x66, 0x29, 0xec, 0xc4, 0x3c, 0xcb, 0x4b, 0xe8, 0xb9, 0x00, ++ 0xfe, 0x2e, 0x99, 0xa8, 0x7c, 0xea, 0xdf, 0xfd, 0x13, 0x73, 0xd0, 0x8f, ++ 0x6f, 0x32, 0x79, 0xc1, 0x12, 0xc0, 0x3c, 0x09, 0xa2, 0x63, 0x6f, 0x1f, ++ 0x46, 0xe7, 0x1e, 0x1a, 0xc4, 0x3e, 0x6c, 0xf1, 0x7e, 0x87, 0x4f, 0x1d, ++ 0x81, 0xf7, 0xe6, 0x5b, 0x49, 0xfe, 0xb5, 0xef, 0xb5, 0x07, 0x91, 0xaf, ++ 0xdb, 0x9d, 0x26, 0x8a, 0x1f, 0xb7, 0xec, 0xb2, 0x10, 0x5c, 0x2f, 0xf6, ++ 0xb5, 0x0b, 0xbf, 0x3a, 0x64, 0xf0, 0xbf, 0xb5, 0xfd, 0x0d, 0x9b, 0xa5, ++ 0xed, 0xad, 0x22, 0xe8, 0xbf, 0xd1, 0xc6, 0xc7, 0xdd, 0xf8, 0x70, 0x7f, ++ 0xba, 0x4f, 0x23, 0xd1, 0x7e, 0x77, 0x51, 0x6d, 0x2e, 0xc5, 0xf3, 0xb4, ++ 0xf8, 0x62, 0x6e, 0xc4, 0x63, 0xe2, 0x49, 0x61, 0x7c, 0x7c, 0x25, 0xc2, ++ 0x68, 0x5d, 0xda, 0xfe, 0xf7, 0x3a, 0xcc, 0xbf, 0x18, 0x91, 0x38, 0xff, ++ 0xa2, 0x97, 0xd3, 0xac, 0xf9, 0x4b, 0x19, 0x4e, 0xa4, 0xc3, 0x99, 0x6d, ++ 0xaf, 0xe2, 0xdc, 0x62, 0xfd, 0xaf, 0x8c, 0x43, 0xc7, 0xf7, 0xe2, 0x38, ++ 0x19, 0xb5, 0x3c, 0x2c, 0xb0, 0xee, 0xd0, 0x52, 0x09, 0xd7, 0xb7, 0x6e, ++ 0x56, 0x7c, 0xff, 0x4b, 0xa3, 0x9f, 0x75, 0x22, 0xce, 0xa5, 0xcb, 0x73, ++ 0xc8, 0x73, 0xea, 0xf5, 0xca, 0xdc, 0xd4, 0xa4, 0x5c, 0x9d, 0xdc, 0xd4, ++ 0xfa, 0xfd, 0x52, 0xe4, 0x39, 0x8c, 0x6a, 0xb9, 0x7b, 0x27, 0xda, 0x77, ++ 0xc0, 0xd7, 0x69, 0x4e, 0x1d, 0x5f, 0x4f, 0x1a, 0xb2, 0xda, 0x16, 0x6f, ++ 0xbf, 0xdd, 0x5f, 0xfb, 0x10, 0xc5, 0x3f, 0x13, 0xd1, 0xbd, 0xdf, 0xc4, ++ 0xef, 0x5b, 0x8a, 0x7d, 0x3e, 0xde, 0x29, 0xec, 0x18, 0x25, 0xd2, 0x83, ++ 0xec, 0xc0, 0x3d, 0x5f, 0xd8, 0x3d, 0x71, 0xf2, 0x1f, 0xfc, 0xbb, 0x4c, ++ 0xf4, 0x77, 0x41, 0xb4, 0x78, 0x4c, 0xd7, 0xef, 0xff, 0x3b, 0xcd, 0xff, ++ 0x46, 0x67, 0xc7, 0xbe, 0x5e, 0x8f, 0x6b, 0xd9, 0xd7, 0x8b, 0x9d, 0x77, ++ 0xab, 0xca, 0x7a, 0xc5, 0xd3, 0x27, 0xb1, 0x79, 0x93, 0xda, 0xf7, 0xe2, ++ 0xf4, 0xbf, 0x4b, 0x7f, 0xef, 0x81, 0xdf, 0xcc, 0x02, 0xdb, 0x1d, 0x5d, ++ 0xfb, 0x69, 0xf6, 0xae, 0x5f, 0xe2, 0xf7, 0x4e, 0xb1, 0x8f, 0x18, 0xe9, ++ 0x55, 0x8d, 0x4e, 0x00, 0xee, 0x77, 0x20, 0xbe, 0x86, 0x1e, 0x9e, 0x37, ++ 0x1c, 0x43, 0xa9, 0xcc, 0x5a, 0x23, 0xa3, 0x1c, 0xb8, 0xd8, 0xd4, 0x92, ++ 0x8d, 0x71, 0xaa, 0x44, 0x7e, 0xa1, 0x36, 0x1f, 0xf8, 0xf5, 0x8b, 0x17, ++ 0x67, 0xf1, 0xe3, 0xbd, 0x4a, 0x71, 0xd6, 0x77, 0xbf, 0xc0, 0x83, 0x5f, ++ 0xe5, 0xf6, 0xa7, 0x54, 0x7c, 0xe0, 0x3b, 0x38, 0x2f, 0xff, 0x79, 0xb3, ++ 0xa4, 0x3f, 0x87, 0x31, 0xc7, 0x29, 0x19, 0xf8, 0x49, 0x8b, 0x83, 0x36, ++ 0x9f, 0x7f, 0x77, 0x38, 0xc9, 0x47, 0x35, 0x9c, 0x1d, 0x0f, 0x7e, 0xb1, ++ 0xfb, 0x96, 0x73, 0x30, 0x68, 0xc5, 0xf5, 0x1c, 0x87, 0x83, 0x80, 0x4b, ++ 0x5d, 0x31, 0x2b, 0xb1, 0x74, 0xa3, 0x38, 0x01, 0xdb, 0xe8, 0x41, 0xff, ++ 0x8f, 0xcb, 0x49, 0x4f, 0x2d, 0x23, 0xfe, 0xbe, 0x5e, 0xf2, 0xd1, 0xba, ++ 0x57, 0x38, 0xb9, 0x5d, 0xb3, 0x8e, 0xb5, 0x52, 0x5e, 0xe3, 0xc5, 0x43, ++ 0x3c, 0x0f, 0x79, 0xe8, 0x7d, 0x1e, 0xfa, 0xfb, 0x5c, 0xa0, 0x0f, 0x82, ++ 0x48, 0xb7, 0xa3, 0x58, 0x60, 0xa7, 0x49, 0x97, 0xd7, 0xa5, 0xd1, 0x43, ++ 0xdd, 0xb3, 0x60, 0x9f, 0x18, 0xe2, 0x55, 0x9c, 0x7f, 0x34, 0xbf, 0xb5, ++ 0x97, 0x88, 0xfb, 0xf4, 0xc4, 0x7b, 0x42, 0x74, 0xed, 0xba, 0xcf, 0x04, ++ 0x52, 0xd5, 0xc9, 0xfb, 0xac, 0x80, 0x95, 0x29, 0xba, 0xf8, 0x5a, 0x76, ++ 0x85, 0xdb, 0x50, 0xef, 0x55, 0x93, 0x69, 0x68, 0x9f, 0x19, 0x0c, 0x4b, ++ 0xc8, 0x57, 0x99, 0xb5, 0x1e, 0xc3, 0xf3, 0x4e, 0x39, 0xc5, 0xd7, 0xdb, ++ 0x2b, 0xc8, 0x36, 0xa0, 0xde, 0x5f, 0xc7, 0xda, 0x68, 0x7d, 0xbd, 0xc5, ++ 0x7c, 0xae, 0x97, 0x02, 0x44, 0x1f, 0x17, 0x0f, 0x9d, 0x48, 0xc5, 0x38, ++ 0x64, 0x48, 0xe0, 0x03, 0xd6, 0xfb, 0x24, 0xad, 0xb7, 0x36, 0x70, 0x51, ++ 0x4f, 0x1f, 0xda, 0x7a, 0xaf, 0xb6, 0xae, 0x0f, 0x97, 0xc1, 0x7c, 0x80, ++ 0xef, 0xff, 0x84, 0x7e, 0x39, 0x94, 0x77, 0x3d, 0x70, 0x4c, 0xea, 0x4e, ++ 0x70, 0x77, 0x53, 0xda, 0xef, 0x1c, 0xd1, 0xaf, 0xd7, 0xf7, 0x8f, 0x90, ++ 0xff, 0xd8, 0xab, 0xa6, 0x95, 0xec, 0xf7, 0xd9, 0xb5, 0x7b, 0x25, 0xd4, ++ 0x5b, 0x20, 0x37, 0xa8, 0xdf, 0xba, 0x65, 0x56, 0x2a, 0x7f, 0xbd, 0xcc, ++ 0x4d, 0x32, 0x54, 0xc3, 0x6f, 0x4f, 0x68, 0x87, 0x79, 0x47, 0xda, 0x7d, ++ 0xf0, 0x89, 0xf4, 0xd2, 0x2e, 0xe7, 0x35, 0xeb, 0xa5, 0x5d, 0xce, 0x38, ++ 0x7a, 0xc9, 0x64, 0x8d, 0xbc, 0x86, 0xfb, 0xdb, 0x95, 0xcd, 0xb2, 0x07, ++ 0xe9, 0x60, 0xe5, 0xf7, 0x53, 0x29, 0x7f, 0xe2, 0xa9, 0x06, 0x7e, 0x2e, ++ 0x71, 0x7f, 0x33, 0xcf, 0xe7, 0x7b, 0xaa, 0x8e, 0xe7, 0x6d, 0x6b, 0xdf, ++ 0x3d, 0xf7, 0x7c, 0x32, 0xed, 0xef, 0x9c, 0x13, 0xfb, 0x7c, 0xcc, 0x77, ++ 0x29, 0x63, 0x1a, 0xed, 0x7b, 0x5f, 0xca, 0xc0, 0xf3, 0x45, 0x1f, 0x3b, ++ 0x02, 0x6f, 0xe8, 0xe5, 0xe0, 0x53, 0xcd, 0x9f, 0xdb, 0x50, 0x5f, 0x0c, ++ 0xd6, 0xf2, 0x64, 0x63, 0xf4, 0x0b, 0x0a, 0x5e, 0x3c, 0xaf, 0x42, 0x67, ++ 0x1f, 0x25, 0xb4, 0x7b, 0x86, 0xad, 0x91, 0x71, 0x1d, 0xb7, 0x05, 0x86, ++ 0x63, 0x4a, 0x1b, 0xf0, 0xf7, 0x3b, 0x9c, 0x3e, 0xb9, 0x1e, 0xfa, 0xcd, ++ 0xb6, 0x12, 0x93, 0xfe, 0x9e, 0x8e, 0x8b, 0x4d, 0x7f, 0x9d, 0xbd, 0xcf, ++ 0xd3, 0xb9, 0x6f, 0xa4, 0xed, 0x2b, 0x69, 0xef, 0xb5, 0x7d, 0x27, 0x49, ++ 0x0a, 0x7c, 0xac, 0x97, 0xeb, 0xb1, 0xfb, 0x4a, 0xb1, 0xfb, 0x21, 0xb2, ++ 0xcb, 0x4a, 0x79, 0xd6, 0x5e, 0xd9, 0xee, 0x95, 0x8d, 0x7a, 0x95, 0xe8, ++ 0x6e, 0x65, 0x3f, 0xae, 0x37, 0x57, 0xee, 0xb5, 0x13, 0xdc, 0x56, 0xf6, ++ 0x73, 0xd0, 0xfe, 0x2d, 0xcc, 0xf7, 0x0c, 0xce, 0xb7, 0x05, 0xf4, 0x16, ++ 0x9e, 0xc3, 0xbb, 0x78, 0xd4, 0x41, 0xed, 0xb4, 0xf9, 0xc3, 0x7c, 0x87, ++ 0x1e, 0xd2, 0xcd, 0xb7, 0xda, 0x14, 0x99, 0xbd, 0x4f, 0x8a, 0x3b, 0xdf, ++ 0xcf, 0xf5, 0x70, 0xec, 0x3a, 0x5f, 0x63, 0x3e, 0xb2, 0x36, 0x3f, 0xd9, ++ 0xa9, 0xd0, 0xbc, 0xdb, 0x99, 0xdd, 0x8b, 0x78, 0x6b, 0x30, 0xf3, 0xfb, ++ 0xdb, 0x82, 0x6f, 0xda, 0x29, 0x1e, 0xda, 0xee, 0xbb, 0x64, 0xc3, 0x7b, ++ 0x83, 0xdb, 0xd9, 0x25, 0x1b, 0xc6, 0x69, 0x4f, 0x3b, 0x02, 0x92, 0x0b, ++ 0xbe, 0x23, 0xf7, 0x8a, 0xb8, 0xd0, 0x0f, 0xd9, 0xdf, 0x7c, 0x71, 0x20, ++ 0xd2, 0x7f, 0xa2, 0x7d, 0xbe, 0x41, 0xce, 0x12, 0x15, 0xdb, 0xc3, 0x3a, ++ 0xad, 0x58, 0x8e, 0x72, 0x07, 0x2e, 0x6e, 0x63, 0x9c, 0xcf, 0x02, 0x57, ++ 0xe8, 0x37, 0xc9, 0x59, 0xe2, 0x70, 0x8d, 0xfc, 0xbb, 0xd6, 0x9f, 0xee, ++ 0xba, 0x22, 0xbe, 0x8c, 0xeb, 0xaf, 0xc6, 0xbf, 0x83, 0xa2, 0xb3, 0xa3, ++ 0x24, 0x21, 0x6f, 0x63, 0xe9, 0x4d, 0x6a, 0xde, 0xfb, 0x15, 0xc6, 0xf5, ++ 0x81, 0xbf, 0x28, 0x5f, 0x34, 0xd8, 0x9b, 0x85, 0x56, 0x02, 0x9c, 0xea, ++ 0x86, 0x08, 0xba, 0x9b, 0xc1, 0xc4, 0xdf, 0x41, 0x32, 0xd2, 0xc3, 0xc7, ++ 0x0e, 0x7f, 0x3f, 0x5c, 0xaf, 0xc6, 0x97, 0x57, 0x80, 0xcf, 0x40, 0x9c, ++ 0xf7, 0x5b, 0x0e, 0xff, 0x60, 0x6c, 0x8f, 0xf3, 0xc0, 0xf3, 0x3c, 0x20, ++ 0x77, 0x86, 0xb8, 0xb8, 0x9e, 0xda, 0x89, 0x47, 0x96, 0x35, 0xfb, 0xa9, ++ 0x4f, 0x1e, 0x97, 0x63, 0x91, 0x14, 0x46, 0x79, 0x26, 0xb1, 0xfb, 0xb3, ++ 0x93, 0x9c, 0xd3, 0x46, 0x60, 0xbf, 0xdc, 0x01, 0x1e, 0x13, 0xde, 0xe3, ++ 0xfe, 0x77, 0xd0, 0xfb, 0xb8, 0x2b, 0xc3, 0x2f, 0x4c, 0x79, 0x2a, 0xda, ++ 0x79, 0xe2, 0x4a, 0xdc, 0x27, 0xc4, 0x73, 0x7c, 0x8d, 0xea, 0x19, 0xe3, ++ 0xdf, 0x4b, 0x32, 0xc2, 0xe1, 0xb4, 0xc3, 0xff, 0x6d, 0x1c, 0x37, 0x58, ++ 0xd2, 0x49, 0x57, 0x2b, 0x3d, 0x57, 0x84, 0xc7, 0x24, 0x84, 0xc3, 0x5b, ++ 0x8e, 0xc0, 0x14, 0x2c, 0x9d, 0x2a, 0xd0, 0x0b, 0x02, 0x65, 0xf4, 0x5c, ++ 0xfa, 0xfb, 0x55, 0x59, 0x36, 0xdf, 0x2a, 0xdc, 0xbf, 0xdc, 0xba, 0x9c, ++ 0xc3, 0xa1, 0xfd, 0x59, 0x0e, 0x87, 0xed, 0x2d, 0x26, 0xa2, 0xe3, 0x0d, ++ 0x6c, 0x10, 0xf1, 0xdf, 0x20, 0xd3, 0x85, 0xd9, 0x38, 0x3e, 0xc8, 0x97, ++ 0x99, 0x38, 0xce, 0x88, 0xd6, 0x7a, 0x13, 0xe6, 0xf3, 0xf5, 0x0b, 0x79, ++ 0x4c, 0x74, 0x8f, 0x53, 0x6b, 0x83, 0xc9, 0x74, 0x65, 0xba, 0x9d, 0x25, ++ 0xe8, 0x76, 0x8e, 0xc0, 0xc3, 0xfd, 0x88, 0x87, 0xc1, 0xdb, 0x78, 0x5c, ++ 0xe5, 0x0a, 0x74, 0x3b, 0x4f, 0xd0, 0xed, 0xb5, 0xc2, 0x7d, 0x89, 0xeb, ++ 0x8a, 0x7c, 0xdb, 0x85, 0xae, 0x6a, 0xf4, 0x74, 0x75, 0xad, 0xf9, 0x43, ++ 0x92, 0x38, 0x07, 0x1b, 0x3b, 0x1e, 0x63, 0x6d, 0x14, 0xbf, 0xdf, 0xfb, ++ 0x92, 0x85, 0xe4, 0x77, 0xd5, 0x0e, 0x7e, 0xee, 0xb7, 0x6a, 0xf7, 0x49, ++ 0x3a, 0x2f, 0x5a, 0xf5, 0xb2, 0x85, 0x88, 0xb2, 0xec, 0x65, 0x1b, 0x3f, ++ 0xbf, 0xd2, 0xc8, 0xdf, 0x9f, 0x2b, 0x8e, 0xbf, 0xbf, 0xfc, 0x6f, 0x2e, ++ 0xee, 0x5f, 0x55, 0x36, 0xdc, 0xe7, 0xd5, 0xeb, 0x6b, 0xcd, 0x0e, 0xf8, ++ 0xa9, 0xef, 0x82, 0xbb, 0xaf, 0xdc, 0xb9, 0x4f, 0x97, 0x36, 0x99, 0x9f, ++ 0x07, 0x59, 0x69, 0xd3, 0xf2, 0x41, 0xf9, 0x7e, 0x9d, 0x4b, 0xd0, 0x59, ++ 0x5a, 0x2f, 0xbf, 0x0f, 0xf5, 0x4e, 0xda, 0x78, 0x1e, 0x17, 0x72, 0x39, ++ 0xe6, 0xd3, 0x7e, 0x5d, 0xd7, 0x73, 0x1f, 0x9c, 0x6f, 0xd3, 0x45, 0x3f, ++ 0xb7, 0xdb, 0x43, 0xf6, 0x40, 0xec, 0x39, 0x90, 0x74, 0xbc, 0x17, 0x9c, ++ 0xef, 0xbb, 0x12, 0xbd, 0xc8, 0x26, 0xbb, 0x17, 0xf7, 0x2d, 0xd3, 0x26, ++ 0xc6, 0xb4, 0x73, 0x4c, 0xa4, 0xfc, 0xb9, 0xf4, 0x98, 0xfd, 0xbc, 0x90, ++ 0x4b, 0xd8, 0xc1, 0x66, 0x96, 0x49, 0x72, 0xd4, 0x16, 0xff, 0xbc, 0x97, ++ 0x92, 0xac, 0xd9, 0x73, 0x76, 0x93, 0x5e, 0x9e, 0xa0, 0x9c, 0xa7, 0xfb, ++ 0x7a, 0x9c, 0x56, 0x5a, 0xf7, 0xd2, 0x74, 0x96, 0x56, 0x8e, 0xf1, 0x01, ++ 0xa7, 0x42, 0xe7, 0x3d, 0x63, 0xc7, 0xd1, 0xca, 0x14, 0x9f, 0xc9, 0x70, ++ 0x9e, 0x28, 0x6d, 0xa2, 0xdd, 0x70, 0x5f, 0x46, 0xba, 0x3f, 0xd5, 0x50, ++ 0xef, 0x3e, 0xb3, 0x87, 0xa1, 0x7d, 0x56, 0x20, 0xd7, 0xf0, 0x3e, 0xbb, ++ 0x62, 0x90, 0xe1, 0x7d, 0xaf, 0x9a, 0x02, 0x43, 0xbd, 0x4f, 0xed, 0x0d, ++ 0x86, 0xf6, 0x39, 0x40, 0x70, 0xfa, 0x7a, 0xde, 0x9a, 0x9b, 0x0d, 0xed, ++ 0xfb, 0xd5, 0x4f, 0x33, 0xd4, 0xaf, 0x5b, 0x77, 0xa7, 0xa1, 0xfd, 0xc0, ++ 0xd0, 0xdd, 0x86, 0xf7, 0x83, 0xb7, 0x2c, 0x32, 0xbc, 0x1f, 0xd2, 0xb0, ++ 0xd4, 0x50, 0xbf, 0xbe, 0xe9, 0x21, 0x43, 0x7b, 0x39, 0x81, 0x7d, 0xad, ++ 0xc1, 0x59, 0xd6, 0xec, 0x6b, 0xe7, 0x88, 0x00, 0x9d, 0x1f, 0x73, 0x5a, ++ 0x25, 0xbd, 0x1d, 0x72, 0xd8, 0xc5, 0xed, 0xf0, 0x62, 0x97, 0x95, 0xe0, ++ 0xbf, 0x5a, 0xe8, 0xe3, 0xd5, 0xe2, 0xbc, 0xd9, 0x6a, 0xa1, 0x8f, 0x5b, ++ 0xd2, 0x0b, 0xaf, 0xb8, 0xbf, 0xf2, 0x8f, 0xfa, 0x63, 0x67, 0x5d, 0xc6, ++ 0xb8, 0x57, 0x89, 0x88, 0x7b, 0x9d, 0xdb, 0x67, 0x36, 0x21, 0xdd, 0x57, ++ 0xed, 0x07, 0xba, 0xa0, 0xbf, 0xcb, 0x15, 0x38, 0xeb, 0xe2, 0xf6, 0xd7, ++ 0x94, 0xb9, 0xb4, 0x7a, 0x7e, 0x8e, 0xb2, 0x35, 0x41, 0x3e, 0xc7, 0x97, ++ 0x2e, 0xcd, 0xcf, 0x03, 0xbf, 0x24, 0x8e, 0x7f, 0x67, 0x4a, 0xf6, 0xc4, ++ 0xf5, 0xaf, 0x40, 0xae, 0x5d, 0x72, 0xe9, 0xfd, 0x20, 0x56, 0x23, 0xa3, ++ 0x1c, 0xd0, 0xe4, 0x52, 0x75, 0x12, 0x23, 0xbb, 0xad, 0xdd, 0x15, 0xed, ++ 0x8f, 0x7c, 0x04, 0x72, 0x4a, 0x4a, 0x4e, 0x47, 0xf9, 0xf4, 0x58, 0xcd, ++ 0x3e, 0x94, 0x4f, 0xcd, 0x16, 0x92, 0x4f, 0xaf, 0x0f, 0x38, 0x41, 0x7e, ++ 0xf5, 0xcd, 0xb5, 0xf3, 0x09, 0x2e, 0x87, 0x5d, 0x3c, 0x5e, 0x2b, 0x9b, ++ 0xbd, 0x1e, 0x7e, 0xce, 0xd4, 0xa8, 0x77, 0x0f, 0xa9, 0xad, 0x94, 0xa7, ++ 0x7d, 0x68, 0xa4, 0xcc, 0xf0, 0x7e, 0x94, 0x8b, 0xde, 0x51, 0x74, 0x9e, ++ 0x39, 0x11, 0x3c, 0xdf, 0x44, 0xbf, 0x19, 0x64, 0xd7, 0x7e, 0x94, 0x0d, ++ 0x23, 0xaf, 0xee, 0x77, 0x1e, 0x5a, 0x56, 0x41, 0xf9, 0xcc, 0x89, 0xc6, ++ 0x3b, 0x34, 0xcc, 0x46, 0x71, 0xcf, 0xf2, 0x98, 0x7b, 0x70, 0x07, 0x09, ++ 0x3a, 0x2a, 0x4b, 0x16, 0xf0, 0xb4, 0x70, 0xff, 0xf1, 0xec, 0x0b, 0x4e, ++ 0xca, 0x2f, 0x3e, 0x5b, 0xf0, 0x0e, 0xfd, 0xfd, 0xa2, 0xb3, 0x8d, 0x7f, ++ 0x18, 0x1e, 0xa4, 0xbf, 0xd7, 0xd5, 0x7a, 0x3f, 0xee, 0xbf, 0x07, 0xff, ++ 0xea, 0xa0, 0xb8, 0x4c, 0xf9, 0xb0, 0x77, 0x86, 0x2f, 0x27, 0xbb, 0xd6, ++ 0xc7, 0xfd, 0x37, 0xf1, 0x77, 0xc1, 0xc6, 0xbd, 0x78, 0xd8, 0x85, 0x7e, ++ 0x77, 0xf9, 0xf6, 0xfd, 0xdd, 0x82, 0x3a, 0xfc, 0xc5, 0xfa, 0x6d, 0x65, ++ 0x62, 0x7d, 0x4c, 0x69, 0xeb, 0x4f, 0x79, 0xa1, 0xaf, 0x9c, 0xa2, 0xbf, ++ 0x1b, 0x53, 0xfe, 0xd2, 0x81, 0x6e, 0x3c, 0x2e, 0x64, 0xcc, 0x5b, 0x89, ++ 0xf5, 0xd7, 0xcb, 0x6b, 0xab, 0x08, 0x6f, 0x5a, 0xbd, 0x32, 0x6a, 0x35, ++ 0xe4, 0xaf, 0x54, 0x2a, 0xfc, 0xdc, 0x6f, 0x65, 0xd4, 0x41, 0xf9, 0x2b, ++ 0xae, 0x64, 0xa3, 0x3f, 0x9f, 0x10, 0x5e, 0xd7, 0x08, 0xcf, 0xd8, 0xe7, ++ 0x1a, 0x3c, 0x0f, 0x0d, 0x3b, 0xc5, 0xcf, 0xaf, 0xdb, 0xe2, 0xd3, 0x6f, ++ 0x4d, 0xb2, 0x31, 0x3e, 0x1c, 0x7b, 0xae, 0x20, 0x51, 0xfe, 0xfa, 0xed, ++ 0xa2, 0xdf, 0x45, 0xef, 0x18, 0x3a, 0x07, 0x5f, 0x6e, 0x0e, 0xf7, 0xbd, ++ 0x96, 0xf8, 0x82, 0x06, 0xa7, 0xd7, 0x2f, 0x2f, 0xa0, 0xf3, 0x0a, 0x2f, ++ 0x24, 0x38, 0xaf, 0xe0, 0x4f, 0xe6, 0x71, 0xf7, 0x17, 0x06, 0xdc, 0x4b, ++ 0x79, 0xc7, 0x63, 0xac, 0x35, 0xa5, 0xa8, 0xbf, 0xc7, 0x88, 0xf8, 0x65, ++ 0x9c, 0xbc, 0xe3, 0x7b, 0x92, 0x47, 0x62, 0x3e, 0xf3, 0x3f, 0x27, 0xef, ++ 0xb8, 0x52, 0xc3, 0x8f, 0xc8, 0xeb, 0x1d, 0x83, 0x7c, 0x9c, 0xce, 0xba, ++ 0xe4, 0x1d, 0x5f, 0xed, 0x3c, 0xc8, 0x24, 0xbc, 0x8f, 0x3b, 0x0e, 0x7f, ++ 0xdd, 0xd4, 0x01, 0xbf, 0xf7, 0x67, 0xe0, 0xbd, 0x4e, 0xf7, 0x3f, 0xa1, ++ 0x52, 0x1e, 0xd0, 0x02, 0x98, 0x43, 0x10, 0xe3, 0x26, 0x1b, 0x54, 0x8a, ++ 0x9f, 0x1e, 0xbe, 0x6c, 0x61, 0x18, 0xcf, 0x3e, 0xb9, 0x5e, 0x7d, 0x1a, ++ 0xf3, 0x55, 0x2a, 0x9e, 0xd8, 0xdf, 0xf3, 0x31, 0x8c, 0x5f, 0x0f, 0xb3, ++ 0x50, 0x1e, 0xdd, 0x82, 0x0d, 0xfc, 0x3e, 0x10, 0x36, 0xcc, 0x16, 0xc2, ++ 0x3c, 0x8d, 0x8a, 0x0d, 0x0f, 0x66, 0x60, 0x7e, 0xe4, 0x67, 0xc0, 0xb7, ++ 0x4b, 0x60, 0x5e, 0x0b, 0x9e, 0x48, 0xa7, 0x3c, 0x9e, 0xc3, 0x2d, 0x8f, ++ 0x64, 0x20, 0x9e, 0x4e, 0x09, 0x7e, 0xae, 0xf8, 0xfa, 0x87, 0xb7, 0x21, ++ 0xfc, 0xb7, 0x9b, 0xdd, 0x83, 0x87, 0x41, 0xb9, 0x64, 0x9b, 0x64, 0xc8, ++ 0x03, 0x5f, 0xb4, 0xc9, 0x66, 0xa8, 0x6b, 0x79, 0x40, 0x1a, 0xfe, 0x98, ++ 0xd4, 0x99, 0x1f, 0xee, 0x01, 0x39, 0xfa, 0x78, 0xb2, 0xf1, 0x7c, 0xcb, ++ 0xf0, 0xce, 0x7d, 0x85, 0xc7, 0x93, 0x85, 0x3c, 0x9d, 0x0e, 0xf3, 0xad, ++ 0x1a, 0x79, 0xd1, 0x8c, 0x78, 0xdc, 0xff, 0xaa, 0x9d, 0xe6, 0xbd, 0xc7, ++ 0xc1, 0xef, 0x57, 0x0b, 0x0f, 0xfb, 0xf2, 0x8d, 0xeb, 0xa1, 0x5e, 0xfa, ++ 0xb5, 0xa2, 0xdd, 0xab, 0x63, 0xc8, 0x2b, 0x62, 0xb8, 0x09, 0x81, 0xf7, ++ 0x9c, 0x88, 0xfc, 0xbf, 0xd2, 0x97, 0x94, 0x8e, 0xfc, 0x7c, 0xe1, 0x37, ++ 0x38, 0xc6, 0xeb, 0xf2, 0xa0, 0xc3, 0xcb, 0x6a, 0x88, 0x6f, 0x4a, 0x7f, ++ 0xc5, 0xfd, 0xe2, 0x52, 0x1b, 0xcf, 0xd7, 0x4d, 0x98, 0x6f, 0xc4, 0xba, ++ 0xe4, 0x33, 0x0f, 0x40, 0x79, 0xde, 0x25, 0xcf, 0xa8, 0xf3, 0x3c, 0x84, ++ 0xc1, 0x2e, 0xd1, 0xe8, 0xa6, 0x31, 0x59, 0xe4, 0x1b, 0x09, 0xbe, 0xde, ++ 0xff, 0x2a, 0xcf, 0x2b, 0x9a, 0x7f, 0x48, 0xd8, 0x93, 0x57, 0x91, 0x9b, ++ 0x6f, 0xe2, 0xbc, 0x15, 0xc4, 0xd7, 0xeb, 0xb3, 0x70, 0xdf, 0xf1, 0xb0, ++ 0x80, 0xc6, 0xe1, 0xcb, 0x27, 0x57, 0xd1, 0x3d, 0x44, 0xa3, 0x25, 0x8c, ++ 0xb0, 0xb1, 0x93, 0x97, 0xe3, 0xf3, 0x8d, 0x59, 0x93, 0x9f, 0x98, 0xbf, ++ 0x3f, 0xa0, 0x13, 0x3f, 0x93, 0xbd, 0x0b, 0x3b, 0xea, 0xc8, 0x96, 0x53, ++ 0x47, 0xdf, 0x67, 0x38, 0x57, 0x70, 0xed, 0xf2, 0xe6, 0xca, 0xf2, 0xa4, ++ 0x36, 0x99, 0x9f, 0xbf, 0x8b, 0x95, 0xef, 0xb1, 0x74, 0xff, 0x7f, 0x4a, ++ 0xbe, 0x97, 0x0f, 0x3b, 0xd0, 0x1b, 0xcf, 0xc9, 0x43, 0xf9, 0x9f, 0x74, ++ 0x5e, 0x7e, 0x3b, 0x97, 0x8f, 0xb1, 0x7c, 0x1e, 0x2b, 0xcf, 0x6f, 0x8a, ++ 0x91, 0x83, 0x9d, 0x72, 0xdc, 0x64, 0x90, 0xe3, 0x37, 0x09, 0x7d, 0xde, ++ 0x29, 0xcf, 0xcd, 0x24, 0xcf, 0xc1, 0x3c, 0xe3, 0xf7, 0xb7, 0x14, 0x2a, ++ 0xa1, 0x95, 0x12, 0xf9, 0x3d, 0x5f, 0xa0, 0xbe, 0xce, 0x77, 0x78, 0xd2, ++ 0x8a, 0xa1, 0xcb, 0x2a, 0x77, 0x6e, 0x52, 0xe0, 0xca, 0x7e, 0xe8, 0x25, ++ 0xe4, 0x93, 0x76, 0x5b, 0xe0, 0x6b, 0x2c, 0xfb, 0xfc, 0x66, 0x10, 0xfd, ++ 0x5d, 0xcf, 0xc1, 0xdb, 0xea, 0x4d, 0xc8, 0xbf, 0xed, 0x09, 0xec, 0x8f, ++ 0xff, 0x0d, 0x39, 0xa0, 0xfc, 0x77, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcd, 0x7d, ++ 0x09, 0x7c, 0x94, 0xd5, 0xb5, 0xf8, 0xfd, 0xe6, 0x9b, 0x2d, 0xc9, 0x4c, ++ 0x32, 0x99, 0xec, 0x2b, 0x13, 0x76, 0x15, 0x70, 0x80, 0x10, 0x10, 0xa2, ++ 0x7e, 0x49, 0x00, 0xa3, 0x10, 0x1c, 0x50, 0x01, 0x35, 0xe8, 0x24, 0x90, ++ 0x84, 0x2d, 0x24, 0x20, 0x5a, 0xfa, 0x6a, 0x5f, 0x26, 0x24, 0x60, 0xc4, ++ 0x68, 0x43, 0xb5, 0x8a, 0x8a, 0x76, 0x50, 0xf0, 0x51, 0x45, 0x0d, 0x82, ++ 0x35, 0xb6, 0x51, 0x27, 0x80, 0x14, 0xac, 0x4b, 0xac, 0xb6, 0xa5, 0xad, ++ 0x62, 0x10, 0x44, 0x36, 0x25, 0x82, 0xfa, 0xa7, 0x7d, 0x2a, 0xef, 0x9c, ++ 0x73, 0xef, 0xcd, 0xcc, 0x37, 0x99, 0xb0, 0xf4, 0xf9, 0x7e, 0xbf, 0x7f, ++ 0xfa, 0xb3, 0x97, 0xfb, 0xdd, 0xfd, 0xec, 0xe7, 0xdc, 0x65, 0x66, 0x45, ++ 0x1b, 0x18, 0x1b, 0xc3, 0xd8, 0xb3, 0x26, 0x36, 0xbb, 0xd5, 0x06, 0xa9, ++ 0x02, 0xe9, 0x30, 0xc6, 0xce, 0xe2, 0xdf, 0xd5, 0x8c, 0xc5, 0x38, 0x0a, ++ 0x66, 0x45, 0x27, 0x31, 0xb6, 0xdf, 0x0a, 0x29, 0xd4, 0x63, 0xcc, 0xea, ++ 0x38, 0x34, 0x94, 0xb1, 0x5c, 0x66, 0x60, 0x71, 0x2a, 0x63, 0x25, 0x8a, ++ 0x37, 0xc6, 0x01, 0xe5, 0xd5, 0xd6, 0xae, 0x07, 0xca, 0xa0, 0x74, 0xc9, ++ 0x6f, 0xbe, 0x35, 0x43, 0x11, 0xdb, 0x10, 0xed, 0x4d, 0x35, 0x26, 0x32, ++ 0xe6, 0x4b, 0x37, 0xbb, 0x37, 0xe5, 0x04, 0xfb, 0x93, 0x69, 0x92, 0x03, ++ 0x2a, 0x41, 0xbb, 0xfe, 0x2b, 0x0a, 0xd9, 0xc1, 0x04, 0xc6, 0x2c, 0x56, ++ 0xe6, 0x8b, 0x1a, 0xc5, 0x98, 0x62, 0x64, 0x3e, 0xd3, 0x28, 0x1c, 0xc7, ++ 0xb5, 0xd2, 0x00, 0xed, 0x8d, 0x4d, 0x8c, 0xad, 0x81, 0xf6, 0xb1, 0x76, ++ 0x46, 0xf3, 0x64, 0x43, 0x53, 0x0d, 0x2c, 0x99, 0xb1, 0x3b, 0xac, 0x8c, ++ 0xfe, 0x7c, 0x85, 0x0c, 0x27, 0xc3, 0x7c, 0x3b, 0xa2, 0xfd, 0x0d, 0x0a, ++ 0x63, 0xdf, 0x33, 0x2d, 0x03, 0xe7, 0xf3, 0x03, 0xd3, 0x32, 0x1d, 0x50, ++ 0xff, 0x23, 0xa6, 0x65, 0x61, 0x5e, 0x8e, 0xdb, 0x28, 0xd6, 0x69, 0x34, ++ 0x30, 0xef, 0x56, 0x5b, 0xef, 0x79, 0xcd, 0x74, 0x28, 0x7c, 0x1c, 0xe6, ++ 0x19, 0xec, 0x81, 0x31, 0x2b, 0x0a, 0x99, 0x37, 0x14, 0x1e, 0x32, 0x2d, ++ 0x70, 0x18, 0xa9, 0x5e, 0xc1, 0xc3, 0x37, 0x67, 0x77, 0x41, 0xf9, 0x67, ++ 0x1d, 0xb7, 0x64, 0x33, 0xe8, 0x6f, 0xd7, 0xaf, 0xc6, 0xc6, 0x75, 0x45, ++ 0xa8, 0x2f, 0xd3, 0xb5, 0x75, 0xb5, 0xee, 0x89, 0xd0, 0xf4, 0xfe, 0x3a, ++ 0x2f, 0xa5, 0xf1, 0x8c, 0x69, 0x38, 0x9f, 0x5f, 0xd4, 0xcd, 0xa7, 0xbc, ++ 0x13, 0xf2, 0x5b, 0xa1, 0x7d, 0x85, 0xd9, 0x33, 0x38, 0x3e, 0xa4, 0x9f, ++ 0x81, 0x8e, 0x78, 0x82, 0x97, 0xa3, 0xe0, 0x4f, 0x9e, 0x01, 0x00, 0x97, ++ 0x43, 0xcd, 0xaa, 0x43, 0x71, 0x41, 0xca, 0x0c, 0xc5, 0xd8, 0xfe, 0xa0, ++ 0x3f, 0xae, 0x78, 0xbb, 0x68, 0x97, 0xa8, 0x6b, 0xc7, 0xe7, 0xa9, 0x32, ++ 0x8d, 0xb1, 0x01, 0xb0, 0x6e, 0x9b, 0xf1, 0x5f, 0x5d, 0x02, 0x76, 0x67, ++ 0x19, 0xae, 0x97, 0x51, 0xbf, 0x7d, 0xad, 0x73, 0xa6, 0x83, 0xd3, 0x87, ++ 0x99, 0xb9, 0xad, 0xd8, 0xde, 0xbc, 0xe3, 0x3a, 0x2b, 0xe2, 0x57, 0x55, ++ 0x34, 0x07, 0xe6, 0x25, 0x3d, 0x5c, 0x01, 0x23, 0x20, 0x3d, 0xdc, 0x83, ++ 0x9f, 0xae, 0x60, 0x6c, 0xb4, 0xe2, 0xf5, 0x38, 0xa8, 0x9d, 0x96, 0x20, ++ 0xcb, 0xcf, 0xe6, 0xe0, 0xf8, 0xc5, 0x94, 0x97, 0xe3, 0xb3, 0x4c, 0x58, ++ 0x71, 0x5a, 0xdf, 0xf0, 0x62, 0x8a, 0x76, 0x13, 0xe2, 0xef, 0x08, 0xd3, ++ 0x66, 0x62, 0x7f, 0xad, 0x66, 0x76, 0x99, 0x03, 0xd6, 0xdb, 0x1a, 0xcd, ++ 0xe6, 0x47, 0x9a, 0x6f, 0xa9, 0xc0, 0x5f, 0xba, 0x43, 0xd0, 0x0b, 0xb3, ++ 0x39, 0x0e, 0x5f, 0x26, 0xc6, 0x83, 0xf9, 0x9d, 0x8c, 0xd1, 0x6e, 0xc7, ++ 0x7e, 0xd2, 0xa2, 0x3c, 0x65, 0xd8, 0x6f, 0x5e, 0x46, 0xad, 0x6a, 0x82, ++ 0x26, 0xb3, 0xa2, 0x1d, 0xa2, 0xbe, 0xa6, 0x78, 0x86, 0x53, 0x79, 0x25, ++ 0xd6, 0x63, 0xa9, 0x9a, 0x52, 0x02, 0xf0, 0xce, 0xfb, 0x04, 0xe8, 0x10, ++ 0xb2, 0xdb, 0xf6, 0x14, 0x2a, 0x2e, 0x18, 0x3f, 0xb1, 0x73, 0xa2, 0xe2, ++ 0x82, 0xf1, 0x13, 0x05, 0xfe, 0x7a, 0xcd, 0x5f, 0xc0, 0xed, 0x25, 0xc6, ++ 0x8a, 0x23, 0xcd, 0x73, 0x56, 0x34, 0x9f, 0xe7, 0x52, 0x01, 0xff, 0xfd, ++ 0x56, 0x0f, 0xf1, 0xd7, 0xea, 0x1c, 0x6f, 0x6a, 0x2d, 0xf4, 0xe7, 0x6a, ++ 0x65, 0x9a, 0x1f, 0xda, 0xb5, 0xe2, 0x94, 0x42, 0xe0, 0xf3, 0x96, 0xc3, ++ 0x4c, 0xf5, 0x37, 0x44, 0x77, 0xf9, 0x54, 0xa4, 0xfb, 0x5b, 0x98, 0x7b, ++ 0x13, 0xd0, 0x41, 0x4a, 0xbe, 0x4f, 0x31, 0x42, 0x9a, 0x31, 0xb5, 0xa5, ++ 0x00, 0x30, 0xce, 0x1a, 0x1c, 0x4e, 0xea, 0xdf, 0x59, 0xec, 0x4d, 0x55, ++ 0xa0, 0x5e, 0x7a, 0xaa, 0xd9, 0xad, 0x2a, 0x17, 0xce, 0x6f, 0xc3, 0x5a, ++ 0x35, 0xd5, 0x0b, 0xe3, 0xe7, 0x7a, 0x0d, 0x34, 0x8f, 0x75, 0x9d, 0xbe, ++ 0xa8, 0xc1, 0x30, 0xaf, 0xe4, 0x4e, 0x6f, 0x81, 0x19, 0xd2, 0xa2, 0xf8, ++ 0x64, 0xea, 0x3f, 0x85, 0xd5, 0xd6, 0x23, 0x3e, 0xa0, 0x3d, 0x43, 0xbe, ++ 0x1c, 0xed, 0xe0, 0xff, 0xcc, 0xf5, 0x16, 0xaa, 0xae, 0x10, 0xb8, 0xe4, ++ 0xcd, 0xab, 0x6d, 0x30, 0xc3, 0xf7, 0xef, 0xa3, 0xbd, 0x6b, 0x43, 0xf9, ++ 0x31, 0x63, 0xb1, 0x8f, 0xc6, 0x39, 0xaa, 0x78, 0xfb, 0x39, 0x81, 0x9e, ++ 0x8e, 0xbe, 0x19, 0x3d, 0xdb, 0x8f, 0xfd, 0x05, 0x9c, 0x44, 0x47, 0xb2, ++ 0xde, 0x53, 0x88, 0xd7, 0x24, 0xa4, 0x87, 0xc2, 0x74, 0x96, 0x0a, 0xfd, ++ 0x6f, 0x34, 0xd1, 0xbc, 0x72, 0x37, 0xfe, 0xea, 0x36, 0xe4, 0xff, 0xdc, ++ 0x8d, 0xd7, 0x18, 0x95, 0x10, 0x39, 0xf3, 0x8a, 0xc3, 0x44, 0xf5, 0x8f, ++ 0xbe, 0xb9, 0xb0, 0x1f, 0xae, 0xdf, 0xf7, 0x37, 0x0b, 0x1b, 0x14, 0x41, ++ 0x0e, 0xbd, 0x28, 0xe8, 0xe5, 0x61, 0x81, 0x87, 0x6d, 0xe6, 0xc8, 0x74, ++ 0xf5, 0x9c, 0x1c, 0x5f, 0xd0, 0xfb, 0x04, 0xa6, 0x48, 0xf9, 0xf7, 0x9c, ++ 0x90, 0x7f, 0xb1, 0x03, 0x60, 0x7d, 0x4b, 0xaa, 0x4f, 0x91, 0xfc, 0x6b, ++ 0x76, 0xb8, 0xa8, 0xfe, 0xe3, 0xc6, 0xd6, 0xdd, 0xe9, 0x00, 0xd7, 0xc7, ++ 0xe7, 0x31, 0xb7, 0x0f, 0x3e, 0x2d, 0xdc, 0xbc, 0x41, 0xc1, 0xf5, 0x6e, ++ 0x33, 0xb7, 0x5e, 0xbb, 0x05, 0xe7, 0xb5, 0xc4, 0xc0, 0x10, 0x7f, 0xbb, ++ 0x76, 0xff, 0x6e, 0x77, 0x3a, 0xe4, 0xe7, 0xcf, 0x73, 0x8d, 0xb4, 0xb8, ++ 0x42, 0xda, 0xbf, 0xfd, 0xec, 0x6a, 0xfc, 0xfe, 0xf8, 0x7c, 0x36, 0x12, ++ 0xe1, 0x9a, 0xe6, 0x5f, 0xab, 0x18, 0x00, 0x3e, 0xdf, 0x46, 0xb5, 0xd0, ++ 0xba, 0xbf, 0xdd, 0x64, 0x61, 0xf5, 0x30, 0xb5, 0xc7, 0x37, 0x3e, 0x92, ++ 0x6c, 0xc7, 0x7a, 0x5e, 0x83, 0x03, 0xeb, 0xf5, 0xe2, 0x23, 0x40, 0xb3, ++ 0x21, 0x15, 0xd3, 0x80, 0xc9, 0x30, 0x8e, 0xe3, 0x11, 0xe5, 0x95, 0xc4, ++ 0x9f, 0x84, 0x3b, 0xae, 0x1f, 0xe5, 0xe2, 0xae, 0x4d, 0xaf, 0xd0, 0xbc, ++ 0xe5, 0x7c, 0x80, 0x50, 0xcc, 0x08, 0xf7, 0xa2, 0x78, 0x17, 0xc1, 0x6b, ++ 0xe1, 0xe6, 0xad, 0xd7, 0x22, 0xf1, 0xa7, 0x2f, 0x76, 0x2a, 0x6a, 0x4e, ++ 0x70, 0x5e, 0xe7, 0x93, 0xfb, 0x1f, 0x0a, 0xbe, 0xb8, 0x50, 0x3a, 0x7c, ++ 0x33, 0x9e, 0xf3, 0x31, 0xc8, 0x79, 0x0d, 0xc7, 0xf3, 0xe5, 0x19, 0x49, ++ 0xce, 0x7f, 0x62, 0xf3, 0xfe, 0x1d, 0xe1, 0x3e, 0xcc, 0xe6, 0x4a, 0x28, ++ 0x80, 0x29, 0x35, 0x3a, 0xfa, 0xc7, 0x78, 0x61, 0xfc, 0x7e, 0x03, 0xd8, ++ 0xed, 0x9e, 0x08, 0xfc, 0x78, 0xa9, 0xbd, 0x70, 0x3f, 0xd6, 0x3f, 0x19, ++ 0xe5, 0x3d, 0x80, 0x7c, 0xdd, 0xef, 0xb9, 0x4b, 0x27, 0xb2, 0x58, 0xc6, ++ 0x2e, 0xdb, 0xd2, 0x62, 0x40, 0x7c, 0x9c, 0x54, 0xb8, 0x5e, 0xe8, 0xcd, ++ 0xa7, 0x42, 0x3f, 0x0a, 0xbd, 0x28, 0xf5, 0xa4, 0x2c, 0x3f, 0x29, 0xe8, ++ 0xe2, 0x0e, 0xa1, 0x27, 0x23, 0xe8, 0xc7, 0x93, 0x91, 0xf4, 0xa3, 0x8b, ++ 0xb9, 0xee, 0x1b, 0x06, 0xf8, 0x62, 0x6f, 0x1b, 0x88, 0x7f, 0xc3, 0xc7, ++ 0x5d, 0x2a, 0xe8, 0x72, 0x82, 0xe6, 0x2d, 0x42, 0x7e, 0x9e, 0x1d, 0xe3, ++ 0x3d, 0x83, 0xf3, 0xbe, 0x62, 0x9c, 0x7f, 0xa7, 0x0a, 0xf5, 0xc7, 0x16, ++ 0xfb, 0x76, 0x22, 0xbf, 0xe7, 0x2a, 0xb5, 0x3b, 0xed, 0x00, 0x17, 0x76, ++ 0x2d, 0x97, 0x03, 0x09, 0x5d, 0xac, 0x03, 0x96, 0xc5, 0xe2, 0xf7, 0x75, ++ 0x69, 0xb1, 0x90, 0x9f, 0x8b, 0x72, 0x00, 0xc6, 0x1f, 0x7f, 0x44, 0xeb, ++ 0xc0, 0xf1, 0xe2, 0x3c, 0x4c, 0xc1, 0xf6, 0xcf, 0x22, 0x9d, 0xc3, 0x3a, ++ 0x5a, 0x9c, 0xec, 0xf6, 0xe9, 0x11, 0xe8, 0xfd, 0x36, 0xb1, 0x2e, 0xc3, ++ 0x43, 0xdd, 0x66, 0xd4, 0x67, 0x89, 0xed, 0x0a, 0xf1, 0x5b, 0x6f, 0xf8, ++ 0x70, 0x79, 0x04, 0xf2, 0x32, 0x26, 0x1e, 0xe6, 0x97, 0xd7, 0x0f, 0xe4, ++ 0x69, 0x4e, 0x6f, 0x79, 0x1a, 0x01, 0x7f, 0xce, 0x78, 0x68, 0x77, 0xc9, ++ 0x96, 0xc0, 0x0e, 0xac, 0x35, 0x2a, 0x7e, 0x60, 0x0c, 0x34, 0x3b, 0x17, ++ 0xfe, 0x92, 0xe3, 0x09, 0x7f, 0x5a, 0x0a, 0x8e, 0x23, 0xf1, 0x75, 0xe9, ++ 0x59, 0xf5, 0x76, 0xcf, 0xb0, 0xde, 0xf8, 0xca, 0x8e, 0xe7, 0xf3, 0xbf, ++ 0xd3, 0xae, 0x65, 0x61, 0xbb, 0xcf, 0x84, 0x3e, 0xe8, 0x0b, 0x8f, 0xc3, ++ 0xe3, 0x39, 0xfe, 0x8a, 0xe2, 0xb9, 0x9d, 0xf3, 0xac, 0x5d, 0xd4, 0x8b, ++ 0xd2, 0xd7, 0x2b, 0x8b, 0xe7, 0x78, 0xa9, 0x88, 0xd7, 0xcb, 0x83, 0x10, ++ 0x7c, 0x0f, 0x8f, 0x8f, 0x80, 0x6f, 0x29, 0xc7, 0xb7, 0xed, 0x79, 0x49, ++ 0x45, 0xbc, 0xe5, 0x4d, 0x6c, 0x69, 0x40, 0x3c, 0x00, 0x5e, 0x47, 0xe3, ++ 0x7a, 0xc6, 0xe7, 0xd7, 0x36, 0xe0, 0xf7, 0x84, 0xa9, 0x5c, 0x1e, 0x86, ++ 0xe3, 0x55, 0xca, 0xc3, 0x70, 0xfc, 0x86, 0xe3, 0x95, 0xb1, 0x7a, 0x9a, ++ 0x1f, 0xe0, 0xe3, 0xaa, 0xf8, 0x08, 0xfa, 0x4b, 0xf6, 0x13, 0xae, 0xc7, ++ 0x42, 0xe4, 0x04, 0xad, 0x6b, 0x9d, 0xa0, 0x4f, 0x1f, 0xd2, 0x27, 0xe3, ++ 0xfa, 0x68, 0x83, 0x2d, 0xb8, 0x0e, 0xc9, 0x3f, 0xb7, 0x09, 0x78, 0x4c, ++ 0xf0, 0x7a, 0x8b, 0xcc, 0x9c, 0x4e, 0x4b, 0x70, 0xdc, 0x2b, 0x66, 0xfb, ++ 0x77, 0x9a, 0x90, 0x4e, 0xe7, 0xfb, 0x76, 0x9a, 0x43, 0xe9, 0x74, 0x01, ++ 0xa3, 0xfe, 0xe4, 0x3c, 0x32, 0xba, 0x7c, 0xb4, 0x9e, 0xb4, 0x7d, 0xde, ++ 0x02, 0x4c, 0xc7, 0x1f, 0x09, 0x74, 0x0c, 0x83, 0x7a, 0x29, 0xb5, 0xb0, ++ 0x1e, 0x16, 0x5c, 0x4f, 0x56, 0xe7, 0x87, 0x0a, 0xca, 0xab, 0xac, 0xda, ++ 0x4e, 0x85, 0xa1, 0xfc, 0xdc, 0xb3, 0x83, 0xe6, 0x9d, 0xd9, 0xb9, 0x8b, ++ 0xa7, 0xa8, 0x87, 0x87, 0xf5, 0xd6, 0xb7, 0x8c, 0xad, 0x14, 0x74, 0xc8, ++ 0xfb, 0x79, 0x33, 0x9e, 0xcb, 0xd5, 0xd5, 0x5f, 0xcc, 0x4d, 0x45, 0xba, ++ 0x59, 0x5d, 0xc0, 0xf5, 0xed, 0x2a, 0xbb, 0x56, 0x8e, 0xf3, 0xbe, 0xc3, ++ 0xa1, 0xcd, 0x45, 0xfc, 0xad, 0xb3, 0x6b, 0xf3, 0x30, 0x3f, 0x2b, 0x9a, ++ 0xeb, 0x85, 0xe1, 0xf1, 0x5a, 0x25, 0x7e, 0xcf, 0xea, 0x43, 0xdf, 0x2f, ++ 0x11, 0x70, 0x00, 0xb8, 0x57, 0x63, 0xbb, 0xc4, 0xe5, 0xcc, 0xa7, 0xc0, ++ 0x3a, 0xc6, 0xee, 0xb3, 0xf9, 0x41, 0x55, 0x00, 0xe9, 0xc3, 0xbc, 0x61, ++ 0x41, 0x89, 0xb5, 0x3e, 0xc5, 0x0c, 0x70, 0x4d, 0xd4, 0x98, 0x1b, 0xe5, ++ 0x74, 0xbf, 0x04, 0x6f, 0xbd, 0x09, 0xea, 0x75, 0x5f, 0xc1, 0xdc, 0x4f, ++ 0x41, 0x3e, 0xae, 0xd4, 0x51, 0x80, 0xf0, 0x72, 0xce, 0x77, 0x77, 0x20, ++ 0x3c, 0x57, 0x7f, 0xa1, 0x92, 0x7d, 0xbb, 0x7a, 0x29, 0xf3, 0xaf, 0xa4, ++ 0x7e, 0x18, 0xff, 0x3f, 0x6f, 0x7f, 0x3f, 0xca, 0x57, 0xe4, 0xdf, 0x50, ++ 0x7e, 0xf1, 0x89, 0x79, 0xf8, 0xe2, 0x39, 0x1f, 0x80, 0xbd, 0xf3, 0xf3, ++ 0x78, 0xce, 0x9f, 0x75, 0xc4, 0x9f, 0xc2, 0xde, 0x91, 0x7c, 0xd9, 0x97, ++ 0xfd, 0x12, 0xc2, 0xd7, 0xab, 0x2f, 0x92, 0xaf, 0xef, 0xbf, 0x48, 0xbe, ++ 0x5e, 0x2b, 0xf8, 0xfa, 0x97, 0x94, 0x9e, 0x87, 0xaf, 0x1f, 0x0d, 0xf2, ++ 0xf5, 0x3a, 0x9c, 0xd7, 0xf9, 0xf8, 0x7a, 0xb3, 0xe0, 0xe7, 0x37, 0x05, ++ 0x7f, 0xf7, 0xc5, 0xd7, 0x7f, 0x10, 0x70, 0x7b, 0x27, 0xbe, 0x4f, 0x3f, ++ 0x67, 0x33, 0x8e, 0xd7, 0x5b, 0x8e, 0x73, 0xba, 0x93, 0x7c, 0xf1, 0xd2, ++ 0x9e, 0x51, 0x31, 0xe5, 0xd0, 0xef, 0x4e, 0x31, 0xcf, 0x10, 0xf9, 0xdd, ++ 0x8a, 0xeb, 0x3b, 0x9f, 0xfc, 0xfe, 0x37, 0xf8, 0xfc, 0xf7, 0xd8, 0xef, ++ 0xf9, 0xec, 0x54, 0xd9, 0xaf, 0xc4, 0xf7, 0xf9, 0xf8, 0x64, 0xb8, 0xd3, ++ 0x43, 0xf0, 0x92, 0xf6, 0x68, 0xac, 0xdd, 0x41, 0xeb, 0x91, 0x7c, 0x0f, ++ 0xfc, 0xb2, 0x47, 0xf0, 0xcb, 0x5e, 0xc1, 0x2f, 0x6f, 0x61, 0x3a, 0x2b, ++ 0x9a, 0xdb, 0x07, 0xe1, 0xfc, 0xd5, 0xa3, 0xef, 0x3a, 0xb9, 0x3c, 0x01, ++ 0x4f, 0x26, 0x06, 0xe9, 0x47, 0x8e, 0x7f, 0xa4, 0x37, 0xbc, 0xfe, 0x12, ++ 0x09, 0x5e, 0x59, 0x4c, 0xc0, 0xab, 0x98, 0xcb, 0x91, 0x4c, 0xe6, 0x53, ++ 0x63, 0xb1, 0xdf, 0xa9, 0x0e, 0xca, 0x3b, 0x4e, 0x38, 0xea, 0xd1, 0x55, ++ 0x8c, 0x3d, 0xd4, 0xed, 0x43, 0xb8, 0x7d, 0x1b, 0xcf, 0xfd, 0xcc, 0x5c, ++ 0x85, 0x79, 0x22, 0xd9, 0x75, 0xc7, 0x04, 0x9f, 0x24, 0x76, 0x16, 0x92, ++ 0x7c, 0x01, 0x78, 0x1e, 0xc2, 0x71, 0x25, 0xbd, 0x27, 0x32, 0xc7, 0x14, ++ 0xf4, 0x73, 0xa2, 0x9c, 0x5c, 0x6e, 0x8c, 0x1e, 0xa7, 0xed, 0x44, 0xb9, ++ 0xe4, 0xd0, 0x3c, 0x2a, 0xda, 0x1b, 0xb9, 0x4e, 0xce, 0x0f, 0x12, 0x4e, ++ 0xd0, 0xfe, 0x8b, 0x48, 0xf8, 0xd8, 0x8e, 0xf8, 0x18, 0xd6, 0xdb, 0x6f, ++ 0x08, 0xc7, 0xc3, 0xa7, 0x62, 0xbe, 0x51, 0x4e, 0x0e, 0x8f, 0xf0, 0xfe, ++ 0xa5, 0xfc, 0xc1, 0xfe, 0x87, 0x53, 0xff, 0x2e, 0x03, 0xf6, 0x2f, 0xdb, ++ 0xff, 0x10, 0x94, 0x43, 0xdf, 0x23, 0x7e, 0xc6, 0x2e, 0xaf, 0x55, 0x71, ++ 0x5d, 0x89, 0x4c, 0x8b, 0x41, 0xf9, 0x23, 0xe5, 0x24, 0xcb, 0x84, 0xf6, ++ 0xb9, 0xbd, 0xdb, 0x9b, 0xc4, 0xb8, 0xd0, 0xde, 0xe4, 0x84, 0x74, 0x6c, ++ 0x2d, 0xb4, 0x1f, 0x16, 0x6c, 0x9f, 0xc5, 0x02, 0x0a, 0xc2, 0xc3, 0x39, ++ 0x1f, 0xe4, 0x14, 0x43, 0xfb, 0xdd, 0x4d, 0xf6, 0x6c, 0x9b, 0xd5, 0x63, ++ 0x73, 0x12, 0xbd, 0x30, 0x2e, 0xaf, 0x0a, 0x0c, 0x24, 0x0f, 0xa6, 0xd9, ++ 0x34, 0xe2, 0xa7, 0x48, 0xfa, 0xdf, 0x79, 0x91, 0xfa, 0xdf, 0x29, 0xf4, ++ 0xbf, 0xf3, 0x42, 0xf4, 0xbf, 0x33, 0xa8, 0xff, 0xb1, 0x9d, 0x72, 0x3e, ++ 0xfd, 0x2f, 0xea, 0x8f, 0x70, 0x9e, 0x5b, 0x4e, 0xb8, 0x7b, 0xf0, 0x22, ++ 0xe3, 0x04, 0xbd, 0xf5, 0xbf, 0x33, 0x82, 0xfe, 0xdf, 0x6f, 0xd5, 0xa8, ++ 0xdf, 0x08, 0x7c, 0x34, 0x12, 0xd7, 0x13, 0xe3, 0xd0, 0x46, 0x61, 0x0a, ++ 0x7c, 0x34, 0xda, 0x99, 0x14, 0xd4, 0x3b, 0xd0, 0x6e, 0x0c, 0x7e, 0x6f, ++ 0x13, 0xed, 0x9b, 0xa7, 0x1a, 0x86, 0x92, 0x7d, 0xcd, 0xa2, 0xdd, 0x91, ++ 0xfc, 0x99, 0x42, 0xa7, 0x4d, 0x37, 0xaf, 0x2b, 0x85, 0x9f, 0xc2, 0xda, ++ 0xff, 0xfb, 0xb7, 0xff, 0x91, 0xc7, 0x58, 0x0d, 0x16, 0xf1, 0x79, 0x16, ++ 0x3a, 0x43, 0xfc, 0x96, 0x07, 0xa7, 0x7e, 0x9a, 0xec, 0x25, 0x3f, 0x8e, ++ 0xe9, 0xe2, 0x2b, 0xbf, 0x5e, 0xe9, 0x7e, 0x6f, 0x08, 0x8e, 0xf7, 0xae, ++ 0xca, 0x90, 0xbf, 0x7e, 0xfd, 0x9f, 0x5d, 0x66, 0x84, 0x77, 0x6b, 0x74, ++ 0xec, 0x08, 0x16, 0x17, 0x1c, 0xb7, 0xe6, 0x5f, 0x40, 0x58, 0x60, 0xcf, ++ 0x9f, 0xfc, 0x97, 0x81, 0x52, 0x89, 0xc7, 0x25, 0xed, 0xca, 0x68, 0x06, ++ 0x0c, 0x59, 0xb0, 0xf3, 0x3b, 0x8a, 0x93, 0x9c, 0xec, 0xf8, 0x17, 0xc5, ++ 0x49, 0x2e, 0xb5, 0x97, 0xcf, 0xc0, 0x75, 0xed, 0x7a, 0x8d, 0xc7, 0x4b, ++ 0x4e, 0xbf, 0x7d, 0xd0, 0x89, 0x74, 0x24, 0xc7, 0x5f, 0x26, 0xfc, 0xc8, ++ 0x49, 0xea, 0xb0, 0xd6, 0x00, 0xd0, 0xd3, 0xa9, 0xcd, 0x66, 0x37, 0xfa, ++ 0x21, 0x2a, 0x73, 0x3d, 0x92, 0x0f, 0xf3, 0xa9, 0xd9, 0x63, 0x62, 0x7e, ++ 0x92, 0x83, 0xcc, 0x8a, 0xf5, 0x4d, 0x7c, 0xba, 0xcc, 0xb4, 0x79, 0x75, ++ 0xa7, 0x1a, 0x8b, 0x79, 0xa3, 0x4f, 0xc4, 0x39, 0x94, 0xb3, 0xa4, 0xef, ++ 0x5c, 0x71, 0x48, 0x97, 0xa6, 0x3d, 0x2a, 0xf9, 0x15, 0x2c, 0x91, 0x97, ++ 0xd7, 0x32, 0x6b, 0xfd, 0xd9, 0xfe, 0x20, 0x57, 0xc7, 0x19, 0x98, 0x2b, ++ 0x24, 0x2e, 0x12, 0xaf, 0x45, 0x33, 0x57, 0x48, 0x9c, 0x22, 0xa1, 0xd8, ++ 0xa9, 0xcb, 0x33, 0x8c, 0xa7, 0xc0, 0xb8, 0x8b, 0x18, 0x9f, 0x67, 0x92, ++ 0x27, 0x5d, 0xd7, 0x3e, 0x65, 0x76, 0x7f, 0x5d, 0xfd, 0x34, 0xef, 0xa5, ++ 0xba, 0xf2, 0x8c, 0xf9, 0xa3, 0x74, 0xf9, 0xac, 0xda, 0xf1, 0xba, 0xfa, ++ 0xfd, 0xc0, 0x3f, 0x0a, 0xcd, 0xe7, 0xf8, 0xae, 0xd3, 0xd5, 0x1f, 0xd0, ++ 0x34, 0x43, 0x97, 0x1f, 0xd4, 0x72, 0x8b, 0xae, 0xfe, 0xe7, 0xac, 0xf6, ++ 0xe1, 0x7c, 0x5c, 0xb7, 0x4f, 0xeb, 0x1c, 0x08, 0xf3, 0x9c, 0x27, 0xe6, ++ 0x39, 0x64, 0x5d, 0xb9, 0xae, 0xdd, 0xa5, 0x86, 0xd6, 0x3c, 0xe0, 0x68, ++ 0x36, 0x2f, 0xb0, 0x70, 0x2a, 0x1b, 0x01, 0xfc, 0xe8, 0x5f, 0xa8, 0xeb, ++ 0xe7, 0xf8, 0xb3, 0xc5, 0x7b, 0x14, 0xf8, 0xce, 0x5a, 0x4c, 0x87, 0x38, ++ 0xbc, 0x6a, 0x19, 0xc2, 0x8b, 0xd6, 0x0f, 0xf0, 0xac, 0x6c, 0x53, 0xd8, ++ 0x63, 0xd0, 0xbe, 0x6a, 0x1d, 0x2f, 0x97, 0xed, 0xe6, 0xb7, 0xaf, 0x5d, ++ 0x9d, 0x01, 0xe9, 0x02, 0xbf, 0xfe, 0x3b, 0x63, 0x7e, 0x33, 0xca, 0xfd, ++ 0x45, 0x9b, 0xf5, 0xdf, 0x1f, 0x74, 0xda, 0x13, 0x29, 0x4e, 0x93, 0xce, ++ 0xd2, 0xcf, 0xaa, 0x91, 0xe8, 0xc0, 0x46, 0xe3, 0x9d, 0x5a, 0xaf, 0xfa, ++ 0x2d, 0x80, 0x3f, 0xd5, 0x37, 0x24, 0x8c, 0x0e, 0xf4, 0xf8, 0x60, 0xff, ++ 0x4b, 0xba, 0x70, 0x09, 0xba, 0xb0, 0xa4, 0xea, 0xe9, 0x22, 0xca, 0xa5, ++ 0xa7, 0x8b, 0xaa, 0xbd, 0xdb, 0xf2, 0x02, 0xac, 0x37, 0x9c, 0x63, 0x86, ++ 0x3a, 0x23, 0xc2, 0x51, 0xc2, 0xd9, 0xee, 0xd6, 0xd3, 0x8b, 0x84, 0x2f, ++ 0xe8, 0xc9, 0xff, 0x13, 0xf8, 0xbe, 0x81, 0xf0, 0x8d, 0x09, 0xc2, 0x37, ++ 0x2d, 0xca, 0xbb, 0x03, 0xf9, 0xef, 0x74, 0xdb, 0x72, 0x95, 0xe1, 0x78, ++ 0x5e, 0xef, 0x68, 0x6c, 0xd7, 0x97, 0xfc, 0x9d, 0x62, 0x2f, 0xdc, 0x8d, ++ 0xf2, 0xe2, 0x74, 0xdb, 0xd7, 0xb7, 0xed, 0x80, 0xf5, 0xd5, 0xc4, 0x70, ++ 0xfe, 0x3f, 0xb9, 0xe3, 0xbb, 0xc1, 0x28, 0xdf, 0x64, 0xbd, 0xeb, 0x56, ++ 0x94, 0xbb, 0x27, 0x8e, 0x06, 0xe0, 0x2a, 0xde, 0xf7, 0xb0, 0x7f, 0xf9, ++ 0xbd, 0x73, 0xe8, 0xd3, 0xcd, 0xa3, 0x60, 0x3d, 0xa5, 0x6d, 0x2a, 0xf1, ++ 0xf1, 0x49, 0xa3, 0xad, 0x49, 0xb9, 0x9c, 0x96, 0xe9, 0x72, 0x00, 0xdc, ++ 0x94, 0x1e, 0xbc, 0x71, 0x3c, 0x4a, 0xbc, 0x29, 0xed, 0x3b, 0xff, 0xa9, ++ 0x00, 0xde, 0x2c, 0x30, 0x43, 0x13, 0xc6, 0x1b, 0xc7, 0xb9, 0xad, 0x38, ++ 0x4f, 0x8c, 0xf4, 0x21, 0xbd, 0x28, 0x60, 0x87, 0x9e, 0x8d, 0x21, 0x7d, ++ 0xf2, 0x31, 0xce, 0xcf, 0x57, 0xa8, 0x31, 0x8a, 0xf7, 0xfc, 0x89, 0xb9, ++ 0x1b, 0xa0, 0x56, 0x83, 0x3d, 0xef, 0xb2, 0xf3, 0xc4, 0x05, 0x0e, 0x38, ++ 0x49, 0x5f, 0x7a, 0x1b, 0x51, 0xbe, 0x8e, 0xed, 0xf4, 0x9e, 0xde, 0x82, ++ 0xdd, 0x1b, 0x3b, 0x1d, 0x18, 0xff, 0x9d, 0xe2, 0xf5, 0xd2, 0x7a, 0x2e, ++ 0xc7, 0x09, 0x82, 0xfd, 0xc4, 0x1c, 0x00, 0x27, 0x7b, 0xb0, 0x3d, 0xb4, ++ 0x3b, 0x8e, 0xe3, 0x4e, 0x29, 0x70, 0xc6, 0xa0, 0xbd, 0xb5, 0x75, 0xd7, ++ 0x32, 0xf2, 0xdf, 0x58, 0x7b, 0x22, 0xd9, 0x83, 0x48, 0x32, 0xa1, 0x76, ++ 0x4e, 0xb8, 0x9f, 0x25, 0xed, 0x46, 0xb0, 0xd3, 0x4f, 0xf1, 0x79, 0x78, ++ 0xbe, 0x76, 0x86, 0xda, 0xe9, 0xc2, 0x6e, 0x93, 0xf6, 0x76, 0x5f, 0xfd, ++ 0x80, 0x7e, 0x1d, 0x8a, 0xf6, 0x41, 0x5f, 0xa9, 0xb2, 0x43, 0x1d, 0x6a, ++ 0x04, 0xb8, 0x74, 0x2b, 0xd1, 0xee, 0xa7, 0x22, 0xe8, 0x0d, 0x4b, 0x82, ++ 0xde, 0x9f, 0xbd, 0x32, 0x18, 0xdf, 0xb2, 0x24, 0x84, 0xe8, 0x89, 0x25, ++ 0x77, 0x9e, 0xde, 0x8d, 0xfa, 0x03, 0xe0, 0x1d, 0x9d, 0x00, 0xf3, 0xb4, ++ 0xdb, 0x41, 0x7f, 0x2b, 0x17, 0xa4, 0xbf, 0x63, 0xb1, 0xfe, 0x23, 0x31, ++ 0xb1, 0x44, 0xd7, 0xdd, 0x7b, 0x55, 0xff, 0x10, 0x68, 0x70, 0xca, 0xea, ++ 0x8a, 0x73, 0x02, 0xbc, 0xf2, 0x51, 0x9f, 0x5c, 0x4e, 0x71, 0x20, 0x96, ++ 0xe1, 0x0c, 0xb6, 0xab, 0xb5, 0xa6, 0x0f, 0x33, 0x82, 0x3e, 0xc9, 0x3f, ++ 0x35, 0x34, 0x8e, 0x9d, 0x23, 0xae, 0x9e, 0x8f, 0xf5, 0x46, 0x07, 0xf3, ++ 0xed, 0x51, 0x4c, 0x67, 0x17, 0xac, 0x1e, 0xc5, 0xe7, 0xe5, 0x12, 0xeb, ++ 0x3c, 0x10, 0xc5, 0xed, 0xac, 0xb1, 0x22, 0x5f, 0x13, 0x16, 0x8f, 0xaa, ++ 0x69, 0xe2, 0xf1, 0xd7, 0x0d, 0x66, 0x60, 0xb5, 0x90, 0x7e, 0xc6, 0x26, ++ 0xd8, 0x79, 0xbc, 0xc7, 0x5a, 0x30, 0x16, 0xd7, 0xb3, 0x41, 0xc4, 0xa1, ++ 0x57, 0xe7, 0x28, 0x64, 0x27, 0xac, 0x56, 0x14, 0xb2, 0x1b, 0x76, 0xda, ++ 0x0a, 0xa9, 0xfc, 0x90, 0xb3, 0x20, 0x0f, 0xe1, 0x77, 0xb9, 0x18, 0x67, ++ 0x2c, 0x8c, 0x81, 0xfa, 0xb9, 0xa5, 0xbf, 0x98, 0x8f, 0xb0, 0xc7, 0x64, ++ 0xff, 0xdd, 0xa2, 0x7e, 0xb7, 0xb3, 0x90, 0xd2, 0xb1, 0x09, 0x0e, 0x81, ++ 0x17, 0xc7, 0xa5, 0x88, 0xff, 0x0a, 0xab, 0x46, 0xfd, 0x9a, 0x55, 0x35, ++ 0x22, 0x9c, 0xf3, 0x13, 0xb8, 0xfd, 0x53, 0x13, 0xcd, 0xa4, 0x9f, 0x46, ++ 0xfc, 0x34, 0x49, 0xf0, 0xd7, 0x64, 0x21, 0x47, 0x8b, 0xec, 0x20, 0x47, ++ 0xb9, 0x1f, 0x38, 0x75, 0x12, 0x94, 0x5f, 0x25, 0xf9, 0x4f, 0xcd, 0xff, ++ 0xd0, 0x0c, 0xa4, 0x3b, 0x29, 0xce, 0xc4, 0x30, 0x5e, 0x7c, 0x95, 0x90, ++ 0x57, 0xec, 0x8c, 0xf1, 0x53, 0x94, 0x27, 0x0e, 0xf8, 0x1f, 0xca, 0x27, ++ 0x6d, 0xa8, 0x63, 0x17, 0x8c, 0xc4, 0x0a, 0x98, 0xe9, 0xd3, 0x50, 0x39, ++ 0x53, 0xc8, 0x3a, 0xd3, 0x91, 0x3e, 0x8a, 0xac, 0xfa, 0xef, 0x93, 0xb6, ++ 0x4f, 0x3e, 0x8a, 0xf2, 0x6f, 0x12, 0x33, 0x06, 0xbf, 0xe7, 0x70, 0x78, ++ 0xc7, 0x38, 0x83, 0x7c, 0x70, 0x63, 0x42, 0x8f, 0x1e, 0xc8, 0x44, 0x39, ++ 0xd5, 0x16, 0xdd, 0xf5, 0xcb, 0x29, 0xe8, 0x1f, 0xbf, 0xa3, 0xba, 0x9f, ++ 0x62, 0xbd, 0xd7, 0x5b, 0x91, 0xc0, 0xed, 0xb0, 0x66, 0xb4, 0xa3, 0x6d, ++ 0x04, 0x2a, 0x0d, 0xe3, 0x97, 0xd9, 0x62, 0x1f, 0xa5, 0x77, 0x7d, 0x0e, ++ 0x9f, 0x0d, 0x7d, 0xc4, 0x79, 0x2b, 0xac, 0x05, 0x73, 0x11, 0xbe, 0xaa, ++ 0xdd, 0x53, 0x81, 0x29, 0xb0, 0xc3, 0xa5, 0xc8, 0xef, 0x6d, 0x66, 0x6f, ++ 0x03, 0xfa, 0x1d, 0xdd, 0x2f, 0x33, 0x9a, 0xc7, 0x50, 0x3f, 0xdb, 0x81, ++ 0xf9, 0xe1, 0x3e, 0x17, 0x2e, 0x17, 0xf0, 0xef, 0x8b, 0x19, 0x81, 0x74, ++ 0x3d, 0xd2, 0x40, 0x7e, 0xbc, 0x6b, 0x5d, 0xcb, 0xce, 0x28, 0x28, 0x77, ++ 0xad, 0x57, 0x9c, 0x0a, 0xe4, 0x4d, 0x46, 0xe6, 0xb3, 0x8f, 0x0a, 0xca, ++ 0x93, 0xc6, 0x84, 0x1c, 0x9a, 0x6c, 0x73, 0x57, 0xf9, 0x0e, 0x3b, 0x94, ++ 0x27, 0xad, 0x9f, 0xae, 0xf4, 0x87, 0xf9, 0xb4, 0xb0, 0x96, 0xa2, 0x58, ++ 0xb4, 0xb7, 0xd6, 0xb3, 0x88, 0x71, 0xc1, 0x3a, 0x41, 0x47, 0x53, 0x0a, ++ 0x76, 0x50, 0x7c, 0x3d, 0xa9, 0x1b, 0xe8, 0x34, 0x02, 0x1d, 0xd4, 0x25, ++ 0x18, 0xa4, 0x1d, 0xff, 0x9f, 0xb8, 0x8e, 0xb1, 0xdd, 0xde, 0xd1, 0x4a, ++ 0xff, 0xa0, 0x3c, 0x22, 0x51, 0x8b, 0x7e, 0xd3, 0x2e, 0x83, 0x3f, 0x52, ++ 0x9c, 0x76, 0x9a, 0xad, 0xa8, 0x11, 0xdb, 0x0d, 0xf7, 0xb3, 0x88, 0x71, ++ 0xbf, 0x9a, 0x68, 0x3e, 0x8f, 0x26, 0xab, 0x67, 0x0d, 0xd2, 0xe9, 0xf0, ++ 0xed, 0x01, 0xf2, 0x87, 0xaa, 0xa4, 0x5c, 0x9f, 0x67, 0x60, 0x46, 0xa0, ++ 0xab, 0x1b, 0x84, 0x1c, 0xbf, 0x61, 0x7d, 0xc7, 0x3f, 0xc9, 0x8e, 0xf8, ++ 0xee, 0xec, 0x59, 0x55, 0xda, 0xa1, 0x8c, 0xfa, 0x67, 0x28, 0x97, 0xaa, ++ 0x6e, 0xb4, 0xfb, 0x31, 0x7e, 0x5f, 0xd5, 0x9e, 0xe3, 0xa3, 0x79, 0x79, ++ 0x14, 0xf7, 0x20, 0x48, 0x6a, 0xda, 0xdf, 0xf7, 0x60, 0xbe, 0x2a, 0x37, ++ 0xd7, 0x81, 0x71, 0x66, 0xed, 0xef, 0x4c, 0x39, 0x3c, 0x94, 0x4c, 0x58, ++ 0xc6, 0xe5, 0x9f, 0x91, 0x1d, 0x96, 0x7a, 0x96, 0xec, 0x06, 0x74, 0x8a, ++ 0x18, 0x9b, 0x21, 0xe8, 0xb9, 0x06, 0xfd, 0xd1, 0x24, 0xd2, 0x1f, 0xcd, ++ 0x31, 0x00, 0xff, 0xaa, 0xf5, 0xf5, 0x3b, 0xd2, 0xa0, 0xbf, 0x3f, 0x3f, ++ 0x0d, 0x7d, 0x40, 0xd1, 0x3e, 0xd5, 0xbb, 0xef, 0x67, 0xd0, 0xef, 0x4d, ++ 0xa0, 0xc4, 0x56, 0x8c, 0xc2, 0xd4, 0xc8, 0x4a, 0x29, 0x0e, 0x9d, 0x4a, ++ 0xfd, 0xdc, 0x28, 0xfa, 0xf1, 0xfd, 0x0b, 0xc6, 0xb5, 0x06, 0xc7, 0xbd, ++ 0xa9, 0x7d, 0x2f, 0xad, 0x67, 0x9f, 0x89, 0xf9, 0xac, 0x40, 0xbf, 0xa6, ++ 0x42, 0x3e, 0xb4, 0xe9, 0x3f, 0xe2, 0xfc, 0x0d, 0x28, 0x08, 0x99, 0x9f, ++ 0xe8, 0x6c, 0xa6, 0xb5, 0x65, 0x12, 0xea, 0xd7, 0x93, 0xe6, 0xee, 0x11, ++ 0x6e, 0xb4, 0x7f, 0x5f, 0xfb, 0x6b, 0x96, 0x0f, 0xe0, 0xff, 0xf1, 0xcf, ++ 0x4f, 0xdb, 0xd1, 0x2e, 0xfe, 0xc4, 0xd8, 0x6d, 0xc7, 0xef, 0x47, 0xee, ++ 0xfe, 0xc0, 0xae, 0x01, 0xfc, 0x3e, 0xbe, 0x5b, 0x2d, 0x46, 0x78, 0xdf, ++ 0x26, 0xf4, 0x8d, 0x84, 0x77, 0x87, 0xc0, 0x7b, 0x42, 0xa2, 0xa7, 0x0d, ++ 0xf1, 0x72, 0x7b, 0xdd, 0xf7, 0x79, 0xde, 0x10, 0xbc, 0xb3, 0x15, 0x49, ++ 0xc4, 0x3f, 0x0b, 0xfc, 0x30, 0xc3, 0x10, 0xbb, 0x63, 0xd1, 0xe6, 0x18, ++ 0xb4, 0x84, 0x7a, 0xf2, 0xd5, 0xad, 0x09, 0xba, 0xbc, 0xd4, 0x1f, 0xd5, ++ 0x16, 0x56, 0x1b, 0x29, 0x0e, 0xf4, 0x8d, 0xe0, 0x97, 0x05, 0x5b, 0x36, ++ 0x98, 0x33, 0x5c, 0x38, 0xbe, 0xf7, 0x2d, 0x1c, 0xff, 0x88, 0x91, 0xd3, ++ 0xcf, 0x91, 0xed, 0x76, 0xbf, 0x2f, 0x27, 0x38, 0x9f, 0xf2, 0x2d, 0x23, ++ 0xcd, 0x68, 0x97, 0x7c, 0xd2, 0x6e, 0x61, 0x01, 0xd4, 0x83, 0xc6, 0x4e, ++ 0x13, 0xb3, 0x71, 0x39, 0xa3, 0x00, 0x3d, 0x78, 0x05, 0xde, 0xc3, 0xe7, ++ 0xb9, 0xfb, 0xf5, 0x18, 0xea, 0xaf, 0xe2, 0x57, 0x5c, 0x2e, 0x95, 0xc1, ++ 0x58, 0x2b, 0x00, 0xae, 0xde, 0xf6, 0x05, 0x24, 0x7f, 0xc2, 0xd7, 0x51, ++ 0xf1, 0xb1, 0x6b, 0x72, 0x0a, 0xc0, 0xbb, 0xe2, 0x5e, 0x85, 0xe1, 0xbe, ++ 0x0a, 0xd6, 0xbf, 0x1b, 0xf0, 0xe6, 0x5d, 0x71, 0xcf, 0x57, 0x68, 0xe7, ++ 0x85, 0xaf, 0xb3, 0xcc, 0xa7, 0x97, 0x47, 0x73, 0x9b, 0xf4, 0x79, 0x29, ++ 0x27, 0xab, 0x04, 0xbe, 0xe7, 0x31, 0x77, 0x13, 0xda, 0xcf, 0x15, 0x2d, ++ 0xfa, 0x7a, 0x55, 0xed, 0xf7, 0x51, 0xff, 0x55, 0x61, 0x72, 0xec, 0x78, ++ 0x82, 0xb0, 0xaf, 0xf2, 0xd8, 0xd8, 0xb3, 0x60, 0xa7, 0x34, 0xd8, 0xfa, ++ 0xc7, 0x79, 0xcf, 0xa1, 0xaf, 0x4e, 0xd4, 0x81, 0x5c, 0x1f, 0xcc, 0xd8, ++ 0xb1, 0x3a, 0x2b, 0xa5, 0x47, 0xea, 0x18, 0xa5, 0x6d, 0x09, 0x2e, 0x82, ++ 0xf7, 0xe2, 0xf6, 0xf7, 0xef, 0x42, 0xba, 0x59, 0xd2, 0xb6, 0xd5, 0x8c, ++ 0xfd, 0x34, 0xfa, 0x27, 0x39, 0xc6, 0x43, 0x15, 0x4b, 0xfb, 0xcd, 0x0c, ++ 0xbf, 0x5b, 0x70, 0x5f, 0x15, 0x9a, 0xce, 0xc1, 0x7d, 0x55, 0x98, 0x27, ++ 0xda, 0x3a, 0x88, 0xff, 0xd1, 0x8a, 0xe7, 0x7b, 0xe4, 0x47, 0x93, 0x23, ++ 0x6c, 0x9f, 0x55, 0xac, 0xaf, 0x54, 0xc0, 0x9f, 0xd9, 0xb8, 0x5d, 0x51, ++ 0x8a, 0xeb, 0x19, 0x81, 0xdf, 0x8d, 0x5f, 0x87, 0xae, 0xe7, 0xd4, 0x9e, ++ 0xd1, 0x56, 0x1c, 0xd7, 0x9c, 0x28, 0xe4, 0xf1, 0x58, 0x58, 0x97, 0x7a, ++ 0xe1, 0xeb, 0x92, 0xeb, 0x91, 0xeb, 0x93, 0xe5, 0xd5, 0x2a, 0xd0, 0x59, ++ 0x84, 0xf6, 0x92, 0xbe, 0xdb, 0x04, 0xbd, 0xcd, 0xdb, 0x38, 0x7d, 0x75, ++ 0x3a, 0x80, 0xa2, 0xe1, 0xb5, 0xcf, 0xb3, 0xbb, 0xb8, 0x5f, 0x4a, 0xf6, ++ 0xbc, 0x51, 0xe0, 0xc7, 0x68, 0x5b, 0x43, 0xf6, 0xbc, 0x91, 0x81, 0xbd, ++ 0xce, 0xd7, 0x29, 0xec, 0x79, 0xf6, 0x21, 0xf2, 0xad, 0xa4, 0xb3, 0x70, ++ 0x3a, 0xaa, 0x42, 0x38, 0x50, 0x00, 0x87, 0xb7, 0xb3, 0x0a, 0x3b, 0xbf, ++ 0x87, 0x7e, 0xda, 0xef, 0x27, 0x78, 0x48, 0x3c, 0x03, 0x7f, 0xa4, 0x8a, ++ 0x7d, 0xb3, 0x54, 0xdc, 0x37, 0x03, 0x3a, 0x3a, 0x14, 0x46, 0x47, 0xba, ++ 0x7c, 0x45, 0x8b, 0x3e, 0xff, 0xa5, 0xa9, 0x2b, 0x1b, 0xf9, 0x1b, 0xe8, ++ 0xe5, 0x50, 0x28, 0x7c, 0xbf, 0x0c, 0x3b, 0x67, 0x21, 0xd3, 0xa4, 0xc4, ++ 0xfe, 0x04, 0x87, 0x79, 0x2e, 0x6d, 0xb2, 0x03, 0xca, 0x2b, 0x98, 0x67, ++ 0x35, 0xdf, 0x5f, 0x6d, 0x21, 0xb8, 0x1c, 0x31, 0xb6, 0xec, 0xfe, 0x19, ++ 0xf2, 0xdd, 0x46, 0x4e, 0xf7, 0x9f, 0x08, 0xbc, 0xff, 0x32, 0xd1, 0x33, ++ 0x21, 0x11, 0xf5, 0x95, 0x51, 0x1b, 0x81, 0xf2, 0xbd, 0x70, 0x65, 0x9a, ++ 0x9a, 0x08, 0xf5, 0xca, 0x9a, 0x15, 0x07, 0xf2, 0xd3, 0xdc, 0xc6, 0x91, ++ 0x93, 0x91, 0x0f, 0x47, 0x31, 0x8d, 0xfa, 0x9b, 0x93, 0x10, 0xd9, 0x4e, ++ 0x9b, 0x93, 0xc8, 0xe1, 0x5f, 0x5e, 0x6b, 0x62, 0x66, 0xb0, 0xef, 0xcb, ++ 0x61, 0x0c, 0x94, 0x6b, 0xe5, 0xdb, 0x55, 0xe2, 0x73, 0xa0, 0x23, 0x5b, ++ 0x09, 0xe0, 0x61, 0xbe, 0xc0, 0x43, 0xf5, 0xbd, 0x5b, 0xcd, 0x69, 0x90, ++ 0xce, 0xaf, 0xad, 0xe2, 0x76, 0x82, 0x9f, 0xf3, 0x0b, 0xc0, 0x95, 0xec, ++ 0x84, 0x85, 0xcd, 0x1d, 0x66, 0xa4, 0x57, 0xf0, 0x47, 0x22, 0xf2, 0x9b, ++ 0xd4, 0x03, 0xd5, 0xad, 0xfa, 0xf2, 0x1a, 0xd6, 0x4c, 0x78, 0xa8, 0x41, ++ 0x3e, 0x93, 0x74, 0x0c, 0xe3, 0xcf, 0x4e, 0x14, 0x7c, 0xe6, 0x66, 0x6e, ++ 0xa4, 0x47, 0xef, 0x5d, 0x76, 0xab, 0x12, 0x77, 0xfe, 0xf5, 0xb2, 0xde, ++ 0x71, 0x05, 0x8a, 0x3b, 0x9c, 0xda, 0x33, 0x88, 0xec, 0xca, 0x53, 0x2e, ++ 0x57, 0x0a, 0xd6, 0xf3, 0x02, 0xce, 0x3b, 0xd1, 0x5e, 0x36, 0x7a, 0xc7, ++ 0xe2, 0x77, 0x80, 0x13, 0xe9, 0xa3, 0xee, 0xfa, 0x18, 0x3f, 0xda, 0xcd, ++ 0x07, 0xce, 0x80, 0x3f, 0x88, 0x36, 0x9c, 0xc3, 0x3b, 0x16, 0xed, 0xa4, ++ 0xae, 0xbf, 0x67, 0xb1, 0x35, 0x4a, 0x90, 0x3e, 0xe5, 0x7a, 0x6a, 0xac, ++ 0xcd, 0x44, 0x9f, 0x35, 0x4c, 0xef, 0x6f, 0x96, 0x81, 0x63, 0x83, 0xfb, ++ 0x9b, 0x65, 0x9b, 0x12, 0xfc, 0x3e, 0x85, 0xfa, 0x1f, 0xd1, 0x86, 0x76, ++ 0xc5, 0x26, 0x13, 0xd9, 0x0d, 0x3e, 0xb6, 0x2c, 0x95, 0x01, 0x9d, 0x79, ++ 0x56, 0x99, 0x48, 0x1e, 0x96, 0xb7, 0xc5, 0x93, 0xbf, 0x5b, 0xde, 0xc8, ++ 0xf7, 0x01, 0xca, 0xb7, 0xc4, 0xfb, 0x55, 0xee, 0xd7, 0x7f, 0x38, 0x30, ++ 0x2f, 0x88, 0x87, 0x03, 0x8d, 0x45, 0xe6, 0x34, 0xc2, 0x53, 0x8e, 0x9b, ++ 0xe2, 0xc3, 0x6d, 0x26, 0x1d, 0x7d, 0x4b, 0xfc, 0x84, 0xfb, 0x8b, 0x0b, ++ 0x9b, 0x3a, 0x76, 0xa7, 0xba, 0x7a, 0xfb, 0x8b, 0x11, 0xf0, 0x73, 0xa8, ++ 0x0f, 0xfc, 0x1c, 0x0a, 0xc5, 0x4f, 0x73, 0x18, 0x7e, 0xd8, 0xdd, 0x09, ++ 0x5c, 0xce, 0x2c, 0x7d, 0x73, 0x90, 0x15, 0xe6, 0x77, 0xaa, 0x36, 0xca, ++ 0xad, 0x46, 0xb0, 0x37, 0xa4, 0x1e, 0x62, 0x99, 0x40, 0x80, 0x79, 0xc1, ++ 0xf8, 0x53, 0x71, 0x3a, 0xc7, 0x07, 0x33, 0xba, 0x93, 0x11, 0x9f, 0xa7, ++ 0x9b, 0xc7, 0x10, 0xbe, 0xc2, 0xf1, 0x54, 0xfc, 0xc3, 0x5c, 0xc2, 0x07, ++ 0xfb, 0xbb, 0x9d, 0xa1, 0x3d, 0x33, 0x07, 0xfc, 0x90, 0x19, 0xf0, 0xfd, ++ 0x76, 0x85, 0xf3, 0xc7, 0x9c, 0x86, 0x6b, 0x8b, 0x51, 0x5f, 0x6f, 0x4a, ++ 0xe4, 0x72, 0xe6, 0x3d, 0x90, 0x4f, 0x9a, 0x99, 0xb1, 0xf7, 0x41, 0x3e, ++ 0x69, 0x20, 0x9f, 0x3e, 0x00, 0xb9, 0x85, 0xf9, 0x3f, 0xd7, 0xa5, 0x52, ++ 0xfe, 0xaf, 0x75, 0x2e, 0x4a, 0xff, 0x56, 0x37, 0x94, 0xd2, 0x43, 0x62, ++ 0xbf, 0x54, 0xf2, 0x0d, 0x10, 0x80, 0x19, 0xed, 0xc2, 0xe7, 0x04, 0xbf, ++ 0x3c, 0x97, 0x28, 0xe3, 0x81, 0xcb, 0x53, 0xd1, 0x74, 0x28, 0xfe, 0xe1, ++ 0x83, 0x31, 0x06, 0x34, 0xdd, 0x7d, 0x33, 0xaf, 0x9b, 0x94, 0xc5, 0xd8, ++ 0xf5, 0x9a, 0x5e, 0xdf, 0xcd, 0xbe, 0x51, 0xaf, 0xcf, 0xba, 0x4c, 0x8e, ++ 0xc9, 0xa9, 0xe8, 0xb7, 0xde, 0xab, 0x90, 0xdd, 0x57, 0xee, 0x99, 0xa0, ++ 0xab, 0xcf, 0x8c, 0x2e, 0xf3, 0x74, 0x0c, 0x6c, 0x0f, 0x1d, 0x1d, 0xfc, ++ 0x4e, 0xf6, 0x9c, 0xcb, 0x3c, 0x03, 0xf8, 0xfd, 0xe6, 0xa9, 0x09, 0xba, ++ 0xfa, 0x33, 0x9b, 0x32, 0x74, 0xf9, 0x9d, 0x89, 0x2e, 0x5a, 0xf7, 0xf4, ++ 0xe2, 0x01, 0xba, 0xef, 0xb7, 0x94, 0x5e, 0xa6, 0xcb, 0x97, 0x9d, 0x01, ++ 0x20, 0x8c, 0x46, 0x6a, 0x76, 0x12, 0x1e, 0x96, 0x5b, 0x99, 0x30, 0x16, ++ 0x9d, 0x3c, 0x2e, 0xe8, 0xe0, 0x75, 0xbf, 0xae, 0x1d, 0x9b, 0xf2, 0x13, ++ 0x98, 0xef, 0xd7, 0x6f, 0x9b, 0xa8, 0x3c, 0x1c, 0x1f, 0x12, 0xaf, 0xf3, ++ 0xd6, 0x19, 0x98, 0x17, 0xa6, 0x36, 0x77, 0x1d, 0xac, 0x0d, 0xfa, 0x3d, ++ 0xd4, 0x02, 0x78, 0x82, 0x76, 0xc7, 0xf7, 0xd9, 0xc9, 0xbf, 0x58, 0xbd, ++ 0x65, 0xf4, 0xbb, 0xe3, 0x20, 0x7f, 0x60, 0x8b, 0x89, 0xe2, 0x02, 0x07, ++ 0x1a, 0x13, 0x1e, 0x40, 0xfb, 0xe8, 0xc0, 0x96, 0xa4, 0x58, 0x06, 0xa9, ++ 0x77, 0xb5, 0x2a, 0xec, 0x08, 0x87, 0x99, 0x85, 0xc8, 0xab, 0xa2, 0xc6, ++ 0xfa, 0xdb, 0x50, 0x2e, 0x95, 0xf9, 0x2d, 0x6e, 0xb2, 0x17, 0x76, 0xf9, ++ 0x9e, 0x94, 0x79, 0x17, 0xfa, 0xa3, 0x38, 0x49, 0xe4, 0x97, 0x0f, 0x55, ++ 0x3f, 0xc6, 0xb7, 0x00, 0x7f, 0x3c, 0x2e, 0xf0, 0xac, 0x85, 0xec, 0xdd, ++ 0x23, 0x60, 0xb7, 0xe1, 0xd6, 0xf8, 0x11, 0x85, 0x35, 0x62, 0x8a, 0x8a, ++ 0x25, 0x0e, 0xca, 0xbf, 0xe9, 0x4c, 0xf2, 0x23, 0x3f, 0x17, 0xff, 0xa0, ++ 0x6a, 0xa9, 0x48, 0x4f, 0xcf, 0x46, 0x51, 0x7d, 0x8a, 0x50, 0x40, 0xf9, ++ 0xb1, 0xf7, 0x07, 0x3d, 0xb5, 0x86, 0xe8, 0xcb, 0xd5, 0x1a, 0x20, 0xbe, ++ 0xb5, 0x90, 0x3f, 0x30, 0xb7, 0x8b, 0xaf, 0x8f, 0x29, 0xa3, 0x32, 0x10, ++ 0xff, 0x47, 0xe2, 0x99, 0x16, 0x0f, 0x93, 0xa8, 0x5e, 0xf6, 0xd7, 0xfd, ++ 0x46, 0xc0, 0xd3, 0x82, 0xc1, 0x9d, 0x23, 0x02, 0xd0, 0xae, 0x34, 0x27, ++ 0x90, 0x34, 0x0b, 0xda, 0x9d, 0xd8, 0x68, 0xa2, 0xf3, 0x20, 0xd8, 0xaf, ++ 0x03, 0xf2, 0xd5, 0xcf, 0x59, 0x36, 0x70, 0x39, 0xa2, 0xa5, 0x4c, 0x1f, ++ 0x1e, 0x0a, 0x4f, 0xff, 0x08, 0x5c, 0xf7, 0x1c, 0x83, 0xe7, 0xff, 0x25, ++ 0x02, 0xfe, 0x8e, 0x55, 0xfa, 0x47, 0x90, 0x3c, 0xbb, 0x3b, 0x89, 0xf8, ++ 0x2a, 0x1c, 0xee, 0x87, 0xcc, 0x5e, 0x82, 0xaf, 0x0f, 0xf9, 0x40, 0x09, ++ 0xca, 0xc7, 0x20, 0x9f, 0xf1, 0x7d, 0x1e, 0x10, 0x6a, 0x69, 0x28, 0x67, ++ 0xe6, 0x9a, 0xdc, 0xc9, 0xa8, 0x9f, 0x0e, 0x35, 0x9b, 0xc8, 0xee, 0x04, ++ 0xfd, 0x11, 0x3b, 0x9d, 0xe2, 0x2b, 0x2f, 0x11, 0x1d, 0x1f, 0x32, 0xba, ++ 0x26, 0xe3, 0xba, 0x0f, 0x35, 0xe5, 0x30, 0x94, 0x57, 0x72, 0xdc, 0xf2, ++ 0x66, 0x95, 0xfc, 0x02, 0xa4, 0x3f, 0xaa, 0xbf, 0x56, 0xf5, 0x82, 0x8d, ++ 0xc0, 0xa4, 0x9e, 0xf2, 0x35, 0x29, 0x5e, 0x96, 0xd2, 0x9b, 0x6e, 0xee, ++ 0x58, 0x3a, 0x36, 0x05, 0xd7, 0x13, 0x6e, 0xdf, 0xca, 0xf4, 0x4b, 0xe0, ++ 0x55, 0x6f, 0x88, 0xbd, 0xb0, 0xf0, 0x35, 0xd5, 0x43, 0xe7, 0x81, 0x72, ++ 0xbb, 0x8c, 0x37, 0x0e, 0x0f, 0x5d, 0x47, 0x23, 0xe7, 0xb7, 0x54, 0xde, ++ 0xff, 0x72, 0x21, 0xd7, 0x17, 0xf7, 0xff, 0xc3, 0x7e, 0x9b, 0x01, 0xe5, ++ 0xfa, 0x80, 0x38, 0x8c, 0x93, 0x1f, 0xfd, 0x50, 0x25, 0x3a, 0x3b, 0xda, ++ 0xbf, 0x25, 0x2f, 0x15, 0x48, 0xff, 0x84, 0x61, 0x47, 0xde, 0x4f, 0x20, ++ 0x7f, 0xbc, 0xc4, 0x77, 0xd8, 0x08, 0xf9, 0x27, 0x2d, 0xde, 0x81, 0x49, ++ 0xb0, 0xa4, 0x45, 0x86, 0xe6, 0x6c, 0xf4, 0x8f, 0x4e, 0xb6, 0x1f, 0x7c, ++ 0x60, 0x02, 0xb4, 0x3b, 0xf6, 0xbc, 0xc9, 0x8d, 0xc3, 0x2e, 0x7c, 0x76, ++ 0x41, 0x3f, 0x8a, 0xe7, 0x08, 0xfb, 0xba, 0xb7, 0xdc, 0x0a, 0xa4, 0x73, ++ 0xfb, 0x40, 0x4b, 0x53, 0x00, 0x9e, 0x8b, 0x5c, 0xad, 0xa4, 0xb7, 0x5d, ++ 0x5b, 0x14, 0xc6, 0xd7, 0xef, 0xe7, 0xe7, 0x05, 0x84, 0x1e, 0x77, 0x3c, ++ 0xa4, 0xa0, 0x2d, 0xc5, 0x0e, 0x8e, 0xb1, 0xaf, 0xc1, 0x78, 0xc7, 0x5c, ++ 0x60, 0x8f, 0x50, 0xbb, 0xfb, 0xa0, 0x89, 0xdb, 0x05, 0x79, 0x49, 0x5c, ++ 0x9e, 0x48, 0xfd, 0xbe, 0x5c, 0xe4, 0xe7, 0x1a, 0x38, 0x5d, 0xb3, 0xd7, ++ 0x15, 0xff, 0x26, 0x61, 0xef, 0x84, 0xea, 0x01, 0x29, 0x97, 0x27, 0x25, ++ 0xf5, 0xa7, 0xfa, 0x3d, 0x7a, 0x99, 0xb5, 0x92, 0xbc, 0xaa, 0xc4, 0x73, ++ 0x1d, 0xb0, 0xbe, 0xc5, 0x9b, 0x2d, 0x7e, 0x7f, 0x0e, 0xb5, 0x71, 0x20, ++ 0x9f, 0x2f, 0xe0, 0xe8, 0x61, 0xf5, 0x49, 0x2e, 0x7e, 0xbe, 0xc7, 0xfc, ++ 0xfc, 0xc3, 0xc8, 0x43, 0x55, 0xac, 0x93, 0xe6, 0x7d, 0xcc, 0xe4, 0xaf, ++ 0xec, 0xcc, 0xc1, 0xf6, 0x1b, 0x1a, 0x9d, 0xd4, 0xde, 0xe4, 0xa6, 0xb8, ++ 0xab, 0xd0, 0x27, 0x56, 0x60, 0x20, 0x94, 0x47, 0x55, 0x82, 0xef, 0xaa, ++ 0x5b, 0x14, 0x7f, 0x80, 0xf8, 0x86, 0xeb, 0xc5, 0x0a, 0xd1, 0x3f, 0x43, ++ 0x3d, 0x13, 0x22, 0xbf, 0x7a, 0xeb, 0x15, 0xbd, 0x3e, 0xa9, 0x10, 0x7a, ++ 0xb4, 0x82, 0x85, 0xc5, 0x6d, 0x5b, 0xf4, 0xfa, 0xcd, 0x13, 0x63, 0xa7, ++ 0x75, 0x2d, 0x84, 0x71, 0x51, 0x5f, 0x06, 0xe7, 0x05, 0xf6, 0x31, 0xc0, ++ 0xac, 0xd2, 0xeb, 0xdf, 0x3d, 0x8d, 0xe6, 0xad, 0xb8, 0xfd, 0x11, 0xe6, ++ 0x51, 0xc5, 0xba, 0x03, 0x78, 0x9e, 0xae, 0x7a, 0x8b, 0xe2, 0x0e, 0xb0, ++ 0xde, 0xf3, 0x0a, 0x5f, 0xc7, 0x85, 0xce, 0xb3, 0xd2, 0x3d, 0x7d, 0x62, ++ 0x7c, 0x6e, 0xc8, 0xb8, 0x61, 0xf3, 0x96, 0xf0, 0xa6, 0xc0, 0x6f, 0x08, ++ 0x1e, 0x24, 0xdc, 0x2b, 0x7d, 0x1c, 0x9e, 0x95, 0xed, 0x0a, 0xe1, 0xeb, ++ 0x33, 0x61, 0x97, 0xc1, 0x1f, 0xc5, 0x9b, 0x25, 0xde, 0xab, 0x98, 0x67, ++ 0x1a, 0x9e, 0x37, 0xa8, 0x7a, 0x08, 0xe4, 0x65, 0x4e, 0x90, 0x0e, 0x7a, ++ 0xf4, 0xfe, 0x56, 0xbf, 0x19, 0xed, 0xde, 0xe3, 0xac, 0x25, 0xd6, 0x06, ++ 0x74, 0xbf, 0x78, 0xdd, 0xd6, 0x99, 0x57, 0x60, 0xbb, 0xf5, 0xef, 0x93, ++ 0x7f, 0x51, 0xea, 0x0c, 0x0c, 0x32, 0xc4, 0x83, 0x7f, 0xe7, 0xeb, 0x58, ++ 0x53, 0x9c, 0xd5, 0xdb, 0x4e, 0x08, 0xb7, 0x0f, 0x7e, 0x2c, 0xf8, 0xe0, ++ 0xec, 0x8d, 0x79, 0xa2, 0x1d, 0xc0, 0xa3, 0x62, 0xa3, 0xaa, 0x45, 0x8d, ++ 0xd0, 0xd5, 0xa3, 0xf6, 0xd2, 0x3e, 0x98, 0xef, 0xf3, 0x99, 0x31, 0x9e, ++ 0x39, 0x5f, 0xc4, 0x09, 0xcf, 0x37, 0xcf, 0x1a, 0xac, 0x37, 0xea, 0x42, ++ 0xe6, 0x1b, 0xd9, 0x9e, 0xf9, 0xdf, 0xce, 0xfb, 0x85, 0x24, 0xe1, 0x3f, ++ 0xf5, 0xb2, 0x87, 0x06, 0x45, 0xf4, 0xa3, 0x7a, 0xec, 0xa0, 0xf3, 0xe8, ++ 0xdf, 0x8f, 0x4c, 0x81, 0x2c, 0xd4, 0xbf, 0xdd, 0x59, 0x46, 0xd2, 0x3f, ++ 0x5f, 0x1b, 0xdd, 0x7f, 0x2d, 0x48, 0x44, 0x7d, 0x3c, 0x88, 0xfc, 0x82, ++ 0xbe, 0xe4, 0x6b, 0xa5, 0xd0, 0xc3, 0x15, 0xa8, 0x97, 0x21, 0x3d, 0xbc, ++ 0x6e, 0x5b, 0x2c, 0xfa, 0xed, 0x9f, 0x3d, 0xb4, 0x8d, 0xf6, 0xff, 0xcc, ++ 0xcf, 0x57, 0xc4, 0xa2, 0x5d, 0x7c, 0x78, 0xdd, 0xdc, 0x07, 0x7c, 0xc0, ++ 0x52, 0x87, 0xb7, 0xcc, 0x25, 0x3d, 0x5c, 0xf5, 0x98, 0xd4, 0xc3, 0x5e, ++ 0x73, 0xa8, 0x7e, 0x2f, 0x5a, 0x57, 0xf6, 0xeb, 0x9f, 0x23, 0x7d, 0x6e, ++ 0x8e, 0x72, 0x5b, 0xa0, 0xb8, 0x72, 0x97, 0x57, 0xd8, 0xdd, 0x20, 0xef, ++ 0x50, 0x0e, 0xae, 0xe3, 0xf2, 0x8e, 0x3d, 0xc4, 0xe5, 0x61, 0x15, 0xea, ++ 0xab, 0x61, 0xa4, 0xaf, 0x86, 0x60, 0xbd, 0xbb, 0x2a, 0xbd, 0x43, 0x90, ++ 0xce, 0x43, 0xbe, 0x93, 0x1e, 0xbb, 0x6b, 0xae, 0x77, 0x2c, 0xb5, 0x67, ++ 0x8e, 0x00, 0xfa, 0x5d, 0x20, 0x39, 0x03, 0xa8, 0xaf, 0xa4, 0x3e, 0x95, ++ 0x7a, 0xd6, 0x68, 0xf0, 0x7e, 0x94, 0x84, 0xfc, 0xa3, 0xbe, 0xfd, 0xe7, ++ 0x9f, 0xc2, 0xfa, 0xbf, 0x78, 0x49, 0x25, 0xf7, 0xae, 0x5a, 0xdd, 0x90, ++ 0xed, 0xc0, 0xfd, 0x82, 0x3e, 0xe4, 0xf6, 0xbf, 0x0f, 0x6f, 0x43, 0x0f, ++ 0xbc, 0x73, 0x2e, 0x00, 0xde, 0xe5, 0x08, 0x6f, 0xb2, 0x7f, 0x38, 0xbc, ++ 0x3f, 0x6d, 0xe2, 0x70, 0x3e, 0xd8, 0xcc, 0xe1, 0xbe, 0x7a, 0xcb, 0x80, ++ 0x58, 0xf4, 0x6f, 0x3f, 0x6d, 0x1a, 0x40, 0x76, 0xcf, 0xa7, 0x5b, 0x06, ++ 0x11, 0xbc, 0xe7, 0xad, 0x01, 0x78, 0x93, 0xdd, 0xeb, 0xd2, 0xdb, 0x3d, ++ 0x4d, 0x00, 0x6f, 0xb4, 0xf3, 0x11, 0xde, 0x30, 0x6e, 0xf9, 0x2e, 0x97, ++ 0x80, 0xb7, 0x9b, 0xc3, 0xbb, 0x49, 0xe8, 0x9d, 0x66, 0x9e, 0xce, 0xeb, ++ 0x05, 0x57, 0x1f, 0x9d, 0x1b, 0xbd, 0xeb, 0x69, 0x8b, 0x1b, 0xf5, 0xf9, ++ 0x91, 0xa8, 0x40, 0x12, 0xfa, 0x23, 0x47, 0xb6, 0xaa, 0x0c, 0xf7, 0xe5, ++ 0x7b, 0xec, 0x22, 0x61, 0xbf, 0x48, 0x38, 0x7f, 0xc3, 0x5a, 0x9e, 0x44, ++ 0x3b, 0xaa, 0x97, 0x3d, 0xb3, 0xd6, 0xc2, 0x1c, 0xd0, 0xdf, 0x82, 0x97, ++ 0xed, 0x7e, 0x06, 0xf9, 0x63, 0x4a, 0x41, 0x0a, 0x22, 0xe0, 0x44, 0xcb, ++ 0x1f, 0x62, 0x71, 0xbc, 0xe0, 0xf8, 0x3d, 0x76, 0x8c, 0x23, 0x79, 0x4c, ++ 0x88, 0x1d, 0x73, 0x81, 0xf8, 0x59, 0xc2, 0x3c, 0x74, 0x7e, 0x7d, 0x49, ++ 0xfb, 0x1f, 0xf6, 0xa1, 0x1d, 0xaf, 0x68, 0xdc, 0xaf, 0x5f, 0x62, 0xb5, ++ 0x05, 0x90, 0x6f, 0xc1, 0xdf, 0x39, 0x11, 0x2a, 0xcf, 0x15, 0x17, 0xca, ++ 0x34, 0x8c, 0x93, 0xb8, 0xad, 0x56, 0xa4, 0x83, 0x4c, 0xe6, 0xd2, 0xef, ++ 0x1b, 0x79, 0x19, 0xee, 0x1b, 0x7d, 0x3b, 0xe8, 0xab, 0xdb, 0x96, 0x11, ++ 0x3f, 0x77, 0x0f, 0x0e, 0xdd, 0xd7, 0xa9, 0x89, 0x0e, 0x98, 0x30, 0xbe, ++ 0xd4, 0xbd, 0x55, 0x21, 0x7c, 0x57, 0x2f, 0x2f, 0x88, 0x2d, 0x60, 0xb8, ++ 0x2f, 0x55, 0x4b, 0xf3, 0x18, 0x9e, 0xcc, 0xf5, 0xb1, 0xa2, 0x69, 0x14, ++ 0x37, 0xb4, 0x00, 0xdd, 0x44, 0xc3, 0x78, 0xee, 0x64, 0x17, 0xff, 0xee, ++ 0x72, 0xf0, 0x38, 0xe2, 0x7a, 0x18, 0xd7, 0x1e, 0x9c, 0x6f, 0xf8, 0xf7, ++ 0x69, 0x48, 0x7a, 0xa8, 0xcf, 0x6d, 0x06, 0xd2, 0xe7, 0xe1, 0xeb, 0xbf, ++ 0x2d, 0x99, 0xfb, 0x2b, 0xd5, 0xaa, 0x81, 0xfc, 0x8e, 0xc5, 0x66, 0xee, ++ 0x7f, 0xc8, 0xf3, 0x0f, 0x57, 0x8a, 0xf2, 0x2b, 0x93, 0x79, 0xbc, 0xb7, ++ 0x28, 0x99, 0xef, 0x17, 0x9c, 0x8c, 0x62, 0xa4, 0x37, 0x4e, 0xae, 0x8d, ++ 0xf1, 0xd7, 0xd3, 0xfa, 0x26, 0x52, 0x3c, 0xb3, 0x27, 0x7e, 0x22, 0xe1, ++ 0xe6, 0x30, 0x7e, 0xd9, 0x23, 0xaf, 0x90, 0xaf, 0x44, 0xfc, 0x60, 0x3f, ++ 0xb6, 0x81, 0x79, 0xce, 0xb3, 0x88, 0x78, 0x2e, 0xa8, 0x58, 0x6c, 0x7f, ++ 0xab, 0x68, 0x7f, 0x6b, 0xcb, 0x3b, 0xb4, 0x2f, 0x07, 0x9e, 0xcb, 0x13, ++ 0xa8, 0x77, 0xe7, 0xac, 0xb0, 0xb8, 0xd1, 0x7e, 0xf5, 0xbd, 0x66, 0x21, ++ 0xba, 0xbb, 0x27, 0x9a, 0xef, 0xa3, 0xb0, 0xc4, 0x38, 0x23, 0xf2, 0xd1, ++ 0x2d, 0x42, 0xce, 0xde, 0xda, 0x72, 0x9f, 0x07, 0xcf, 0x3d, 0xcc, 0x69, ++ 0x89, 0xd1, 0x30, 0x85, 0x71, 0x7c, 0x4c, 0xc4, 0x4f, 0x73, 0x71, 0x1f, ++ 0x36, 0xdd, 0x4c, 0xf1, 0xd3, 0x52, 0x6b, 0xd7, 0xf3, 0xe8, 0x66, 0xdf, ++ 0x9e, 0x7a, 0xf0, 0x4e, 0x2b, 0x2c, 0xad, 0xde, 0xc0, 0xed, 0x96, 0x7a, ++ 0x27, 0xa3, 0xf3, 0x23, 0x97, 0x83, 0xd9, 0x8e, 0xf1, 0x58, 0x28, 0xda, ++ 0x7e, 0x36, 0xe1, 0x5c, 0xf4, 0xa3, 0x8f, 0x0f, 0x2f, 0xc6, 0x38, 0xed, ++ 0x78, 0xc6, 0x09, 0x6b, 0x1c, 0xc1, 0x55, 0x97, 0x5f, 0x6c, 0xe6, 0xe5, ++ 0xcb, 0x93, 0x47, 0x4d, 0x79, 0x28, 0x93, 0xb1, 0x3f, 0x31, 0xd7, 0x70, ++ 0xc4, 0xf7, 0x62, 0x84, 0x0d, 0xd2, 0x43, 0x59, 0x1c, 0xc5, 0x01, 0xae, ++ 0xc7, 0x78, 0xb1, 0x13, 0x53, 0x23, 0xd1, 0xd9, 0x0c, 0x23, 0xf3, 0x19, ++ 0x78, 0xda, 0x84, 0xa1, 0x35, 0x19, 0x3f, 0x9e, 0x26, 0xd6, 0x7d, 0xd3, ++ 0x38, 0x16, 0x88, 0x83, 0xf5, 0x06, 0xf6, 0xea, 0xe3, 0xd7, 0xb3, 0x02, ++ 0x86, 0xc0, 0x10, 0xc0, 0xc3, 0xf5, 0xc6, 0x40, 0x07, 0xd2, 0xb5, 0xc1, ++ 0xea, 0x32, 0xa1, 0x3f, 0xe0, 0x29, 0x56, 0x46, 0xa1, 0x9f, 0xbc, 0x78, ++ 0xe5, 0x85, 0xcd, 0xf7, 0x9e, 0xe4, 0x2b, 0x69, 0xbe, 0x8b, 0x0d, 0x06, ++ 0x3e, 0xcf, 0x9f, 0x2a, 0xfe, 0xa7, 0x00, 0x4e, 0xb7, 0x02, 0x93, 0x23, ++ 0x7d, 0xde, 0x66, 0x64, 0xbb, 0xd4, 0x51, 0x1c, 0x7f, 0x48, 0x7f, 0x35, ++ 0x4e, 0x97, 0x8f, 0xea, 0x2d, 0xe5, 0xf4, 0x2d, 0xe3, 0xe6, 0x12, 0x4f, ++ 0x23, 0xa1, 0xfb, 0x50, 0xf8, 0xde, 0x2a, 0xe6, 0x07, 0xfd, 0x34, 0xc5, ++ 0x62, 0x7b, 0x73, 0xe4, 0xf8, 0xd1, 0x83, 0xc9, 0xd2, 0x0f, 0xe6, 0xf6, ++ 0xe6, 0x22, 0xc1, 0xaf, 0x8b, 0x24, 0xbd, 0x6d, 0xd1, 0xf3, 0xe9, 0x36, ++ 0xe4, 0x17, 0x3c, 0x9f, 0x83, 0x76, 0x2d, 0xc0, 0xed, 0x56, 0x91, 0xf6, ++ 0x45, 0xef, 0xad, 0x82, 0xde, 0x5b, 0x05, 0xbd, 0x3f, 0x29, 0xf2, 0x17, ++ 0x3a, 0x5e, 0xb5, 0x85, 0x05, 0x68, 0xdd, 0xaf, 0x59, 0x08, 0x8f, 0x72, ++ 0xdc, 0xeb, 0x45, 0xfa, 0x42, 0x32, 0xb7, 0x9b, 0xe5, 0x3c, 0x24, 0x3d, ++ 0x33, 0x11, 0x87, 0x32, 0x80, 0xe4, 0x40, 0x3a, 0x3a, 0xd4, 0xd2, 0x40, ++ 0x76, 0xd3, 0xfc, 0xb0, 0x38, 0x30, 0x0b, 0x8d, 0x57, 0xa9, 0x91, 0xf2, ++ 0x3d, 0xf2, 0xc7, 0x70, 0x16, 0x53, 0x73, 0xf7, 0x3c, 0x9c, 0x8f, 0x72, ++ 0x55, 0x94, 0x1b, 0xe9, 0xfa, 0x56, 0x73, 0xeb, 0xa0, 0x5a, 0x5b, 0xef, ++ 0x7a, 0x72, 0x1f, 0xb7, 0x94, 0x75, 0x9a, 0xf8, 0xbd, 0x1b, 0x11, 0xcf, ++ 0x12, 0xfa, 0x6a, 0x92, 0x6a, 0xa3, 0x73, 0x41, 0xa5, 0x4a, 0xb4, 0x1b, ++ 0xed, 0xdf, 0x93, 0x05, 0x76, 0x9f, 0x21, 0x0e, 0xe3, 0x2d, 0x26, 0x42, ++ 0x6d, 0x29, 0xd0, 0x03, 0xca, 0xe7, 0x8f, 0xa2, 0xf8, 0xbe, 0xfd, 0x9c, ++ 0xb8, 0xbb, 0xa6, 0xa1, 0x5d, 0x58, 0x1a, 0x6b, 0x36, 0x62, 0x7a, 0x3b, ++ 0xeb, 0xb4, 0xe7, 0xe4, 0x04, 0xed, 0x92, 0xd5, 0x05, 0x2a, 0xee, 0xc1, ++ 0xc1, 0xc0, 0xd5, 0x53, 0x34, 0xc8, 0x37, 0xa0, 0x3c, 0xe1, 0xf9, 0xfb, ++ 0xb4, 0x4c, 0x8a, 0x0e, 0x89, 0xfc, 0xb2, 0x3f, 0x62, 0xf9, 0x8d, 0xdf, ++ 0x01, 0xfe, 0x29, 0x7f, 0xc7, 0x14, 0x0d, 0xe4, 0xc5, 0xc9, 0x37, 0x45, ++ 0x39, 0x5b, 0x4e, 0xed, 0x4f, 0xae, 0x12, 0x74, 0xec, 0x5b, 0x31, 0x05, ++ 0xf7, 0x39, 0x4e, 0xfe, 0x4a, 0x96, 0xff, 0x9c, 0x97, 0xdf, 0x2b, 0xcb, ++ 0xeb, 0x79, 0xf9, 0xfd, 0xb2, 0x7f, 0x91, 0x5f, 0x1b, 0x56, 0x5e, 0x1f, ++ 0x56, 0xfe, 0x28, 0xcf, 0x77, 0x3d, 0x5c, 0x3f, 0xc5, 0x87, 0x70, 0x12, ++ 0xfb, 0x31, 0xa5, 0xe3, 0x15, 0x92, 0x27, 0x2e, 0x41, 0x67, 0xa5, 0x2b, ++ 0x03, 0x04, 0xdf, 0x52, 0xc3, 0x0e, 0x9e, 0x16, 0xb2, 0x80, 0x21, 0xf7, ++ 0xfc, 0xf5, 0x6c, 0x29, 0x1e, 0x57, 0x32, 0xed, 0x0b, 0x1e, 0xb2, 0xa3, ++ 0xde, 0x4e, 0x48, 0xd3, 0x5c, 0xc9, 0x50, 0xcf, 0x96, 0xe4, 0x3d, 0x8e, ++ 0xdf, 0x17, 0x4e, 0x57, 0x7c, 0x66, 0x94, 0x93, 0x1f, 0xfa, 0x07, 0x0b, ++ 0xb9, 0x1e, 0xf1, 0x5c, 0xad, 0x4b, 0xd0, 0x6d, 0x54, 0x2a, 0xef, 0x4f, ++ 0xc2, 0x1b, 0xfa, 0xf9, 0x1a, 0xfb, 0xbb, 0xd8, 0x7e, 0xd6, 0xe1, 0xbc, ++ 0x92, 0x74, 0xfd, 0x7c, 0xff, 0xef, 0xf4, 0x33, 0x2f, 0xb5, 0x57, 0x3f, ++ 0xe6, 0x94, 0x7f, 0xa3, 0x9f, 0xbd, 0x61, 0xeb, 0x92, 0x76, 0x51, 0x59, ++ 0xba, 0x96, 0x83, 0xfd, 0xb1, 0x43, 0x89, 0xba, 0xf3, 0x65, 0x8b, 0xfe, ++ 0xd3, 0x1d, 0x87, 0x76, 0x15, 0xc3, 0xf3, 0x65, 0x00, 0xfa, 0x45, 0x2b, ++ 0x5b, 0xb3, 0x47, 0x43, 0xff, 0x8b, 0x5e, 0x78, 0x35, 0xbb, 0x32, 0xc4, ++ 0xef, 0x5e, 0x72, 0xc6, 0xc0, 0x34, 0xb0, 0x9f, 0x6a, 0xce, 0x30, 0x4a, ++ 0x8f, 0x77, 0xfc, 0xcd, 0xec, 0x82, 0xf9, 0x2c, 0xd9, 0xde, 0x61, 0x9e, ++ 0x0c, 0xf5, 0x6a, 0x20, 0x2d, 0x0a, 0x99, 0xd7, 0x62, 0x79, 0x4e, 0x92, ++ 0x75, 0x19, 0x67, 0x84, 0xe8, 0xf5, 0xc1, 0x29, 0x06, 0x21, 0x9f, 0xd6, ++ 0xd2, 0x7c, 0x17, 0xbd, 0x70, 0xd4, 0x88, 0xf8, 0x5c, 0x64, 0x68, 0x3d, ++ 0xfc, 0x18, 0xc6, 0x7b, 0xc6, 0x2b, 0x11, 0xf7, 0x5d, 0x63, 0x45, 0xbb, ++ 0xfd, 0x7d, 0xdc, 0xe7, 0x1a, 0x96, 0xc2, 0xe5, 0x9e, 0x27, 0x53, 0xbb, ++ 0x2c, 0x05, 0xcf, 0x45, 0xa0, 0xcc, 0x40, 0x7d, 0xdc, 0x10, 0x79, 0x9f, ++ 0xfe, 0x4e, 0xd1, 0x5f, 0x69, 0x34, 0x97, 0x6f, 0x73, 0xf3, 0xec, 0x56, ++ 0x17, 0xc0, 0x79, 0xcc, 0x87, 0x7c, 0x9f, 0xb9, 0x72, 0x7d, 0xce, 0x28, ++ 0x8c, 0xe3, 0x5e, 0x9e, 0x54, 0x38, 0x06, 0xfb, 0xeb, 0x3b, 0x2e, 0xda, ++ 0xcd, 0xe3, 0xa2, 0xed, 0x3c, 0x2e, 0x5a, 0xea, 0xec, 0x5c, 0x0e, 0xc2, ++ 0x9b, 0xd5, 0xa6, 0x6c, 0xb8, 0xcf, 0x7a, 0x25, 0x63, 0x53, 0x1e, 0x91, ++ 0x7c, 0x06, 0x2c, 0x0b, 0x6d, 0x8b, 0x2d, 0x32, 0xdf, 0x36, 0x65, 0x62, ++ 0x3e, 0xc5, 0xb9, 0x28, 0x7f, 0xc3, 0x23, 0x5b, 0xef, 0x43, 0xbe, 0xd9, ++ 0x13, 0xcd, 0xcf, 0x4d, 0xcc, 0x19, 0x3b, 0x3c, 0x1a, 0xe5, 0x42, 0x57, ++ 0x4e, 0x8c, 0xc1, 0x01, 0xf2, 0x62, 0x5c, 0x62, 0x59, 0x2d, 0xe2, 0x6f, ++ 0xce, 0xd8, 0x2b, 0x27, 0xe3, 0xf7, 0x02, 0x8b, 0x7d, 0x70, 0x19, 0x8f, ++ 0xab, 0x13, 0x5d, 0x8c, 0x4b, 0xf4, 0x4c, 0xc1, 0x72, 0xac, 0x8f, 0x71, ++ 0x0d, 0xaf, 0x99, 0xc7, 0xb9, 0xbc, 0x6f, 0xa9, 0x14, 0xe7, 0xf2, 0x8e, ++ 0x88, 0xf1, 0x46, 0xda, 0x47, 0xbe, 0x56, 0xc0, 0xa1, 0x36, 0x85, 0x9f, ++ 0x73, 0xdd, 0x03, 0x68, 0x46, 0xbb, 0x43, 0xce, 0x43, 0x8e, 0x0f, 0x86, ++ 0xca, 0xf2, 0x4e, 0xe8, 0xef, 0xd0, 0xca, 0xb4, 0x91, 0x6b, 0x5c, 0xb8, ++ 0xdf, 0x51, 0x50, 0x43, 0xf4, 0x24, 0xc6, 0xff, 0x65, 0xa2, 0xb7, 0x34, ++ 0x74, 0x7c, 0x58, 0xee, 0x08, 0xfc, 0x7e, 0xa1, 0xf3, 0xb8, 0x39, 0x85, ++ 0xd3, 0x6f, 0x0d, 0xe2, 0x0d, 0xf1, 0x98, 0xaf, 0x32, 0x2d, 0xc4, 0x5f, ++ 0x9c, 0x31, 0x31, 0x46, 0x97, 0xbf, 0x71, 0x6a, 0x02, 0xd3, 0x42, 0xe3, ++ 0xad, 0x37, 0x66, 0xe8, 0xf2, 0xb3, 0x4b, 0x07, 0xe8, 0xea, 0xdf, 0x32, ++ 0xef, 0x32, 0x5d, 0x79, 0x89, 0xa5, 0x33, 0xb7, 0xf6, 0x22, 0xec, 0xdf, ++ 0x1a, 0xbb, 0x3d, 0x1a, 0xed, 0xb0, 0x8f, 0xdb, 0xbf, 0xf9, 0xcb, 0xad, ++ 0x68, 0xd7, 0x6d, 0x54, 0xdd, 0x0a, 0xac, 0x67, 0xc1, 0x6b, 0x9b, 0xfe, ++ 0x32, 0x01, 0x6a, 0x9d, 0xc2, 0xe3, 0x97, 0xfc, 0xfe, 0x14, 0xc5, 0xbd, ++ 0x8e, 0xe1, 0x79, 0x36, 0xe4, 0x3d, 0xa3, 0x66, 0x0c, 0xdd, 0xaf, 0xf9, ++ 0x82, 0x75, 0xd2, 0xb9, 0xc0, 0x90, 0xfd, 0x00, 0xdd, 0xbe, 0xcb, 0x22, ++ 0xc7, 0x2e, 0x3a, 0xaf, 0xfa, 0x63, 0xed, 0xd7, 0x3c, 0x90, 0x22, 0xfc, ++ 0xdf, 0x51, 0x6c, 0x14, 0xea, 0xbf, 0x53, 0xb5, 0x7f, 0xa6, 0x38, 0xdb, ++ 0x12, 0x1b, 0x5f, 0xcf, 0x17, 0xaf, 0x1e, 0x30, 0xe3, 0x39, 0x06, 0x3c, ++ 0x17, 0x70, 0x16, 0xe8, 0xfb, 0x1a, 0x6c, 0xa8, 0x22, 0x9f, 0xfb, 0x28, ++ 0x0e, 0x5d, 0xd4, 0x76, 0xc0, 0x8c, 0xfe, 0x91, 0x3b, 0x85, 0xcb, 0xe5, ++ 0x25, 0x99, 0x4b, 0x8d, 0x60, 0x91, 0xb1, 0x1a, 0x48, 0x51, 0x6f, 0x4c, ++ 0x06, 0xf9, 0x14, 0x07, 0xf4, 0xd1, 0xd9, 0xc1, 0x86, 0x6f, 0xc7, 0x73, ++ 0x13, 0x39, 0x76, 0x3a, 0x07, 0x5e, 0x7d, 0x66, 0x06, 0x08, 0x69, 0xa4, ++ 0x23, 0xdf, 0xb0, 0xa5, 0x50, 0x6f, 0x51, 0x53, 0x31, 0xe5, 0x97, 0x9c, ++ 0x89, 0xa6, 0x7e, 0xdf, 0x53, 0x3b, 0x27, 0xd3, 0x79, 0xe4, 0x57, 0x14, ++ 0xda, 0x2f, 0x28, 0xc9, 0x98, 0xb3, 0x12, 0xed, 0x51, 0xac, 0x7f, 0x07, ++ 0x8c, 0x57, 0xf2, 0xe2, 0x35, 0xc5, 0x08, 0x9f, 0x25, 0xdb, 0xf9, 0xbd, ++ 0xa7, 0x12, 0xf5, 0x4f, 0xb9, 0xd8, 0xcf, 0xe2, 0x96, 0x62, 0x6a, 0x5f, ++ 0xa2, 0xb2, 0x3d, 0x0a, 0xd8, 0x07, 0x53, 0x8a, 0xb8, 0x9e, 0x2d, 0x41, ++ 0xdd, 0x0e, 0x79, 0x35, 0xcf, 0xbe, 0x06, 0xf5, 0xab, 0x6a, 0x0e, 0x0c, ++ 0x7e, 0x1c, 0xe5, 0x89, 0xd9, 0x4e, 0xf2, 0x24, 0xee, 0xcc, 0x2d, 0x34, ++ 0x7e, 0xcd, 0x19, 0x2b, 0xb5, 0xff, 0xad, 0x90, 0x17, 0xa6, 0x2e, 0x3e, ++ 0xaf, 0x49, 0x67, 0x3c, 0xf4, 0x5d, 0xe2, 0xbd, 0x3d, 0x85, 0xef, 0x03, ++ 0xca, 0xbc, 0x29, 0x69, 0xa3, 0x11, 0xef, 0x15, 0x98, 0xba, 0x18, 0xd5, ++ 0xbf, 0xee, 0xcc, 0xa5, 0x94, 0xca, 0x75, 0xbe, 0x35, 0xf4, 0xe9, 0x44, ++ 0x94, 0x63, 0xa6, 0xa4, 0xaf, 0x27, 0x67, 0x00, 0x7d, 0xbc, 0x95, 0xa8, ++ 0x38, 0xc8, 0xdc, 0x08, 0x93, 0xb7, 0xa7, 0x6b, 0xc7, 0xc6, 0xb1, 0x08, ++ 0xf2, 0xa8, 0x67, 0x9c, 0x33, 0xfc, 0xfc, 0xae, 0xe5, 0x0c, 0x3f, 0xcf, ++ 0xdb, 0x9e, 0xa6, 0xfd, 0x09, 0xf9, 0x6a, 0xda, 0xdd, 0x5d, 0x46, 0xdc, ++ 0xbf, 0x61, 0x36, 0xab, 0x03, 0xe1, 0x35, 0x6d, 0xdc, 0x48, 0x57, 0x65, ++ 0x08, 0x1f, 0xa9, 0x3b, 0x6e, 0x36, 0x23, 0x5e, 0x4c, 0x0f, 0xbd, 0x6f, ++ 0x46, 0x7d, 0x6c, 0x81, 0xb4, 0x28, 0xa4, 0xbc, 0x5a, 0x9e, 0x3b, 0x0f, ++ 0x93, 0xc7, 0xfb, 0x04, 0xdf, 0xc9, 0x7b, 0x07, 0x52, 0xbf, 0x30, 0xdf, ++ 0x6c, 0xb2, 0x47, 0x6f, 0x13, 0xfe, 0xb7, 0xe4, 0x93, 0x37, 0x45, 0x7d, ++ 0xd9, 0xbe, 0x13, 0x69, 0x1c, 0xf1, 0xf8, 0xb2, 0x85, 0xfc, 0xa7, 0x3f, ++ 0xa7, 0x79, 0x8f, 0xa3, 0xbc, 0xec, 0x2c, 0x60, 0xb3, 0x5f, 0x22, 0xf9, ++ 0xd8, 0x99, 0x8d, 0xfb, 0x26, 0x3f, 0xd6, 0xfc, 0x01, 0xcf, 0x56, 0x85, ++ 0xec, 0xfb, 0x2e, 0x3a, 0xcf, 0x3e, 0x6d, 0x9c, 0xcb, 0x80, 0xfb, 0x01, ++ 0xdd, 0x3d, 0xeb, 0xe0, 0xfc, 0x7a, 0xbe, 0x75, 0x7c, 0x2c, 0xea, 0xbf, ++ 0xa7, 0xb2, 0x15, 0xd8, 0xef, 0x7b, 0x57, 0x5f, 0xdd, 0xa9, 0x41, 0x7f, ++ 0x1d, 0x3f, 0x1b, 0x3d, 0x1a, 0xe5, 0xbe, 0x1c, 0x57, 0x49, 0xe5, 0xf7, ++ 0x70, 0x98, 0xa3, 0xfb, 0x3b, 0xf4, 0xe7, 0x6a, 0x5e, 0x8f, 0x71, 0x21, ++ 0x5f, 0x97, 0xa0, 0x73, 0x94, 0x1b, 0xb4, 0x63, 0xe1, 0x3b, 0xc3, 0xf8, ++ 0x5f, 0xcd, 0xeb, 0x96, 0xa7, 0x14, 0x28, 0xaf, 0x89, 0x05, 0x7f, 0x16, ++ 0xc6, 0x2f, 0x7a, 0x23, 0x2a, 0x80, 0x74, 0xdc, 0xf1, 0x46, 0x94, 0x11, ++ 0xf5, 0x43, 0x7d, 0xa6, 0x57, 0x49, 0x1d, 0x83, 0xdf, 0x87, 0x4c, 0x44, ++ 0xff, 0x4d, 0x6b, 0xb7, 0x18, 0x19, 0xd9, 0x37, 0x9a, 0x01, 0xbf, 0xf7, ++ 0x35, 0xdf, 0xf3, 0xc9, 0xa7, 0x70, 0x3a, 0x93, 0x7c, 0xe9, 0x6d, 0xe2, ++ 0xfc, 0x52, 0x26, 0xe8, 0xb4, 0x5c, 0xf0, 0x9f, 0x57, 0xf0, 0xd1, 0xe9, ++ 0xda, 0x14, 0xe2, 0xc3, 0xd3, 0x77, 0xc3, 0xa4, 0x71, 0x9f, 0xf3, 0x6e, ++ 0x65, 0xf8, 0x76, 0xb4, 0x07, 0x5c, 0x76, 0xf7, 0x20, 0x57, 0x90, 0x2f, ++ 0x4b, 0xd0, 0xef, 0x81, 0xef, 0x25, 0x97, 0xc5, 0x93, 0xff, 0x17, 0xc2, ++ 0x77, 0xc4, 0x87, 0x8b, 0xcf, 0x38, 0xa8, 0xbf, 0xea, 0x33, 0x2e, 0xc1, ++ 0xe7, 0x4e, 0xca, 0x4b, 0x7e, 0x2b, 0x17, 0xfc, 0x62, 0x11, 0x76, 0xc4, ++ 0x3c, 0x41, 0xdf, 0x49, 0xe9, 0xde, 0x91, 0xa9, 0x30, 0xff, 0x92, 0x06, ++ 0xe0, 0x77, 0x18, 0xc7, 0xbb, 0x32, 0x2d, 0x17, 0xf9, 0x28, 0x48, 0x2f, ++ 0x66, 0x07, 0xd2, 0x15, 0xd0, 0x4b, 0x6a, 0x65, 0x08, 0xdf, 0x34, 0x74, ++ 0xdc, 0xcc, 0xd0, 0xfe, 0xb0, 0x24, 0x7a, 0x88, 0x5e, 0xe6, 0x41, 0x1a, ++ 0x6a, 0x7f, 0x54, 0xf4, 0xd8, 0x1f, 0x8e, 0xc9, 0xc9, 0x30, 0xef, 0x69, ++ 0x8d, 0x39, 0xba, 0x7b, 0x16, 0x79, 0xa9, 0x17, 0x47, 0xf7, 0x03, 0x52, ++ 0xc5, 0xbe, 0xbc, 0x2d, 0x30, 0x08, 0xed, 0x55, 0x53, 0x6d, 0x94, 0x1b, ++ 0xef, 0x83, 0x9d, 0x4a, 0xe4, 0xfb, 0x33, 0xcb, 0xee, 0xe5, 0xf0, 0x5b, ++ 0x66, 0xf2, 0x14, 0xa1, 0xfd, 0xb0, 0xec, 0x51, 0xc5, 0x0d, 0x98, 0x21, ++ 0xbb, 0x02, 0xe5, 0x51, 0xde, 0xbe, 0x5a, 0x73, 0x68, 0xbc, 0xf1, 0xe6, ++ 0x33, 0x23, 0x98, 0x0b, 0xe0, 0x70, 0xc3, 0x99, 0x81, 0x94, 0x5e, 0x9e, ++ 0xe4, 0x9d, 0x88, 0xf8, 0x2f, 0x3b, 0x33, 0x53, 0xc0, 0x6b, 0xc4, 0xbf, ++ 0xb5, 0x0f, 0x38, 0x46, 0xe3, 0xf1, 0x25, 0x93, 0xdf, 0xe2, 0xde, 0x80, ++ 0xfb, 0x6c, 0x51, 0x5e, 0x15, 0xf1, 0x7b, 0x24, 0x8b, 0x39, 0x1e, 0x0c, ++ 0x89, 0x2f, 0x61, 0x3c, 0x0c, 0xe3, 0x62, 0x72, 0x7f, 0x50, 0xc6, 0x9b, ++ 0x2c, 0xb8, 0x9f, 0x1a, 0xa2, 0x27, 0xbf, 0x31, 0xb6, 0x64, 0xa3, 0xbf, ++ 0xd3, 0x2b, 0xee, 0x54, 0xa0, 0xdf, 0x47, 0x5b, 0xdc, 0xf1, 0xa7, 0x3c, ++ 0x03, 0x94, 0x1f, 0xcb, 0xd1, 0x28, 0xfe, 0x34, 0xc7, 0xe0, 0xbd, 0x0d, ++ 0xf1, 0xba, 0x70, 0x86, 0xff, 0x05, 0x13, 0xe4, 0x17, 0xdd, 0xbf, 0x2d, ++ 0x16, 0xe3, 0xdd, 0x12, 0x9e, 0xad, 0xc6, 0xc0, 0x20, 0xd4, 0x93, 0xad, ++ 0x00, 0x47, 0x8c, 0x83, 0xb5, 0x36, 0xab, 0xc5, 0x7e, 0x6e, 0xcf, 0xc4, ++ 0xf0, 0xfd, 0x2f, 0x4e, 0xd7, 0x92, 0x8e, 0xc3, 0xe9, 0x7b, 0xe1, 0x99, ++ 0xfe, 0x44, 0x4f, 0xa7, 0x6b, 0x2d, 0xa4, 0x77, 0x4e, 0x03, 0xbd, 0xb2, ++ 0x10, 0xbd, 0x23, 0xf5, 0x8d, 0x94, 0xef, 0x52, 0xef, 0x48, 0x7a, 0xae, ++ 0x36, 0x72, 0xb9, 0x55, 0x6d, 0x8b, 0xa3, 0x73, 0x15, 0x41, 0x7d, 0x33, ++ 0xdd, 0x83, 0x71, 0x5c, 0x36, 0x94, 0x9f, 0x7f, 0x0b, 0xea, 0x9b, 0xa7, ++ 0x1e, 0x18, 0x8f, 0xf4, 0x7f, 0x32, 0x91, 0xce, 0x35, 0x87, 0xd3, 0xff, ++ 0x2b, 0x75, 0xa9, 0x74, 0xce, 0x46, 0xea, 0x91, 0x70, 0x7d, 0x23, 0xe5, ++ 0xb9, 0x94, 0xef, 0x52, 0x5f, 0xdd, 0x95, 0xe6, 0x5d, 0x8b, 0x70, 0x2a, ++ 0x7c, 0xee, 0xbf, 0xb7, 0xfd, 0x1d, 0x3e, 0x5d, 0x67, 0xe4, 0x7a, 0xeb, ++ 0x3a, 0xa3, 0x9d, 0xe8, 0xe7, 0xc2, 0xe5, 0xe6, 0x01, 0x21, 0x37, 0x0f, ++ 0xe8, 0xe4, 0xe6, 0x92, 0x3e, 0xe4, 0xfe, 0xc3, 0x17, 0x49, 0xff, 0x8d, ++ 0xa2, 0x3e, 0xd8, 0xaf, 0x64, 0x17, 0xa2, 0x5c, 0x0f, 0xed, 0xef, 0xcf, ++ 0x69, 0x85, 0xbf, 0x41, 0xfa, 0x7d, 0x21, 0x95, 0xeb, 0xd5, 0x1f, 0x6b, ++ 0xde, 0x7d, 0xc9, 0xfb, 0x17, 0x52, 0xa5, 0x1f, 0x71, 0x61, 0xf2, 0xfe, ++ 0x71, 0x51, 0xff, 0x7c, 0xf2, 0xbe, 0x43, 0xc8, 0xfb, 0x70, 0xf9, 0xce, ++ 0xa0, 0x3f, 0x94, 0xef, 0x27, 0x5f, 0xbb, 0x84, 0xf6, 0xa7, 0xf7, 0x33, ++ 0xd0, 0x07, 0xa8, 0xf7, 0xda, 0x63, 0x5c, 0x9b, 0x84, 0xfc, 0x27, 0xfd, ++ 0x10, 0x1d, 0xe7, 0x3f, 0x97, 0xfc, 0xf7, 0x64, 0xce, 0xed, 0xe8, 0x43, ++ 0xfe, 0xef, 0xf8, 0xdf, 0xc8, 0x7f, 0x49, 0x8f, 0x92, 0x5f, 0x24, 0x7f, ++ 0x48, 0x7e, 0x08, 0xe7, 0x1f, 0xc9, 0x0f, 0x53, 0xee, 0x03, 0xff, 0x0f, ++ 0xf1, 0xf4, 0x1e, 0xbf, 0x5f, 0x54, 0x6d, 0xf4, 0x6d, 0xa1, 0xfd, 0x43, ++ 0x57, 0xcc, 0x48, 0xe4, 0xcb, 0x1e, 0xbb, 0x6d, 0xbb, 0x42, 0x7c, 0xd6, ++ 0x4b, 0x2f, 0x08, 0xbe, 0x09, 0xf2, 0x89, 0x5e, 0x4f, 0x48, 0xbe, 0x90, ++ 0x7c, 0x22, 0xf9, 0xa3, 0x5a, 0xf0, 0x43, 0x45, 0x18, 0x3f, 0xec, 0x54, ++ 0x5b, 0x1f, 0x1c, 0x0f, 0xed, 0x6e, 0x4e, 0xf3, 0x9e, 0x0e, 0xe5, 0x8b, ++ 0xc5, 0x2f, 0x85, 0xeb, 0x85, 0x3e, 0xe9, 0x0a, 0x23, 0x86, 0xac, 0x22, ++ 0xb1, 0x96, 0x21, 0x5d, 0x55, 0x43, 0x1a, 0x4a, 0x57, 0x96, 0x3e, 0xf8, ++ 0xe1, 0x4c, 0x0f, 0x3d, 0x5d, 0x18, 0x3f, 0x1c, 0xbe, 0x40, 0x7a, 0x8a, ++ 0x49, 0x33, 0x53, 0xbd, 0xff, 0x43, 0x7a, 0x8a, 0x49, 0x4b, 0x8a, 0x48, ++ 0x4f, 0xb6, 0xb4, 0x1f, 0xd1, 0x9e, 0x38, 0x5d, 0xfb, 0xd7, 0x5c, 0x17, ++ 0xcc, 0xe7, 0x74, 0x2e, 0xc8, 0xd9, 0x9c, 0x20, 0xbd, 0x4d, 0xf9, 0x23, ++ 0xe3, 0xf6, 0xc2, 0x00, 0x6e, 0xf7, 0xef, 0x89, 0xe6, 0xeb, 0xdc, 0x63, ++ 0xce, 0xa2, 0x78, 0xce, 0x94, 0xb3, 0xfc, 0x5c, 0xab, 0xa4, 0x4b, 0x89, ++ 0x67, 0x69, 0x07, 0x54, 0x88, 0x78, 0x42, 0x71, 0xba, 0xc7, 0x8d, 0xf3, ++ 0x95, 0xfe, 0xc2, 0x85, 0xe2, 0xd9, 0x92, 0xd8, 0x69, 0x46, 0x3f, 0xa4, ++ 0x02, 0xd2, 0x50, 0xfd, 0xdf, 0x97, 0xbd, 0x3b, 0x26, 0xed, 0xe2, 0xf0, ++ 0x3c, 0x20, 0xed, 0xc2, 0xec, 0xc4, 0xc9, 0x02, 0xcf, 0x3f, 0xa2, 0x9d, ++ 0x38, 0x3d, 0x12, 0x5e, 0x99, 0xc3, 0xa9, 0x8b, 0x43, 0x80, 0xfe, 0xbb, ++ 0x81, 0xec, 0xb7, 0x80, 0x91, 0x8e, 0xc8, 0xf4, 0xe9, 0x57, 0xac, 0xe3, ++ 0x70, 0x96, 0xf9, 0x55, 0x01, 0xa3, 0xd4, 0xb7, 0x09, 0xa8, 0x6f, 0x81, ++ 0x5e, 0x66, 0xe0, 0x78, 0xff, 0x2e, 0xbd, 0x94, 0x14, 0x31, 0x11, 0x0f, ++ 0x7c, 0x79, 0xaa, 0x96, 0x0f, 0x78, 0xff, 0x85, 0xc8, 0xb3, 0x57, 0xa7, ++ 0x22, 0x7e, 0x66, 0x8e, 0x93, 0xe5, 0xbf, 0x6d, 0xd6, 0x06, 0xa2, 0xdc, ++ 0x61, 0x32, 0x8e, 0x4e, 0x71, 0x91, 0xf7, 0x54, 0x91, 0xf7, 0xbd, 0xf2, ++ 0xf6, 0x44, 0xa8, 0x3f, 0xe5, 0x41, 0x16, 0x8c, 0xb3, 0x43, 0xf9, 0xa4, ++ 0xfc, 0xb8, 0x9e, 0x38, 0x8a, 0xc2, 0x82, 0xf5, 0x97, 0x3e, 0xba, 0xfd, ++ 0xed, 0x66, 0xc2, 0x33, 0x3f, 0xf7, 0xc2, 0xbc, 0x5d, 0x46, 0xbe, 0xcf, ++ 0x24, 0xf2, 0xb9, 0x90, 0xb7, 0x87, 0xe4, 0xc7, 0x85, 0xe5, 0xd7, 0xf3, ++ 0xfa, 0xb1, 0xc6, 0x2e, 0xc6, 0xcf, 0x29, 0xfa, 0x39, 0xbf, 0xaa, 0xb8, ++ 0xf5, 0xc6, 0xe9, 0xc7, 0x13, 0x62, 0x8f, 0x00, 0x26, 0x27, 0xe3, 0x79, ++ 0x82, 0x69, 0xdb, 0x15, 0x07, 0xc6, 0x41, 0x6e, 0xc9, 0x3f, 0x49, 0xfb, ++ 0xb1, 0xc1, 0xf5, 0xbf, 0x41, 0xeb, 0x5f, 0xd2, 0xae, 0x88, 0xfc, 0xce, ++ 0xb7, 0x71, 0xbd, 0xb7, 0x6c, 0xe7, 0xf9, 0x47, 0x1e, 0xfd, 0x43, 0xb3, ++ 0x6f, 0xa0, 0xe8, 0x2f, 0x99, 0xe2, 0x64, 0xf4, 0x67, 0x6a, 0x55, 0x34, ++ 0x3c, 0xff, 0xb0, 0x78, 0x9c, 0xe2, 0xef, 0x9f, 0xd3, 0x1b, 0xce, 0x8f, ++ 0xa4, 0xe9, 0xfd, 0x1b, 0xfc, 0x33, 0xea, 0xdb, 0x33, 0x3c, 0x7f, 0x77, ++ 0x31, 0xed, 0x11, 0xcf, 0xd4, 0xbe, 0x3f, 0xb5, 0x0f, 0x58, 0x2e, 0x62, ++ 0xfc, 0x59, 0xf9, 0x91, 0xef, 0x3d, 0xfc, 0x97, 0xac, 0x27, 0xe2, 0x09, ++ 0xd4, 0x3f, 0xc0, 0xf2, 0x86, 0xd6, 0xc8, 0xef, 0x97, 0xbc, 0x28, 0xf8, ++ 0xb1, 0x13, 0xf7, 0x4d, 0x08, 0x5e, 0x1f, 0x35, 0x23, 0xfc, 0x3a, 0xcd, ++ 0x12, 0x9e, 0xff, 0x68, 0xc6, 0x78, 0x37, 0xdd, 0x9f, 0x81, 0xfc, 0xab, ++ 0x8f, 0xfe, 0x63, 0xaa, 0x6f, 0x18, 0x9f, 0xbe, 0x16, 0xb6, 0xfe, 0x73, ++ 0xcd, 0xff, 0xf1, 0x08, 0xeb, 0x77, 0xe9, 0xdb, 0x07, 0xce, 0x05, 0xbf, ++ 0x0d, 0xbd, 0xda, 0x0b, 0xfa, 0x99, 0xaf, 0xa7, 0xa7, 0x38, 0xa3, 0x67, ++ 0xd7, 0x69, 0xe8, 0x27, 0x0e, 0xfc, 0x7f, 0xb4, 0x8b, 0x97, 0x78, 0xa2, ++ 0x9a, 0xd1, 0xfe, 0x0f, 0xd2, 0xc7, 0x61, 0xa2, 0x8f, 0x4e, 0x19, 0xcf, ++ 0xef, 0x45, 0xff, 0x9f, 0x4f, 0x9d, 0x68, 0x23, 0xfb, 0x47, 0xd4, 0x3f, ++ 0xda, 0x8c, 0x7a, 0xcc, 0x63, 0xe8, 0xa9, 0xcf, 0xf9, 0x41, 0xd2, 0x17, ++ 0x5e, 0x05, 0xc2, 0xb3, 0x73, 0x8c, 0xb7, 0xff, 0xe0, 0xd1, 0x23, 0xcd, ++ 0x08, 0x1f, 0xc0, 0x0f, 0x95, 0x53, 0xde, 0x78, 0x0e, 0x7e, 0x68, 0x0d, ++ 0xcb, 0xe7, 0x87, 0xf1, 0x8f, 0xa0, 0x7f, 0xe2, 0x5f, 0x94, 0xf3, 0x00, ++ 0x9f, 0x41, 0x11, 0xe4, 0xcc, 0x29, 0x01, 0x9f, 0x2f, 0xc4, 0xb9, 0xea, ++ 0xce, 0x42, 0x6e, 0x27, 0x76, 0xf6, 0xe7, 0xa9, 0x33, 0x9d, 0xdb, 0x85, ++ 0xff, 0x12, 0xf8, 0x36, 0xa4, 0xf3, 0xfa, 0x9d, 0xd1, 0x21, 0x70, 0x08, ++ 0xc1, 0x33, 0xfc, 0x05, 0xd0, 0x0f, 0x09, 0x59, 0x37, 0xc1, 0xe9, 0xe6, ++ 0x44, 0xb9, 0xee, 0xa8, 0x92, 0xa9, 0xb0, 0xae, 0x4e, 0x27, 0x2f, 0xb7, ++ 0xa5, 0x9b, 0xee, 0xf7, 0xe5, 0x07, 0xf3, 0xe1, 0xfd, 0xc5, 0xa6, 0x47, ++ 0x95, 0x20, 0x5c, 0x82, 0xfd, 0x5b, 0xde, 0x41, 0xb9, 0x74, 0xb3, 0x80, ++ 0x9b, 0x33, 0xdd, 0xfa, 0x8e, 0x8f, 0xcb, 0x43, 0x05, 0xf9, 0xb2, 0x9a, ++ 0x08, 0x04, 0xe8, 0x62, 0xbb, 0xe2, 0x53, 0xd1, 0x4f, 0x40, 0xba, 0x88, ++ 0xb0, 0xee, 0xbf, 0xf7, 0xa6, 0x2b, 0x5f, 0x58, 0x7b, 0xcd, 0x74, 0x8e, ++ 0xf6, 0x5d, 0xbd, 0xdb, 0x6b, 0x61, 0xed, 0x99, 0x29, 0xf7, 0x62, 0xda, ++ 0x0b, 0xbc, 0x4d, 0x0d, 0xc3, 0x6b, 0x71, 0x18, 0x5e, 0x27, 0x86, 0xe5, ++ 0x4b, 0x65, 0xde, 0xaf, 0x93, 0x7f, 0x52, 0x2e, 0x96, 0xb7, 0xad, 0x5d, ++ 0x95, 0x9c, 0x88, 0x71, 0x49, 0x85, 0xee, 0x8a, 0x06, 0xe9, 0x39, 0xa5, ++ 0x04, 0xe9, 0x79, 0x91, 0x43, 0xd2, 0x6f, 0x2a, 0xc1, 0x35, 0x48, 0xcf, ++ 0x69, 0xef, 0x20, 0xfd, 0xce, 0x68, 0x95, 0xf2, 0x30, 0xfd, 0x7e, 0x0d, ++ 0xf0, 0x36, 0x1d, 0xe5, 0xe1, 0xf8, 0x60, 0xfe, 0x06, 0x94, 0x17, 0x94, ++ 0xcf, 0x28, 0xd1, 0xe2, 0x42, 0xf5, 0x45, 0x26, 0x95, 0xcf, 0x6a, 0x92, ++ 0xf5, 0xb3, 0xee, 0x27, 0x79, 0xda, 0x28, 0xfb, 0xcb, 0xa6, 0xbc, 0xc4, ++ 0x23, 0xf3, 0xf5, 0x2b, 0x21, 0xbc, 0xe6, 0x0a, 0x7d, 0xe1, 0x73, 0xbd, ++ 0x83, 0xe5, 0x0b, 0xdb, 0x79, 0xfb, 0x49, 0x8f, 0xe5, 0xbc, 0x73, 0x4e, ++ 0x7e, 0x68, 0x09, 0x83, 0xcb, 0xfa, 0xb0, 0xbc, 0x2f, 0xac, 0xfe, 0x43, ++ 0xe7, 0xd1, 0x2f, 0x8d, 0x61, 0xed, 0xef, 0x0e, 0x2b, 0x6f, 0x0e, 0xcb, ++ 0xaf, 0x0b, 0xcb, 0x37, 0xe9, 0xdb, 0x97, 0xcd, 0x53, 0x88, 0x0f, 0xcb, ++ 0x80, 0x1e, 0x10, 0x11, 0xe7, 0xe3, 0xcb, 0x9b, 0xd2, 0x7b, 0xec, 0xd4, ++ 0x1e, 0x7d, 0xaa, 0xd8, 0xc8, 0x6e, 0xd3, 0xf1, 0xd5, 0x94, 0x06, 0x9e, ++ 0xbf, 0xfd, 0xb1, 0x11, 0x25, 0x4d, 0xb6, 0x90, 0x7c, 0xba, 0xbb, 0x24, ++ 0x94, 0x2f, 0xe4, 0xbd, 0x60, 0x4b, 0x22, 0x23, 0xbe, 0x30, 0xf5, 0x21, ++ 0x2f, 0x4b, 0xd2, 0xf5, 0xfe, 0x59, 0xcf, 0x7a, 0x86, 0x86, 0xeb, 0x5b, ++ 0x5e, 0xfe, 0x09, 0xfe, 0x33, 0x8d, 0xf6, 0x77, 0x74, 0x76, 0xc1, 0x4e, ++ 0x55, 0x9f, 0xef, 0x50, 0xe5, 0xbc, 0xaf, 0x7a, 0x67, 0xb9, 0x2d, 0x64, ++ 0x1f, 0x94, 0x5d, 0x59, 0x82, 0xf1, 0x95, 0xbe, 0xf7, 0x5b, 0x26, 0x94, ++ 0x4c, 0xcc, 0x0c, 0xb1, 0x4b, 0x7c, 0xe3, 0x4b, 0xb4, 0x90, 0x75, 0xca, ++ 0xfa, 0x93, 0xbf, 0x3f, 0xab, 0xe2, 0x78, 0x77, 0xa6, 0x8f, 0x2f, 0xd9, ++ 0x88, 0xfb, 0x39, 0x85, 0x62, 0x1f, 0xd2, 0xc9, 0x53, 0xd0, 0x6b, 0x2a, ++ 0xea, 0xcd, 0x1a, 0x11, 0x8f, 0x99, 0x8c, 0xe7, 0x63, 0xb1, 0x5e, 0x74, ++ 0x60, 0xd0, 0xb2, 0x50, 0x3b, 0x84, 0xb5, 0x0e, 0xc6, 0x75, 0x76, 0xfc, ++ 0x8c, 0xdf, 0x1b, 0xf0, 0x35, 0x00, 0x7e, 0x30, 0xbe, 0xc6, 0xdc, 0x66, ++ 0x8c, 0xa7, 0x74, 0xc4, 0xc5, 0xad, 0x78, 0x06, 0xea, 0xef, 0xfc, 0x99, ++ 0xba, 0x02, 0xf5, 0xe8, 0xfe, 0x15, 0x09, 0x74, 0x2e, 0xe9, 0x4f, 0xe9, ++ 0xdc, 0xff, 0xdc, 0x19, 0xd7, 0x2f, 0xb9, 0x02, 0xf2, 0x1d, 0x31, 0xb7, ++ 0x9b, 0xf1, 0xbd, 0x92, 0x8e, 0x7b, 0x26, 0x51, 0xba, 0x43, 0xd5, 0x56, ++ 0x77, 0x03, 0xaf, 0x3d, 0xf8, 0xd8, 0xb5, 0x25, 0xb6, 0x4b, 0xb0, 0x3c, ++ 0x8e, 0xe0, 0xf3, 0x8b, 0xf4, 0x49, 0x25, 0xf5, 0x40, 0xd7, 0xbf, 0xc4, ++ 0x4b, 0x3b, 0xd0, 0xde, 0xeb, 0x74, 0x24, 0xe3, 0xbd, 0x06, 0xb6, 0xc6, ++ 0x44, 0xfb, 0x7a, 0x8c, 0xb9, 0x9f, 0x24, 0xba, 0xb9, 0xdf, 0x32, 0x12, ++ 0xfd, 0xe7, 0xb2, 0xfa, 0xcb, 0x68, 0xdf, 0xaa, 0xfc, 0x57, 0xd3, 0x27, ++ 0xd3, 0xbd, 0x85, 0x55, 0x26, 0xda, 0xcf, 0x80, 0x3f, 0x3a, 0x7f, 0xe2, ++ 0x5d, 0x33, 0x89, 0xce, 0x3d, 0xcd, 0x6b, 0x14, 0xa9, 0xef, 0x1a, 0x4a, ++ 0xdf, 0xf8, 0xe1, 0xe9, 0x06, 0xbc, 0x1f, 0xd9, 0xfd, 0x84, 0x42, 0xf7, ++ 0x25, 0xae, 0xfc, 0xba, 0xf5, 0x8f, 0x23, 0xf0, 0xdc, 0x63, 0xd3, 0x00, ++ 0x37, 0xa2, 0xe6, 0x75, 0xb0, 0xeb, 0xf1, 0x3c, 0xd2, 0xa7, 0xeb, 0x86, ++ 0xd0, 0x3d, 0x89, 0x83, 0x51, 0xb5, 0x74, 0xee, 0x13, 0xea, 0x33, 0xac, ++ 0x5f, 0xf5, 0x9d, 0xeb, 0xdd, 0x69, 0xb9, 0x58, 0x5f, 0x75, 0xe0, 0xd1, ++ 0x8a, 0xc3, 0xf0, 0x1d, 0xed, 0xe1, 0xc3, 0xf7, 0xaa, 0x4f, 0xe1, 0xfd, ++ 0xc3, 0xb2, 0x58, 0x7b, 0x34, 0x9e, 0x97, 0x3e, 0xfc, 0xbd, 0xeb, 0x5d, ++ 0xb4, 0x6b, 0xa1, 0xdc, 0xb1, 0x12, 0xbe, 0x1f, 0x5e, 0xb5, 0x20, 0x19, ++ 0xed, 0xac, 0xc3, 0x8a, 0x2b, 0x16, 0xdf, 0x12, 0x79, 0xf1, 0xb1, 0x59, ++ 0x25, 0xa9, 0x69, 0x78, 0x2f, 0xdf, 0x22, 0xf0, 0x39, 0xcb, 0x5e, 0x06, ++ 0x7c, 0x5e, 0x66, 0xe8, 0xa1, 0x17, 0xd2, 0x1f, 0x95, 0xf1, 0x3c, 0xff, ++ 0x62, 0xfa, 0xac, 0x92, 0x4d, 0x30, 0xff, 0xc3, 0x8f, 0x0e, 0xa1, 0x73, ++ 0x5f, 0x83, 0x33, 0xb4, 0xd6, 0x74, 0xc0, 0xd3, 0xe9, 0x0c, 0x6d, 0x2b, ++ 0xa6, 0x07, 0xc5, 0x7d, 0xe5, 0x37, 0x7e, 0xe0, 0xfb, 0x85, 0xbf, 0x3f, ++ 0x51, 0x9e, 0x8c, 0xf4, 0xf4, 0x7b, 0x41, 0xc7, 0xaf, 0x9f, 0x29, 0x4f, ++ 0x2e, 0x0f, 0xb1, 0x77, 0x2a, 0xbf, 0x30, 0x12, 0xde, 0xdf, 0x30, 0xbb, ++ 0x96, 0xe3, 0x3c, 0xdf, 0x88, 0xce, 0x52, 0xe8, 0x7c, 0x36, 0x6b, 0x4d, ++ 0xc0, 0x78, 0xf7, 0x3c, 0xe1, 0x7f, 0x00, 0xfd, 0xae, 0xd8, 0x16, 0xc1, ++ 0xee, 0x79, 0x38, 0x5d, 0x25, 0x3c, 0x75, 0xdc, 0x97, 0x94, 0x8f, 0x78, ++ 0x0d, 0xd2, 0x71, 0x25, 0xc9, 0x4b, 0xf2, 0x1b, 0x20, 0xff, 0xf6, 0x63, ++ 0xe5, 0xa4, 0xd7, 0x0e, 0x59, 0x56, 0xb0, 0x83, 0x68, 0x37, 0x8a, 0xf3, ++ 0x8b, 0x6c, 0x67, 0x14, 0xbf, 0xef, 0xb8, 0x25, 0xca, 0x1f, 0x95, 0x83, ++ 0xf1, 0x4f, 0x6d, 0x32, 0xb6, 0x63, 0xa9, 0xad, 0x83, 0x67, 0xd8, 0x43, ++ 0xf8, 0x4e, 0xd4, 0xff, 0xd8, 0xc7, 0xcf, 0xe7, 0x7e, 0x0c, 0xf5, 0xd1, ++ 0x7f, 0xfb, 0xd8, 0xf7, 0x0f, 0x7b, 0xe8, 0x3e, 0x84, 0xac, 0x5f, 0x15, ++ 0x6b, 0xf7, 0xa1, 0x31, 0xf1, 0xb9, 0xdd, 0x6e, 0x44, 0x3c, 0xec, 0x37, ++ 0xd6, 0x1d, 0xc6, 0x73, 0x7d, 0x95, 0x4f, 0x98, 0x48, 0xee, 0x57, 0x3e, ++ 0x91, 0x74, 0x77, 0x37, 0xca, 0x1b, 0xa0, 0x17, 0x8c, 0x8f, 0x85, 0xaf, ++ 0x2b, 0x35, 0xc3, 0x44, 0xf0, 0xea, 0x93, 0x0f, 0x7d, 0x77, 0x94, 0x4c, ++ 0xd4, 0xf9, 0x07, 0x77, 0x9c, 0x93, 0x0f, 0x0f, 0x3f, 0xb6, 0xac, 0x64, ++ 0xa3, 0xad, 0x6f, 0x3e, 0xac, 0x12, 0x7e, 0xca, 0xe4, 0x27, 0x4c, 0x74, ++ 0x4e, 0xbd, 0x6a, 0x8c, 0xdd, 0x88, 0xfb, 0x8f, 0x85, 0x4f, 0xbc, 0xb9, ++ 0x89, 0xee, 0xad, 0x2e, 0x8d, 0x1a, 0x85, 0xf7, 0x13, 0xaa, 0x9e, 0xb0, ++ 0x10, 0xbe, 0xba, 0xec, 0x76, 0x9f, 0x03, 0xf7, 0x47, 0x63, 0xed, 0xc6, ++ 0x78, 0x48, 0xbf, 0x16, 0x76, 0x48, 0x12, 0x5e, 0xae, 0xc4, 0xb8, 0x8c, ++ 0xca, 0x8c, 0xd6, 0x51, 0x94, 0xd2, 0xbd, 0x04, 0xb9, 0xaf, 0x77, 0x74, ++ 0xc5, 0x83, 0x0f, 0xe3, 0x31, 0xca, 0x63, 0xcc, 0x3f, 0x73, 0x2c, 0xc0, ++ 0xef, 0x14, 0x22, 0x0c, 0xe0, 0x72, 0x4a, 0xde, 0xcb, 0x0a, 0xdb, 0xe7, ++ 0xab, 0xde, 0xbb, 0xcd, 0x5c, 0xc0, 0xce, 0xb1, 0xcf, 0x77, 0x9e, 0xfd, ++ 0x3d, 0x20, 0x5f, 0x7a, 0x47, 0xe2, 0x42, 0xf7, 0xf9, 0x62, 0x32, 0xc4, ++ 0xbd, 0x9f, 0x9e, 0x7d, 0x3e, 0x13, 0xbd, 0x0b, 0x51, 0x25, 0xf6, 0xf9, ++ 0x8a, 0xd6, 0xf3, 0xf3, 0x5b, 0x55, 0x2b, 0xf8, 0xfb, 0x1d, 0x45, 0x09, ++ 0x3c, 0xde, 0x7b, 0xa8, 0xce, 0x87, 0x8f, 0xc4, 0xe2, 0x7a, 0x7d, 0x0e, ++ 0xbc, 0x9f, 0xfb, 0x10, 0xd7, 0x2f, 0x55, 0x4c, 0xf1, 0x5b, 0xe1, 0x9f, ++ 0xd7, 0xac, 0x5f, 0x6a, 0xa4, 0xfb, 0x8f, 0xe9, 0x1c, 0x3e, 0x65, 0xe2, ++ 0x1d, 0xa7, 0x83, 0x51, 0xee, 0x6c, 0xf4, 0xd3, 0x2b, 0x9f, 0x88, 0x22, ++ 0xb8, 0x56, 0x3d, 0xb9, 0xe0, 0x2f, 0x8f, 0x42, 0xbb, 0xae, 0xfa, 0x92, ++ 0xc4, 0x50, 0xbf, 0x38, 0x47, 0xd0, 0x03, 0xf4, 0xcf, 0xf0, 0x9e, 0xae, ++ 0xec, 0xe7, 0xf3, 0xfa, 0x9f, 0x67, 0x23, 0xdd, 0x17, 0xfd, 0x1a, 0xfc, ++ 0x5b, 0xbc, 0xef, 0x17, 0xcf, 0x5e, 0xb8, 0x39, 0x07, 0xf1, 0x94, 0x96, ++ 0x8d, 0xfb, 0x91, 0xb2, 0x5e, 0xd5, 0xca, 0x9f, 0x0d, 0xe6, 0xf5, 0xc0, ++ 0x3f, 0x06, 0x3f, 0xb8, 0xec, 0x5e, 0x95, 0xbf, 0xbf, 0xf6, 0xb2, 0x85, ++ 0xf4, 0x1d, 0xf0, 0x78, 0x2a, 0x0b, 0xb9, 0xcf, 0x3c, 0xaf, 0x71, 0xaf, ++ 0xd9, 0x3c, 0x2c, 0x78, 0xff, 0xeb, 0x53, 0xc8, 0xe3, 0x95, 0xfb, 0x90, ++ 0x7b, 0x60, 0x66, 0x84, 0x97, 0xbc, 0x97, 0x84, 0x7f, 0xa9, 0x79, 0xc2, ++ 0xde, 0x76, 0x91, 0xfc, 0xa0, 0x77, 0x78, 0x4b, 0x0d, 0x0a, 0xdd, 0x5f, ++ 0x02, 0xc9, 0x45, 0xf7, 0x7e, 0xae, 0xcf, 0xe0, 0xf6, 0xeb, 0xc4, 0x0c, ++ 0x7e, 0xde, 0xa9, 0x2c, 0xdb, 0x4d, 0xf7, 0x5f, 0xaa, 0x1f, 0xb0, 0xb8, ++ 0x57, 0xe6, 0xf0, 0x7e, 0x7a, 0xee, 0x55, 0xe3, 0x39, 0x27, 0x43, 0x67, ++ 0x25, 0xed, 0x3f, 0xfe, 0xd6, 0x42, 0x71, 0x91, 0x9a, 0xc6, 0x28, 0x2d, ++ 0x2a, 0x96, 0x9f, 0x8b, 0x78, 0x69, 0x18, 0x9d, 0x8b, 0x36, 0x9a, 0x71, ++ 0xdf, 0xc4, 0xc5, 0xe5, 0xc4, 0xf5, 0x82, 0xfe, 0x6a, 0x5c, 0xd3, 0xaf, ++ 0x41, 0x7a, 0x81, 0xf2, 0x7d, 0x46, 0x3c, 0x87, 0x65, 0xe7, 0xf2, 0xb0, ++ 0x3a, 0x1e, 0xe0, 0xce, 0xf5, 0xb0, 0x66, 0x80, 0x71, 0x4e, 0xe2, 0xbf, ++ 0x06, 0xf0, 0x7e, 0xd3, 0x46, 0x84, 0x8c, 0xaf, 0x88, 0xef, 0xd0, 0x8f, ++ 0x2b, 0x36, 0xd8, 0xef, 0x1e, 0x03, 0x6b, 0xc2, 0xb8, 0x0b, 0xd6, 0xbf, ++ 0x64, 0x04, 0xc2, 0x31, 0x61, 0xe6, 0x6c, 0x9c, 0xdf, 0xf3, 0x2a, 0xf1, ++ 0x31, 0x2c, 0xfe, 0x81, 0x71, 0x68, 0xdf, 0x3d, 0xaf, 0x8e, 0x46, 0xbf, ++ 0xb6, 0xec, 0xde, 0x9d, 0x93, 0xd7, 0x61, 0x7e, 0xeb, 0x48, 0xbc, 0xb1, ++ 0xc0, 0xca, 0x5e, 0xf8, 0x80, 0xf4, 0xc5, 0x22, 0x81, 0xff, 0x2e, 0x71, ++ 0x1e, 0xac, 0x1c, 0xf2, 0x78, 0xdf, 0x7f, 0x7e, 0x06, 0x97, 0x93, 0x5e, ++ 0x95, 0xc7, 0x7b, 0xe6, 0x0b, 0x78, 0x49, 0x3a, 0x90, 0xe5, 0xd5, 0xf7, ++ 0xf2, 0xf3, 0x50, 0xd5, 0xab, 0x2c, 0x64, 0xbf, 0x54, 0xd7, 0xff, 0x95, ++ 0xfa, 0xad, 0xb6, 0x77, 0x26, 0xa3, 0xdc, 0xad, 0x7e, 0xd9, 0x44, 0xf7, ++ 0x98, 0x17, 0x89, 0x79, 0x97, 0xd7, 0x67, 0xe5, 0xef, 0x03, 0xba, 0x2a, ++ 0x37, 0xc5, 0xd1, 0x7b, 0xcb, 0x8b, 0x7d, 0x25, 0x66, 0xcc, 0x2f, 0x6e, ++ 0x51, 0x28, 0x1f, 0x6c, 0x97, 0x94, 0x8d, 0x74, 0x7a, 0xbc, 0xf1, 0x95, ++ 0x58, 0xa4, 0x9f, 0x83, 0x51, 0x81, 0x41, 0xa8, 0x87, 0xba, 0x97, 0x46, ++ 0xb9, 0xf1, 0x1c, 0x9e, 0x8c, 0xb7, 0x1d, 0x6f, 0x1c, 0xf4, 0x14, 0xc6, ++ 0x65, 0xe6, 0x39, 0x3a, 0xed, 0x78, 0x1f, 0x69, 0xde, 0xf2, 0x01, 0x4e, ++ 0x94, 0xdb, 0xfb, 0x1d, 0x01, 0x33, 0x96, 0xef, 0x6f, 0xcd, 0x31, 0x60, ++ 0x5e, 0x73, 0x38, 0xf2, 0x31, 0xaf, 0x19, 0x2f, 0xa7, 0xfc, 0x71, 0x71, ++ 0xee, 0x84, 0xfe, 0x90, 0x5e, 0x14, 0x8e, 0xe7, 0xc5, 0x5b, 0x76, 0x9a, ++ 0xfb, 0xc3, 0x78, 0x2d, 0x82, 0x2e, 0xbe, 0x78, 0xfe, 0x83, 0xc1, 0xa8, ++ 0xa7, 0xaa, 0xb3, 0x3b, 0x07, 0xa3, 0x3e, 0x01, 0x3a, 0x18, 0x9c, 0x81, ++ 0x70, 0x7e, 0x56, 0x21, 0x3d, 0xbc, 0x64, 0x0b, 0x3f, 0xa7, 0x2e, 0xe9, ++ 0x60, 0x09, 0xd2, 0x01, 0xf0, 0xdd, 0x42, 0x41, 0x07, 0x4b, 0xb6, 0xbf, ++ 0xf2, 0x13, 0xe4, 0x87, 0x25, 0x88, 0xff, 0x51, 0xbd, 0xe9, 0x08, 0xe8, ++ 0x74, 0x17, 0x7d, 0x7f, 0x69, 0xc3, 0x64, 0xc6, 0xdb, 0xef, 0x42, 0x3a, ++ 0x91, 0xfa, 0x0b, 0xf2, 0x8d, 0x26, 0x27, 0xc6, 0xdf, 0x44, 0x1e, 0xc6, ++ 0xc1, 0xfc, 0x5a, 0x01, 0x4f, 0x28, 0x9f, 0xc8, 0xcb, 0x7d, 0xc3, 0xf8, ++ 0x39, 0xb7, 0x2e, 0x3a, 0xb7, 0x57, 0x23, 0xee, 0x2b, 0xf6, 0xc8, 0xa7, ++ 0x3e, 0xf0, 0xfc, 0x82, 0xc0, 0x63, 0x79, 0xbd, 0x85, 0xe4, 0xed, 0x0b, ++ 0x02, 0xcf, 0x5d, 0xf7, 0xbe, 0x1c, 0x8b, 0x78, 0xfc, 0xe2, 0xf9, 0x9d, ++ 0xbb, 0x71, 0x9f, 0xa4, 0xfa, 0x25, 0xc5, 0xc1, 0xf7, 0xab, 0xc2, 0xf8, ++ 0x42, 0xc0, 0xa5, 0x06, 0xe1, 0x10, 0x4b, 0xeb, 0x20, 0xbb, 0xa2, 0x06, ++ 0xd7, 0x1d, 0x1b, 0x84, 0x43, 0x0f, 0xfd, 0x0b, 0x7e, 0xac, 0x61, 0x7c, ++ 0x9d, 0x72, 0xdd, 0x35, 0x46, 0x01, 0x07, 0x59, 0x2e, 0xda, 0xbf, 0x88, ++ 0xeb, 0x4c, 0x42, 0xf8, 0x0a, 0xb8, 0x6d, 0x1f, 0xc2, 0xf9, 0x4f, 0xf0, ++ 0x1b, 0xf2, 0x33, 0xbd, 0xcf, 0x23, 0xd6, 0xe7, 0x75, 0xea, 0xdf, 0xdd, ++ 0xfe, 0x30, 0x83, 0xeb, 0x83, 0xd7, 0x44, 0xba, 0x18, 0xe8, 0x02, 0xef, ++ 0x67, 0x31, 0xbc, 0x9e, 0x28, 0xe5, 0x04, 0x14, 0x7d, 0xb1, 0x75, 0x03, ++ 0xc5, 0x7d, 0x24, 0xbe, 0xe4, 0xbc, 0x0f, 0x07, 0xf5, 0x88, 0x16, 0xef, ++ 0x0c, 0xe2, 0xb1, 0xcb, 0xc0, 0xef, 0x2f, 0x86, 0xeb, 0xcb, 0x77, 0x04, ++ 0xfc, 0x0e, 0xac, 0x4a, 0xc9, 0x6e, 0x03, 0xb8, 0x1d, 0xdf, 0x4c, 0xcf, ++ 0x54, 0x12, 0xbd, 0x1a, 0x43, 0xc6, 0x93, 0x74, 0x23, 0xc7, 0x2b, 0x7a, ++ 0x6e, 0xfa, 0x75, 0xb8, 0x5e, 0xe8, 0x3f, 0x80, 0xfd, 0xcb, 0x71, 0xf7, ++ 0xfb, 0x62, 0x8c, 0xd8, 0xcf, 0x7e, 0xc6, 0xf9, 0x03, 0xe9, 0x13, 0xe5, ++ 0xa7, 0xe4, 0xcb, 0xa2, 0x86, 0x39, 0xd7, 0x8d, 0xc4, 0x73, 0xbf, 0xbe, ++ 0x2f, 0xec, 0x03, 0x86, 0xe1, 0x7a, 0x39, 0xdd, 0x1e, 0xce, 0xe0, 0xe7, ++ 0x7f, 0x34, 0xb4, 0x13, 0xa0, 0xbd, 0xd6, 0xa6, 0x50, 0xdc, 0xf9, 0x80, ++ 0xf0, 0xe7, 0x0f, 0xac, 0x7a, 0x25, 0xb6, 0x3c, 0x04, 0x4e, 0x87, 0x44, ++ 0x3b, 0x49, 0x67, 0xf8, 0x87, 0xf1, 0x28, 0x39, 0xdf, 0x3d, 0x4e, 0x1e, ++ 0xc7, 0x0d, 0x9f, 0xb7, 0x94, 0x43, 0x72, 0xde, 0x45, 0xf7, 0xcc, 0xba, ++ 0x0e, 0xbf, 0xcb, 0xf9, 0x4b, 0x7a, 0x95, 0xf4, 0x29, 0xe1, 0x28, 0xe9, ++ 0x54, 0xde, 0x7f, 0x0b, 0xa7, 0x57, 0xa2, 0x35, 0xa9, 0x3f, 0x55, 0x9d, ++ 0xbc, 0x27, 0xfd, 0x78, 0x4d, 0xe6, 0x57, 0x66, 0xaf, 0xad, 0xf7, 0xf7, ++ 0xf0, 0xbc, 0xb4, 0x83, 0x0e, 0x8a, 0xf3, 0xdb, 0xdd, 0x49, 0x8c, 0xc7, ++ 0xeb, 0x1b, 0x53, 0x77, 0x85, 0xde, 0xf7, 0x81, 0x3f, 0x5b, 0xa8, 0xde, ++ 0x09, 0xd1, 0x27, 0xcd, 0xc6, 0x10, 0x7d, 0x22, 0xf5, 0x7f, 0x4d, 0xa2, ++ 0x76, 0x14, 0xf1, 0x55, 0x9c, 0xc9, 0xcf, 0x95, 0x1c, 0x63, 0xad, 0xe6, ++ 0x02, 0xe8, 0x77, 0xf1, 0x91, 0xce, 0xc9, 0xf8, 0x4e, 0xa2, 0xb4, 0x3b, ++ 0xaf, 0xfc, 0x3a, 0xa0, 0xc6, 0x61, 0x1c, 0x6a, 0x3b, 0x3f, 0x7f, 0x26, ++ 0xe1, 0xbd, 0xf8, 0xc4, 0x2e, 0xa2, 0xfb, 0x6a, 0x71, 0x2f, 0xa9, 0xec, ++ 0xde, 0x0f, 0x4a, 0xc6, 0x22, 0x7d, 0xff, 0xc6, 0x44, 0xfb, 0x31, 0x65, ++ 0xab, 0x26, 0xd1, 0xfd, 0xe3, 0x05, 0x9b, 0xe6, 0xe6, 0x21, 0xfd, 0xe0, ++ 0x7d, 0x06, 0x94, 0xe7, 0x47, 0x37, 0x8e, 0x19, 0xcd, 0x9f, 0xf3, 0x72, ++ 0x24, 0xcf, 0xc4, 0x7b, 0x0d, 0x1b, 0x1f, 0x9c, 0x79, 0x0b, 0x7c, 0x9f, ++ 0xd7, 0xa6, 0xba, 0x49, 0xae, 0x43, 0x3f, 0xc8, 0xaf, 0x65, 0x77, 0x8e, ++ 0x66, 0x48, 0x2f, 0x07, 0xa3, 0xba, 0x4a, 0xc6, 0xa3, 0xbd, 0xfe, 0x53, ++ 0xd5, 0x81, 0xf6, 0xfa, 0x84, 0x4d, 0x63, 0xee, 0xc6, 0xfa, 0x13, 0xec, ++ 0xfd, 0xe2, 0x71, 0x3d, 0xda, 0xc6, 0x04, 0xca, 0x6b, 0xc6, 0x38, 0xd2, ++ 0x0b, 0xd2, 0xce, 0x95, 0xe7, 0xf2, 0x1a, 0x4c, 0x9c, 0x1e, 0x46, 0x65, ++ 0x72, 0xfe, 0xb9, 0xa4, 0x27, 0x55, 0xc4, 0x79, 0xbc, 0x86, 0xc1, 0xb8, ++ 0x7f, 0xde, 0xbd, 0x21, 0x8a, 0xde, 0x41, 0x2a, 0x35, 0x8b, 0x7b, 0x9c, ++ 0xaf, 0xa5, 0x90, 0x3f, 0x51, 0x63, 0xc6, 0x2b, 0x85, 0x74, 0x2f, 0x94, ++ 0xec, 0xb0, 0xf9, 0x66, 0x66, 0x4d, 0xe3, 0xe7, 0x9d, 0xad, 0x69, 0xf0, ++ 0x7d, 0xaf, 0xa9, 0xf3, 0x4e, 0xd4, 0x1f, 0x7b, 0xef, 0xb4, 0x8f, 0xa4, ++ 0x73, 0xf5, 0xea, 0x77, 0x79, 0xe5, 0xdc, 0x7e, 0xe6, 0xfb, 0x85, 0x09, ++ 0xfa, 0x77, 0x87, 0xe4, 0x3c, 0x46, 0x8a, 0xf1, 0xc3, 0xfb, 0x93, 0xed, ++ 0xf7, 0x88, 0xf3, 0xc6, 0x07, 0xc5, 0xfc, 0x8f, 0x36, 0xfe, 0x66, 0x26, ++ 0xea, 0xbf, 0xa3, 0x9b, 0x07, 0x39, 0x71, 0xdd, 0x9f, 0xbf, 0x16, 0x45, ++ 0xe7, 0xf0, 0x3f, 0x0f, 0x7b, 0xb7, 0xf0, 0x62, 0xef, 0x69, 0x01, 0xdd, ++ 0x86, 0xdd, 0x83, 0x5a, 0xc9, 0xe5, 0x45, 0xa6, 0xfe, 0x9c, 0x96, 0xa4, ++ 0xf3, 0xf3, 0xde, 0x53, 0xfa, 0x28, 0x31, 0x6c, 0x3f, 0xe0, 0xdc, 0xe7, ++ 0x8b, 0x4e, 0xd4, 0x31, 0xba, 0x4f, 0x6d, 0x01, 0x5f, 0x98, 0xec, 0x99, ++ 0x98, 0xef, 0xb7, 0xe1, 0xb9, 0xbe, 0xca, 0x16, 0x8b, 0x03, 0xef, 0xb3, ++ 0x1c, 0x42, 0xba, 0xa7, 0xf3, 0x3c, 0x2a, 0xbf, 0x77, 0x6b, 0xe5, 0x7c, ++ 0x70, 0x68, 0xeb, 0x48, 0x3f, 0xfa, 0x8d, 0x95, 0x1f, 0xf1, 0xfb, 0x45, ++ 0xbb, 0xd6, 0xde, 0x43, 0xe7, 0x0a, 0x2a, 0xc0, 0xae, 0xc4, 0xa3, 0x54, ++ 0x3d, 0x76, 0xf2, 0x43, 0x6b, 0x67, 0x22, 0x1b, 0x9c, 0x72, 0x7b, 0x57, ++ 0xe3, 0x3b, 0x2f, 0xa7, 0x36, 0xf3, 0x73, 0x10, 0xbd, 0xde, 0x2d, 0xd8, ++ 0xbb, 0x6d, 0x77, 0xe8, 0xbb, 0x05, 0x17, 0x6b, 0x1f, 0x5f, 0xa8, 0x5d, ++ 0x2c, 0xe3, 0x0a, 0x35, 0x99, 0xfa, 0x7b, 0xf1, 0x12, 0xae, 0xd2, 0x3f, ++ 0x7a, 0x03, 0xf0, 0x3f, 0x6e, 0x54, 0x10, 0x4e, 0x5f, 0xd6, 0xcd, 0x27, ++ 0xbb, 0xf8, 0x44, 0x9d, 0x97, 0xd2, 0x93, 0xca, 0x81, 0x07, 0x26, 0x20, ++ 0xdd, 0xda, 0xe3, 0xe8, 0xbc, 0xfe, 0xef, 0xdb, 0x1e, 0x54, 0xf1, 0x9d, ++ 0x95, 0xea, 0xed, 0x23, 0xbf, 0x43, 0xff, 0x76, 0xbc, 0x2d, 0xce, 0x81, ++ 0xfc, 0xfa, 0x65, 0xdd, 0x0a, 0xda, 0xef, 0x3c, 0x51, 0x57, 0x4b, 0x69, ++ 0xf0, 0x5d, 0x57, 0x3f, 0xa5, 0x57, 0x6e, 0xef, 0xa0, 0x76, 0x5f, 0xb6, ++ 0x8d, 0x6e, 0xc7, 0x7b, 0xae, 0xaf, 0xdb, 0xe2, 0x84, 0xbc, 0x0f, 0xdf, ++ 0xd7, 0xe1, 0x78, 0xec, 0xeb, 0xfe, 0xae, 0x5c, 0xd7, 0xb1, 0x9f, 0x72, ++ 0x7c, 0xca, 0x79, 0x1f, 0xdb, 0x3c, 0x37, 0x16, 0xd7, 0xd5, 0xf1, 0x78, ++ 0x42, 0xfb, 0x15, 0x88, 0xc7, 0x98, 0x38, 0x07, 0xda, 0x77, 0x55, 0xe2, ++ 0x9c, 0xc7, 0xe1, 0x75, 0xdc, 0x7e, 0x3e, 0x62, 0x8d, 0x7b, 0x66, 0x2a, ++ 0x9e, 0x0f, 0x59, 0x7f, 0x43, 0x32, 0xbe, 0x83, 0x53, 0xd1, 0x71, 0xe3, ++ 0x4c, 0xfc, 0x5e, 0xf9, 0x9a, 0xe2, 0x40, 0xbb, 0xdf, 0xfd, 0xda, 0xf4, ++ 0x58, 0x8c, 0xa3, 0x7d, 0x66, 0xec, 0x8a, 0xc5, 0x7b, 0x4d, 0x9f, 0xad, ++ 0x93, 0xf7, 0xa1, 0xfc, 0xf4, 0x1e, 0xe9, 0xf8, 0x62, 0x46, 0xfb, 0x4e, ++ 0xe3, 0x03, 0x46, 0xe6, 0xca, 0xe1, 0x5b, 0xcc, 0x48, 0x27, 0x57, 0x9c, ++ 0x30, 0xd2, 0xbd, 0xd3, 0xe3, 0xb8, 0x1f, 0x85, 0x71, 0x8f, 0xef, 0xa2, ++ 0x29, 0xee, 0xc1, 0xc4, 0x3e, 0x53, 0xc5, 0xab, 0x3c, 0x5e, 0xd2, 0xe3, ++ 0xc7, 0x0a, 0x3f, 0x6e, 0x82, 0x58, 0xf7, 0x5b, 0x99, 0x4e, 0xb9, 0x7f, ++ 0x40, 0xdf, 0x8b, 0xc6, 0xf1, 0xef, 0x9f, 0xaf, 0xdf, 0x36, 0x0d, 0xfb, ++ 0x3b, 0xba, 0xd1, 0xe4, 0xc0, 0x79, 0x7f, 0xb9, 0x91, 0xbf, 0xcf, 0xb0, ++ 0x10, 0xfc, 0x2f, 0xbc, 0x9a, 0x72, 0x64, 0x33, 0xf7, 0x6f, 0x16, 0xb6, ++ 0x2a, 0xe4, 0x0f, 0x1f, 0xdd, 0x0c, 0xfa, 0x19, 0xd6, 0x55, 0xbd, 0xd4, ++ 0xa4, 0xf1, 0xfb, 0x9a, 0x7a, 0xfa, 0x2b, 0x82, 0x72, 0x3c, 0xd7, 0x28, ++ 0xe9, 0x6f, 0xa1, 0xe6, 0x27, 0xba, 0x0e, 0x7f, 0x3f, 0x23, 0x9e, 0xb5, ++ 0xd2, 0xbd, 0xae, 0x1f, 0x8b, 0x1e, 0x03, 0x99, 0x7a, 0x3f, 0xad, 0x87, ++ 0x0e, 0xfb, 0xc2, 0xbf, 0x80, 0x13, 0xf2, 0x2d, 0xd2, 0xa1, 0xc4, 0xf3, ++ 0xc2, 0x75, 0x7c, 0xdf, 0xdc, 0xd9, 0x3a, 0xb2, 0x00, 0xe9, 0x49, 0xe2, ++ 0x5d, 0xca, 0x05, 0x79, 0x5f, 0xa1, 0xc1, 0xcc, 0xf8, 0x7b, 0xa5, 0x86, ++ 0x68, 0xfa, 0x3d, 0x80, 0xe9, 0x36, 0x97, 0x49, 0x81, 0xf5, 0xdf, 0x90, ++ 0xd8, 0x35, 0x11, 0xc5, 0xe7, 0xb0, 0x2c, 0x6e, 0x7f, 0xa8, 0x45, 0x06, ++ 0x0d, 0xef, 0xa1, 0xb1, 0x06, 0x4b, 0xc4, 0xf7, 0xa8, 0xfe, 0x26, 0xe4, ++ 0xe8, 0x9c, 0x2c, 0x46, 0xe9, 0x37, 0x99, 0xdc, 0x5e, 0x90, 0xf7, 0xb1, ++ 0x64, 0x0a, 0x0b, 0xc9, 0x42, 0x3d, 0x3d, 0x3d, 0xc6, 0xf9, 0x8d, 0x0b, ++ 0xaa, 0x1c, 0x5e, 0xbf, 0x74, 0x9a, 0x11, 0xe6, 0x3f, 0x7d, 0x82, 0xf3, ++ 0xce, 0x01, 0x6e, 0xc0, 0xdb, 0xfa, 0x9f, 0x4c, 0x33, 0x02, 0xdd, 0x4e, ++ 0x1f, 0xed, 0x7c, 0xb9, 0x3f, 0xe4, 0xbb, 0x33, 0xef, 0xe2, 0xf9, 0xcb, ++ 0x9d, 0x63, 0x4c, 0x90, 0xaf, 0xaf, 0x5f, 0x31, 0x6d, 0x22, 0xd4, 0xb7, ++ 0x67, 0x69, 0x87, 0x32, 0x43, 0xc6, 0x91, 0xfd, 0xc2, 0xf7, 0xcf, 0xf1, ++ 0xbb, 0x3f, 0xc1, 0x7b, 0x0c, 0xd3, 0x1a, 0x33, 0xbf, 0x1f, 0x75, 0x52, ++ 0xe9, 0x1e, 0xb1, 0x22, 0x27, 0x58, 0xff, 0x7d, 0x85, 0xed, 0xff, 0xbd, ++ 0x12, 0xcc, 0x77, 0x99, 0x18, 0xbd, 0x03, 0xf3, 0x4d, 0xa6, 0x9c, 0x7f, ++ 0xe4, 0x74, 0x4c, 0x96, 0x76, 0x3a, 0x73, 0x4c, 0xef, 0xef, 0xe5, 0x8c, ++ 0xad, 0xa2, 0xf3, 0x71, 0x3e, 0x7e, 0xbf, 0x05, 0xfe, 0x3c, 0xd6, 0x64, ++ 0xbc, 0x7f, 0xc4, 0xe9, 0xa9, 0x5c, 0xde, 0x77, 0x69, 0xd2, 0xdf, 0x77, ++ 0x61, 0x6e, 0x7e, 0xff, 0x4a, 0xde, 0x43, 0x92, 0xf7, 0x8c, 0x2e, 0x09, ++ 0xde, 0x9f, 0x5a, 0x7f, 0x31, 0xf7, 0xa7, 0x4e, 0x9a, 0x60, 0xbd, 0x71, ++ 0xbd, 0xef, 0xb3, 0x29, 0xed, 0x7f, 0xa0, 0xf7, 0xb0, 0x1a, 0x7c, 0xac, ++ 0x2b, 0x8a, 0xf0, 0xa0, 0xbf, 0xbf, 0x52, 0x1d, 0xc3, 0xdf, 0xf7, 0x5b, ++ 0xf6, 0xf2, 0x17, 0xbb, 0x90, 0xac, 0x16, 0x48, 0x7b, 0x05, 0x95, 0x6d, ++ 0x5e, 0xf0, 0xfe, 0x3e, 0x4b, 0xe5, 0xfb, 0xfe, 0x77, 0x0a, 0x3a, 0xfc, ++ 0xbc, 0x8e, 0x0d, 0x1c, 0x08, 0xac, 0x7c, 0x7d, 0x67, 0x67, 0xac, 0x0b, ++ 0x26, 0x7b, 0x62, 0x5a, 0x60, 0x30, 0xf2, 0xb7, 0xcb, 0xe2, 0xcd, 0xc8, ++ 0x42, 0x3f, 0x7e, 0x7d, 0x43, 0xe6, 0xb2, 0x44, 0xbc, 0xf7, 0x69, 0x71, ++ 0x4f, 0x85, 0xfa, 0x47, 0xfc, 0xfc, 0x5e, 0xe5, 0x62, 0x61, 0x6f, 0xb2, ++ 0x8d, 0x49, 0x82, 0xcf, 0xd5, 0xc0, 0xd5, 0x50, 0x6f, 0x4f, 0xce, 0x25, ++ 0xf4, 0x7e, 0xc3, 0xa0, 0x2c, 0xee, 0x47, 0x9c, 0xc8, 0x09, 0x64, 0xe3, ++ 0x7b, 0x3a, 0xbe, 0x1c, 0xee, 0xdf, 0x40, 0x3d, 0x3a, 0xbf, 0x56, 0xbc, ++ 0xf2, 0x9a, 0x24, 0xac, 0x77, 0x62, 0xeb, 0x3d, 0x03, 0x2b, 0x00, 0x6f, ++ 0x16, 0x7c, 0xbf, 0xcd, 0x49, 0x29, 0xc3, 0xfb, 0x4f, 0xd7, 0x42, 0xdf, ++ 0xe3, 0x9c, 0xf4, 0xae, 0x1b, 0x53, 0x69, 0x9f, 0xd6, 0x4f, 0xfd, 0x61, ++ 0xbd, 0x58, 0xd4, 0xeb, 0xae, 0xb9, 0xa9, 0x3c, 0x8e, 0xce, 0xef, 0xcd, ++ 0x49, 0x3c, 0x49, 0xf8, 0xf7, 0xc2, 0x0b, 0x4c, 0x01, 0xed, 0x51, 0x83, ++ 0x95, 0x99, 0x70, 0xfe, 0x97, 0xb0, 0xf5, 0x0e, 0xe4, 0x53, 0x89, 0x1f, ++ 0xf9, 0xfe, 0xe9, 0xb2, 0x97, 0x79, 0xfc, 0x64, 0x99, 0xd2, 0xd5, 0x98, ++ 0x80, 0xf9, 0xe7, 0x15, 0x3a, 0xff, 0xf6, 0xb9, 0x95, 0xdf, 0xeb, 0xe9, ++ 0xad, 0xe7, 0x36, 0x99, 0x11, 0xd4, 0xf3, 0xd7, 0xcf, 0xd5, 0xbd, 0xcf, ++ 0x23, 0xdf, 0x19, 0xfd, 0xb1, 0xe3, 0x40, 0x53, 0xb3, 0x84, 0x7c, 0x19, ++ 0xc9, 0x46, 0x86, 0xbe, 0xe3, 0x5a, 0x25, 0xda, 0x4e, 0x52, 0x4b, 0x5d, ++ 0xf8, 0xde, 0xdb, 0xb2, 0x24, 0x2b, 0xbd, 0xdb, 0xb1, 0xec, 0x89, 0x01, ++ 0xa4, 0x4f, 0xd8, 0xdb, 0x77, 0xb0, 0xd0, 0x7a, 0x6c, 0x7d, 0x02, 0xd1, ++ 0xc7, 0xea, 0x1c, 0x95, 0xe0, 0xbc, 0xa0, 0x8d, 0xd1, 0xbb, 0x3b, 0x25, ++ 0x6d, 0xe9, 0x74, 0x5e, 0x71, 0x6a, 0x9b, 0x93, 0xd2, 0xd8, 0x33, 0xa9, ++ 0xf4, 0xfd, 0xe8, 0x33, 0x7f, 0xcc, 0xe5, 0xf2, 0x87, 0xe3, 0xa1, 0xe4, ++ 0xbf, 0x52, 0x0a, 0xe9, 0x7c, 0xd0, 0x7f, 0x0d, 0xa1, 0x94, 0xf5, 0xf5, ++ 0xae, 0xb0, 0xcd, 0x4a, 0xf7, 0x68, 0x97, 0xed, 0xe5, 0x7a, 0x69, 0xd9, ++ 0x4d, 0x2a, 0xc5, 0x27, 0x99, 0xb8, 0x1f, 0xee, 0x11, 0xd3, 0xf1, 0xd8, ++ 0x9a, 0x28, 0x9e, 0xe3, 0x61, 0x91, 0xdf, 0x8f, 0xf5, 0xc8, 0xf7, 0x63, ++ 0x35, 0xd3, 0x39, 0xdf, 0x8f, 0x95, 0xf0, 0xb5, 0x08, 0xfc, 0x84, 0xbf, ++ 0x27, 0x7b, 0xd3, 0xde, 0xd1, 0xa9, 0xf4, 0x1e, 0xab, 0x78, 0x4f, 0x76, ++ 0xb6, 0xa8, 0xd7, 0x29, 0xee, 0x6d, 0x85, 0xbf, 0x2b, 0x7b, 0x4f, 0xec, ++ 0x64, 0x7a, 0x57, 0x76, 0xb6, 0x56, 0x15, 0xf1, 0x5d, 0x59, 0xa3, 0x2f, ++ 0xca, 0x8d, 0xf6, 0xad, 0x29, 0xd3, 0xc6, 0xdf, 0x6b, 0xf0, 0x86, 0xbf, ++ 0x33, 0xdb, 0x65, 0xc4, 0x75, 0xcf, 0xcc, 0xe7, 0xef, 0xcc, 0xde, 0x34, ++ 0x3b, 0xe4, 0x5d, 0x04, 0xf8, 0xcf, 0x94, 0xff, 0x15, 0xc9, 0x69, 0x53, ++ 0x7e, 0xaf, 0xf7, 0x81, 0x4c, 0x48, 0xdf, 0x16, 0x8f, 0xbe, 0x7e, 0xb3, ++ 0xc4, 0xff, 0x25, 0xec, 0x92, 0x73, 0xbe, 0xe3, 0x9b, 0x69, 0xa6, 0x77, ++ 0xde, 0x8c, 0xf8, 0x9e, 0x33, 0xe4, 0x67, 0x8a, 0x77, 0x7c, 0xd1, 0x8e, ++ 0x43, 0xfb, 0xfc, 0x94, 0xc6, 0xdf, 0x95, 0xb3, 0x88, 0x77, 0xa6, 0x3b, ++ 0x59, 0x6e, 0x2a, 0xf2, 0xfd, 0xc5, 0xbe, 0xd3, 0xfc, 0xff, 0xdb, 0xbb, ++ 0xcc, 0xe1, 0xef, 0x2f, 0x87, 0xbf, 0xb7, 0x7c, 0xd9, 0xe6, 0x65, 0xba, ++ 0xfc, 0xf0, 0xd6, 0xff, 0xd0, 0xd5, 0xbf, 0xbc, 0x6d, 0xa5, 0xae, 0x7c, ++ 0x64, 0x60, 0x8d, 0xae, 0x7c, 0xf4, 0x9e, 0x5f, 0xea, 0xf2, 0x63, 0x3a, ++ 0x1f, 0xd3, 0xd5, 0x1f, 0xbb, 0xef, 0x29, 0x5d, 0xf9, 0x15, 0x5d, 0xcf, ++ 0xea, 0xca, 0x27, 0x1c, 0x79, 0x49, 0x97, 0xbf, 0xb2, 0xfb, 0x77, 0xba, ++ 0xfa, 0x57, 0x9f, 0xd9, 0xa1, 0xcb, 0x17, 0xb0, 0x3f, 0xea, 0xea, 0x17, ++ 0x59, 0x3f, 0xd0, 0xe5, 0x27, 0x39, 0xfe, 0xa1, 0xab, 0x7f, 0x4d, 0xea, ++ 0x41, 0x5d, 0xf9, 0xb5, 0xae, 0xe3, 0xba, 0xf2, 0x29, 0x43, 0x4f, 0xeb, ++ 0xd7, 0x63, 0xf4, 0xfe, 0x0d, 0xe5, 0x7c, 0x89, 0xfb, 0xbf, 0x75, 0xed, ++ 0xa6, 0x31, 0xd7, 0x2f, 0xf0, 0xfd, 0xe7, 0x59, 0x89, 0x06, 0x7a, 0xaf, ++ 0xe3, 0x1f, 0x59, 0xc2, 0x7f, 0x11, 0x74, 0xf7, 0x57, 0xa9, 0xb7, 0x07, ++ 0xb2, 0x6c, 0x94, 0x5f, 0x93, 0xd4, 0xfc, 0x00, 0xd1, 0x5d, 0x9b, 0xc2, ++ 0xdf, 0x1f, 0x0e, 0xd3, 0x63, 0xc6, 0xe3, 0x1e, 0x0d, 0xe3, 0x71, 0xec, ++ 0x15, 0x7e, 0xff, 0x2b, 0x0e, 0xec, 0x3e, 0x63, 0xc8, 0x78, 0xf1, 0x9a, ++ 0x15, 0x1c, 0xc2, 0x60, 0x3e, 0xa1, 0xd8, 0xa1, 0xcb, 0x27, 0x79, 0x52, ++ 0x75, 0xf5, 0x53, 0x66, 0xbb, 0x74, 0xe5, 0x69, 0xde, 0xa1, 0xba, 0xf2, ++ 0x8c, 0xf9, 0x6e, 0x5d, 0x3e, 0xab, 0x76, 0x9c, 0xae, 0x7e, 0xbf, 0x15, ++ 0x9a, 0x2e, 0x9f, 0xe3, 0x2b, 0xd6, 0xd5, 0x1f, 0xd0, 0xe4, 0xd1, 0xe5, ++ 0x07, 0xb5, 0xcc, 0xd6, 0xd5, 0x1f, 0xb2, 0xce, 0xab, 0x2b, 0xbf, 0xc4, ++ 0x3f, 0x5f, 0x57, 0x7e, 0xd9, 0xe6, 0x5a, 0x5d, 0x7e, 0x78, 0xeb, 0x0a, ++ 0x5d, 0xfd, 0xcb, 0xdb, 0x7c, 0xba, 0xf2, 0x91, 0x81, 0x26, 0x5d, 0xf9, ++ 0xe8, 0x3d, 0x2d, 0xba, 0xfc, 0x98, 0xce, 0x75, 0xba, 0xfa, 0x63, 0xf7, ++ 0xf9, 0x75, 0xe5, 0x57, 0x74, 0x6d, 0xd6, 0x95, 0x4f, 0x38, 0xd2, 0xaa, ++ 0xcb, 0x5f, 0xd9, 0xdd, 0xa6, 0xab, 0x7f, 0xf5, 0x99, 0x80, 0x2e, 0x5f, ++ 0xc0, 0xf6, 0xea, 0xea, 0x17, 0x59, 0xdf, 0xd7, 0xe5, 0x27, 0x39, 0xfe, ++ 0xa6, 0xab, 0x7f, 0x4d, 0xea, 0x01, 0x5d, 0xf9, 0xb5, 0xae, 0xa3, 0xba, ++ 0x72, 0x69, 0xb7, 0x4c, 0x19, 0xfa, 0x95, 0xfe, 0xbb, 0xb0, 0x63, 0x4a, ++ 0xdc, 0xff, 0xd4, 0xb5, 0xf7, 0x15, 0x8a, 0x77, 0xa5, 0x5f, 0x52, 0xdc, ++ 0x0d, 0x2e, 0x58, 0x4f, 0x76, 0x7f, 0xae, 0xef, 0x41, 0x80, 0x46, 0xe1, ++ 0xbb, 0x88, 0x3e, 0x0f, 0xc5, 0x7d, 0x9c, 0x78, 0xb0, 0x0f, 0xe5, 0x14, ++ 0xde, 0xbb, 0x76, 0xf2, 0x73, 0x31, 0xa5, 0x14, 0x3f, 0x4a, 0x24, 0x3b, ++ 0x87, 0x54, 0x91, 0x0b, 0xcf, 0xe9, 0x80, 0x1d, 0x10, 0x8b, 0xde, 0x55, ++ 0x4e, 0x0e, 0xda, 0xc9, 0x31, 0x41, 0x7b, 0x2c, 0xf3, 0x6c, 0xc8, 0x39, ++ 0xb9, 0xf3, 0xd9, 0x63, 0xd7, 0x64, 0x33, 0x9a, 0xc7, 0x5d, 0xd9, 0xde, ++ 0xfc, 0xec, 0x24, 0xf4, 0x3f, 0xb6, 0x4e, 0xa6, 0x77, 0xc1, 0x99, 0x6f, ++ 0x35, 0xce, 0x43, 0xbe, 0x73, 0xf7, 0x6e, 0xd8, 0x7b, 0xc8, 0x32, 0xbd, ++ 0xd6, 0x7a, 0x84, 0x19, 0x43, 0xec, 0xbf, 0xbd, 0x51, 0x2d, 0x99, 0xa3, ++ 0xce, 0xe1, 0xbf, 0x5f, 0x6b, 0x3d, 0xc1, 0xf0, 0x9d, 0xe5, 0x9e, 0x7e, ++ 0x45, 0xbc, 0x42, 0x81, 0xf5, 0x2d, 0x0b, 0xe9, 0xff, 0x01, 0xf0, 0x17, ++ 0x8c, 0x03, 0x19, 0x6b, 0xa9, 0x03, 0xbe, 0xc1, 0x7d, 0xe1, 0x3a, 0x07, ++ 0xe5, 0x1f, 0xaa, 0x4b, 0xa5, 0xfc, 0xc3, 0x75, 0x2e, 0x4a, 0xd7, 0xd5, ++ 0x0d, 0xa5, 0xf4, 0xb1, 0x3a, 0x37, 0x95, 0xaf, 0xaf, 0x1b, 0x47, 0xf9, ++ 0x27, 0xeb, 0x34, 0xca, 0xfb, 0xeb, 0x8a, 0x29, 0x7d, 0xaa, 0xce, 0x43, ++ 0xdf, 0x37, 0xd6, 0xcd, 0xa6, 0xfc, 0x33, 0xe0, 0x17, 0x63, 0xba, 0x19, ++ 0xfc, 0x64, 0x4c, 0x9f, 0x05, 0x7f, 0x17, 0xcb, 0xb7, 0x80, 0xff, 0x8b, ++ 0xf9, 0x17, 0xea, 0x7c, 0x94, 0xb6, 0xd6, 0x35, 0xd1, 0xf7, 0x97, 0xea, ++ 0x5a, 0x28, 0xbf, 0xbd, 0x6e, 0x1d, 0xe5, 0x7f, 0x5b, 0xe7, 0xa7, 0xb4, ++ 0xad, 0x6e, 0x33, 0xa5, 0xbf, 0xab, 0x6b, 0xa5, 0xf2, 0xf6, 0xba, 0x36, ++ 0xca, 0xbf, 0x5e, 0x17, 0xa0, 0x7c, 0xa0, 0x6e, 0x0f, 0xe5, 0x77, 0xd4, ++ 0x75, 0x52, 0x7e, 0x57, 0xdd, 0x3e, 0xca, 0xef, 0xae, 0xeb, 0xa2, 0x74, ++ 0x4f, 0xdd, 0x11, 0x4a, 0xdf, 0xaa, 0xeb, 0xa6, 0xf2, 0xb7, 0xeb, 0xce, ++ 0x50, 0xfe, 0x98, 0x88, 0xb7, 0x2e, 0xcf, 0x56, 0x74, 0xf7, 0x95, 0x64, ++ 0x5e, 0xbe, 0xc7, 0x20, 0xed, 0xbf, 0x69, 0x68, 0xbf, 0x23, 0x71, 0x8c, ++ 0x33, 0x7d, 0xa9, 0xb3, 0xdf, 0xc3, 0xec, 0xe8, 0x70, 0x7c, 0xc8, 0x71, ++ 0x82, 0xef, 0x27, 0x0c, 0x7e, 0xaa, 0x21, 0xc4, 0x7f, 0xf2, 0x65, 0x73, ++ 0xff, 0x4a, 0xbe, 0xc7, 0x10, 0xfe, 0x8e, 0x02, 0x13, 0xf6, 0xa9, 0x7c, ++ 0xf7, 0x54, 0xbe, 0xd7, 0x50, 0x29, 0xe6, 0x55, 0x25, 0xf8, 0x61, 0x0c, ++ 0xd2, 0xe7, 0x50, 0xa2, 0xcf, 0xb7, 0x2f, 0xc6, 0x5f, 0x90, 0xfe, 0xa0, ++ 0x2d, 0xc9, 0xdb, 0x42, 0xf4, 0x99, 0x65, 0xf0, 0x91, 0x3f, 0x6c, 0xe3, ++ 0xf7, 0x89, 0x2f, 0x4f, 0xf2, 0x3e, 0x98, 0x3d, 0x06, 0xf7, 0x0b, 0x2b, ++ 0x76, 0xd3, 0x78, 0x0e, 0x37, 0xed, 0x1b, 0x96, 0x58, 0x02, 0x49, 0xb3, ++ 0x72, 0xe9, 0x9d, 0x70, 0x8a, 0xcb, 0xf5, 0x35, 0x5e, 0x8d, 0x38, 0xf7, ++ 0xdd, 0x67, 0xf9, 0xeb, 0x47, 0x33, 0xd1, 0x9e, 0x2e, 0xfe, 0x41, 0xa5, ++ 0x77, 0xb6, 0xde, 0x35, 0xd9, 0x67, 0xa3, 0xff, 0xff, 0x8c, 0xc0, 0xc3, ++ 0x33, 0xd9, 0x06, 0x5d, 0xba, 0x2d, 0xc9, 0xbb, 0x09, 0xe7, 0xf3, 0xad, ++ 0xbd, 0xf6, 0x36, 0x03, 0xcc, 0xff, 0xdb, 0xab, 0x96, 0x3e, 0x73, 0x47, ++ 0x4e, 0xd0, 0x4f, 0xbe, 0x1e, 0x5d, 0x4d, 0xf0, 0x6f, 0xa6, 0x33, 0x97, ++ 0x89, 0xce, 0x15, 0x32, 0xed, 0xcd, 0x1c, 0xb4, 0x9b, 0xc0, 0xb0, 0xc2, ++ 0xfc, 0x2c, 0xe6, 0xa3, 0x74, 0x5c, 0xa2, 0xf7, 0x05, 0xec, 0xe7, 0x66, ++ 0x30, 0xb8, 0x31, 0xef, 0x1d, 0x6f, 0xc9, 0x8e, 0xb4, 0xae, 0xf0, 0x79, ++ 0xbd, 0x2a, 0xf0, 0xf5, 0x6a, 0xb6, 0x41, 0x97, 0x1e, 0x48, 0xf2, 0xb6, ++ 0x21, 0xfc, 0xbe, 0xb5, 0x6b, 0x34, 0xaf, 0x77, 0xaf, 0xb8, 0x66, 0x30, ++ 0xae, 0x4b, 0xce, 0xab, 0xbf, 0x78, 0x77, 0x64, 0x1a, 0xeb, 0x7e, 0x12, ++ 0xe7, 0xf7, 0xed, 0x6b, 0x5f, 0x1d, 0x56, 0x06, 0x04, 0xe1, 0x2f, 0xfd, ++ 0x71, 0xba, 0xd7, 0x8f, 0x72, 0x6c, 0xa9, 0x22, 0xde, 0xb5, 0xeb, 0xf5, ++ 0x8e, 0x00, 0x95, 0x97, 0xde, 0xa9, 0x90, 0x7d, 0x36, 0x07, 0xfc, 0x19, ++ 0xdc, 0x1f, 0x92, 0xef, 0x06, 0x9c, 0xaa, 0x35, 0xd1, 0x3b, 0xf2, 0xf8, ++ 0xce, 0x00, 0xee, 0x9f, 0x9d, 0xaa, 0xfd, 0xcc, 0x86, 0xe4, 0x0c, 0xf5, ++ 0x18, 0xee, 0x6f, 0x34, 0xe0, 0x01, 0x1d, 0x28, 0x6f, 0xf8, 0x29, 0xbf, ++ 0x4f, 0x5f, 0x8a, 0xef, 0x62, 0x8c, 0xc2, 0x77, 0x0b, 0xac, 0xbc, 0xdf, ++ 0xbb, 0x15, 0xa2, 0xbb, 0xa4, 0xe4, 0x1c, 0x7e, 0xff, 0x19, 0xec, 0x3d, ++ 0xf2, 0x9f, 0x12, 0xbb, 0xe9, 0x9e, 0x1e, 0xd0, 0xc9, 0x9f, 0x11, 0x6e, ++ 0x0b, 0xaf, 0x50, 0xe9, 0xde, 0xf9, 0xbb, 0x06, 0xff, 0x60, 0x85, 0xf6, ++ 0x93, 0x2b, 0xcc, 0x0a, 0xcc, 0xaf, 0x2a, 0x11, 0xe8, 0xa3, 0x7f, 0xdf, ++ 0x74, 0xb0, 0x44, 0xdc, 0x17, 0x90, 0xdf, 0x81, 0xbe, 0x3e, 0x41, 0xb8, ++ 0x7d, 0xf9, 0xea, 0xd8, 0xa1, 0x14, 0x7f, 0x7f, 0xfd, 0x0a, 0x17, 0xc2, ++ 0xab, 0xc1, 0xc0, 0xef, 0x0f, 0xf9, 0xde, 0x52, 0xf9, 0xef, 0x2e, 0x09, ++ 0x11, 0xad, 0x4e, 0x18, 0x4e, 0x71, 0x46, 0x66, 0x74, 0xbb, 0x31, 0x5e, ++ 0x54, 0x22, 0xee, 0x9b, 0x74, 0xa8, 0x6c, 0x45, 0xa4, 0xf7, 0xc4, 0x95, ++ 0x7e, 0x9c, 0x8e, 0xde, 0x4d, 0xe5, 0xef, 0xe7, 0x35, 0x84, 0xed, 0xb3, ++ 0xfc, 0x53, 0xd0, 0xd5, 0x3f, 0x05, 0xbd, 0x95, 0xec, 0xd8, 0x4b, 0xef, ++ 0x08, 0x2d, 0xd9, 0xc3, 0xdf, 0x3b, 0x64, 0xb9, 0x5d, 0xc3, 0x42, 0xdf, ++ 0x9d, 0xe9, 0x59, 0xcf, 0x8a, 0xb7, 0x2e, 0x19, 0x18, 0xb2, 0x8e, 0x9a, ++ 0xb6, 0x03, 0xfc, 0x7c, 0x05, 0xeb, 0x1a, 0x16, 0x7a, 0x9e, 0x3c, 0x5d, ++ 0x8c, 0x2f, 0xe9, 0x48, 0x35, 0xdb, 0xbd, 0x1b, 0x6c, 0xa1, 0xf3, 0xeb, ++ 0xa1, 0x6b, 0xd6, 0x0f, 0xe9, 0x27, 0x1e, 0xe8, 0x7a, 0x00, 0xd1, 0xf5, ++ 0x61, 0xdc, 0x57, 0x9c, 0x66, 0x71, 0xc5, 0xcd, 0x82, 0xb4, 0x0b, 0x40, ++ 0x84, 0xef, 0xfb, 0x78, 0x7f, 0xed, 0xa0, 0xf3, 0x41, 0xf2, 0x9c, 0xd0, ++ 0x3c, 0xe6, 0xa1, 0xb4, 0x0a, 0xc8, 0x00, 0xe9, 0xd8, 0xe3, 0x5b, 0x4b, ++ 0xef, 0xb9, 0x2e, 0xc4, 0x5f, 0x62, 0xc5, 0xf7, 0x78, 0xc6, 0xcd, 0xcd, ++ 0xc6, 0x7c, 0x0d, 0xeb, 0x9e, 0x98, 0x0a, 0x70, 0xbb, 0xa9, 0xa9, 0xfe, ++ 0x4d, 0x7c, 0x0e, 0xef, 0x86, 0x96, 0xb5, 0x93, 0x30, 0xbe, 0x3a, 0xc3, ++ 0x5f, 0xf6, 0x26, 0xa6, 0xd3, 0x37, 0x2a, 0x87, 0xd1, 0x4f, 0x05, 0xbe, ++ 0x88, 0xef, 0x87, 0xf1, 0x10, 0xa5, 0x76, 0x15, 0x1e, 0xc9, 0xbc, 0x65, ++ 0x4b, 0xc1, 0x2a, 0xdc, 0x7a, 0x99, 0xa6, 0x72, 0x7c, 0xb0, 0x3f, 0x72, ++ 0x7c, 0x00, 0xdd, 0x68, 0xaa, 0xb3, 0xf7, 0x3a, 0x81, 0x0f, 0xd2, 0xf8, ++ 0x3a, 0x34, 0x5a, 0x87, 0x1a, 0x5b, 0xac, 0xe3, 0x83, 0xd2, 0x95, 0x4c, ++ 0x53, 0x12, 0x83, 0xe7, 0xdd, 0x7b, 0xf8, 0x62, 0xdc, 0xa2, 0x4f, 0x70, ++ 0x4b, 0x8d, 0x19, 0xbb, 0x69, 0xdf, 0xbc, 0xe6, 0x75, 0x8b, 0x13, 0xf1, ++ 0xbc, 0x90, 0x71, 0xbd, 0x1d, 0x8c, 0x67, 0x48, 0x7d, 0xcd, 0x88, 0xce, ++ 0x17, 0xb1, 0x68, 0x37, 0xd6, 0x3b, 0x26, 0xe8, 0xfa, 0x58, 0x16, 0x23, ++ 0xba, 0x3e, 0xa6, 0x30, 0xba, 0xa7, 0x2e, 0xed, 0x48, 0x96, 0xed, 0x4d, ++ 0x1d, 0x35, 0x20, 0xa8, 0x77, 0x8f, 0x19, 0xfc, 0x79, 0xb1, 0x03, 0x48, ++ 0x2f, 0xbb, 0x71, 0xbd, 0xbb, 0x53, 0x6f, 0x70, 0x61, 0x1c, 0x6c, 0x51, ++ 0xa2, 0x95, 0xde, 0x3f, 0x3d, 0x16, 0xef, 0xcf, 0x0e, 0x7b, 0xe7, 0x83, ++ 0xde, 0x23, 0x92, 0x71, 0xac, 0x07, 0x4c, 0x3c, 0xae, 0x14, 0x3e, 0x2f, ++ 0x65, 0xdc, 0x6e, 0xfe, 0x7b, 0x18, 0x66, 0xe6, 0xc3, 0xfd, 0x09, 0xfc, ++ 0xfd, 0xe3, 0x3c, 0xe4, 0x67, 0x7c, 0x37, 0x47, 0xa1, 0x77, 0xa0, 0xbb, ++ 0x90, 0xef, 0x4d, 0x85, 0x1e, 0x57, 0xa4, 0xfe, 0x1b, 0x45, 0xbf, 0x7b, ++ 0xbe, 0xe7, 0xfe, 0xae, 0x0f, 0xd6, 0x83, 0xf7, 0x1b, 0x7b, 0x8d, 0xe3, ++ 0x10, 0xe3, 0x44, 0xf3, 0x71, 0xa4, 0xfe, 0xe8, 0xf9, 0xbd, 0xe5, 0x64, ++ 0xa6, 0x1b, 0x6f, 0x7a, 0x3f, 0xce, 0xcf, 0xef, 0xda, 0x35, 0x9a, 0x7f, ++ 0xbd, 0x21, 0x9e, 0xe4, 0x4d, 0x9a, 0xd5, 0xeb, 0x41, 0x7c, 0xc9, 0xb8, ++ 0x8e, 0xf4, 0x03, 0xf7, 0xe4, 0x7c, 0x3e, 0x90, 0xfc, 0xf5, 0xef, 0x1a, ++ 0x32, 0xd1, 0x3e, 0xa7, 0x77, 0x08, 0xd0, 0xfe, 0xbe, 0x8a, 0xcb, 0xa5, ++ 0x77, 0x4d, 0x2e, 0x7a, 0x77, 0xf7, 0xdd, 0x82, 0x1c, 0x8a, 0xdf, 0x4b, ++ 0x79, 0x7b, 0xfd, 0x38, 0x1e, 0xff, 0xba, 0x5e, 0xc6, 0xbb, 0xf2, 0xc3, ++ 0xe2, 0x5d, 0x61, 0xf1, 0x16, 0x96, 0x1f, 0x39, 0xfe, 0xc5, 0x98, 0xdb, ++ 0x84, 0xe3, 0x5e, 0xc2, 0x3e, 0x92, 0xf0, 0xa1, 0x38, 0xcb, 0x8e, 0x7c, ++ 0x23, 0xe1, 0x5d, 0xfe, 0xbe, 0xd2, 0x0e, 0xe1, 0x7f, 0x9e, 0x2a, 0x4e, ++ 0xcc, 0x45, 0x3a, 0xff, 0x5d, 0x3f, 0x55, 0x77, 0xae, 0x40, 0xa6, 0x6b, ++ 0x44, 0x7c, 0xb4, 0x39, 0xec, 0xbd, 0xeb, 0x35, 0xb9, 0xcb, 0x1c, 0x78, ++ 0x1e, 0xc0, 0xf2, 0x3c, 0xdf, 0xef, 0xbd, 0xbf, 0x30, 0x7a, 0x7e, 0xe8, ++ 0x39, 0xf4, 0x27, 0x07, 0xf1, 0xf3, 0x29, 0xee, 0xc1, 0x05, 0x9b, 0x11, ++ 0x4e, 0xc3, 0x6c, 0xfe, 0x42, 0x52, 0xcb, 0x9a, 0xd1, 0x85, 0xf3, 0x56, ++ 0xc4, 0x3a, 0x2e, 0x73, 0x00, 0x9c, 0x0d, 0x68, 0x6f, 0x7a, 0x44, 0x9c, ++ 0xd3, 0x6d, 0xe5, 0xf1, 0xa5, 0x89, 0xa4, 0x97, 0x25, 0x7e, 0x2f, 0x54, ++ 0x2f, 0x3f, 0x6b, 0xf4, 0xaf, 0x8c, 0xc6, 0x75, 0x26, 0xf2, 0xdf, 0x19, ++ 0xb0, 0xaf, 0xb3, 0x92, 0xdc, 0x54, 0x5b, 0xb5, 0x00, 0x1e, 0x89, 0xfe, ++ 0x72, 0xd0, 0x8c, 0x55, 0x48, 0xb7, 0xcc, 0xe8, 0x19, 0x8a, 0xe3, 0x74, ++ 0xe4, 0x45, 0x33, 0x1b, 0xd4, 0xff, 0xb6, 0xc3, 0x4c, 0xf1, 0xa7, 0xd7, ++ 0x0d, 0xe5, 0xbf, 0xc6, 0xf3, 0xea, 0xdd, 0x7f, 0xb3, 0x30, 0x3c, 0xdf, ++ 0xd0, 0x6a, 0xcf, 0x30, 0xa2, 0x71, 0xdb, 0xfa, 0x3d, 0xff, 0x5d, 0xab, ++ 0x56, 0xfb, 0x84, 0xc9, 0xfc, 0xdd, 0x49, 0x16, 0x83, 0xef, 0x63, 0x8e, ++ 0x74, 0xb0, 0xa7, 0x5f, 0x44, 0xe4, 0x88, 0x7b, 0x61, 0xad, 0x0a, 0xdb, ++ 0xc3, 0x1f, 0x69, 0xd5, 0x62, 0xf0, 0x7d, 0xb7, 0x56, 0x03, 0x3b, 0x7d, ++ 0x35, 0xcc, 0xeb, 0x25, 0xdb, 0xa8, 0x07, 0x2f, 0x27, 0x12, 0xf3, 0xa8, ++ 0xb8, 0xce, 0x67, 0x07, 0x7a, 0xd7, 0xe1, 0x3c, 0xf2, 0x58, 0x2d, 0xe5, ++ 0xef, 0x37, 0x7b, 0xe6, 0x6f, 0x80, 0x71, 0xef, 0x77, 0x5a, 0x89, 0x2e, ++ 0x0a, 0x07, 0x7a, 0x1e, 0xe7, 0xf3, 0x64, 0xab, 0xa6, 0xc2, 0xfc, 0xae, ++ 0x2a, 0x52, 0xe8, 0xf7, 0xd6, 0x56, 0x89, 0xdf, 0x77, 0xb0, 0xbb, 0xa3, ++ 0x75, 0xef, 0xec, 0x7a, 0xce, 0x0c, 0x26, 0x3d, 0xf1, 0x4c, 0x3f, 0xae, ++ 0x57, 0x1b, 0x53, 0xb5, 0x4e, 0xbc, 0xd0, 0xd1, 0x27, 0xdc, 0x1c, 0xc6, ++ 0x6e, 0xdd, 0xfb, 0x58, 0x2c, 0x93, 0xe2, 0x72, 0x12, 0x8e, 0xa1, 0xf8, ++ 0x72, 0xe4, 0xe9, 0xf0, 0xe5, 0x35, 0x85, 0xe2, 0xab, 0xe7, 0x77, 0x6b, ++ 0x24, 0xbe, 0xf8, 0xef, 0xd6, 0x5c, 0x28, 0xbe, 0xea, 0xfa, 0x31, 0x9a, ++ 0xaf, 0xa4, 0x47, 0x5f, 0xa1, 0x6b, 0xed, 0xc4, 0x5c, 0xae, 0xbf, 0x1a, ++ 0xa8, 0x96, 0x23, 0x17, 0xfb, 0xdf, 0x11, 0x9d, 0x31, 0x2c, 0xf4, 0x77, ++ 0x01, 0x24, 0x3d, 0x4a, 0xfa, 0x8c, 0x40, 0x97, 0x4b, 0x77, 0xa2, 0xdc, ++ 0xcd, 0x32, 0x38, 0x30, 0xfe, 0x79, 0xcf, 0xd4, 0x68, 0xd2, 0x63, 0x92, ++ 0x4e, 0x25, 0x7d, 0x7e, 0x9c, 0xd3, 0x43, 0xa7, 0x43, 0xfa, 0x63, 0x1c, ++ 0xde, 0xe6, 0x99, 0x84, 0xb2, 0x22, 0x9c, 0x4e, 0x31, 0xbe, 0x15, 0x4a, ++ 0x8f, 0xa5, 0x7d, 0xd2, 0x2d, 0x73, 0x84, 0xf2, 0xe5, 0x34, 0xb0, 0x13, ++ 0xe2, 0x9c, 0x68, 0xd7, 0x1c, 0xd9, 0xd8, 0x1a, 0x42, 0x8f, 0xa5, 0xb5, ++ 0x5f, 0x19, 0xb9, 0x9c, 0x38, 0x7b, 0x75, 0x74, 0x5e, 0x30, 0x1e, 0x37, ++ 0x2d, 0x5f, 0x61, 0x9f, 0x86, 0xe2, 0x15, 0xfe, 0xfb, 0x74, 0xa8, 0x58, ++ 0x1f, 0xd9, 0x35, 0x46, 0xf2, 0xa7, 0x24, 0xfc, 0x2e, 0x14, 0xce, 0xa6, ++ 0x1b, 0xeb, 0x87, 0xa2, 0x9d, 0xb6, 0x1a, 0xef, 0x0d, 0x02, 0xbc, 0x9a, ++ 0x14, 0xb7, 0x96, 0x02, 0xfd, 0x19, 0x6b, 0x0f, 0xdc, 0x81, 0xdf, 0x57, ++ 0x89, 0x7b, 0xbb, 0xbe, 0x61, 0x66, 0x6e, 0x3f, 0x09, 0xfe, 0x90, 0xfd, ++ 0x7d, 0x39, 0xa8, 0xf0, 0x38, 0xd2, 0xa3, 0x7d, 0xec, 0x89, 0x98, 0x4a, ++ 0xa8, 0xf7, 0x6d, 0xb2, 0xc1, 0x85, 0xc0, 0x59, 0xe5, 0x2a, 0x7f, 0x91, ++ 0xf8, 0x6d, 0x5f, 0x0c, 0xbd, 0x37, 0x11, 0x9b, 0xd0, 0x39, 0xff, 0x69, ++ 0xe2, 0x9f, 0x21, 0x0c, 0xf7, 0xf3, 0xbe, 0x5d, 0xe0, 0xed, 0x87, 0xfb, ++ 0xea, 0xf7, 0x02, 0x9e, 0x3e, 0xa5, 0xfb, 0x39, 0xfe, 0x14, 0xfe, 0xee, ++ 0x61, 0x57, 0x0a, 0x7f, 0x5f, 0xd6, 0x25, 0xde, 0xa1, 0xf7, 0xa6, 0xf2, ++ 0xef, 0x4c, 0x94, 0xfb, 0x29, 0x7f, 0x47, 0x4e, 0x7f, 0xe1, 0x57, 0x68, ++ 0xa2, 0x7e, 0x17, 0xd5, 0xbf, 0xd7, 0xdc, 0x62, 0x8d, 0xc6, 0x71, 0x72, ++ 0xac, 0x8e, 0xa7, 0x42, 0xe8, 0xfc, 0x6a, 0x11, 0x1f, 0xff, 0x1f, 0xc1, ++ 0x80, 0x23, 0x7d, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, 0x0d, 0x78, 0x54, 0xd5, ++ 0xb5, 0xe8, 0x3e, 0x33, 0x67, 0x7e, 0x33, 0x09, 0x27, 0xc9, 0x24, 0x0c, ++ 0xf9, 0x81, 0x33, 0xc9, 0x24, 0x84, 0x64, 0x02, 0x93, 0x04, 0x10, 0x44, ++ 0x65, 0x12, 0x02, 0x0d, 0x08, 0x3a, 0xfc, 0xd5, 0x20, 0x89, 0x0c, 0x8a, ++ 0xde, 0xa8, 0x24, 0x93, 0x42, 0x6c, 0xa3, 0xd7, 0x77, 0x33, 0x90, 0x80, ++ 0x01, 0xec, 0x2d, 0xa2, 0xb5, 0x68, 0x79, 0x3a, 0xd0, 0x42, 0xf1, 0xaf, ++ 0x37, 0x28, 0xa5, 0xa1, 0x8d, 0x74, 0x12, 0x7e, 0x2e, 0x5a, 0x2a, 0x83, ++ 0xd5, 0x16, 0x5b, 0xb5, 0x81, 0xfa, 0xac, 0xb6, 0x05, 0x82, 0x78, 0x5b, ++ 0xbc, 0x97, 0x96, 0xbb, 0xd6, 0xda, 0xe7, 0x64, 0xe6, 0x4c, 0x26, 0x80, ++ 0xf6, 0xbe, 0xbe, 0xef, 0xdd, 0xf7, 0xe6, 0x5e, 0xbb, 0xb3, 0xcf, 0xde, ++ 0x67, 0xff, 0xac, 0xbd, 0xfe, 0xd7, 0xda, 0x87, 0x1c, 0x59, 0xc7, 0x58, ++ 0x06, 0x63, 0xec, 0x52, 0xbb, 0x3c, 0x3f, 0x99, 0xb1, 0x1c, 0x59, 0xa0, ++ 0xfa, 0xe3, 0x6d, 0x5b, 0x7d, 0x1f, 0xb8, 0x18, 0xdb, 0xd0, 0x16, 0xa2, ++ 0x32, 0x7d, 0x6e, 0x88, 0xf9, 0x4b, 0x19, 0xb3, 0x16, 0x05, 0xe5, 0x20, ++ 0xf4, 0x33, 0xaf, 0x65, 0xfe, 0x2e, 0x1b, 0x63, 0x97, 0xf1, 0x37, 0x3d, ++ 0x5a, 0x3e, 0xe0, 0x14, 0x19, 0x9b, 0x04, 0xed, 0x7d, 0x4f, 0x31, 0x19, ++ 0xfa, 0xa5, 0xbb, 0x3c, 0x82, 0x1f, 0xfa, 0xd9, 0xe7, 0xc2, 0x78, 0x45, ++ 0x8c, 0x7e, 0x97, 0xe1, 0xbf, 0x5b, 0x18, 0x0b, 0x8e, 0x28, 0x87, 0x7e, ++ 0x3b, 0x98, 0x97, 0x4d, 0x64, 0x6c, 0x9d, 0x6c, 0x0d, 0x05, 0x85, 0xa1, ++ 0xe3, 0xdd, 0x92, 0x51, 0x75, 0x54, 0x4c, 0x19, 0xfa, 0x7c, 0xb0, 0xfd, ++ 0x06, 0x81, 0x9d, 0x36, 0x47, 0xc7, 0xc5, 0xdf, 0x69, 0x75, 0x1e, 0x3d, ++ 0x8c, 0xff, 0x57, 0xbd, 0xbf, 0xcb, 0x8d, 0x35, 0x87, 0x8e, 0x65, 0x32, ++ 0xd6, 0x82, 0x7d, 0x65, 0xc6, 0xaa, 0xf3, 0xe0, 0x0f, 0x9c, 0xb7, 0xd5, ++ 0xb8, 0xdd, 0x04, 0xf3, 0x4e, 0x96, 0x53, 0x69, 0xdf, 0x9f, 0xda, 0xab, ++ 0x46, 0x30, 0xf7, 0xf0, 0xf3, 0x3d, 0xd3, 0x06, 0x0b, 0x2f, 0x64, 0x2c, ++ 0xd4, 0x66, 0xa6, 0x72, 0x47, 0x9b, 0xc4, 0x82, 0x46, 0xc6, 0xbe, 0xdb, ++ 0xe6, 0xa0, 0xfa, 0xae, 0x36, 0x99, 0xca, 0xdd, 0x6d, 0x45, 0x54, 0x3e, ++ 0xdf, 0xe6, 0xa1, 0xf6, 0x17, 0xdb, 0xa6, 0x50, 0xfd, 0xfb, 0x6d, 0x5e, ++ 0xaa, 0x77, 0xb5, 0xd5, 0x50, 0xfd, 0xe5, 0x36, 0x1f, 0xd5, 0xf7, 0xb6, ++ 0xd5, 0x52, 0x7d, 0x5f, 0x9b, 0x9f, 0xca, 0xee, 0xb6, 0x06, 0x2a, 0x7f, ++ 0xd4, 0xd6, 0x4c, 0xed, 0x3d, 0x6d, 0xad, 0x54, 0x9f, 0x6e, 0x62, 0xcd, ++ 0xb4, 0x9f, 0xa2, 0xa0, 0x63, 0x01, 0x9c, 0x47, 0xe7, 0x83, 0x46, 0xaf, ++ 0x0c, 0xf0, 0x69, 0x54, 0xce, 0xf1, 0xa0, 0x37, 0x2f, 0xdd, 0x63, 0x67, ++ 0xcc, 0x52, 0xa4, 0x63, 0x26, 0xe8, 0x66, 0x39, 0xb6, 0x85, 0xe1, 0x7e, ++ 0x2c, 0x0e, 0x9d, 0x37, 0x04, 0xe7, 0xb0, 0xde, 0xb1, 0x85, 0xdd, 0x05, ++ 0xa5, 0x61, 0x72, 0x72, 0xa7, 0x30, 0x02, 0xf6, 0xff, 0x92, 0xad, 0x53, ++ 0x98, 0x00, 0xed, 0xe2, 0xe3, 0x4c, 0x86, 0xe7, 0xcf, 0x08, 0xc1, 0x06, ++ 0xe6, 0x61, 0x6c, 0x91, 0x3c, 0xd6, 0x27, 0x8e, 0x62, 0xcc, 0xe5, 0xf8, ++ 0x4a, 0x55, 0x1a, 0xd4, 0x6f, 0x97, 0x4b, 0x37, 0x9b, 0x9d, 0x8c, 0x15, ++ 0xca, 0xf3, 0x6b, 0xd7, 0xc4, 0xd4, 0xe5, 0xe4, 0xf2, 0xfb, 0xf6, 0x48, ++ 0xd1, 0xfa, 0x18, 0xf7, 0x76, 0xd1, 0x0a, 0xed, 0xcb, 0x42, 0x13, 0x36, ++ 0xdb, 0x05, 0xbe, 0x0e, 0x96, 0xc5, 0xd8, 0xbd, 0x72, 0xb9, 0x6f, 0x0d, ++ 0xe0, 0x51, 0x38, 0x8f, 0x05, 0x11, 0xee, 0x03, 0x4e, 0x63, 0x68, 0x07, ++ 0xb4, 0xaf, 0xc0, 0xf3, 0x12, 0x71, 0xfd, 0x12, 0xad, 0xff, 0x66, 0xd6, ++ 0xee, 0xd0, 0xc1, 0xfa, 0xc7, 0xc8, 0xc6, 0x72, 0x26, 0x50, 0xff, 0x30, ++ 0xb3, 0x5f, 0x7b, 0xff, 0x46, 0x59, 0xa6, 0xe7, 0xf1, 0xef, 0x5d, 0xa9, ++ 0x9f, 0x6e, 0xe2, 0x35, 0xf5, 0x63, 0xfa, 0x2b, 0x8c, 0x87, 0xed, 0xc2, ++ 0x15, 0xc6, 0x31, 0x0b, 0x0b, 0xcd, 0x11, 0x58, 0xfb, 0x26, 0x03, 0xfc, ++ 0x0f, 0x3c, 0x0f, 0x66, 0xd8, 0x42, 0x3b, 0x01, 0x5e, 0x9d, 0x06, 0xb6, ++ 0xcc, 0x07, 0x70, 0xef, 0xb4, 0xf0, 0xf2, 0x88, 0x93, 0xd3, 0xdf, 0xb3, ++ 0xce, 0xaa, 0xf1, 0x4e, 0xa0, 0xa3, 0xf1, 0x4e, 0x7e, 0xae, 0x9d, 0x96, ++ 0xa0, 0x54, 0x85, 0xf3, 0x97, 0xea, 0x3c, 0x3b, 0x10, 0x9d, 0x5b, 0x9d, ++ 0x3f, 0xcf, 0x83, 0xf9, 0xbe, 0xfa, 0xba, 0xc8, 0x36, 0xca, 0x51, 0xfc, ++ 0xec, 0x40, 0x3c, 0x80, 0xf7, 0x0a, 0xc6, 0x24, 0x7b, 0x71, 0x1e, 0xf6, ++ 0x8f, 0xe6, 0x50, 0x01, 0xcc, 0xf3, 0xa5, 0x31, 0x2f, 0x75, 0xa4, 0x41, ++ 0xbd, 0xe0, 0x3b, 0x1e, 0x8f, 0x1e, 0xfa, 0x6f, 0x62, 0x1e, 0x2b, 0xe2, ++ 0x49, 0xf0, 0x51, 0x1d, 0xdb, 0x09, 0xf5, 0x17, 0x26, 0xe6, 0xa7, 0xcd, ++ 0x87, 0xee, 0x25, 0x93, 0x7e, 0x90, 0xe6, 0x07, 0x7c, 0x39, 0x8d, 0x7c, ++ 0x00, 0xc6, 0x09, 0x31, 0x56, 0x83, 0xf8, 0xb6, 0x66, 0xdd, 0x3d, 0x63, ++ 0xfa, 0xa1, 0xfc, 0xd3, 0x09, 0xff, 0x18, 0x09, 0xd6, 0xf9, 0xb8, 0x32, ++ 0xcf, 0x76, 0x43, 0xa4, 0x99, 0xce, 0x73, 0x92, 0x8d, 0xe1, 0xbe, 0x19, ++ 0xdb, 0x9c, 0xa4, 0x73, 0x40, 0x7f, 0x07, 0x1c, 0xd2, 0x75, 0x8c, 0xe9, ++ 0x46, 0xf1, 0xd2, 0x68, 0x90, 0x6e, 0xc7, 0x7e, 0xc6, 0x75, 0x46, 0x16, ++ 0x84, 0xf5, 0x18, 0xff, 0x72, 0x9d, 0xd9, 0x07, 0xe3, 0xb5, 0x5f, 0x34, ++ 0xd5, 0x20, 0x1f, 0x61, 0x2c, 0x92, 0xa4, 0x9b, 0x02, 0xcf, 0x2d, 0x7e, ++ 0x29, 0x15, 0x9e, 0x6f, 0x0e, 0xea, 0x88, 0x2f, 0xb4, 0xcb, 0xb6, 0x90, ++ 0x00, 0xe3, 0x6e, 0xb2, 0x95, 0x1f, 0x95, 0xa1, 0x1e, 0x94, 0x74, 0x9e, ++ 0x02, 0x84, 0xa3, 0x5b, 0x47, 0x70, 0xec, 0xb0, 0x7d, 0x39, 0xa4, 0x87, ++ 0xf1, 0x44, 0x61, 0x4d, 0x03, 0xcb, 0x87, 0xf5, 0x4a, 0x2f, 0x9b, 0x9d, ++ 0xf0, 0x3c, 0xe4, 0xd6, 0x49, 0x48, 0xe7, 0x21, 0xef, 0x82, 0x1a, 0xac, ++ 0x07, 0xfd, 0xa2, 0xa7, 0x40, 0x56, 0x18, 0x04, 0xb6, 0xfb, 0xd3, 0x42, ++ 0x1b, 0x71, 0x5c, 0x36, 0xf0, 0xd3, 0x09, 0xd8, 0x5e, 0xc7, 0x3c, 0x08, ++ 0x87, 0x75, 0x99, 0xff, 0xde, 0x97, 0x04, 0xf5, 0xf6, 0xc5, 0x92, 0x47, ++ 0xcf, 0x7b, 0xcb, 0xe2, 0x64, 0xc6, 0x46, 0xe1, 0x5f, 0x30, 0x65, 0xbb, ++ 0xa1, 0x7f, 0x6d, 0x12, 0xae, 0x63, 0x09, 0xef, 0x0f, 0x7f, 0x79, 0xe6, ++ 0x03, 0x1d, 0xa6, 0x98, 0xf8, 0xf9, 0x7d, 0xa3, 0x77, 0xb6, 0x94, 0x57, ++ 0x8a, 0xcf, 0xc5, 0x60, 0x3f, 0xe7, 0x4b, 0xc2, 0x65, 0x20, 0x44, 0xd1, ++ 0xe0, 0x31, 0x7b, 0xa0, 0x7d, 0xbc, 0xad, 0xbc, 0xc6, 0x0b, 0xa5, 0x98, ++ 0x5c, 0x6e, 0x96, 0x61, 0x9f, 0x1d, 0x52, 0xb9, 0x79, 0x39, 0xed, 0x9f, ++ 0xd9, 0x18, 0xcc, 0x93, 0xce, 0x38, 0x7f, 0x6a, 0x97, 0x74, 0x35, 0x21, ++ 0xa5, 0xfd, 0x2e, 0xa4, 0x77, 0x91, 0x1d, 0x72, 0x4d, 0x26, 0x52, 0xa2, ++ 0xf6, 0x0e, 0xdb, 0x96, 0x5e, 0x84, 0x87, 0x78, 0x37, 0x63, 0x4e, 0x19, ++ 0xd7, 0x07, 0xf3, 0xa9, 0x7c, 0x0f, 0xe0, 0x61, 0xce, 0xbf, 0xe1, 0xa8, ++ 0x0c, 0xfb, 0xe8, 0xbc, 0x27, 0x8d, 0xf6, 0x21, 0x0a, 0x1e, 0xaa, 0xb3, ++ 0xbb, 0x45, 0x5a, 0x77, 0x96, 0x6c, 0x0d, 0xb3, 0xf1, 0x70, 0x8e, 0xc6, ++ 0x79, 0x47, 0x19, 0xf0, 0x8f, 0x2c, 0xf3, 0xfd, 0x73, 0xb1, 0x3e, 0xaa, ++ 0x41, 0xfc, 0xa0, 0x3f, 0x86, 0x4f, 0x8f, 0xf4, 0x6b, 0xeb, 0x19, 0xb5, ++ 0xda, 0x7a, 0x3a, 0x83, 0xba, 0x39, 0x3a, 0xef, 0x6f, 0x14, 0xf9, 0x11, ++ 0x0f, 0xb7, 0x78, 0x78, 0x8c, 0x92, 0x3a, 0x4e, 0xe0, 0xfa, 0x47, 0xf9, ++ 0x45, 0x7a, 0x18, 0xbf, 0xfe, 0xa7, 0xa4, 0x27, 0x52, 0x2b, 0x19, 0xae, ++ 0xd3, 0x46, 0xeb, 0xcc, 0xb4, 0xdd, 0x59, 0x09, 0x10, 0x82, 0xa1, 0x7d, ++ 0x6b, 0x10, 0xff, 0xfe, 0xd6, 0x75, 0x8e, 0x97, 0x16, 0x98, 0x9d, 0x30, ++ 0xff, 0x78, 0xbb, 0x0e, 0xc1, 0xc9, 0x26, 0xb0, 0x81, 0xb5, 0x38, 0xee, ++ 0x26, 0x05, 0xdf, 0x3b, 0x9d, 0xfc, 0x3c, 0xa3, 0x74, 0xa5, 0x57, 0xe9, ++ 0x72, 0x24, 0xd2, 0xe5, 0x98, 0x56, 0x1d, 0x0b, 0xc6, 0xc8, 0x1d, 0x67, ++ 0xd0, 0xca, 0x82, 0x31, 0xf3, 0xe5, 0x77, 0xa6, 0x69, 0xea, 0x05, 0x9b, ++ 0xb3, 0x34, 0xfd, 0xc7, 0x6e, 0xcd, 0xd3, 0xb4, 0x8f, 0x0b, 0x15, 0x6b, ++ 0xda, 0x4b, 0x76, 0x97, 0x6b, 0xea, 0xa5, 0x5d, 0xd7, 0x6b, 0xfa, 0x4f, ++ 0xe8, 0xae, 0xd2, 0xd4, 0xcb, 0xc2, 0x73, 0x34, 0xfd, 0x2b, 0x8e, 0x2e, ++ 0xd0, 0xd4, 0x27, 0x45, 0x6e, 0xd7, 0xf4, 0xbf, 0xee, 0xe4, 0x9d, 0x9a, ++ 0xf6, 0xa9, 0xfd, 0xf7, 0x69, 0xda, 0xa7, 0x7d, 0xb4, 0x4a, 0x53, 0xbf, ++ 0x71, 0xe0, 0x21, 0x4d, 0x7f, 0x20, 0xe3, 0x86, 0xae, 0x04, 0x72, 0x32, ++ 0x55, 0xe1, 0x57, 0x1d, 0x0e, 0x6f, 0xc4, 0x9b, 0x40, 0x9e, 0xab, 0x25, ++ 0x93, 0xc4, 0x81, 0xc1, 0xf3, 0x00, 0xde, 0x69, 0x72, 0x00, 0x66, 0xc7, ++ 0xcc, 0x97, 0xec, 0xb1, 0x02, 0x12, 0x47, 0xeb, 0xa0, 0x99, 0x48, 0x1f, ++ 0x26, 0x29, 0x75, 0x92, 0xeb, 0xed, 0xf2, 0x5a, 0xc4, 0xe7, 0x14, 0x23, ++ 0xe1, 0xb3, 0x88, 0xf2, 0x1c, 0xea, 0xab, 0x1e, 0x34, 0x86, 0x4c, 0x88, ++ 0xff, 0x37, 0x79, 0x64, 0xe4, 0x2f, 0x26, 0x27, 0xe7, 0x63, 0xfb, 0x0a, ++ 0xbd, 0xa3, 0x9d, 0xb0, 0xae, 0xca, 0x14, 0x33, 0xc9, 0x05, 0xd1, 0xc6, ++ 0xfb, 0x89, 0xb6, 0x59, 0xa4, 0xa7, 0x8c, 0xde, 0x0a, 0x7c, 0xa9, 0x02, ++ 0xea, 0x12, 0x1b, 0x6c, 0x4f, 0x42, 0xfe, 0xdc, 0x16, 0xf4, 0xb9, 0x5c, ++ 0xd1, 0x75, 0x5b, 0xa4, 0xcd, 0x0c, 0xe9, 0xb7, 0x32, 0xa5, 0x86, 0xf5, ++ 0xdb, 0xa2, 0xef, 0x8b, 0x92, 0x97, 0xf9, 0x93, 0x71, 0x3e, 0x99, 0xeb, ++ 0x3f, 0x52, 0x90, 0xfa, 0x59, 0x64, 0x78, 0x3f, 0x66, 0x5f, 0x07, 0x74, ++ 0x3a, 0x66, 0x43, 0x3e, 0xde, 0x0b, 0x72, 0x02, 0xc6, 0xef, 0x4a, 0xce, ++ 0x16, 0x91, 0xfe, 0xba, 0xfe, 0x52, 0x5c, 0x4d, 0x65, 0xf2, 0xb4, 0x59, ++ 0x88, 0xef, 0x65, 0x12, 0xfb, 0xce, 0xbf, 0x40, 0xff, 0x2e, 0x81, 0x1d, ++ 0x65, 0xa0, 0x27, 0x75, 0xe9, 0xd8, 0x85, 0xe9, 0xb0, 0xef, 0x97, 0x6d, ++ 0xe5, 0x8f, 0x83, 0xb8, 0x06, 0xd6, 0xe8, 0xd3, 0x23, 0xbf, 0x9b, 0xcc, ++ 0x9a, 0xa9, 0x1c, 0xad, 0x63, 0x56, 0x2c, 0xb7, 0x0b, 0xfd, 0xab, 0x19, ++ 0xf4, 0x73, 0x37, 0x9f, 0xa8, 0x1a, 0x09, 0xfd, 0x9e, 0x77, 0xf9, 0xbd, ++ 0xb8, 0xef, 0xaf, 0x83, 0x0e, 0x81, 0xfb, 0xfa, 0xfa, 0x78, 0xae, 0x67, ++ 0xad, 0xcb, 0x9c, 0x23, 0xa3, 0x5e, 0xd6, 0xe9, 0xec, 0x3a, 0x9a, 0x87, ++ 0xeb, 0xc9, 0x00, 0xb9, 0x82, 0x84, 0x20, 0xfa, 0x3c, 0xa8, 0x57, 0xa8, ++ 0xfb, 0xbd, 0x4f, 0x39, 0x4f, 0x31, 0xaf, 0xb3, 0x1f, 0xe5, 0xdf, 0xaa, ++ 0x54, 0xb3, 0x8c, 0xfa, 0x92, 0x68, 0xde, 0xec, 0xfb, 0x00, 0xe0, 0xf5, ++ 0x8c, 0xa1, 0xff, 0xb9, 0x76, 0xa8, 0x77, 0x08, 0xd2, 0xca, 0x2e, 0xe4, ++ 0x8b, 0x0f, 0xda, 0x3c, 0x3b, 0x19, 0xea, 0x8f, 0x1c, 0x6e, 0x72, 0xb2, ++ 0xae, 0x62, 0x2d, 0x8c, 0xdb, 0xb5, 0xc6, 0x2b, 0xa6, 0x42, 0x7b, 0xd7, ++ 0x06, 0xe6, 0xe9, 0x40, 0xfa, 0xb0, 0x57, 0xae, 0x4d, 0x85, 0xe7, 0x05, ++ 0x39, 0xcb, 0x75, 0x69, 0x48, 0x0f, 0xae, 0x35, 0x6b, 0xb1, 0xac, 0x73, ++ 0xe6, 0x11, 0xfc, 0xc6, 0xb9, 0xb7, 0xeb, 0xd2, 0xa1, 0xbd, 0x64, 0x62, ++ 0x65, 0x2d, 0x43, 0xd9, 0x2b, 0xc1, 0x7c, 0xe9, 0xc3, 0xe3, 0x93, 0x3e, ++ 0x65, 0x2b, 0xc3, 0xfd, 0x30, 0x97, 0xf8, 0x21, 0xe2, 0x95, 0x4e, 0x06, ++ 0x3e, 0x03, 0x4b, 0xaf, 0x4c, 0x83, 0xf3, 0x86, 0x79, 0x2d, 0x78, 0xde, ++ 0x02, 0x95, 0x04, 0x07, 0xcb, 0x45, 0x5b, 0xc8, 0x82, 0x75, 0x17, 0x87, ++ 0x8b, 0xc5, 0x2b, 0x84, 0x92, 0xa0, 0x6e, 0x77, 0x79, 0x05, 0xaf, 0x1b, ++ 0xdf, 0xdb, 0x4a, 0xe7, 0x6b, 0x09, 0x6b, 0xf5, 0xd8, 0x2a, 0x97, 0xff, ++ 0x3e, 0xa4, 0x7f, 0xfb, 0x5c, 0xed, 0xb9, 0x8a, 0xe6, 0x27, 0x68, 0x7d, ++ 0x9b, 0x74, 0x9c, 0x2e, 0x3a, 0x53, 0xe5, 0x63, 0x28, 0x9f, 0x3b, 0x9d, ++ 0xae, 0xb4, 0x76, 0x39, 0xba, 0x4e, 0x95, 0xaf, 0x3c, 0xa0, 0xe8, 0x6b, ++ 0xea, 0x73, 0x95, 0xaf, 0xfc, 0x0e, 0xcf, 0x20, 0x23, 0xaa, 0xdf, 0x00, ++ 0x9e, 0x6f, 0xd5, 0xe5, 0xa3, 0x7e, 0xb6, 0x99, 0x21, 0x7f, 0xb2, 0x3c, ++ 0xbc, 0x99, 0x21, 0x5e, 0x5b, 0xa4, 0xa0, 0xcc, 0x50, 0x0f, 0xff, 0xa7, ++ 0x20, 0xe1, 0xb9, 0xaa, 0xdf, 0xae, 0x56, 0x68, 0xa6, 0x3a, 0xaf, 0xd6, ++ 0x8c, 0xf2, 0xfa, 0x82, 0xbd, 0x9c, 0xf4, 0x59, 0x4b, 0xeb, 0x2e, 0x3a, ++ 0xaf, 0x78, 0xb8, 0x59, 0xfa, 0x75, 0xcc, 0x7b, 0x05, 0xb8, 0xa6, 0x14, ++ 0x3e, 0x4d, 0xf2, 0x1d, 0x18, 0xb0, 0x5c, 0x00, 0xf0, 0xe9, 0xcb, 0xb4, ++ 0x35, 0x6c, 0x4f, 0xa0, 0xf7, 0x8f, 0x50, 0xf4, 0x85, 0x0d, 0x40, 0xc6, ++ 0x11, 0x92, 0x57, 0x3e, 0x33, 0xf2, 0x6b, 0x83, 0x1e, 0xf4, 0x55, 0x92, ++ 0x6f, 0xb0, 0x61, 0x90, 0x07, 0x17, 0x24, 0x46, 0xf2, 0x8b, 0x75, 0x39, ++ 0xa9, 0xbe, 0x3a, 0x95, 0xd7, 0xd5, 0x71, 0x56, 0x67, 0x94, 0x8f, 0xbc, ++ 0x92, 0xfe, 0x6d, 0xd9, 0x6a, 0x66, 0xfe, 0x98, 0x7d, 0x6c, 0x80, 0x79, ++ 0x10, 0x2e, 0xeb, 0x2e, 0xcd, 0xaf, 0x41, 0xb8, 0x32, 0x91, 0x88, 0x83, ++ 0x6d, 0xfa, 0x8b, 0x7b, 0xfb, 0x46, 0xa0, 0x2f, 0xd5, 0xae, 0x19, 0xa1, ++ 0xe8, 0x2b, 0x39, 0x38, 0x37, 0x94, 0xa3, 0x8d, 0x8c, 0xec, 0x02, 0x8f, ++ 0x7d, 0x6e, 0x0d, 0xd2, 0x9d, 0xef, 0x62, 0x1e, 0x09, 0xdf, 0x83, 0xce, ++ 0x34, 0x6a, 0xf7, 0x04, 0x99, 0xbe, 0x99, 0xd6, 0x6d, 0x50, 0xe5, 0x92, ++ 0xee, 0xf2, 0x04, 0x5a, 0xab, 0x6c, 0x54, 0xe5, 0x30, 0xa9, 0xb6, 0x5c, ++ 0x6e, 0xc1, 0xff, 0xf7, 0x5e, 0x16, 0x90, 0xef, 0xc7, 0xc8, 0x31, 0x5e, ++ 0x90, 0x5c, 0x57, 0xe5, 0x76, 0xc1, 0x66, 0x6d, 0xfb, 0xd8, 0xad, 0xda, ++ 0xfa, 0xb8, 0xd0, 0x90, 0xf7, 0xdf, 0x42, 0xb9, 0xbf, 0x98, 0xff, 0x0d, ++ 0x72, 0x41, 0xdb, 0xfe, 0xb4, 0x22, 0xbf, 0x17, 0xa3, 0xfc, 0x86, 0x92, ++ 0x2d, 0x32, 0x90, 0xdc, 0x33, 0xc3, 0x8a, 0x2e, 0x73, 0xb9, 0x1b, 0x95, ++ 0x83, 0xc0, 0x17, 0x72, 0xbb, 0xc2, 0x95, 0xc8, 0x46, 0x73, 0x5a, 0x62, ++ 0xe4, 0x21, 0xa3, 0x7d, 0x68, 0xe4, 0x63, 0x95, 0x4b, 0x26, 0xfc, 0xf3, ++ 0x1d, 0x15, 0x0d, 0x78, 0x8e, 0xbe, 0x8b, 0x60, 0x7c, 0x54, 0x0c, 0xe5, ++ 0xcb, 0xa3, 0x4d, 0x1c, 0xde, 0x7d, 0xc6, 0xe4, 0xd0, 0x5a, 0x78, 0xef, ++ 0x51, 0xb0, 0x8b, 0xfc, 0xd0, 0x75, 0x3d, 0xd8, 0x43, 0x7e, 0x20, 0xb5, ++ 0xaf, 0x8b, 0x9e, 0x5f, 0xd6, 0xa1, 0x9d, 0x75, 0x54, 0xef, 0x01, 0x8c, ++ 0x1d, 0x3c, 0xa7, 0xf8, 0x73, 0xf5, 0xe4, 0xa9, 0x7a, 0xaf, 0xef, 0x2d, ++ 0xa4, 0x03, 0xc6, 0xfa, 0x2b, 0x7c, 0xc9, 0x7c, 0x3e, 0x7f, 0xcc, 0x7c, ++ 0x7d, 0xd6, 0x94, 0xf1, 0x0c, 0xec, 0x96, 0x5d, 0x85, 0xfe, 0x5f, 0x61, ++ 0xbf, 0x4f, 0x6a, 0xec, 0x13, 0x91, 0x3f, 0x98, 0x72, 0x98, 0x01, 0xe9, ++ 0x13, 0xe7, 0x67, 0xca, 0xfc, 0xcc, 0x88, 0xfa, 0x33, 0x3f, 0xef, 0x4d, ++ 0x9e, 0x37, 0x9b, 0x0f, 0xc2, 0x3a, 0x1e, 0x39, 0x69, 0x42, 0x75, 0x9c, ++ 0xcd, 0xd4, 0x1f, 0x3b, 0xda, 0x06, 0xf5, 0x55, 0xb9, 0x22, 0xf1, 0x33, ++ 0xe9, 0xba, 0x95, 0xcf, 0x5a, 0x81, 0x0f, 0x54, 0xfd, 0x1a, 0xda, 0xe1, ++ 0x9d, 0x47, 0x64, 0x79, 0x24, 0xe9, 0xe9, 0x47, 0x0d, 0x0c, 0xf5, 0xf4, ++ 0x2a, 0x05, 0x8f, 0xab, 0x14, 0xfb, 0xeb, 0x99, 0x02, 0x03, 0x8d, 0xfb, ++ 0x89, 0x22, 0x5f, 0xce, 0x3a, 0x55, 0xbd, 0x27, 0x68, 0x45, 0xfd, 0x17, ++ 0x2c, 0x02, 0x2b, 0xea, 0xb3, 0x25, 0xbb, 0x81, 0x17, 0x6b, 0xcf, 0x33, ++ 0x89, 0xb7, 0x7b, 0x49, 0xdf, 0x2d, 0xed, 0x8a, 0x6f, 0xf7, 0x32, 0xa4, ++ 0xe3, 0x62, 0x05, 0x5f, 0xa0, 0x6e, 0xab, 0x84, 0x7a, 0x99, 0x52, 0xef, ++ 0x62, 0x42, 0xba, 0x04, 0xe7, 0x38, 0xa1, 0xb6, 0xbf, 0x0f, 0x4d, 0x09, ++ 0xf7, 0x6b, 0x87, 0xad, 0x88, 0x87, 0x7b, 0x2c, 0x5c, 0x7f, 0x7b, 0x5e, ++ 0xc1, 0x87, 0x4c, 0x26, 0x78, 0xc2, 0xb0, 0xfe, 0xcc, 0xdd, 0x36, 0x4f, ++ 0x08, 0xfa, 0x25, 0xeb, 0xd9, 0x9e, 0x08, 0xec, 0xc3, 0x73, 0x48, 0x3c, ++ 0x1d, 0x7b, 0xee, 0xe3, 0x7b, 0xb4, 0x75, 0x37, 0x8b, 0xa9, 0x3b, 0x71, ++ 0x1d, 0xda, 0xfa, 0xa3, 0x72, 0xb3, 0x80, 0x70, 0x79, 0xb4, 0x0e, 0x74, ++ 0x74, 0xd8, 0xb2, 0x35, 0x2f, 0xd9, 0xfe, 0x61, 0x09, 0x43, 0x98, 0x17, ++ 0x22, 0x7e, 0xcd, 0xd4, 0xdb, 0xca, 0xd0, 0x9e, 0x5a, 0x55, 0x69, 0x63, ++ 0x08, 0x57, 0xd3, 0xa9, 0xb1, 0xdf, 0x8a, 0x20, 0xff, 0x38, 0xa1, 0x67, ++ 0x28, 0x17, 0xa4, 0x24, 0xf9, 0xb1, 0x6a, 0x78, 0x5f, 0xfa, 0x69, 0xba, ++ 0x67, 0x8d, 0x1c, 0x3d, 0xff, 0xe7, 0xdb, 0x90, 0x75, 0x33, 0xf6, 0xe4, ++ 0x65, 0x0f, 0xeb, 0x00, 0x9e, 0xfc, 0xf5, 0x2a, 0x6b, 0x03, 0xea, 0xbf, ++ 0x2f, 0xc2, 0x79, 0xa2, 0x1c, 0xf9, 0x3e, 0xd8, 0xd9, 0xd8, 0xde, 0x05, ++ 0xe7, 0x8a, 0xf5, 0x97, 0xc1, 0xce, 0xc6, 0x72, 0x2f, 0xd8, 0xd9, 0xf8, ++ 0x7c, 0x1f, 0xd8, 0xd9, 0x58, 0xef, 0x06, 0x3b, 0x1b, 0xcb, 0x1f, 0x81, ++ 0x9d, 0x8d, 0xcf, 0x7b, 0xc0, 0xce, 0xc6, 0xba, 0xa7, 0xb0, 0x72, 0x74, ++ 0x1e, 0x9c, 0x4f, 0xbd, 0xcd, 0x37, 0x53, 0x40, 0xb8, 0x7a, 0x45, 0x59, ++ 0x02, 0xba, 0x12, 0xa2, 0x70, 0x66, 0x1f, 0x16, 0x61, 0xbd, 0x5f, 0xb8, ++ 0x0c, 0x04, 0x52, 0x27, 0xb1, 0x7e, 0x13, 0xc0, 0xf5, 0xf8, 0x18, 0x99, ++ 0xce, 0xd7, 0xc4, 0x7c, 0x0c, 0xe5, 0x2b, 0xf3, 0x7b, 0xcc, 0x88, 0x97, ++ 0x57, 0x1f, 0xc7, 0xab, 0x8e, 0xe3, 0x37, 0x24, 0x1a, 0x67, 0x0a, 0x8c, ++ 0x43, 0x76, 0x82, 0x59, 0x42, 0xbf, 0x48, 0x1e, 0xbc, 0x31, 0x02, 0x9e, ++ 0x9f, 0x79, 0xf0, 0x57, 0xbb, 0x50, 0x5e, 0xcc, 0x13, 0xfc, 0x1e, 0x5c, ++ 0x6f, 0xe3, 0xa4, 0xd3, 0x46, 0xae, 0x3f, 0x0f, 0x18, 0xb1, 0xff, 0x36, ++ 0x0b, 0xe0, 0x3f, 0xf0, 0xa1, 0x1c, 0x85, 0x0e, 0x82, 0x55, 0x00, 0x4f, ++ 0x94, 0xbb, 0xaf, 0xeb, 0x3d, 0xed, 0xd0, 0xeb, 0xa6, 0x19, 0xa7, 0x56, ++ 0x67, 0x80, 0xfd, 0x5d, 0x95, 0xe7, 0x9c, 0x2f, 0x4e, 0x85, 0xfa, 0xfd, ++ 0xa7, 0x2a, 0x46, 0x43, 0xbd, 0x73, 0xc7, 0xa6, 0xf9, 0x68, 0xcf, 0xdf, ++ 0xf4, 0xbd, 0x53, 0xaf, 0x64, 0x03, 0x0f, 0x3e, 0x9b, 0x37, 0x8f, 0xb7, ++ 0x3f, 0x7e, 0xea, 0x42, 0x0e, 0xb4, 0x8f, 0x60, 0x5f, 0x9b, 0x5f, 0x0d, ++ 0xed, 0x29, 0xe9, 0x5c, 0x3e, 0x6d, 0x13, 0x58, 0x6d, 0xac, 0x7e, 0x77, ++ 0x6b, 0x1e, 0xc7, 0xf3, 0x40, 0xeb, 0x16, 0x92, 0x73, 0xc0, 0xdf, 0x19, ++ 0xc2, 0xa1, 0x3d, 0xd3, 0x47, 0xf2, 0xf1, 0x9c, 0x7d, 0x20, 0x65, 0x39, ++ 0xf4, 0x0f, 0x64, 0x0c, 0x64, 0xde, 0x79, 0x05, 0xfe, 0x1d, 0x68, 0x7d, ++ 0x92, 0xe4, 0x50, 0x7b, 0xca, 0xef, 0x49, 0xff, 0x68, 0x1f, 0x94, 0x17, ++ 0x1e, 0x92, 0x17, 0xea, 0xbc, 0xaa, 0xbc, 0xf8, 0x44, 0xc1, 0x3d, 0x55, ++ 0x5e, 0xac, 0xb2, 0xf0, 0xea, 0x60, 0x3f, 0x7f, 0x3e, 0x3d, 0x7f, 0x5c, ++ 0xf1, 0xeb, 0xb0, 0x50, 0x01, 0xd5, 0xd3, 0x2d, 0xbc, 0xfe, 0xcf, 0x55, ++ 0xf2, 0x71, 0xb4, 0x7b, 0x00, 0x3e, 0x64, 0xe7, 0x1e, 0x4c, 0x29, 0xfe, ++ 0xc6, 0x0d, 0x68, 0x57, 0xd6, 0x88, 0x1e, 0x13, 0xd4, 0x1f, 0xb7, 0x95, ++ 0x5b, 0x50, 0xde, 0xfc, 0xa3, 0xc2, 0x7f, 0x60, 0xdc, 0x20, 0xda, 0xf1, ++ 0xc1, 0x99, 0xe6, 0xd0, 0x4e, 0x3c, 0x54, 0xbb, 0x4c, 0xf4, 0x98, 0xa6, ++ 0x8e, 0x6f, 0x77, 0xa1, 0xd2, 0xc5, 0xd2, 0x94, 0x75, 0x1c, 0xba, 0xde, ++ 0x1a, 0x46, 0x3b, 0xbf, 0xbd, 0xda, 0xbc, 0x03, 0xf5, 0xc9, 0x2d, 0xb6, ++ 0x3c, 0x1a, 0xaf, 0x7d, 0x8a, 0x31, 0x88, 0xfe, 0x15, 0xb5, 0xbe, 0xf6, ++ 0xfa, 0xeb, 0xcd, 0xa8, 0x4f, 0xa4, 0xa6, 0xa4, 0x39, 0xb1, 0xae, 0xf2, ++ 0xa7, 0x8d, 0x80, 0xf7, 0x58, 0xc2, 0x4f, 0x8f, 0xe3, 0x56, 0x29, 0xdb, ++ 0xad, 0x32, 0xdb, 0xc2, 0x7a, 0xe4, 0xe7, 0x66, 0xc3, 0x1f, 0x63, 0xf5, ++ 0x64, 0x1b, 0x8b, 0x10, 0xfe, 0x78, 0x74, 0x60, 0x90, 0x00, 0xbd, 0x19, ++ 0xf3, 0x39, 0x5e, 0x55, 0x30, 0x4f, 0x2d, 0x3e, 0x37, 0x0a, 0xcd, 0x41, ++ 0x44, 0xc6, 0x6d, 0xb8, 0x76, 0xdc, 0x47, 0xb2, 0x91, 0xfc, 0x0c, 0x8c, ++ 0x65, 0xf3, 0x75, 0xab, 0xfb, 0xf0, 0x66, 0xf3, 0x7d, 0xa9, 0xfb, 0x48, ++ 0x36, 0x06, 0x95, 0x7d, 0x90, 0x9e, 0xb4, 0xc5, 0xa6, 0x0b, 0xa3, 0xbe, ++ 0xb7, 0x05, 0xf6, 0x85, 0xe3, 0x05, 0xf2, 0x64, 0x82, 0x4f, 0xfc, 0xbe, ++ 0xe0, 0xe7, 0xc3, 0x71, 0x67, 0x4c, 0x51, 0xd6, 0x2d, 0xdd, 0xb0, 0x17, ++ 0xd7, 0x31, 0x53, 0xe7, 0xed, 0xc0, 0xf7, 0x0e, 0x7f, 0x56, 0x67, 0x07, ++ 0xf4, 0x62, 0xb3, 0x58, 0xb3, 0x88, 0xcf, 0xf3, 0xc1, 0xa2, 0xfd, 0xd0, ++ 0x4c, 0xa2, 0xb3, 0xe3, 0xf2, 0x15, 0xf4, 0x0e, 0x14, 0xe4, 0x1f, 0xc6, ++ 0xc8, 0xad, 0x9b, 0x7e, 0x2b, 0xd0, 0x7e, 0xd8, 0xfd, 0x46, 0x3a, 0x97, ++ 0xcd, 0x05, 0x7c, 0xdf, 0x4f, 0x1b, 0x43, 0x4e, 0x46, 0x06, 0x6e, 0x68, ++ 0xd4, 0x82, 0xe4, 0xe1, 0xf1, 0xf7, 0x85, 0x21, 0xf8, 0xeb, 0x65, 0x48, ++ 0x4f, 0xed, 0x69, 0x5e, 0x8e, 0xbf, 0xd2, 0x40, 0xca, 0x1a, 0xc4, 0xdf, ++ 0xd4, 0x81, 0xcc, 0xb5, 0xb4, 0xaf, 0x70, 0xc2, 0xf3, 0x88, 0xc7, 0xe3, ++ 0xf8, 0xf3, 0xd9, 0x07, 0xff, 0x29, 0x72, 0x40, 0x8f, 0xf0, 0xbd, 0xda, ++ 0x79, 0xaa, 0xe7, 0xa8, 0xe2, 0x41, 0xbc, 0xfc, 0x32, 0xe6, 0x4b, 0xea, ++ 0xf9, 0x3a, 0x68, 0x9f, 0xde, 0x22, 0x4e, 0x07, 0xaa, 0x1e, 0xc5, 0xc0, ++ 0xce, 0x49, 0x1e, 0x0a, 0xbf, 0xf5, 0x30, 0x9e, 0x5c, 0x18, 0xad, 0x1b, ++ 0x1d, 0x3e, 0xd2, 0x8f, 0x0d, 0x76, 0x4f, 0x11, 0xfa, 0x6f, 0xdb, 0xff, ++ 0xaa, 0x6f, 0x48, 0xe4, 0xbf, 0xfd, 0x50, 0x81, 0xd3, 0x9a, 0x14, 0x2b, ++ 0xe9, 0xcd, 0xed, 0x29, 0x5c, 0x6f, 0xee, 0x4d, 0x99, 0xa3, 0xb1, 0x77, ++ 0xaa, 0xc1, 0xfe, 0x11, 0x00, 0x3f, 0xf4, 0xe9, 0xac, 0x0b, 0xe9, 0x48, ++ 0x3f, 0xe2, 0x76, 0xf2, 0x7f, 0xe9, 0x47, 0xa2, 0x86, 0x84, 0xeb, 0x8a, ++ 0xd3, 0x47, 0x47, 0xcc, 0xe5, 0xfa, 0xa8, 0x04, 0xfa, 0x68, 0x82, 0x79, ++ 0xd5, 0x52, 0x44, 0x7d, 0x34, 0x81, 0x9e, 0x3a, 0xa8, 0x8f, 0xa6, 0xcd, ++ 0xe1, 0xfa, 0x68, 0x8a, 0x91, 0xf4, 0xd1, 0x6d, 0xc9, 0xc6, 0xda, 0xed, ++ 0x09, 0xf8, 0xcd, 0x81, 0x3c, 0xae, 0x5f, 0xf7, 0xe2, 0x3e, 0x12, 0xd8, ++ 0x7b, 0x60, 0xe7, 0x91, 0x1f, 0x52, 0xb5, 0xf3, 0x8c, 0x92, 0x9f, 0xec, ++ 0x35, 0x75, 0x9f, 0x07, 0x14, 0x7c, 0x57, 0xfb, 0x9b, 0xa4, 0x66, 0x86, ++ 0x7e, 0x31, 0xbd, 0xd1, 0x23, 0xa3, 0xbe, 0xa9, 0xb7, 0x72, 0xfd, 0xd1, ++ 0x04, 0xdb, 0x2c, 0x8a, 0x91, 0xdf, 0xea, 0xfc, 0xfb, 0xf3, 0x0c, 0xf4, ++ 0xfe, 0xb7, 0x0b, 0xb9, 0x1e, 0xaf, 0x33, 0x73, 0xfd, 0xe4, 0xa6, 0xe3, ++ 0x42, 0x73, 0x22, 0xb8, 0xff, 0x59, 0x81, 0xfb, 0x70, 0x78, 0xf7, 0x37, ++ 0xe0, 0x0d, 0xf1, 0x85, 0x72, 0x9b, 0xd1, 0x8b, 0xfa, 0x41, 0xb9, 0xcd, ++ 0x51, 0x85, 0xfa, 0xc1, 0x70, 0xef, 0x81, 0xa9, 0x19, 0xfc, 0x28, 0x2d, ++ 0xca, 0x57, 0x3c, 0x7f, 0x9d, 0xac, 0x27, 0xf9, 0x23, 0x7a, 0x1c, 0x88, ++ 0x67, 0x5d, 0x86, 0xfe, 0x57, 0x8e, 0xa3, 0x1d, 0x77, 0xd8, 0x46, 0xf2, ++ 0x46, 0xd5, 0x9b, 0xc1, 0x4e, 0xf5, 0x7a, 0xe0, 0xe5, 0x3d, 0xff, 0x01, ++ 0x14, 0xa8, 0x1b, 0x6a, 0x9f, 0x82, 0xdd, 0x24, 0xe5, 0xc3, 0x78, 0x7d, ++ 0xab, 0x32, 0x27, 0xf2, 0xf1, 0x40, 0xbf, 0x2b, 0x1d, 0xaa, 0x4f, 0xc6, ++ 0xfb, 0x01, 0x06, 0xe9, 0x3c, 0x65, 0x97, 0x93, 0xbf, 0x17, 0x1a, 0x85, ++ 0xef, 0x09, 0xab, 0xa6, 0x8c, 0x44, 0x7c, 0x8a, 0xa7, 0x73, 0xb5, 0xcc, ++ 0x75, 0xbc, 0x9e, 0xbb, 0x02, 0xd6, 0x95, 0x3b, 0xea, 0x28, 0x95, 0xea, ++ 0xf3, 0xff, 0xc9, 0xf4, 0xe4, 0x57, 0x8b, 0xef, 0x3f, 0x36, 0x5f, 0x85, ++ 0x3f, 0x97, 0xc7, 0xe3, 0x60, 0xb2, 0x11, 0x7a, 0x92, 0xc3, 0x63, 0x71, ++ 0xdd, 0x67, 0x5a, 0xde, 0xcc, 0xf4, 0xc0, 0x52, 0x9a, 0xc4, 0xf3, 0x24, ++ 0x8f, 0x3f, 0x69, 0x9e, 0x32, 0xe2, 0x11, 0x99, 0xf3, 0xd9, 0xdd, 0x28, ++ 0x5f, 0xbe, 0x22, 0x12, 0x9f, 0xcd, 0xb9, 0xb7, 0x37, 0x35, 0x2d, 0xe6, ++ 0x7c, 0x9f, 0x6e, 0xeb, 0xce, 0x15, 0x5d, 0x18, 0x2f, 0x88, 0xe4, 0x56, ++ 0xbb, 0xc8, 0x0e, 0xf0, 0x26, 0x5a, 0xef, 0x42, 0x75, 0xfe, 0xf0, 0x18, ++ 0xe2, 0xcb, 0x06, 0xe5, 0xfc, 0x65, 0x7b, 0x64, 0xf6, 0x58, 0x80, 0xb7, ++ 0x6c, 0xd3, 0x79, 0xd0, 0x15, 0x0d, 0x42, 0x57, 0x43, 0xff, 0x95, 0x62, ++ 0x6a, 0xb5, 0x04, 0xf3, 0xe7, 0xb6, 0x31, 0x8f, 0x0d, 0xea, 0x4e, 0x26, ++ 0x91, 0x1f, 0x2b, 0xf7, 0xb2, 0x9e, 0xf0, 0x2c, 0xf7, 0xe0, 0x12, 0xc2, ++ 0xdf, 0x31, 0xf6, 0x01, 0x21, 0xe8, 0x8e, 0x99, 0x07, 0x59, 0x70, 0x4c, ++ 0x3c, 0xe4, 0xd3, 0xe6, 0x6a, 0xa2, 0xcb, 0xdc, 0x91, 0x83, 0xf6, 0x1b, ++ 0xc5, 0x0d, 0x3e, 0xb5, 0x87, 0xe7, 0x23, 0x5d, 0x7f, 0xfa, 0x04, 0x5f, ++ 0x51, 0xee, 0x77, 0xb4, 0xed, 0x20, 0x5b, 0xc9, 0xcf, 0x7c, 0x4f, 0x8b, ++ 0x35, 0x84, 0x26, 0xe0, 0x98, 0x87, 0x25, 0x1d, 0xd6, 0x73, 0x9f, 0x15, ++ 0x58, 0x8e, 0x13, 0xd7, 0x71, 0xd0, 0xf9, 0x08, 0xfa, 0x69, 0x7e, 0x98, ++ 0x44, 0x7e, 0x1a, 0xfd, 0x56, 0x17, 0xf9, 0x59, 0x9e, 0x15, 0xfc, 0xd3, ++ 0xf2, 0x81, 0x2e, 0xce, 0x84, 0xe4, 0xaf, 0xa2, 0x7d, 0x4b, 0x3f, 0xe8, ++ 0xd7, 0xf8, 0x35, 0xeb, 0x8e, 0x8d, 0x24, 0xbf, 0x22, 0xb3, 0x49, 0x7e, ++ 0x3d, 0xa0, 0x63, 0x3b, 0x13, 0xf8, 0x91, 0x6e, 0xcf, 0xe7, 0xf6, 0xdc, ++ 0xd2, 0x7c, 0x4e, 0x5f, 0xb9, 0x8e, 0x37, 0x72, 0x57, 0x54, 0x60, 0x79, ++ 0x8c, 0xce, 0xfb, 0x5a, 0xe9, 0xa8, 0x13, 0xf9, 0x35, 0x8c, 0xf3, 0xc8, ++ 0x88, 0xcd, 0x14, 0xe7, 0x0a, 0x56, 0xb1, 0x22, 0xb4, 0xfb, 0x3a, 0x0d, ++ 0x80, 0x57, 0x09, 0xe8, 0xf4, 0x5f, 0xf3, 0x95, 0x78, 0x99, 0xca, 0x87, ++ 0x15, 0xf8, 0x59, 0xd0, 0x4a, 0x81, 0x7d, 0xe8, 0x05, 0x45, 0xbf, 0xdb, ++ 0xfd, 0xfc, 0xf3, 0xcf, 0x67, 0xa2, 0xbc, 0x66, 0xa8, 0xdc, 0x0d, 0xd2, ++ 0x9b, 0x3a, 0x4e, 0x52, 0x51, 0x17, 0x35, 0x26, 0x79, 0xbc, 0x0c, 0xfd, ++ 0x0d, 0x82, 0xe4, 0xe5, 0xfc, 0x55, 0x0a, 0x3a, 0x82, 0x18, 0xd7, 0xf9, ++ 0x8b, 0x3e, 0x21, 0x5e, 0x3f, 0xa9, 0x9c, 0xdf, 0x1a, 0xe7, 0x7a, 0x07, ++ 0xf6, 0xaf, 0x76, 0x79, 0x1c, 0x48, 0x07, 0xbd, 0xce, 0xc9, 0x8e, 0x3b, ++ 0x01, 0x7e, 0x36, 0x9b, 0x91, 0x99, 0x62, 0xf8, 0xaf, 0x8a, 0x27, 0x87, ++ 0x92, 0x27, 0x93, 0xfe, 0xa1, 0x8e, 0xb3, 0x2a, 0x39, 0xef, 0x8a, 0x76, ++ 0xb6, 0x11, 0xf8, 0xb0, 0x7c, 0x05, 0xf9, 0x6c, 0x44, 0x7f, 0x37, 0xea, ++ 0x31, 0x7d, 0x53, 0xcd, 0x32, 0xac, 0x77, 0xbd, 0xad, 0x3c, 0x82, 0x7a, ++ 0xd6, 0x7a, 0x9b, 0xbd, 0x9c, 0xfc, 0xe6, 0x36, 0xe0, 0x17, 0x31, 0x7e, ++ 0x24, 0x9b, 0xed, 0x08, 0xe1, 0xa1, 0xcd, 0xc3, 0xfd, 0x6b, 0x36, 0xe4, ++ 0xbb, 0xe8, 0x47, 0x52, 0xf6, 0xdf, 0xeb, 0x3c, 0x42, 0xfb, 0x57, 0xfb, ++ 0xad, 0x52, 0xf8, 0x8f, 0xcd, 0x13, 0xe6, 0x71, 0x47, 0xb0, 0x62, 0xb0, ++ 0x9f, 0x45, 0xf4, 0x05, 0xd1, 0xbe, 0xb0, 0xd8, 0x19, 0xd9, 0x93, 0x16, ++ 0x33, 0xa7, 0xa7, 0x24, 0x38, 0x0e, 0x73, 0x0c, 0x1f, 0x51, 0xe7, 0xbd, ++ 0x3f, 0x9f, 0xdb, 0x69, 0xeb, 0x73, 0xca, 0x23, 0x95, 0xb4, 0x3e, 0x11, ++ 0x3d, 0x01, 0x6c, 0xbd, 0xa3, 0xdc, 0x41, 0x72, 0x10, 0xe1, 0x8c, 0x7a, ++ 0xe8, 0xa8, 0x41, 0x3d, 0x94, 0xfc, 0x25, 0xcf, 0x29, 0x70, 0x56, 0xc7, ++ 0x69, 0xef, 0xe5, 0xfb, 0xf4, 0xb5, 0x3a, 0xbc, 0xd5, 0xe9, 0x68, 0x7f, ++ 0xfa, 0x9e, 0x45, 0xbe, 0xb0, 0xde, 0x76, 0xa7, 0x39, 0x88, 0xf2, 0x20, ++ 0x79, 0xe2, 0x15, 0xc7, 0x7b, 0x25, 0x5f, 0xd0, 0xf8, 0x7b, 0xa2, 0xe3, ++ 0xb5, 0xce, 0x50, 0xc6, 0x7b, 0x0e, 0xc7, 0xd3, 0x27, 0x97, 0x4b, 0x38, ++ 0x9e, 0x01, 0xf9, 0x44, 0x02, 0xfc, 0x0b, 0x2b, 0xeb, 0xfa, 0xa2, 0xfe, ++ 0x30, 0x80, 0xa8, 0x44, 0xf6, 0x1a, 0xe3, 0x7a, 0x15, 0x60, 0xbc, 0x23, ++ 0x91, 0xfe, 0xa0, 0x96, 0x66, 0xc5, 0xaf, 0x35, 0xf4, 0x3d, 0xce, 0x27, ++ 0x9d, 0x8a, 0xdd, 0x02, 0x7c, 0xf2, 0x18, 0xae, 0xbf, 0x31, 0xe7, 0xf4, ++ 0x91, 0x4a, 0xea, 0xc5, 0xed, 0x95, 0xb4, 0xd9, 0x62, 0x91, 0x08, 0xe7, ++ 0xf5, 0x09, 0x9c, 0xa0, 0x5e, 0x88, 0xda, 0xef, 0xf1, 0x7a, 0x4c, 0xa5, ++ 0x7e, 0x80, 0xe4, 0x99, 0x2a, 0x87, 0x54, 0xb9, 0xf4, 0x34, 0xea, 0x31, ++ 0xc6, 0x28, 0x3d, 0xa9, 0x7e, 0x97, 0xec, 0x06, 0x1f, 0xc9, 0x6b, 0xc1, ++ 0xee, 0x23, 0xbc, 0x01, 0xbd, 0x46, 0x46, 0xba, 0xd1, 0x63, 0xbc, 0x37, ++ 0x01, 0xdc, 0x24, 0x17, 0x87, 0x9b, 0x90, 0x32, 0x45, 0x46, 0x7a, 0xa9, ++ 0xbe, 0xd4, 0x9f, 0x4d, 0x72, 0x3e, 0xf9, 0xa3, 0x6c, 0x16, 0xe3, 0x3f, ++ 0x53, 0xf9, 0xe1, 0xa1, 0xcf, 0x76, 0x59, 0xb0, 0xfd, 0xd3, 0x86, 0xaa, ++ 0x2b, 0xea, 0x2b, 0x6a, 0x3c, 0x78, 0xb8, 0x38, 0x70, 0xca, 0x43, 0xbf, ++ 0xff, 0x4a, 0xac, 0xbe, 0x32, 0x5c, 0x5c, 0xf8, 0x6a, 0xf1, 0xe0, 0xbe, ++ 0x14, 0x23, 0xf9, 0xdd, 0x9e, 0x11, 0xb4, 0x7c, 0xc9, 0xea, 0xe2, 0xfc, ++ 0xc8, 0xe0, 0x52, 0xfd, 0x27, 0xfe, 0xbf, 0xe0, 0x39, 0x3c, 0x23, 0xf8, ++ 0x3c, 0xa4, 0x2f, 0x2a, 0x7e, 0x94, 0x7d, 0x85, 0x7e, 0xe6, 0x42, 0xbf, ++ 0x57, 0xa7, 0x91, 0x05, 0xe1, 0x3c, 0x0f, 0x7c, 0x36, 0xd9, 0x81, 0xf8, ++ 0x71, 0xad, 0xf0, 0x55, 0xfd, 0xe6, 0x59, 0x8a, 0x1e, 0x95, 0x65, 0xdb, ++ 0x25, 0x20, 0x9d, 0x66, 0x35, 0x84, 0x04, 0xf4, 0x7b, 0x67, 0x37, 0x74, ++ 0x09, 0xde, 0x2b, 0xf4, 0x7b, 0x07, 0xe9, 0x39, 0x23, 0xda, 0xdf, 0xa0, ++ 0x8c, 0x3f, 0x5d, 0x1c, 0xd0, 0xa3, 0xbc, 0x9a, 0xae, 0xd0, 0x71, 0xf6, ++ 0x45, 0x91, 0x15, 0xc5, 0xe8, 0x7f, 0x6f, 0xe5, 0x73, 0x3d, 0xca, 0xa0, ++ 0xe8, 0xed, 0x29, 0x7d, 0xcf, 0x59, 0x70, 0xbc, 0x3e, 0x9d, 0xaf, 0xb3, ++ 0x10, 0xe5, 0x43, 0x8a, 0x4e, 0xde, 0x19, 0x43, 0xef, 0x86, 0x7b, 0xcb, ++ 0xcd, 0x55, 0x31, 0xf0, 0x69, 0xc7, 0x78, 0x4e, 0x82, 0xf3, 0x2b, 0x77, ++ 0x0d, 0xea, 0x5b, 0x64, 0x17, 0xa9, 0xf2, 0xd6, 0xa0, 0xca, 0x09, 0xbb, ++ 0xa8, 0x91, 0x13, 0x81, 0x24, 0x8e, 0xb7, 0xaa, 0xbe, 0x13, 0xb8, 0x9e, ++ 0xdb, 0x41, 0x82, 0xe0, 0x2f, 0x41, 0xb8, 0x9e, 0xbb, 0xfe, 0xf7, 0xb7, ++ 0xe0, 0x16, 0xcf, 0x09, 0x61, 0x83, 0xdd, 0x79, 0xf5, 0x78, 0xc6, 0xa0, ++ 0x5e, 0xa3, 0x0b, 0x2d, 0x57, 0xed, 0x17, 0xa4, 0x97, 0x2e, 0x83, 0xdc, ++ 0xdd, 0x4f, 0xfa, 0x55, 0x8a, 0x07, 0xfd, 0x00, 0xaa, 0x5e, 0x55, 0xf6, ++ 0x3d, 0x21, 0x1f, 0xfb, 0x79, 0x04, 0x2f, 0xd1, 0xc9, 0x24, 0xe6, 0xa7, ++ 0xf2, 0x3a, 0xc6, 0xf5, 0x40, 0xd0, 0xaf, 0x6e, 0x70, 0x91, 0xbe, 0x07, ++ 0x5b, 0x89, 0x39, 0x77, 0x86, 0xae, 0x88, 0xcc, 0xab, 0xef, 0xaf, 0x00, ++ 0xfd, 0xe0, 0x18, 0x27, 0x10, 0x23, 0xe4, 0x4f, 0xfd, 0xfa, 0x25, 0x81, ++ 0xf8, 0x7b, 0x3c, 0xdc, 0xda, 0x06, 0xe1, 0x36, 0x18, 0xcf, 0xd3, 0xf8, ++ 0x45, 0xb3, 0x15, 0x79, 0x97, 0xad, 0xb4, 0xcb, 0xe8, 0x17, 0x75, 0x62, ++ 0x7c, 0x4a, 0xeb, 0xb7, 0xac, 0x38, 0xaa, 0xad, 0x4f, 0x8a, 0x68, 0xeb, ++ 0xd7, 0x9d, 0x8c, 0xf3, 0x83, 0x06, 0xbd, 0x6f, 0xbb, 0x32, 0x79, 0xfc, ++ 0x1f, 0x07, 0xdd, 0x06, 0xf4, 0x86, 0x7c, 0x62, 0x85, 0x12, 0xb7, 0xcc, ++ 0x09, 0x86, 0x2a, 0x25, 0x58, 0x6f, 0x2e, 0xeb, 0xa2, 0xf8, 0x60, 0x76, ++ 0x43, 0x9a, 0x06, 0xde, 0x37, 0xe9, 0x95, 0xbc, 0x09, 0xe6, 0x15, 0x98, ++ 0xba, 0x4e, 0xf8, 0x65, 0x8b, 0xf3, 0x3e, 0xc6, 0xf7, 0x5b, 0x5c, 0x83, ++ 0xfe, 0x3b, 0xd2, 0xbf, 0xee, 0x51, 0xda, 0xff, 0xa1, 0x7a, 0xc5, 0x57, ++ 0x3b, 0xd0, 0x96, 0xde, 0x6c, 0x20, 0xff, 0xa8, 0x19, 0x26, 0x47, 0x78, ++ 0xfd, 0xc3, 0xec, 0x05, 0x33, 0xf1, 0xbc, 0x87, 0xf8, 0x57, 0x9b, 0xb5, ++ 0x7e, 0xd5, 0xec, 0xd8, 0x76, 0x80, 0xc3, 0x3d, 0xdb, 0x0c, 0x9a, 0x76, ++ 0x9f, 0xb7, 0x8c, 0xec, 0x82, 0x85, 0x8a, 0xdf, 0x76, 0x70, 0xbf, 0xb8, ++ 0x8e, 0x0c, 0xbe, 0xdf, 0xec, 0xf2, 0xa1, 0xf3, 0x5f, 0x7d, 0x5e, 0xf8, ++ 0x2f, 0x6d, 0xe8, 0xfc, 0xea, 0xb8, 0x4f, 0x03, 0x1f, 0x42, 0xfe, 0xca, ++ 0x2e, 0xc1, 0xb9, 0x4e, 0x46, 0xb8, 0x31, 0xf4, 0x40, 0xb0, 0x5c, 0x31, ++ 0x2c, 0x60, 0x9c, 0x3a, 0xab, 0x99, 0x79, 0x51, 0x4f, 0xce, 0x6e, 0x61, ++ 0xde, 0x44, 0xfe, 0xfe, 0x5d, 0x0a, 0xbc, 0xe2, 0xe1, 0xcc, 0x82, 0xd3, ++ 0x09, 0x7e, 0x33, 0x94, 0x67, 0x59, 0x36, 0x3d, 0xd9, 0xed, 0x59, 0x2d, ++ 0x3a, 0xd2, 0x0f, 0xb3, 0x80, 0x4f, 0x20, 0x7f, 0xb8, 0x65, 0x25, 0x90, ++ 0x11, 0xd4, 0xb3, 0x57, 0xca, 0xa4, 0x5f, 0xde, 0xda, 0xa0, 0x63, 0x28, ++ 0x1f, 0xd8, 0xa5, 0x36, 0xcd, 0xfb, 0xb0, 0x5c, 0xf2, 0x7f, 0xaa, 0xe7, ++ 0xfe, 0x34, 0x8e, 0x87, 0xfa, 0x65, 0x23, 0x0b, 0xe9, 0x70, 0x3f, 0xcd, ++ 0xc5, 0x44, 0x67, 0xb4, 0xae, 0xbc, 0x28, 0x3e, 0x00, 0xbc, 0x4e, 0x73, ++ 0x78, 0x99, 0x09, 0x5e, 0xb7, 0x4e, 0x31, 0x68, 0xfc, 0x9c, 0xb9, 0xe8, ++ 0xd7, 0x8c, 0x81, 0x8b, 0x8a, 0x07, 0xd9, 0x71, 0xcf, 0xbf, 0xe4, 0x92, ++ 0x34, 0x74, 0x01, 0x72, 0x6e, 0x97, 0x8b, 0xf0, 0x84, 0xcb, 0xbf, 0x02, ++ 0x94, 0x7f, 0xb0, 0xa4, 0x33, 0x53, 0x4f, 0xee, 0xea, 0x82, 0xf5, 0xdd, ++ 0xb4, 0x96, 0xd1, 0x7e, 0x07, 0x52, 0xad, 0x21, 0x9e, 0x0f, 0x31, 0x18, ++ 0x3f, 0xd0, 0x5f, 0x1e, 0x0b, 0x7c, 0xcb, 0x3c, 0xa3, 0x08, 0xfd, 0x2c, ++ 0x9b, 0x24, 0xab, 0x0e, 0xf3, 0x16, 0x0e, 0xa4, 0xf6, 0x7f, 0x9b, 0xa5, ++ 0x32, 0xd6, 0x0d, 0x6a, 0x71, 0x75, 0x0e, 0x63, 0x3f, 0xb1, 0x0e, 0x94, ++ 0x08, 0x50, 0x3f, 0xe4, 0x6a, 0xd8, 0xd2, 0x79, 0x23, 0xb4, 0x5b, 0x06, ++ 0x5e, 0x40, 0xe7, 0xaf, 0xcd, 0x16, 0x58, 0x50, 0x13, 0x53, 0x4f, 0x49, ++ 0x69, 0x5f, 0x50, 0x83, 0x87, 0x36, 0x85, 0xc9, 0x22, 0xc0, 0xc7, 0x8a, ++ 0x33, 0xc0, 0x3e, 0xad, 0xd2, 0x9c, 0xdd, 0x7a, 0x98, 0xdf, 0xea, 0xb6, ++ 0x91, 0x53, 0xd2, 0xca, 0x06, 0xe9, 0x94, 0xf6, 0xd3, 0x71, 0xbd, 0xfc, ++ 0x28, 0xe6, 0x7d, 0x74, 0x14, 0xe8, 0x48, 0x7f, 0x62, 0xb1, 0xed, 0xb0, ++ 0x8f, 0xb2, 0x02, 0x49, 0xa1, 0x03, 0x6f, 0x11, 0xf1, 0x8f, 0x1a, 0x1e, ++ 0xc7, 0x8f, 0x1d, 0x5f, 0xb4, 0x5f, 0x61, 0xfc, 0x39, 0x30, 0xfe, 0xc4, ++ 0xcf, 0x31, 0xbe, 0x99, 0xaf, 0x3f, 0x13, 0x1f, 0x81, 0xdc, 0xc9, 0xc4, ++ 0xf5, 0xa3, 0xdf, 0x1a, 0xc7, 0xc7, 0xf3, 0x45, 0xe7, 0x51, 0xec, 0xfc, ++ 0xca, 0x78, 0x22, 0x0b, 0x6e, 0xc7, 0x78, 0x0b, 0xcc, 0x67, 0x13, 0xf8, ++ 0x7c, 0x12, 0xe6, 0x95, 0x64, 0x32, 0x6d, 0x1e, 0xc1, 0xe0, 0x7c, 0x12, ++ 0xcc, 0x57, 0xfa, 0x77, 0xd8, 0x4f, 0xed, 0xd0, 0xf3, 0x30, 0x5c, 0xe9, ++ 0x3c, 0x6e, 0xff, 0x7c, 0xe7, 0xd1, 0xa1, 0xf3, 0xd2, 0x7a, 0x83, 0xe3, ++ 0x6d, 0x64, 0x17, 0x31, 0x68, 0xd6, 0x4d, 0x46, 0xfb, 0x83, 0xcf, 0x67, ++ 0x11, 0xd9, 0x21, 0xb1, 0x9c, 0xc3, 0xb5, 0x63, 0x72, 0x14, 0xae, 0xa0, ++ 0x07, 0xd2, 0xb8, 0xd0, 0x7d, 0xcd, 0x65, 0x05, 0xce, 0x06, 0x84, 0xb3, ++ 0x64, 0x24, 0x38, 0x0f, 0x07, 0xb7, 0x3e, 0x89, 0xe7, 0x35, 0x6d, 0x90, ++ 0xac, 0xa1, 0x35, 0xce, 0xff, 0x03, 0xe7, 0xe5, 0xe0, 0xe7, 0x15, 0x3b, ++ 0x1f, 0xea, 0x93, 0xd7, 0x3c, 0xdf, 0xed, 0x30, 0x9f, 0xfd, 0xda, 0xe7, ++ 0x43, 0xf8, 0x22, 0xfd, 0x0c, 0xc2, 0x17, 0xce, 0x64, 0x6d, 0xe6, 0xb5, ++ 0xc3, 0x17, 0x56, 0x15, 0xbc, 0x16, 0xf8, 0xf6, 0xc1, 0xb8, 0xba, 0x18, ++ 0xb8, 0x46, 0xf3, 0x87, 0x9e, 0x92, 0xd0, 0x2e, 0xb0, 0x18, 0x7c, 0x66, ++ 0x0f, 0xf0, 0xdf, 0x9b, 0x0a, 0x52, 0x49, 0xde, 0xba, 0xed, 0x0b, 0xcc, ++ 0x94, 0x4f, 0x90, 0xb1, 0xc0, 0x8c, 0x79, 0x7a, 0xeb, 0xdc, 0xb6, 0x1a, ++ 0xcc, 0xe7, 0x5b, 0xe7, 0x5a, 0x64, 0x36, 0xc4, 0xc8, 0xe9, 0x75, 0xee, ++ 0x3a, 0x6a, 0x87, 0xfe, 0x94, 0xf7, 0xe4, 0x0e, 0x5b, 0xd1, 0x6d, 0xc1, ++ 0x4a, 0x59, 0x84, 0xfc, 0x02, 0x1b, 0x6e, 0xa8, 0x76, 0x2c, 0x47, 0xfc, ++ 0x69, 0xe6, 0x79, 0x54, 0x6a, 0x5e, 0x91, 0x2a, 0x0f, 0x99, 0x12, 0xaf, ++ 0xa4, 0x7d, 0xc1, 0x8b, 0x23, 0x6e, 0xdc, 0x3b, 0xd0, 0x07, 0xfd, 0x37, ++ 0x34, 0x4f, 0xa4, 0xbc, 0xb1, 0x11, 0xa9, 0xff, 0x4e, 0xf9, 0x52, 0x9b, ++ 0x1a, 0x3c, 0x1e, 0x6c, 0xff, 0xb6, 0x85, 0xc7, 0x1d, 0x9f, 0x54, 0xe2, ++ 0x4e, 0x88, 0xa8, 0xe4, 0x57, 0x1b, 0x7f, 0xfd, 0x77, 0x30, 0xfe, 0x5a, ++ 0x5e, 0xb0, 0x4a, 0xa0, 0x78, 0xe3, 0xca, 0x2b, 0xc7, 0x1b, 0xcb, 0xcf, ++ 0x47, 0xaa, 0x30, 0xef, 0x8a, 0x2d, 0xe7, 0x79, 0x55, 0x8e, 0x3a, 0x31, ++ 0x4e, 0x1e, 0x6a, 0xe9, 0x76, 0x13, 0xc2, 0x95, 0xe7, 0x3f, 0x85, 0x04, ++ 0x0e, 0x5f, 0xcd, 0x78, 0x2d, 0x05, 0x19, 0x3c, 0x1e, 0xed, 0xda, 0xc1, ++ 0xd0, 0xee, 0x7b, 0x05, 0xc6, 0xd2, 0x6b, 0xe9, 0x4b, 0x87, 0x79, 0x48, ++ 0xf1, 0xf4, 0x28, 0x1a, 0xbd, 0x52, 0x25, 0xea, 0xeb, 0xab, 0x74, 0xb4, ++ 0x8e, 0x6c, 0x0c, 0xed, 0x83, 0x88, 0x2b, 0x2f, 0x9d, 0xeb, 0x58, 0x0e, ++ 0xcf, 0x73, 0xee, 0x16, 0x3d, 0x02, 0x3c, 0x1f, 0xe9, 0x7e, 0x98, 0xf2, ++ 0x91, 0x40, 0xdb, 0x27, 0x7d, 0xc3, 0xed, 0x3e, 0x56, 0x85, 0xf5, 0x21, ++ 0xfb, 0x5c, 0xa1, 0xdd, 0x47, 0xfc, 0xbe, 0xe2, 0xd7, 0x0d, 0x82, 0x8b, ++ 0xd6, 0xad, 0x9e, 0x57, 0xf9, 0x79, 0x4f, 0x12, 0xda, 0x57, 0xe5, 0x05, ++ 0x0b, 0x28, 0x5f, 0x8c, 0x7e, 0x2a, 0xbd, 0xeb, 0xe3, 0xf6, 0x93, 0x8e, ++ 0x76, 0xb1, 0xce, 0x6b, 0x19, 0x8f, 0x76, 0x41, 0xcc, 0xbe, 0x98, 0xa6, ++ 0x9f, 0x62, 0xbf, 0xfd, 0xd7, 0xd6, 0xef, 0x44, 0x64, 0x42, 0xbd, 0x30, ++ 0x3e, 0x1e, 0xf6, 0x4f, 0x3e, 0x5a, 0xa7, 0x89, 0x79, 0xcc, 0x46, 0x7a, ++ 0xaf, 0x8e, 0xec, 0x48, 0x35, 0xce, 0x96, 0x85, 0xb4, 0x83, 0xe7, 0x3e, ++ 0x9a, 0xf1, 0x38, 0x45, 0xfc, 0xfb, 0x93, 0xf9, 0xfb, 0xcc, 0xc1, 0xe3, ++ 0x6e, 0x26, 0x2b, 0x98, 0xa4, 0x40, 0x7f, 0xc2, 0x7d, 0x56, 0xf2, 0x67, ++ 0x9a, 0x4c, 0x50, 0x87, 0xf3, 0x11, 0x8c, 0xcc, 0x3c, 0x0a, 0x9e, 0x3f, ++ 0xad, 0xf8, 0x03, 0xd7, 0x08, 0x4c, 0xc4, 0x7a, 0x74, 0xbe, 0x30, 0xc3, ++ 0xf9, 0xda, 0x05, 0xdf, 0x66, 0x8f, 0x13, 0x4b, 0x6e, 0x47, 0x19, 0x52, ++ 0x7d, 0x94, 0x6f, 0x88, 0x61, 0xdb, 0x58, 0x7b, 0xb4, 0x0f, 0xf3, 0x38, ++ 0xa0, 0x7d, 0xd5, 0xbd, 0xce, 0x91, 0xe8, 0xcf, 0x1b, 0x01, 0x04, 0x11, ++ 0x41, 0x7b, 0x5a, 0x89, 0x53, 0xa9, 0xfe, 0x93, 0x94, 0xfc, 0xfe, 0xa5, ++ 0x28, 0xbf, 0x5f, 0x2c, 0xf8, 0x68, 0x81, 0x19, 0xe5, 0x33, 0x3a, 0x9c, ++ 0xae, 0x67, 0x6c, 0xff, 0xce, 0xd3, 0x5b, 0x82, 0x39, 0x51, 0xba, 0x34, ++ 0x5d, 0xcc, 0x62, 0x72, 0x8c, 0x5d, 0x63, 0x12, 0x9b, 0x29, 0x9f, 0xc3, ++ 0x74, 0x71, 0xb4, 0xc6, 0xcf, 0x12, 0x56, 0xec, 0x31, 0xb5, 0xee, 0xb5, ++ 0x8b, 0xd5, 0x38, 0x5f, 0x04, 0xed, 0x05, 0xcc, 0x5f, 0x62, 0x52, 0x07, ++ 0xbe, 0x57, 0x09, 0x40, 0x91, 0x63, 0xfd, 0xa6, 0x17, 0x1d, 0x9a, 0x71, ++ 0xa2, 0xe3, 0xe7, 0x68, 0xe6, 0x0d, 0x83, 0x5d, 0x1d, 0x1b, 0x17, 0x18, ++ 0x7e, 0xfc, 0x24, 0x26, 0x17, 0xc5, 0x8e, 0x9f, 0x37, 0xcc, 0xf8, 0x85, ++ 0x71, 0xe3, 0x4b, 0x09, 0xc7, 0x8f, 0x8e, 0x9b, 0xae, 0x19, 0x77, 0x9d, ++ 0xc8, 0xf9, 0x45, 0xd0, 0x6e, 0x0d, 0x25, 0xf2, 0xf3, 0x9d, 0x2d, 0xa8, ++ 0x7a, 0x1b, 0x49, 0x79, 0xb8, 0x7c, 0xb3, 0x33, 0x05, 0xdc, 0x0f, 0x08, ++ 0xfc, 0x58, 0xa4, 0x38, 0x94, 0x82, 0x37, 0x8f, 0x38, 0x9a, 0x29, 0xff, ++ 0x4c, 0x6f, 0xe5, 0xf1, 0x52, 0x83, 0x12, 0x3f, 0x39, 0x98, 0xdc, 0xc0, ++ 0xf3, 0x24, 0x72, 0xb4, 0xf9, 0x67, 0x55, 0x4c, 0x12, 0xb1, 0x7d, 0x5d, ++ 0xca, 0xac, 0xa3, 0x02, 0xb4, 0x57, 0xd9, 0xb4, 0x7a, 0xfa, 0xf4, 0x4b, ++ 0xa7, 0xf5, 0xc8, 0x77, 0xa6, 0x8b, 0x5a, 0x3d, 0xdd, 0xcb, 0x9a, 0x09, ++ 0x3f, 0x6f, 0x62, 0xda, 0xe7, 0x86, 0x1c, 0x2d, 0x1f, 0xd8, 0xa8, 0xd0, ++ 0x87, 0x2e, 0x79, 0x62, 0x84, 0xf2, 0xd4, 0x32, 0x6c, 0x94, 0x77, 0x30, ++ 0x9c, 0x5f, 0xe1, 0xdd, 0x36, 0x46, 0xf9, 0x53, 0x86, 0x24, 0x5f, 0x33, ++ 0xca, 0x38, 0x63, 0xe1, 0xa5, 0xb4, 0x75, 0x0e, 0xa8, 0x8f, 0xe0, 0xf8, ++ 0x65, 0x2f, 0x4c, 0x5d, 0x88, 0x7e, 0xa2, 0x77, 0x15, 0x3c, 0x5e, 0x07, ++ 0x74, 0x8f, 0x70, 0xac, 0x5b, 0x35, 0x72, 0xbb, 0x3e, 0x66, 0xdc, 0x3a, ++ 0x63, 0xb8, 0x00, 0xe5, 0x48, 0x9d, 0x8e, 0xe7, 0xeb, 0xd3, 0x0f, 0xe6, ++ 0x7f, 0x37, 0x23, 0x8b, 0xfc, 0xac, 0xf1, 0xf3, 0x52, 0xc6, 0x6f, 0x8c, ++ 0xdf, 0xab, 0xbe, 0x59, 0xf0, 0xb9, 0x62, 0xf6, 0xf1, 0xae, 0x42, 0x17, ++ 0x83, 0xf3, 0xad, 0xce, 0xde, 0x8e, 0x7a, 0xec, 0xe0, 0x7c, 0xa6, 0xf0, ++ 0x24, 0x9a, 0x6f, 0x30, 0xef, 0x47, 0x99, 0x2f, 0xf3, 0x8b, 0xcd, 0xf7, ++ 0x9e, 0x42, 0xcf, 0xea, 0x7c, 0xf5, 0x5f, 0xd5, 0xee, 0xaf, 0xde, 0x18, ++ 0xa1, 0xfd, 0xd5, 0xeb, 0x98, 0x92, 0xe7, 0xcf, 0xe7, 0x7b, 0x0f, 0xf7, ++ 0xe7, 0xfc, 0x02, 0xf3, 0x29, 0xf9, 0x5b, 0x83, 0xf3, 0x7d, 0x4d, 0xbb, ++ 0xbf, 0x7a, 0x53, 0x84, 0xf6, 0x57, 0x3f, 0x68, 0x4f, 0x2a, 0xf3, 0x65, ++ 0x7e, 0xb1, 0xf9, 0x4c, 0xc6, 0x66, 0x8a, 0xcf, 0x3c, 0x26, 0xf0, 0x73, ++ 0x9d, 0xbb, 0x6b, 0xd4, 0xe3, 0xe8, 0xa7, 0xbf, 0x30, 0x77, 0x95, 0x8c, ++ 0xf8, 0xa6, 0xda, 0x67, 0xb7, 0xe0, 0x0b, 0x80, 0x67, 0xb7, 0x28, 0xf9, ++ 0x4d, 0xb7, 0xe6, 0x18, 0x49, 0x6f, 0x50, 0xc7, 0xdd, 0xdd, 0x36, 0x85, ++ 0x79, 0x8d, 0xdc, 0x9f, 0x83, 0x65, 0xd1, 0x0d, 0x02, 0xe5, 0xfb, 0x8f, ++ 0x9b, 0x22, 0x78, 0x31, 0x3e, 0xb6, 0x0d, 0xe8, 0xde, 0x5b, 0x88, 0xfe, ++ 0x2a, 0x89, 0xda, 0x43, 0x6d, 0x0e, 0x2a, 0x77, 0xb4, 0xc9, 0x54, 0x7e, ++ 0x17, 0xec, 0x41, 0x2f, 0xf9, 0xad, 0x3c, 0x54, 0xff, 0x1f, 0x85, 0xdc, ++ 0xce, 0x7f, 0x6c, 0x94, 0xb4, 0x64, 0x05, 0xea, 0x0b, 0x95, 0x56, 0x9e, ++ 0xef, 0x7c, 0xc3, 0x34, 0xd0, 0x44, 0xa3, 0xf6, 0x16, 0x18, 0x60, 0x7d, ++ 0x16, 0xcc, 0x2b, 0xfc, 0x32, 0x2b, 0xdb, 0x08, 0xb5, 0xc2, 0xad, 0x1c, ++ 0x1e, 0xf6, 0xea, 0xcc, 0x10, 0x9e, 0x93, 0xb5, 0xec, 0x50, 0xa4, 0x0d, ++ 0xea, 0xa6, 0xa9, 0x7a, 0x19, 0xf3, 0xb8, 0x4d, 0x4e, 0xe6, 0x4b, 0xe4, ++ 0x8f, 0x69, 0x2d, 0xe4, 0x7e, 0x9e, 0x47, 0xd4, 0xfc, 0xf8, 0x1b, 0x05, ++ 0x1e, 0x7f, 0x07, 0x7d, 0xa4, 0x12, 0xf6, 0xbf, 0x4c, 0x01, 0x35, 0xd3, ++ 0xcf, 0x15, 0x50, 0xaf, 0xba, 0xf5, 0x6b, 0xa9, 0xa4, 0x8f, 0xd4, 0x2d, ++ 0xea, 0x4f, 0x96, 0x60, 0x1d, 0x77, 0x08, 0x65, 0x6f, 0xbb, 0x00, 0x1e, ++ 0xbf, 0x51, 0xf4, 0x91, 0x65, 0xa3, 0x39, 0x1d, 0xc7, 0xdb, 0x93, 0x76, ++ 0x94, 0x2c, 0x13, 0x31, 0x7f, 0x4f, 0x1f, 0x0a, 0xc1, 0x9f, 0x0b, 0x93, ++ 0x17, 0x92, 0x3d, 0xba, 0x70, 0x31, 0x63, 0x69, 0xf0, 0xfe, 0xad, 0xf8, ++ 0x1e, 0xc8, 0x95, 0xe3, 0x8a, 0x3e, 0xf3, 0x46, 0xbf, 0x89, 0xa1, 0xbd, ++ 0x16, 0xac, 0xe6, 0x71, 0xe7, 0x3b, 0x1e, 0xd6, 0xda, 0x91, 0x8f, 0x59, ++ 0xc2, 0x12, 0xea, 0x71, 0x8f, 0x95, 0xd9, 0x19, 0x9e, 0x47, 0x5d, 0x8b, ++ 0xb6, 0xfd, 0x11, 0x25, 0x8e, 0xb0, 0x30, 0xce, 0xae, 0xbc, 0x35, 0x2e, ++ 0xaf, 0x06, 0xb4, 0x4c, 0x9e, 0x1f, 0x82, 0x7b, 0x9e, 0xca, 0xd8, 0x03, ++ 0x85, 0xda, 0xbc, 0x9a, 0x8a, 0x42, 0x99, 0xf3, 0xb9, 0x1c, 0x3b, 0x25, ++ 0x55, 0xa7, 0xcd, 0x76, 0x8d, 0xc0, 0x78, 0xa4, 0xc9, 0x98, 0xf8, 0x1e, ++ 0x8e, 0x3a, 0xde, 0x33, 0xaa, 0x5c, 0xb6, 0x7b, 0x09, 0x0e, 0x6a, 0x1e, ++ 0x1a, 0xd3, 0xbf, 0x58, 0x46, 0xef, 0x2b, 0xf3, 0xa9, 0xef, 0x3d, 0x2d, ++ 0xbc, 0x38, 0xea, 0x4a, 0xfe, 0x4e, 0xd0, 0xdb, 0x3e, 0xec, 0x2f, 0xe2, ++ 0xf2, 0x19, 0xf5, 0xeb, 0x8d, 0x71, 0xeb, 0xbc, 0x30, 0x37, 0xef, 0x1b, ++ 0xd5, 0x2c, 0x11, 0xde, 0x0e, 0x88, 0xe8, 0x57, 0x50, 0xd7, 0xff, 0xbf, ++ 0x0b, 0x5f, 0xab, 0xd1, 0xa7, 0x01, 0x78, 0x74, 0x7c, 0xc6, 0xa7, 0x13, ++ 0x29, 0x0e, 0xc3, 0x72, 0x68, 0xdf, 0xb7, 0xa8, 0xf8, 0xa3, 0xe4, 0x57, ++ 0x2d, 0x1c, 0xac, 0x8b, 0x4c, 0x8c, 0xc9, 0xaf, 0x63, 0x8e, 0x01, 0x37, ++ 0x9e, 0xf7, 0x5b, 0x37, 0x26, 0x79, 0x36, 0x12, 0xfe, 0x29, 0xfa, 0x43, ++ 0xf8, 0x1d, 0xdd, 0xe5, 0xa4, 0xcf, 0x3f, 0xde, 0xe0, 0x3a, 0x1c, 0xde, ++ 0x5c, 0xee, 0x8f, 0xab, 0x96, 0x28, 0x3f, 0x48, 0x19, 0x6f, 0x38, 0x38, ++ 0xc7, 0xe7, 0x3f, 0xa8, 0x7e, 0x1b, 0xfa, 0xc5, 0xe4, 0x1f, 0xb6, 0x6f, ++ 0xe7, 0xf9, 0x8f, 0x59, 0xf6, 0xaa, 0x8f, 0xf1, 0x9e, 0x14, 0x3e, 0x3f, ++ 0xad, 0xc1, 0x2b, 0xed, 0x7d, 0xa8, 0xf6, 0xde, 0xe7, 0x04, 0xb4, 0x2f, ++ 0xbe, 0x8d, 0xf7, 0xbb, 0xc4, 0xe8, 0x7c, 0xe8, 0xbf, 0x0d, 0x92, 0xfe, ++ 0xaa, 0xbd, 0xa7, 0x15, 0xbf, 0x2e, 0xf5, 0xfe, 0x8d, 0xba, 0x9e, 0x76, ++ 0x23, 0x2b, 0x22, 0x7b, 0x54, 0x07, 0xfc, 0x01, 0xe6, 0x9b, 0x67, 0xeb, ++ 0x17, 0x05, 0x19, 0xfd, 0xf1, 0x03, 0x22, 0xc5, 0xcb, 0xc7, 0x72, 0x3f, ++ 0x11, 0xe6, 0x08, 0xf3, 0x7b, 0x2f, 0x5c, 0xcf, 0xd3, 0x67, 0xeb, 0x78, ++ 0x3e, 0xc7, 0x18, 0x99, 0xeb, 0x7d, 0xae, 0x81, 0xd1, 0xb1, 0xf1, 0xa2, ++ 0x8f, 0x0a, 0xb9, 0x5c, 0x9f, 0x97, 0xf4, 0x66, 0x8b, 0x0c, 0xf2, 0xef, ++ 0xfd, 0xc2, 0xc0, 0x42, 0xcc, 0x57, 0x9a, 0x37, 0xe2, 0xcd, 0x16, 0x27, ++ 0xd4, 0x4f, 0x15, 0x36, 0x2f, 0xc4, 0x7c, 0xa6, 0x79, 0xd9, 0x6f, 0x7e, ++ 0xea, 0x04, 0x9d, 0xed, 0xb7, 0x85, 0x5f, 0xe1, 0xf5, 0x92, 0x37, 0x3f, ++ 0xcd, 0x83, 0xfa, 0xff, 0x2a, 0x5c, 0xc5, 0xeb, 0xd3, 0x18, 0x01, 0xe5, ++ 0x77, 0x85, 0xab, 0x17, 0x22, 0x5f, 0xfd, 0xa8, 0x50, 0x52, 0xfc, 0x97, ++ 0x91, 0x1c, 0x9c, 0x6f, 0x9e, 0xc0, 0xf1, 0xe5, 0x8b, 0x96, 0x7a, 0x93, ++ 0x2e, 0x61, 0x3c, 0xff, 0x7c, 0xa1, 0xea, 0x4f, 0x64, 0x06, 0x9c, 0xc7, ++ 0xd7, 0xf3, 0xaf, 0x27, 0x91, 0x1f, 0xf9, 0x54, 0xff, 0xab, 0x57, 0x1b, ++ 0x87, 0x64, 0xd8, 0x94, 0x89, 0xf7, 0x86, 0x94, 0x9f, 0x3d, 0x85, 0xf4, ++ 0x99, 0x39, 0xf8, 0x37, 0xc0, 0xf3, 0x66, 0x31, 0xdc, 0x8b, 0xef, 0xeb, ++ 0xcc, 0x61, 0x82, 0xeb, 0x58, 0xcc, 0xa3, 0x29, 0x22, 0x14, 0x78, 0xe2, ++ 0xf2, 0x15, 0xf2, 0x25, 0xe2, 0xf1, 0x48, 0x00, 0x74, 0x6d, 0x45, 0x7d, ++ 0x59, 0x96, 0x58, 0x1d, 0xe8, 0xc7, 0xed, 0xad, 0xcc, 0x6f, 0xc9, 0x8f, ++ 0xc1, 0x73, 0xe6, 0x55, 0xf0, 0x9c, 0xe7, 0xf5, 0xa8, 0xeb, 0x51, 0xe7, ++ 0x1f, 0xb2, 0x2e, 0x38, 0x52, 0x31, 0x2d, 0x76, 0x5d, 0xdb, 0x68, 0x1c, ++ 0x75, 0x5d, 0xe7, 0xca, 0x4c, 0x41, 0xbc, 0x5f, 0xa6, 0xc6, 0x55, 0xd5, ++ 0x75, 0x9d, 0x13, 0x06, 0x9e, 0x41, 0x67, 0xc4, 0x9c, 0x92, 0x9d, 0x8b, ++ 0xf1, 0x5c, 0xcf, 0x25, 0x0f, 0x8c, 0x16, 0xa0, 0xfe, 0xfc, 0xd8, 0xb7, ++ 0xe9, 0x9c, 0xcf, 0x65, 0x0c, 0x3c, 0x23, 0x78, 0x62, 0xea, 0x06, 0x7e, ++ 0x8e, 0x23, 0xc7, 0x3e, 0x4a, 0x7a, 0x4f, 0x8b, 0xe0, 0x1d, 0x39, 0x16, ++ 0xf9, 0xa5, 0xd1, 0x46, 0xf7, 0xd8, 0x3a, 0x15, 0x3d, 0x6f, 0x53, 0x86, ++ 0x3f, 0xc8, 0xb8, 0x7e, 0x4f, 0xf9, 0x8f, 0xc1, 0x5c, 0x7e, 0x3f, 0xa0, ++ 0x7a, 0xa2, 0xe0, 0x8d, 0x8d, 0xfb, 0x3b, 0xc7, 0xf2, 0xb8, 0x49, 0x48, ++ 0x29, 0x67, 0x9a, 0x36, 0x37, 0x9f, 0x00, 0x7c, 0x0c, 0xec, 0x15, 0xd8, ++ 0x1a, 0xe8, 0x1f, 0xb8, 0x74, 0xc1, 0x88, 0xf6, 0xf8, 0xbc, 0x9e, 0x53, ++ 0x46, 0xb4, 0xbb, 0x9b, 0xf6, 0x9e, 0x32, 0xa2, 0x5d, 0xdd, 0x84, 0x75, ++ 0x18, 0xa7, 0x69, 0x9b, 0x91, 0xf8, 0x55, 0x3c, 0xbc, 0x77, 0x8e, 0xd5, ++ 0x6b, 0xe2, 0xeb, 0xaa, 0x3d, 0x71, 0x38, 0xb7, 0x70, 0x9d, 0x1d, 0xd6, ++ 0xd3, 0xb4, 0x42, 0xf0, 0x60, 0xca, 0xec, 0xaa, 0xfd, 0xa9, 0x33, 0xb1, ++ 0xbe, 0x6a, 0x39, 0xee, 0x92, 0xb1, 0xdb, 0x6f, 0xd8, 0x33, 0x13, 0xd1, ++ 0xa5, 0xde, 0xd7, 0xbb, 0x0e, 0xcb, 0x65, 0xac, 0xff, 0x30, 0xde, 0x9f, ++ 0x5b, 0xe2, 0xd7, 0xea, 0xf9, 0x4b, 0x1b, 0xb4, 0x7a, 0x79, 0x7d, 0xb3, ++ 0x56, 0x9f, 0x5e, 0xb6, 0x19, 0x4e, 0x07, 0xe4, 0xd7, 0xb2, 0xd6, 0x6c, ++ 0xcd, 0x7b, 0x0c, 0x35, 0x64, 0x58, 0xcf, 0x12, 0xe5, 0x3c, 0x97, 0x38, ++ 0x1e, 0x8d, 0xe8, 0xc7, 0x63, 0x3d, 0xe6, 0x5e, 0x8e, 0x40, 0x64, 0x4d, ++ 0xfe, 0x9d, 0xa5, 0x7c, 0x07, 0x50, 0x6a, 0xfd, 0x16, 0xf3, 0x7a, 0x04, ++ 0xa2, 0xe3, 0xa6, 0x5a, 0x33, 0xf9, 0x5f, 0x0f, 0xe7, 0xf2, 0x7c, 0xfa, ++ 0xc0, 0x4a, 0x3d, 0xe5, 0x09, 0x05, 0x10, 0x1d, 0xb0, 0xde, 0x2c, 0x28, ++ 0xfe, 0x2c, 0x2f, 0xf1, 0x47, 0x55, 0x7e, 0xcf, 0xec, 0x3e, 0x7f, 0x24, ++ 0x1b, 0xdf, 0x5f, 0x69, 0x20, 0x38, 0xb0, 0xa0, 0x37, 0x82, 0x7e, 0xfd, ++ 0x5a, 0x05, 0x9f, 0x96, 0xd5, 0xd6, 0x7c, 0x8c, 0x78, 0x56, 0x2b, 0xdf, ++ 0xc7, 0xe5, 0xf8, 0x98, 0x5d, 0x06, 0xf2, 0xaf, 0xf8, 0xb9, 0x3e, 0x2e, ++ 0x2b, 0xfe, 0xef, 0xba, 0xee, 0xc7, 0xaa, 0xd3, 0x50, 0xff, 0x6c, 0x11, ++ 0xc8, 0xbf, 0xb1, 0xb4, 0x41, 0xab, 0xaf, 0xd7, 0xe3, 0x1f, 0xa8, 0xbf, ++ 0xb5, 0x0a, 0xa1, 0xb0, 0x13, 0xe1, 0xa4, 0x6d, 0x5f, 0xd6, 0xaa, 0xad, ++ 0xdf, 0x35, 0x56, 0x91, 0x63, 0x25, 0xac, 0x04, 0xe9, 0xa4, 0x61, 0xac, ++ 0x20, 0x12, 0xdd, 0x28, 0xf5, 0x3f, 0xe6, 0xfe, 0xe2, 0x8d, 0x30, 0x4c, ++ 0xf4, 0x90, 0xe0, 0xbb, 0x7f, 0x2c, 0x1c, 0xd0, 0x4a, 0x63, 0x78, 0x3c, ++ 0xca, 0xb5, 0x87, 0x04, 0x3f, 0xd5, 0xd5, 0x76, 0x78, 0xde, 0xc4, 0xe5, ++ 0x0e, 0x97, 0xf7, 0x3a, 0xa0, 0x28, 0xe2, 0xbb, 0x06, 0xee, 0x57, 0x08, ++ 0x36, 0x0a, 0x84, 0x8f, 0x4b, 0x87, 0xc8, 0xff, 0x18, 0xfd, 0x40, 0x3f, ++ 0xb4, 0xfe, 0xcc, 0x58, 0x2e, 0xdf, 0xda, 0x2d, 0xbe, 0x16, 0xb2, 0x97, ++ 0x5e, 0x15, 0x24, 0xd4, 0x47, 0xaa, 0x45, 0xaf, 0x98, 0xe6, 0x8e, 0xda, ++ 0xb3, 0xf1, 0xf8, 0xf8, 0xac, 0x82, 0xdf, 0x6f, 0xb0, 0x7e, 0x37, 0xae, ++ 0xab, 0x10, 0x81, 0x0e, 0xf0, 0x2f, 0x5c, 0x38, 0x22, 0x84, 0xfe, 0xb0, ++ 0xc2, 0x9f, 0x2c, 0xa7, 0x7c, 0xc7, 0xc2, 0x0a, 0xc1, 0xa3, 0x23, 0x7a, ++ 0xd6, 0xb1, 0xd6, 0x72, 0x2c, 0x45, 0xe2, 0x0f, 0xa8, 0x6f, 0x5a, 0xa0, ++ 0x2c, 0xd4, 0x77, 0xd5, 0x12, 0xbf, 0x9e, 0x60, 0x94, 0x78, 0x3e, 0xa1, ++ 0x83, 0xc5, 0xf2, 0x01, 0xef, 0x73, 0x4c, 0xc0, 0xbc, 0x3e, 0x5c, 0x3a, ++ 0xce, 0x7b, 0x73, 0xce, 0xd1, 0xcf, 0xf0, 0x1c, 0x6f, 0xd9, 0xfa, 0xe8, ++ 0x79, 0xe4, 0x77, 0xae, 0x7c, 0x6f, 0xf9, 0x63, 0xb0, 0xbe, 0x4d, 0x16, ++ 0x3e, 0xff, 0xa6, 0xfd, 0x02, 0xe9, 0xaf, 0x4d, 0xee, 0x23, 0xc4, 0x17, ++ 0x47, 0x02, 0x9a, 0xe0, 0xbc, 0x4d, 0x0e, 0x85, 0x3f, 0x76, 0x03, 0x7f, ++ 0x54, 0xf7, 0x0f, 0xe7, 0x3d, 0x12, 0xf9, 0x15, 0x5e, 0x10, 0x99, 0xeb, ++ 0xa6, 0x79, 0x47, 0xa9, 0xf1, 0x01, 0x35, 0xdf, 0x36, 0x5c, 0xa5, 0xbb, ++ 0x0c, 0xe7, 0x37, 0x52, 0x99, 0x77, 0x67, 0xa9, 0x4c, 0xfb, 0xce, 0xbc, ++ 0xaf, 0x4b, 0xc0, 0x7d, 0xe7, 0xb2, 0xe0, 0x1a, 0xf4, 0x13, 0xfd, 0xf3, ++ 0x58, 0x46, 0x70, 0x54, 0x4b, 0xd5, 0x8f, 0xbf, 0x38, 0x1a, 0xc7, 0x76, ++ 0xe2, 0x79, 0x36, 0x3a, 0xfa, 0x8d, 0xa4, 0x7f, 0x2b, 0x71, 0xec, 0x04, ++ 0xfd, 0x4a, 0x12, 0xf6, 0xf3, 0x32, 0x8d, 0x1f, 0x61, 0xa6, 0xfe, 0x52, ++ 0x0a, 0xc6, 0x9b, 0x57, 0xbd, 0x9a, 0x7f, 0xc5, 0x7c, 0x0b, 0xbd, 0x59, ++ 0xa7, 0xa1, 0x57, 0x83, 0x64, 0xd5, 0xd0, 0xf5, 0xcd, 0x45, 0x5a, 0x3a, ++ 0x9f, 0xe7, 0xd1, 0xd2, 0xf7, 0xad, 0x53, 0xf2, 0x35, 0xed, 0xf3, 0xbd, ++ 0x25, 0x9a, 0xf6, 0x85, 0x35, 0x15, 0x9a, 0xfa, 0x62, 0xdf, 0x34, 0x4d, ++ 0xff, 0xdb, 0x6a, 0x67, 0x68, 0xed, 0x7d, 0xc7, 0x1c, 0x4d, 0x7f, 0x8b, ++ 0xbc, 0x40, 0x53, 0x4f, 0x2a, 0xba, 0x5d, 0xd3, 0x3f, 0xd9, 0x73, 0xa7, ++ 0x96, 0xdf, 0xd8, 0xbb, 0x28, 0xaf, 0xc0, 0x68, 0x0e, 0xf6, 0xfb, 0x01, ++ 0x0e, 0x9d, 0x80, 0xab, 0x53, 0xd2, 0xa2, 0xfc, 0xba, 0x24, 0xc5, 0x8c, ++ 0x49, 0xc7, 0xcc, 0x5a, 0x61, 0xb1, 0x61, 0xd9, 0x59, 0x66, 0x0a, 0xe3, ++ 0xb9, 0x75, 0x66, 0xf1, 0x38, 0xab, 0xe9, 0xb5, 0x07, 0x1c, 0x61, 0x84, ++ 0xfa, 0x88, 0x17, 0xcd, 0x95, 0x50, 0xbe, 0x20, 0x84, 0xaa, 0x30, 0x5e, ++ 0x64, 0x56, 0xec, 0xbc, 0xe2, 0x87, 0x99, 0x86, 0x9f, 0x8f, 0x2d, 0xe1, ++ 0x78, 0xae, 0x96, 0xef, 0x8f, 0xf5, 0x7f, 0x5c, 0x04, 0xa5, 0x7b, 0xb7, ++ 0x9c, 0xcd, 0xf3, 0xa7, 0x23, 0xc5, 0x78, 0x3e, 0x66, 0x74, 0x20, 0x22, ++ 0x1e, 0xef, 0x33, 0x93, 0xde, 0x31, 0x21, 0x4e, 0xff, 0xfd, 0x5e, 0x69, ++ 0xe5, 0x6f, 0x51, 0xae, 0xb8, 0x1f, 0xf6, 0xce, 0x26, 0xbf, 0x54, 0x37, ++ 0x93, 0xf0, 0xfe, 0xec, 0x0e, 0x23, 0xcf, 0x73, 0x0a, 0xee, 0xe3, 0xf9, ++ 0xb4, 0xee, 0xee, 0x7e, 0x9d, 0x37, 0x86, 0xde, 0x02, 0x45, 0x5c, 0xde, ++ 0x7f, 0xd3, 0x57, 0x45, 0x79, 0x4b, 0x4d, 0x3d, 0x20, 0xcd, 0x10, 0xbf, ++ 0xb7, 0x9e, 0x36, 0xa2, 0xdf, 0xae, 0xa9, 0xa7, 0x37, 0x05, 0xe5, 0xc6, ++ 0x78, 0xdf, 0x69, 0x23, 0xea, 0xd7, 0xd1, 0xe7, 0x8a, 0x3c, 0x11, 0x07, ++ 0xac, 0x18, 0xbf, 0xfc, 0x97, 0xae, 0xc4, 0xf9, 0x69, 0x63, 0x8a, 0x8c, ++ 0x34, 0xfe, 0x11, 0x85, 0xdf, 0xd6, 0x3f, 0xc0, 0xf9, 0x2d, 0x20, 0xdc, ++ 0x5c, 0xb4, 0x8f, 0x54, 0xfe, 0x59, 0xbf, 0x87, 0xef, 0xaf, 0x7e, 0xb1, ++ 0x91, 0xe8, 0x5b, 0xe5, 0xa3, 0xc0, 0x3f, 0x35, 0xf1, 0xb0, 0x78, 0xbe, ++ 0xbc, 0xf4, 0x86, 0xd0, 0x3a, 0xa4, 0x5d, 0xe0, 0xa3, 0x1a, 0xfb, 0x65, ++ 0xd9, 0xa2, 0x59, 0x1f, 0xa3, 0x3d, 0xc4, 0x58, 0x98, 0xf4, 0x18, 0xe0, ++ 0xa3, 0xda, 0xf6, 0x9c, 0xf5, 0x44, 0xdf, 0xcb, 0xe2, 0xec, 0x9b, 0xe4, ++ 0x22, 0xe0, 0xa7, 0xa8, 0x47, 0x94, 0x30, 0xf7, 0x65, 0xa0, 0x97, 0x93, ++ 0x3e, 0x5d, 0xc2, 0x7d, 0xb9, 0x4b, 0xf8, 0xf7, 0x02, 0x4e, 0xfa, 0x67, ++ 0x10, 0xbc, 0xbf, 0x09, 0x70, 0x43, 0xbb, 0xf1, 0x9b, 0x43, 0xe0, 0xc4, ++ 0xe1, 0x77, 0x35, 0xf8, 0xbc, 0xa4, 0xf8, 0x13, 0xd5, 0x73, 0x8a, 0xef, ++ 0x57, 0x56, 0xc2, 0xf9, 0xe8, 0x4b, 0xc3, 0xf0, 0xcb, 0x07, 0x8a, 0x78, ++ 0xfb, 0x0e, 0x21, 0x52, 0x8e, 0xcc, 0x2c, 0xe0, 0xb3, 0x12, 0x9e, 0x2e, ++ 0x35, 0x9b, 0x17, 0x63, 0xfe, 0xc1, 0x91, 0xdc, 0x3f, 0xad, 0xc7, 0x78, ++ 0x42, 0xfd, 0x0f, 0x04, 0xb4, 0x65, 0xd9, 0xaf, 0x7b, 0x5f, 0xcb, 0xc4, ++ 0x7c, 0x04, 0xe3, 0x9e, 0xc3, 0x99, 0x98, 0x27, 0x11, 0xe8, 0x3a, 0x9c, ++ 0xc9, 0x00, 0x4e, 0x2b, 0x0d, 0xf2, 0x1a, 0xd4, 0x8b, 0x01, 0x0f, 0x3c, ++ 0x6b, 0xe0, 0x5c, 0x9a, 0xba, 0xc3, 0xb4, 0xfe, 0xc6, 0xae, 0x8a, 0x5e, ++ 0x7c, 0xde, 0xd8, 0x2d, 0x78, 0x90, 0x15, 0x06, 0xf6, 0x9e, 0x9f, 0x45, ++ 0xfb, 0x64, 0xfd, 0xeb, 0x51, 0x8f, 0xdf, 0x31, 0xcc, 0xba, 0xa6, 0x15, ++ 0x71, 0x7d, 0x78, 0x56, 0x91, 0xcc, 0xf3, 0x98, 0xfd, 0x30, 0x27, 0xca, ++ 0xd9, 0xbd, 0x26, 0xb2, 0x63, 0xeb, 0xf7, 0x00, 0x1f, 0xc2, 0x75, 0xed, ++ 0x17, 0xe8, 0x5e, 0xc6, 0x8e, 0x0d, 0xe6, 0xda, 0x44, 0xfa, 0xc9, 0x64, ++ 0x84, 0x37, 0xc0, 0xe9, 0xd0, 0x06, 0x23, 0xc3, 0x38, 0xca, 0x4a, 0x78, ++ 0x1f, 0xf7, 0x71, 0x24, 0xf7, 0x88, 0xd1, 0x8c, 0x78, 0xb3, 0x47, 0x20, ++ 0x9b, 0x30, 0xd0, 0x75, 0x62, 0x31, 0xfa, 0xe3, 0x03, 0x2d, 0x06, 0x86, ++ 0x71, 0x5b, 0x75, 0x7d, 0x67, 0x72, 0x23, 0xef, 0xe3, 0xfe, 0xdf, 0x59, ++ 0x61, 0x60, 0x78, 0x8f, 0xb0, 0x7d, 0x05, 0x8f, 0xc7, 0xbe, 0xd3, 0xa2, ++ 0xa7, 0x71, 0xf4, 0x77, 0x1b, 0xa8, 0xbe, 0xe4, 0x5e, 0x9e, 0x37, 0x7c, ++ 0x70, 0xc5, 0x6f, 0xd7, 0x67, 0xc3, 0xb8, 0xef, 0xac, 0x14, 0x28, 0xdf, ++ 0x7e, 0xc6, 0xdd, 0xff, 0x76, 0x04, 0xeb, 0x4b, 0xee, 0xe5, 0x7a, 0x50, ++ 0x3c, 0xfe, 0x0e, 0xe2, 0x6b, 0x1c, 0x7e, 0x2e, 0xf1, 0x6b, 0xf1, 0x6e, ++ 0x08, 0x9e, 0x36, 0x7c, 0x31, 0x3c, 0xbd, 0x33, 0x8a, 0xa7, 0xe3, 0x51, ++ 0xce, 0xc2, 0xb9, 0xcf, 0x1c, 0x89, 0xf8, 0xf3, 0x20, 0xa3, 0x7b, 0x8c, ++ 0xb5, 0x97, 0x0e, 0x1a, 0x46, 0xc2, 0x7a, 0xf3, 0xd6, 0x4b, 0x1e, 0x0c, ++ 0xed, 0x96, 0xea, 0x43, 0xeb, 0x32, 0x91, 0x2f, 0x1c, 0xe4, 0xed, 0x65, ++ 0x2b, 0xb7, 0x0b, 0x9c, 0xbf, 0xc8, 0x74, 0xbf, 0x3d, 0xbb, 0xd3, 0xc8, ++ 0xd0, 0x6e, 0x7c, 0x40, 0x39, 0xaf, 0x07, 0x94, 0xf3, 0x92, 0xd9, 0x80, ++ 0x80, 0xf9, 0x6e, 0x4c, 0x8c, 0xe4, 0xe1, 0xfa, 0x9c, 0x4a, 0x7e, 0xd7, ++ 0xcb, 0x06, 0x56, 0xbb, 0x07, 0xfd, 0x48, 0x22, 0xe7, 0x2f, 0xa5, 0x3f, ++ 0x74, 0x6c, 0x8f, 0xf5, 0x23, 0xb9, 0x14, 0xbe, 0xa2, 0xf2, 0xbd, 0x12, ++ 0xb0, 0xf7, 0xf7, 0x90, 0x1f, 0xba, 0x2b, 0x0b, 0xef, 0x9d, 0xbf, 0x64, ++ 0xe0, 0xfe, 0xb1, 0xd1, 0xca, 0x78, 0x05, 0xf9, 0x03, 0xb3, 0xe6, 0x43, ++ 0xf9, 0xcd, 0x22, 0xce, 0x07, 0xdb, 0x94, 0x75, 0xa8, 0x75, 0xaf, 0x82, ++ 0xff, 0xcc, 0xbe, 0x83, 0xe0, 0x3b, 0xcf, 0xcc, 0xe1, 0x3e, 0xa7, 0x35, ++ 0x5c, 0x87, 0xfb, 0xb8, 0x47, 0xf4, 0xaf, 0x2b, 0x82, 0xf6, 0xb9, 0xa3, ++ 0x7f, 0xb1, 0x92, 0x51, 0x7e, 0xe4, 0xeb, 0x6e, 0x3f, 0xf9, 0xb9, 0x8a, ++ 0x49, 0xae, 0x05, 0x94, 0xf3, 0x38, 0x38, 0xf5, 0x77, 0xdb, 0x56, 0x63, ++ 0x1e, 0xde, 0x38, 0x2b, 0x9d, 0xe3, 0xfc, 0xbe, 0xa7, 0x22, 0x78, 0xae, ++ 0x4d, 0x2e, 0x91, 0xf2, 0x0f, 0x2d, 0x05, 0x13, 0x47, 0xfa, 0xaf, 0xe0, ++ 0x47, 0x08, 0x5c, 0x94, 0x35, 0xf7, 0xf8, 0x9a, 0x7a, 0xce, 0xcf, 0xf2, ++ 0x26, 0xa0, 0xeb, 0x69, 0xca, 0x7a, 0x4b, 0x95, 0xfb, 0x7a, 0xac, 0x87, ++ 0xfb, 0x0f, 0x80, 0x1f, 0x8b, 0x53, 0xca, 0xa3, 0xfd, 0xd4, 0xfd, 0xab, ++ 0x7e, 0x0f, 0x4b, 0xc1, 0x77, 0xe9, 0x9c, 0x56, 0x7f, 0x85, 0x95, 0xf1, ++ 0x7b, 0xfc, 0x8f, 0xd1, 0xfe, 0x97, 0xae, 0x3c, 0x21, 0xe0, 0x3d, 0x95, ++ 0xdb, 0x0c, 0x5e, 0x83, 0x0d, 0xe0, 0xfc, 0x8b, 0x11, 0x6c, 0x31, 0xda, ++ 0xc1, 0xaf, 0xb7, 0x31, 0xba, 0xb7, 0x76, 0x0c, 0xef, 0xaf, 0x01, 0x2b, ++ 0x79, 0xa3, 0x4d, 0xa2, 0x7a, 0x44, 0xb9, 0xc7, 0xf6, 0x66, 0x9b, 0x4c, ++ 0xe5, 0x6d, 0x46, 0xdf, 0x6e, 0x84, 0xcf, 0xe2, 0x43, 0xcd, 0x05, 0x08, ++ 0xaf, 0x83, 0xb9, 0x4f, 0xfa, 0xf0, 0xbb, 0x0c, 0xe7, 0x8e, 0x29, 0xfa, ++ 0x2c, 0x93, 0xf8, 0xbd, 0x46, 0x05, 0xf7, 0x2e, 0xf4, 0xe8, 0x99, 0x19, ++ 0xda, 0x2f, 0xec, 0x15, 0x42, 0xe4, 0x34, 0x51, 0xd6, 0x7f, 0xc7, 0xc5, ++ 0x2c, 0xe6, 0x07, 0x7e, 0xf2, 0x2b, 0xe5, 0xbe, 0x5c, 0x63, 0xeb, 0xcf, ++ 0x89, 0xcf, 0x79, 0x1a, 0xce, 0xcf, 0x42, 0x3b, 0xa3, 0x6c, 0xe5, 0xa9, ++ 0xf5, 0x58, 0x0f, 0xb4, 0xfe, 0xdb, 0x2c, 0xd4, 0x1b, 0xde, 0x07, 0x39, ++ 0x81, 0xf8, 0x15, 0xe8, 0x16, 0x98, 0x03, 0xc6, 0xa9, 0xbb, 0x98, 0x46, ++ 0xef, 0x37, 0x76, 0x9f, 0x30, 0xa2, 0x3d, 0xff, 0x92, 0x6e, 0x60, 0x16, ++ 0xc2, 0x3f, 0x78, 0x40, 0xa0, 0x7b, 0x56, 0x81, 0xe6, 0xf3, 0xc4, 0x3f, ++ 0xb7, 0x29, 0xfe, 0x95, 0x8f, 0x8a, 0x78, 0x1c, 0x31, 0xd0, 0x53, 0xa6, ++ 0xa3, 0xf3, 0xf4, 0x16, 0x73, 0xfb, 0x44, 0x39, 0xff, 0xde, 0xe2, 0x7f, ++ 0x4f, 0x41, 0xfe, 0x65, 0x6e, 0x95, 0x8f, 0x4f, 0xc3, 0x73, 0x3c, 0xaa, ++ 0xa7, 0x73, 0xdc, 0x58, 0x35, 0x90, 0x22, 0x25, 0x38, 0x97, 0x93, 0x30, ++ 0x2e, 0xe6, 0x8f, 0xfc, 0x4a, 0xc9, 0xd3, 0x8b, 0x6f, 0xaf, 0x35, 0x06, ++ 0xc9, 0x2f, 0x5b, 0xab, 0xe0, 0x6d, 0x7c, 0xfb, 0x07, 0x0a, 0x3e, 0x02, ++ 0x84, 0x0d, 0x4a, 0x9e, 0x12, 0x13, 0x60, 0x3d, 0x75, 0x0a, 0x7e, 0xd5, ++ 0xe3, 0xf7, 0x61, 0xd2, 0x50, 0xcf, 0x17, 0xc2, 0x56, 0xa0, 0xdb, 0xfa, ++ 0x9e, 0x19, 0xe4, 0xdf, 0xa8, 0x6f, 0xbe, 0xf2, 0xf7, 0x5e, 0x86, 0xc3, ++ 0xb7, 0x6b, 0x2d, 0x9b, 0x18, 0xf7, 0x6f, 0xa8, 0x75, 0xb4, 0xbf, 0x62, ++ 0xf3, 0xb8, 0xd0, 0xfe, 0xd2, 0xde, 0x4b, 0x0f, 0xd2, 0x3e, 0x4c, 0xb9, ++ 0xae, 0x91, 0xfe, 0x2b, 0xe8, 0x77, 0x81, 0xfe, 0x2c, 0x8a, 0x9f, 0x34, ++ 0x75, 0x32, 0x8a, 0x97, 0x34, 0x5e, 0x2c, 0xa6, 0xf2, 0xec, 0xfe, 0x47, ++ 0xe8, 0x1e, 0x94, 0xd9, 0x3a, 0xf0, 0x24, 0xca, 0x05, 0x56, 0xa8, 0x23, ++ 0xbd, 0xbe, 0x31, 0xa8, 0xd5, 0x6f, 0x8e, 0x17, 0x73, 0x3a, 0x38, 0x5e, ++ 0xcc, 0xe9, 0xf9, 0x52, 0x11, 0xd8, 0x27, 0x66, 0x36, 0x68, 0x9f, 0x80, ++ 0x1d, 0x72, 0x19, 0xf1, 0x12, 0xec, 0x90, 0x94, 0x3e, 0xa6, 0xb1, 0x4f, ++ 0xe2, 0x9f, 0x93, 0x7d, 0x62, 0x56, 0xfc, 0x86, 0xa0, 0x2e, 0xf9, 0x5f, ++ 0x4e, 0xb0, 0xee, 0xb7, 0x8a, 0xab, 0xc4, 0x71, 0x19, 0x48, 0x57, 0x9b, ++ 0x09, 0xbf, 0x19, 0xe0, 0x37, 0xe2, 0x55, 0xfc, 0x3e, 0x47, 0x8c, 0xe3, ++ 0xeb, 0x52, 0xe9, 0x79, 0x49, 0xdf, 0xc7, 0x46, 0xd4, 0x77, 0x03, 0xdd, ++ 0x89, 0xe9, 0xf9, 0x37, 0xc5, 0x95, 0x23, 0x70, 0xdc, 0x0d, 0xc3, 0xe4, ++ 0xe5, 0xbd, 0x5d, 0xcc, 0xf9, 0x5d, 0xe3, 0x56, 0x46, 0xf0, 0x0a, 0x6c, ++ 0x4d, 0x23, 0x38, 0x9d, 0x61, 0x5b, 0x7d, 0x55, 0x80, 0x97, 0x67, 0x60, ++ 0x1d, 0x78, 0x4f, 0xfd, 0x9c, 0xcf, 0x97, 0x94, 0x0a, 0xef, 0x9f, 0xf3, ++ 0xfb, 0x92, 0x30, 0x3e, 0xa7, 0xd2, 0x7f, 0xd3, 0x56, 0x2b, 0xbd, 0xb7, ++ 0xc1, 0xb5, 0x20, 0x1d, 0xbf, 0xab, 0xe1, 0x1a, 0xc7, 0xbf, 0xeb, 0x73, ++ 0xb6, 0x7b, 0x86, 0x19, 0xe1, 0x7c, 0xc7, 0x56, 0x4e, 0x77, 0xea, 0x7c, ++ 0xef, 0x87, 0x97, 0xa4, 0x23, 0xfd, 0x4c, 0x32, 0x0c, 0x18, 0xd1, 0x3f, ++ 0x99, 0xd3, 0x73, 0x2a, 0x05, 0xf5, 0xba, 0x49, 0xfb, 0x17, 0xa6, 0x23, ++ 0xfd, 0x0d, 0xb7, 0x4e, 0xbb, 0x72, 0x1e, 0x8d, 0xad, 0x59, 0x8b, 0xe9, ++ 0x1e, 0x10, 0xfc, 0xf4, 0x40, 0xf7, 0xf7, 0x2b, 0x72, 0x2c, 0xb0, 0x36, ++ 0x6c, 0x44, 0xf8, 0xdf, 0xdf, 0xca, 0x08, 0x7f, 0x7b, 0xf7, 0xfd, 0xba, ++ 0x09, 0xe9, 0xf7, 0x6c, 0x4f, 0x92, 0x84, 0x72, 0xf2, 0xcc, 0xab, 0x49, ++ 0x41, 0xe4, 0xf7, 0xe7, 0x0e, 0x98, 0x42, 0x3a, 0x18, 0x6a, 0xa5, 0xf2, ++ 0x3d, 0xa4, 0x33, 0x86, 0xfe, 0x5b, 0x48, 0x7f, 0xdc, 0xaf, 0xa7, 0x7c, ++ 0x85, 0xc0, 0x81, 0x3f, 0x3c, 0x89, 0xf4, 0x18, 0xd8, 0x67, 0xa2, 0x7b, ++ 0x35, 0xf7, 0xf7, 0x3c, 0x72, 0x1e, 0xe5, 0xdc, 0xca, 0x9e, 0xd9, 0x1f, ++ 0x8b, 0x58, 0xbe, 0xf8, 0xf7, 0xa5, 0x87, 0xc6, 0xd6, 0xd1, 0x8b, 0x63, ++ 0xf3, 0x8e, 0xff, 0xd0, 0xb6, 0x3b, 0x0b, 0xf9, 0xe7, 0x59, 0x91, 0xf3, ++ 0x89, 0xfb, 0xbb, 0x5f, 0x21, 0x7d, 0xf6, 0xfe, 0x4b, 0x17, 0xc6, 0x63, ++ 0xfe, 0xe0, 0x99, 0x57, 0xff, 0x63, 0x32, 0xf2, 0xb3, 0xc0, 0x4f, 0x2e, ++ 0x4c, 0x46, 0x3e, 0x16, 0xf8, 0xf1, 0x85, 0xc9, 0xd8, 0x1e, 0xf8, 0x61, ++ 0x52, 0x73, 0x22, 0xfd, 0x64, 0x66, 0x09, 0xff, 0xce, 0x86, 0x2a, 0x1f, ++ 0x9d, 0x6f, 0x89, 0x1a, 0x3f, 0xcb, 0x39, 0x05, 0x3f, 0x9c, 0x1d, 0x9b, ++ 0x6b, 0xf0, 0xbb, 0x05, 0x93, 0x4e, 0x2c, 0xa2, 0x38, 0x80, 0xda, 0x3e, ++ 0xa9, 0x40, 0xe7, 0xc3, 0xfe, 0x93, 0xde, 0xae, 0x4e, 0xbf, 0x3b, 0xe6, ++ 0xbd, 0x8e, 0x88, 0x48, 0xf9, 0x12, 0x13, 0x4f, 0x54, 0x27, 0xad, 0x88, ++ 0xc1, 0xcb, 0x0f, 0x8a, 0x0d, 0xaa, 0x9f, 0xee, 0xda, 0xfc, 0x23, 0x4a, ++ 0x1e, 0x82, 0xea, 0x1f, 0xd9, 0x10, 0x11, 0xf9, 0x3d, 0xbb, 0x06, 0x7d, ++ 0x08, 0xf3, 0x7b, 0x97, 0x46, 0x78, 0xfc, 0x3d, 0xde, 0x6f, 0xc2, 0x98, ++ 0xef, 0xe6, 0x52, 0x3c, 0xef, 0x7b, 0x33, 0x3c, 0xf8, 0xbd, 0x1e, 0xbc, ++ 0xa7, 0x8e, 0x71, 0x91, 0x73, 0x0f, 0x16, 0x84, 0xe8, 0x9e, 0x7a, 0xd0, ++ 0x7c, 0xd8, 0x15, 0xa3, 0x07, 0x2d, 0x89, 0xe8, 0xc2, 0x26, 0xf4, 0x83, ++ 0xf4, 0x98, 0xc2, 0xa8, 0x0f, 0x2d, 0x89, 0x88, 0xa7, 0x4c, 0x31, 0x7e, ++ 0x91, 0xf7, 0xa5, 0x97, 0xd7, 0xa1, 0x1a, 0xbf, 0xc4, 0xaf, 0xf5, 0x63, ++ 0xc4, 0xfb, 0x41, 0xe0, 0x97, 0x2c, 0xc6, 0xc4, 0x4f, 0xea, 0x5b, 0xc2, ++ 0x06, 0x55, 0x4e, 0xcd, 0x83, 0xf9, 0x7f, 0xb1, 0x8e, 0x49, 0x18, 0xb7, ++ 0x19, 0xe2, 0x1f, 0xa9, 0xfd, 0x12, 0xf9, 0x61, 0xe2, 0xfd, 0x24, 0x72, ++ 0xe4, 0x09, 0x33, 0xbe, 0x27, 0xbb, 0xf8, 0xf7, 0x75, 0x54, 0x3d, 0x13, ++ 0xcf, 0x6b, 0x6f, 0x02, 0x7a, 0xb7, 0x29, 0x74, 0xa2, 0xd2, 0x51, 0x47, ++ 0x44, 0x47, 0xe7, 0xd0, 0x11, 0xa9, 0x32, 0xbb, 0xa0, 0x34, 0x28, 0xed, ++ 0x7b, 0x41, 0x6c, 0x06, 0x31, 0x2f, 0xa8, 0x67, 0xe1, 0x4e, 0xb4, 0xd3, ++ 0x3b, 0x2e, 0xdd, 0x96, 0x84, 0xf0, 0xea, 0x78, 0x6b, 0x01, 0xc3, 0xef, ++ 0x47, 0x9c, 0x93, 0xaa, 0xcc, 0x05, 0xf8, 0xde, 0xa5, 0x2f, 0x99, 0x17, ++ 0xbb, 0xa3, 0xf8, 0x31, 0x84, 0x7f, 0x8c, 0xe3, 0x72, 0x65, 0x50, 0x1f, ++ 0x18, 0x46, 0xce, 0x1d, 0x51, 0xf8, 0xd6, 0xdf, 0x4b, 0xde, 0xf5, 0x8d, ++ 0xfb, 0xef, 0x21, 0xef, 0xc0, 0xae, 0x7e, 0x6d, 0x1c, 0xb7, 0xab, 0x97, ++ 0x72, 0xbf, 0x07, 0xb7, 0xab, 0xe3, 0xe5, 0x84, 0xca, 0x7f, 0xd5, 0x71, ++ 0x3f, 0x53, 0xe0, 0x3d, 0x94, 0xff, 0x7e, 0x4c, 0xfa, 0x0b, 0xd8, 0xbf, ++ 0xc4, 0x7f, 0x3f, 0x1b, 0x27, 0xf3, 0xef, 0x34, 0xf4, 0xcc, 0x4f, 0x27, ++ 0xbb, 0xf8, 0xad, 0x45, 0xe9, 0xb2, 0x6d, 0xe8, 0xf8, 0xf9, 0xa2, 0x47, ++ 0x97, 0xe6, 0x1e, 0x3a, 0xbe, 0xaa, 0xaf, 0x05, 0x82, 0xde, 0xc3, 0x66, ++ 0xb4, 0x63, 0xbc, 0x3c, 0xff, 0x34, 0xb0, 0x48, 0xa0, 0xef, 0x48, 0x05, ++ 0x7c, 0x02, 0xe9, 0xd9, 0x81, 0x3a, 0x43, 0x08, 0xdb, 0xd5, 0xf5, 0x44, ++ 0x16, 0xf1, 0xb8, 0xe0, 0x62, 0x8f, 0x40, 0xdf, 0x05, 0x51, 0xf5, 0x3f, ++ 0x55, 0x3f, 0x1c, 0x6c, 0x9f, 0x08, 0xed, 0xce, 0xa8, 0xbe, 0xa8, 0xea, ++ 0x85, 0x11, 0x1f, 0xf7, 0x8b, 0x2e, 0xf2, 0x1a, 0xa8, 0xfd, 0x36, 0xa3, ++ 0x7f, 0x60, 0xdc, 0x24, 0xdc, 0x9f, 0x85, 0x9e, 0x4f, 0x9a, 0xca, 0xc7, ++ 0x05, 0x3e, 0x70, 0x18, 0xfd, 0x9f, 0xb7, 0x7d, 0x59, 0xa0, 0xef, 0x76, ++ 0xa9, 0xfa, 0xa2, 0x8a, 0x9f, 0xf1, 0xfa, 0xe4, 0x27, 0x3d, 0xf9, 0x57, ++ 0xfc, 0x1e, 0xdd, 0x36, 0x05, 0x2f, 0x55, 0xfa, 0x1a, 0x1d, 0x47, 0x17, ++ 0xaa, 0x9c, 0x72, 0x29, 0xf0, 0x69, 0x42, 0x39, 0x9d, 0x8e, 0x72, 0xfa, ++ 0x33, 0x63, 0xbf, 0x6d, 0x78, 0xbd, 0x1b, 0xe4, 0xb4, 0x58, 0x4c, 0xef, ++ 0x31, 0xc2, 0xdb, 0x89, 0x6f, 0x8b, 0xbe, 0x44, 0x76, 0xf7, 0xb7, 0xc6, ++ 0x71, 0x7e, 0x6c, 0x2f, 0x56, 0xce, 0x2d, 0x72, 0xa8, 0x12, 0xd7, 0x9b, ++ 0xcb, 0x22, 0x94, 0x17, 0x35, 0x9c, 0xfc, 0xfc, 0xb4, 0x98, 0xd3, 0xc3, ++ 0x70, 0xed, 0xae, 0x71, 0x5c, 0xcf, 0xb9, 0x1a, 0x1d, 0x4f, 0x2f, 0xfe, ++ 0xfb, 0xd2, 0xf1, 0xb4, 0xe2, 0xff, 0x1e, 0x74, 0x3c, 0xa8, 0xff, 0x19, ++ 0x13, 0xef, 0xf3, 0xad, 0xe2, 0xca, 0x6a, 0x3c, 0x7f, 0xab, 0xbe, 0x99, ++ 0xee, 0x4d, 0xb1, 0x9f, 0x1a, 0xc8, 0x6f, 0x1d, 0xdf, 0xef, 0x33, 0x05, ++ 0xfe, 0x20, 0xcf, 0x34, 0x78, 0x7c, 0x38, 0xd7, 0xa8, 0x43, 0xbb, 0x27, ++ 0xd0, 0xc0, 0xed, 0xfe, 0xce, 0x54, 0xf9, 0x38, 0xd9, 0x27, 0xaf, 0xf1, ++ 0x7b, 0xf8, 0xf7, 0x2b, 0xf9, 0x4a, 0xf7, 0x5d, 0x94, 0xa8, 0xec, 0xc4, ++ 0x0f, 0x85, 0x61, 0xfb, 0x03, 0x4e, 0xf2, 0xdb, 0xdc, 0xb7, 0xfb, 0x84, ++ 0xc1, 0x0b, 0xef, 0x2f, 0x6d, 0x11, 0xca, 0xd0, 0x1f, 0xb4, 0xb4, 0x41, ++ 0xbb, 0x9f, 0xce, 0x0c, 0xef, 0xec, 0x58, 0x3f, 0x78, 0xe7, 0xa8, 0x2e, ++ 0x8a, 0x2b, 0x04, 0x77, 0xe6, 0xcb, 0x38, 0x7e, 0x3d, 0x6e, 0x16, 0xfd, ++ 0x21, 0x9d, 0x59, 0x21, 0x8c, 0x3d, 0x36, 0xa1, 0x1f, 0x67, 0x02, 0x3e, ++ 0x8f, 0xb9, 0x87, 0x01, 0xf3, 0x34, 0x2a, 0xcf, 0xa7, 0x29, 0xfe, 0x1d, ++ 0x16, 0xa7, 0x07, 0xfc, 0xb8, 0xf7, 0x1d, 0xf2, 0xf7, 0x60, 0x5c, 0x08, ++ 0xe9, 0xd7, 0xd8, 0x23, 0x50, 0x5e, 0x48, 0xe0, 0x28, 0xf7, 0x77, 0x34, ++ 0xf5, 0x70, 0xbe, 0xf0, 0x51, 0x83, 0x40, 0xfc, 0xe4, 0x23, 0x25, 0x3f, ++ 0x23, 0xd0, 0x6a, 0x21, 0xff, 0xb6, 0xaa, 0x47, 0x7c, 0xac, 0xf4, 0xbb, ++ 0xf7, 0x41, 0x81, 0xf4, 0xbd, 0x21, 0x7a, 0x85, 0x57, 0x1b, 0x77, 0x69, ++ 0xfc, 0xee, 0xdb, 0xc4, 0x17, 0xe3, 0xf5, 0x88, 0xb4, 0xbd, 0x7c, 0x1c, ++ 0x8c, 0xb7, 0xa0, 0x5f, 0xe6, 0x70, 0xee, 0x64, 0x01, 0xeb, 0x8d, 0x60, ++ 0x17, 0x8e, 0x44, 0x7d, 0x51, 0x96, 0x6f, 0xcd, 0xe6, 0xeb, 0x63, 0x21, ++ 0xe2, 0x2f, 0x5e, 0x8d, 0x1f, 0xe5, 0x93, 0xa3, 0xbf, 0x25, 0x3b, 0x72, ++ 0xe9, 0x7e, 0x81, 0xa5, 0x93, 0xde, 0x11, 0x17, 0x7f, 0xe9, 0x9c, 0x13, ++ 0x17, 0x7f, 0x39, 0x72, 0x38, 0x1b, 0xc7, 0x51, 0xf4, 0x0c, 0x09, 0xfe, ++ 0x0f, 0xfd, 0x87, 0xf1, 0x7a, 0x46, 0x53, 0xf7, 0x09, 0x03, 0xda, 0x05, ++ 0x57, 0x8b, 0xb3, 0x6c, 0x2e, 0xd6, 0xfa, 0x05, 0xc7, 0x88, 0xdc, 0xcf, ++ 0x3a, 0xa6, 0x47, 0x90, 0xd0, 0x9f, 0x34, 0x46, 0x81, 0xd3, 0x75, 0x1b, ++ 0xac, 0x04, 0xa7, 0x59, 0xef, 0xad, 0x48, 0x47, 0x3a, 0x57, 0xcf, 0xe7, ++ 0xec, 0x7c, 0x7e, 0x5e, 0x67, 0xdf, 0xf9, 0xb4, 0x12, 0xdf, 0x9b, 0xfc, ++ 0x9e, 0x28, 0x21, 0xbf, 0xfd, 0xf1, 0x3b, 0x2d, 0x3f, 0xcf, 0xe6, 0x75, ++ 0xd9, 0x2c, 0xe3, 0x7b, 0x2d, 0x49, 0x68, 0x87, 0x9c, 0x7d, 0x6f, 0x55, ++ 0x12, 0xc2, 0xf1, 0xc7, 0x50, 0xe2, 0xf7, 0x92, 0x7e, 0x78, 0x52, 0x4c, ++ 0xe8, 0x3f, 0xfc, 0x6b, 0xf1, 0xa0, 0xdf, 0x78, 0x67, 0x31, 0xca, 0xb7, ++ 0x87, 0x15, 0xbf, 0xb1, 0x08, 0xf2, 0x2d, 0x39, 0xea, 0x7f, 0x89, 0x7f, ++ 0x2f, 0xa7, 0x84, 0xf3, 0xa9, 0x4e, 0xfc, 0x8e, 0x11, 0xe2, 0xdf, 0x7e, ++ 0x1e, 0xdf, 0xee, 0x1c, 0xe5, 0x9f, 0x43, 0xf5, 0xa7, 0xf2, 0x78, 0x1e, ++ 0xb1, 0xc8, 0xf1, 0xf5, 0x95, 0x9e, 0x54, 0x09, 0xf5, 0xbd, 0x12, 0xd8, ++ 0x2c, 0xc6, 0x61, 0xbf, 0x6f, 0x65, 0x1d, 0x18, 0x5f, 0xe9, 0xcc, 0xf0, ++ 0xbf, 0x4e, 0xf4, 0xf1, 0x94, 0x8e, 0xf0, 0x17, 0xde, 0xe7, 0xdf, 0xa1, ++ 0xd8, 0x23, 0x93, 0xbc, 0xc3, 0xd0, 0x14, 0xc6, 0x3f, 0xc6, 0x83, 0xac, ++ 0x31, 0x53, 0x5e, 0xa3, 0x9d, 0xe2, 0x20, 0xea, 0x77, 0x62, 0x46, 0x81, ++ 0x1d, 0xaa, 0x7c, 0x57, 0x61, 0x11, 0xc6, 0x5d, 0x4b, 0x94, 0x38, 0xc8, ++ 0x78, 0x2b, 0x13, 0x71, 0xfc, 0x4d, 0x06, 0xff, 0xc6, 0x71, 0x18, 0x77, ++ 0xe9, 0x15, 0x3d, 0x6b, 0xf0, 0x1d, 0xd1, 0x93, 0x8e, 0xdf, 0x45, 0x8a, ++ 0x8f, 0xc7, 0xa8, 0xf1, 0x61, 0x35, 0x2e, 0xa3, 0xc6, 0x89, 0x87, 0x8b, ++ 0xcb, 0x08, 0x38, 0xcf, 0x78, 0x8e, 0x67, 0xb1, 0xdf, 0x3d, 0x51, 0xe3, ++ 0x2f, 0xec, 0xcb, 0x3c, 0x7f, 0xb3, 0x7d, 0x4a, 0x33, 0xdd, 0x8b, 0xdd, ++ 0x8e, 0x31, 0x12, 0xe2, 0x9f, 0x43, 0xe2, 0x29, 0x7f, 0x46, 0x3b, 0x35, ++ 0x3e, 0x9e, 0x22, 0xa2, 0xfc, 0xa1, 0x38, 0x8d, 0x36, 0x9e, 0xb6, 0xb1, ++ 0xe8, 0x65, 0xc2, 0xb7, 0xcf, 0x1b, 0x47, 0x9b, 0x5e, 0x3c, 0xdc, 0xfc, ++ 0x32, 0xb7, 0xe7, 0xe2, 0xe6, 0x9f, 0x98, 0xfa, 0x49, 0x26, 0xd9, 0x2f, ++ 0x7f, 0xf9, 0x73, 0x0a, 0xc9, 0xb3, 0x9e, 0x0b, 0x24, 0x77, 0xce, 0x0d, ++ 0x98, 0x94, 0xfb, 0x9d, 0xfd, 0xdc, 0x4f, 0xdd, 0x63, 0x20, 0x7b, 0xfd, ++ 0x1c, 0xd8, 0x41, 0x19, 0x31, 0xf2, 0x6c, 0xf9, 0x38, 0x0e, 0x87, 0xbe, ++ 0x9e, 0x19, 0x84, 0x8f, 0x7b, 0x23, 0xd5, 0x49, 0xd8, 0xbf, 0x53, 0xd1, ++ 0x73, 0x36, 0xbc, 0xb5, 0x68, 0x21, 0xea, 0xd3, 0xc1, 0x88, 0xc8, 0xf3, ++ 0xb1, 0x19, 0xb7, 0x6b, 0xf6, 0x46, 0xc4, 0x49, 0x5c, 0x3f, 0x18, 0x02, ++ 0x27, 0xa9, 0x38, 0x41, 0xdc, 0xc9, 0x6c, 0x4d, 0x9c, 0x07, 0x14, 0x56, ++ 0xfc, 0x05, 0x61, 0x65, 0xdf, 0x33, 0xde, 0xe1, 0xf6, 0x4a, 0xa0, 0x85, ++ 0xc7, 0x0f, 0x24, 0x85, 0xde, 0x02, 0x35, 0x46, 0xe2, 0x27, 0x47, 0x72, ++ 0x33, 0x05, 0xd5, 0x8f, 0x3c, 0x32, 0x51, 0x7c, 0x61, 0xff, 0x00, 0xf1, ++ 0xd9, 0xfa, 0x7b, 0x79, 0x7c, 0xf7, 0x9a, 0xe3, 0x0b, 0xdd, 0xbd, 0x06, ++ 0x96, 0x97, 0xc0, 0x6f, 0x5b, 0x33, 0x8b, 0xf8, 0xcd, 0xb5, 0xfa, 0x6b, ++ 0x19, 0x5a, 0xc1, 0x93, 0xa3, 0xfc, 0x39, 0xab, 0x44, 0xe1, 0x27, 0xa5, ++ 0x8a, 0xff, 0xb6, 0x98, 0xe7, 0xf3, 0xa7, 0x35, 0x97, 0x55, 0xe2, 0xf7, ++ 0xef, 0xc2, 0xc3, 0x9e, 0xb7, 0x7f, 0x63, 0x49, 0x82, 0xf3, 0x4e, 0xd0, ++ 0x6f, 0xab, 0xfb, 0xda, 0xe2, 0x81, 0xbf, 0xbe, 0xc6, 0xb8, 0x61, 0x6a, ++ 0xd1, 0xb5, 0xf5, 0x1b, 0x93, 0x88, 0x1e, 0x12, 0xf4, 0x9b, 0x7e, 0x8d, ++ 0xe3, 0x7d, 0xf3, 0x1a, 0xfb, 0xb5, 0x5d, 0xe3, 0xbc, 0x0b, 0xc7, 0x25, ++ 0xea, 0xf7, 0xff, 0x68, 0xfc, 0x33, 0x3e, 0xbe, 0x19, 0x1f, 0x0f, 0x8d, ++ 0x8f, 0x73, 0x9a, 0x5e, 0xbb, 0x3b, 0x88, 0x6d, 0x8f, 0x08, 0x8f, 0x0e, ++ 0x84, 0x11, 0xba, 0x29, 0xfb, 0x6a, 0x05, 0x20, 0x55, 0x31, 0xf5, 0xbb, ++ 0x66, 0xe4, 0x6b, 0x73, 0xa7, 0xf2, 0x78, 0xc0, 0x86, 0x6a, 0x73, 0x68, ++ 0xbb, 0x10, 0x8d, 0x8b, 0xaa, 0xf0, 0x0a, 0x96, 0x72, 0xbd, 0x4b, 0x72, ++ 0x9f, 0x0f, 0xe2, 0x77, 0x12, 0x47, 0x7b, 0x23, 0xd5, 0xe9, 0x40, 0xc7, ++ 0xe7, 0xa6, 0x32, 0xb2, 0x1b, 0xce, 0x59, 0x94, 0xef, 0x23, 0x89, 0xd2, ++ 0xa8, 0xf9, 0x74, 0x7e, 0x12, 0x7d, 0x1f, 0xa7, 0xd3, 0x92, 0x38, 0xbe, ++ 0x34, 0x51, 0x19, 0x6f, 0x38, 0x3e, 0xf2, 0xbd, 0xd2, 0xca, 0xf5, 0x48, ++ 0x2f, 0xd2, 0x30, 0xdf, 0xaf, 0xc8, 0x2d, 0xe1, 0x76, 0x80, 0xd4, 0xcd, ++ 0xc8, 0x5f, 0xc3, 0x44, 0x79, 0xd4, 0x02, 0x9a, 0x57, 0x1e, 0x45, 0xdf, ++ 0xdf, 0x3b, 0xc4, 0x9f, 0xa7, 0x84, 0x19, 0xe5, 0xf7, 0x41, 0xbb, 0x73, ++ 0x01, 0xe9, 0xcf, 0xb2, 0x13, 0xd7, 0xb7, 0x45, 0x89, 0x7b, 0xa5, 0xcd, ++ 0x29, 0x74, 0xa2, 0x9f, 0x2e, 0x0d, 0xe4, 0x2d, 0xc6, 0x45, 0x1e, 0xc3, ++ 0xf8, 0x08, 0xf9, 0xf5, 0x25, 0xea, 0xa7, 0xce, 0x97, 0xec, 0xe6, 0xf3, ++ 0x6d, 0x31, 0x30, 0x01, 0xe3, 0x58, 0xc1, 0x71, 0x3c, 0xaf, 0x82, 0x75, ++ 0x7c, 0x5f, 0x13, 0xd7, 0x38, 0x66, 0x08, 0x7f, 0xb0, 0x5c, 0xa0, 0xb8, ++ 0xc6, 0x76, 0x5c, 0xff, 0xcf, 0x74, 0x61, 0xf7, 0x0e, 0x27, 0x3f, 0x17, ++ 0x84, 0xaf, 0x7b, 0xaf, 0x44, 0xf1, 0x96, 0x37, 0xa6, 0x7e, 0xaf, 0x88, ++ 0xee, 0xcb, 0x2b, 0x71, 0x8e, 0xd5, 0x12, 0xef, 0x72, 0x10, 0xed, 0x0c, ++ 0x58, 0xc7, 0xea, 0x57, 0x2b, 0x08, 0x7f, 0x97, 0xf6, 0x4d, 0xfd, 0x65, ++ 0x1d, 0xea, 0x83, 0x2e, 0x91, 0xe0, 0x3c, 0x44, 0x0f, 0x57, 0xec, 0xab, ++ 0x93, 0x8a, 0x7d, 0xa8, 0xda, 0x57, 0xfd, 0x68, 0x27, 0xc6, 0xd8, 0x1b, ++ 0x3f, 0x50, 0xf4, 0x86, 0x04, 0x74, 0xf5, 0x83, 0x44, 0x7c, 0x69, 0x8b, ++ 0xc0, 0xed, 0xdf, 0xe0, 0xcf, 0xb8, 0xfd, 0x5b, 0x61, 0xf4, 0xe4, 0xc7, ++ 0xe6, 0x53, 0xf5, 0x2a, 0x71, 0x92, 0xe5, 0x61, 0xee, 0x87, 0x55, 0xed, ++ 0xda, 0xf1, 0xde, 0x90, 0x2e, 0x13, 0xe0, 0x50, 0xf1, 0xa0, 0x3e, 0x6c, ++ 0x02, 0x39, 0x5d, 0xb1, 0xbe, 0xd4, 0x88, 0xfc, 0xba, 0x62, 0x7d, 0xae, ++ 0x95, 0xfc, 0x4a, 0x2b, 0xf6, 0xe8, 0x54, 0x78, 0x27, 0x3a, 0xf7, 0x9f, ++ 0x2a, 0xeb, 0xdc, 0x70, 0x74, 0x80, 0xe2, 0x12, 0xaf, 0xc4, 0xc5, 0x27, ++ 0x93, 0xdd, 0x46, 0x6a, 0x7f, 0x48, 0xc1, 0x9f, 0x64, 0x3c, 0x5b, 0x28, ++ 0x57, 0x17, 0x88, 0xed, 0x28, 0x7e, 0x47, 0xdc, 0x20, 0xe9, 0x13, 0xf9, ++ 0xc5, 0xeb, 0x41, 0xef, 0xc7, 0xf5, 0x2d, 0xef, 0xe4, 0xeb, 0x55, 0xe3, ++ 0x20, 0xf5, 0x61, 0x79, 0x06, 0xce, 0x73, 0xea, 0xf0, 0xc0, 0x7a, 0x2c, ++ 0xcb, 0x1b, 0x9c, 0x33, 0xc8, 0x6f, 0xb8, 0xf2, 0xfc, 0x7a, 0x94, 0x9b, ++ 0x81, 0x4b, 0x17, 0x8e, 0x4c, 0x27, 0x3f, 0x80, 0x51, 0x4e, 0x74, 0x5f, ++ 0x60, 0x4b, 0x29, 0xf7, 0x1f, 0xbe, 0x82, 0x8a, 0x08, 0xc2, 0x6b, 0xb6, ++ 0x48, 0x79, 0xbb, 0x15, 0xb3, 0x45, 0x3a, 0xef, 0xb4, 0x7a, 0x0b, 0xd9, ++ 0xe1, 0x69, 0x06, 0xa6, 0xc7, 0xef, 0xb0, 0xa6, 0xcd, 0xe7, 0x72, 0xac, ++ 0xbc, 0xc6, 0x3e, 0x03, 0xeb, 0x6c, 0x51, 0x2a, 0xc9, 0xe1, 0xf2, 0xa3, ++ 0x72, 0xea, 0xdd, 0xee, 0xa8, 0x9d, 0x9f, 0x36, 0xbb, 0x25, 0x03, 0xe1, ++ 0x74, 0xb5, 0xf8, 0x90, 0xea, 0x2f, 0xb8, 0xcd, 0xe8, 0xfd, 0x63, 0x49, ++ 0xc6, 0xe7, 0x8f, 0x0f, 0x35, 0x1e, 0x7b, 0x8b, 0xf2, 0xcc, 0xee, 0xe8, ++ 0xd7, 0xc6, 0x87, 0xd4, 0x78, 0xcf, 0x70, 0xf1, 0x21, 0x35, 0x3e, 0x1b, ++ 0xa8, 0xf9, 0x54, 0x13, 0x4f, 0x0e, 0x88, 0x03, 0xb3, 0xd0, 0xaf, 0x52, ++ 0xf1, 0xea, 0x29, 0x8a, 0x0f, 0x07, 0xba, 0x05, 0xc9, 0xe1, 0x8c, 0xc6, ++ 0x8d, 0x02, 0x7b, 0xcf, 0x1b, 0x09, 0xbe, 0x4a, 0xbc, 0x08, 0xfa, 0x1b, ++ 0xf1, 0xbd, 0x0a, 0x38, 0xf6, 0x51, 0x69, 0xf8, 0x1d, 0x02, 0x1e, 0x3f, ++ 0xda, 0x87, 0xf9, 0xb8, 0x46, 0xfc, 0xbe, 0x9e, 0x44, 0x79, 0xb7, 0x3f, ++ 0xc2, 0x7c, 0xdc, 0x42, 0xfc, 0xbe, 0x1e, 0xcf, 0xc7, 0x3d, 0x80, 0xf9, ++ 0xb8, 0x46, 0xbc, 0xff, 0xc1, 0xf3, 0x71, 0xfb, 0x94, 0xfc, 0xde, 0x40, ++ 0xcf, 0x79, 0x8a, 0x37, 0xa5, 0xb9, 0x87, 0xe4, 0x53, 0x51, 0x3c, 0xe2, ++ 0x21, 0xc1, 0x97, 0xe1, 0x9e, 0xa4, 0x89, 0x57, 0x50, 0x3d, 0x3e, 0x5e, ++ 0xa1, 0xb7, 0x72, 0x3b, 0x34, 0x70, 0xd4, 0x40, 0xdf, 0x3f, 0x0f, 0x1c, ++ 0x33, 0x13, 0x9f, 0xad, 0xec, 0x59, 0x3e, 0x06, 0xf5, 0x31, 0xf5, 0xbb, ++ 0xe4, 0x4d, 0x18, 0x2f, 0x88, 0xf1, 0x2f, 0x9d, 0xf5, 0x7a, 0x2c, 0x78, ++ 0xbf, 0xe7, 0xac, 0xcf, 0x63, 0xc1, 0x38, 0x41, 0x45, 0xef, 0xc7, 0x46, ++ 0x99, 0xf8, 0x4e, 0x38, 0x1b, 0x53, 0x98, 0x9a, 0xc4, 0x88, 0x11, 0xed, ++ 0x7d, 0x84, 0x03, 0xe5, 0xf9, 0xf5, 0x54, 0x5a, 0x10, 0xae, 0x57, 0xf5, ++ 0xeb, 0x77, 0xff, 0x7f, 0xbf, 0xfe, 0xe7, 0xf1, 0xeb, 0x7f, 0x2b, 0x4a, ++ 0x97, 0xc4, 0x3f, 0xca, 0x7d, 0x3a, 0xba, 0x57, 0x5e, 0x7e, 0xd4, 0x6b, ++ 0xb9, 0x3b, 0x86, 0x3f, 0x6c, 0xf0, 0x71, 0xff, 0xf0, 0x06, 0x57, 0x1e, ++ 0xd1, 0xdf, 0x13, 0xbe, 0xbc, 0xd4, 0x15, 0xb1, 0x7e, 0xfc, 0x1a, 0x6e, ++ 0xbf, 0xa5, 0xcd, 0x76, 0x59, 0x62, 0x9f, 0xbf, 0x5b, 0xca, 0xfd, 0xf8, ++ 0x69, 0x42, 0xe2, 0xfb, 0x05, 0x77, 0xb9, 0x87, 0xe5, 0xb7, 0x77, 0xb9, ++ 0x13, 0xea, 0x3b, 0x89, 0xe3, 0x01, 0x1b, 0x6a, 0x38, 0x1f, 0x51, 0xfd, ++ 0xfd, 0x43, 0xe3, 0x03, 0x9e, 0xd7, 0x5c, 0x31, 0x7e, 0xfe, 0xb3, 0x3f, ++ 0x33, 0xd3, 0xbf, 0xaf, 0xd0, 0xbb, 0xdf, 0x44, 0xf2, 0xfc, 0x4f, 0xaf, ++ 0x9a, 0x76, 0xa0, 0xde, 0x5d, 0x5e, 0xb3, 0x62, 0x4c, 0x32, 0xd4, 0xcb, ++ 0x4f, 0x9a, 0x98, 0x93, 0xcb, 0x23, 0x4d, 0x5c, 0x61, 0x69, 0x8d, 0xce, ++ 0x6b, 0x49, 0x49, 0x14, 0x47, 0xf0, 0x66, 0xd3, 0xf7, 0x43, 0xe3, 0xe3, ++ 0x05, 0x35, 0x3a, 0xe2, 0xef, 0x83, 0xf1, 0x82, 0x1a, 0xf1, 0x14, 0xd5, ++ 0x15, 0xfd, 0xfc, 0x8e, 0xf3, 0xbf, 0x4b, 0xc6, 0x4f, 0x94, 0xbe, 0x22, ++ 0x84, 0x3a, 0xd1, 0xbe, 0x78, 0xa5, 0x51, 0xf0, 0xf4, 0xb2, 0xa1, 0xf1, ++ 0x03, 0x18, 0x38, 0x9b, 0x4d, 0x81, 0x5d, 0xd4, 0x70, 0x3b, 0xc1, 0x53, ++ 0x6b, 0x26, 0xbb, 0xe0, 0x6a, 0x71, 0x85, 0xba, 0xbd, 0x27, 0xd6, 0xa1, ++ 0x9f, 0xa0, 0x8c, 0x6d, 0xee, 0xc4, 0xef, 0x51, 0x96, 0xb9, 0x74, 0x12, ++ 0x88, 0xa2, 0x04, 0x71, 0x05, 0x9e, 0xdf, 0x59, 0xae, 0xe8, 0x11, 0xf1, ++ 0xfe, 0x01, 0xc4, 0x0f, 0x94, 0xfb, 0xf1, 0x7e, 0xc1, 0xad, 0x6e, 0x6e, ++ 0x9f, 0x6f, 0x55, 0xe4, 0x7e, 0x5e, 0x09, 0x97, 0x33, 0xea, 0x38, 0xea, ++ 0x7b, 0xf1, 0xe7, 0x7e, 0xc6, 0xad, 0x8d, 0x3f, 0xc4, 0xb7, 0xbf, 0xa7, ++ 0xb4, 0x77, 0xd4, 0x94, 0x6f, 0xc0, 0x73, 0x0b, 0xce, 0xd5, 0x31, 0xe4, ++ 0xff, 0x1d, 0x35, 0x55, 0x66, 0x57, 0xcc, 0x78, 0x2f, 0xb8, 0x79, 0xde, ++ 0xcc, 0x16, 0x8c, 0x53, 0xd8, 0x63, 0xe3, 0x14, 0x3c, 0x1e, 0x11, 0x1f, ++ 0x9f, 0x50, 0xf9, 0x53, 0x45, 0xef, 0x67, 0xb3, 0xf0, 0xdc, 0x9f, 0xe8, ++ 0xe1, 0xfe, 0xa3, 0x80, 0x83, 0xfb, 0x33, 0x2b, 0x0e, 0x54, 0xd2, 0x3d, ++ 0x93, 0xe8, 0x3a, 0x39, 0x7e, 0x3e, 0xe1, 0x18, 0xbc, 0x67, 0x98, 0xca, ++ 0xf8, 0xbe, 0x98, 0x99, 0xfb, 0xb9, 0xc8, 0xaf, 0x50, 0x3e, 0xf7, 0xd3, ++ 0x3e, 0xfc, 0xf7, 0x07, 0x98, 0x2f, 0x95, 0xfe, 0x3d, 0x83, 0xc0, 0x31, ++ 0x57, 0xbb, 0x0d, 0xf9, 0xc8, 0x5c, 0x71, 0x92, 0x20, 0x93, 0x7f, 0x7b, ++ 0xd0, 0xdf, 0x8d, 0xfe, 0xa8, 0x85, 0xc7, 0x1b, 0xe6, 0x60, 0x3e, 0x70, ++ 0xc5, 0xe2, 0xb2, 0x13, 0x78, 0x2e, 0x8b, 0xeb, 0x0c, 0x94, 0x77, 0xb4, ++ 0xf0, 0x78, 0x2d, 0x7d, 0x67, 0x5c, 0x95, 0x57, 0x15, 0x8b, 0xb7, 0xaf, ++ 0xb5, 0x62, 0x7b, 0x91, 0xe0, 0xb1, 0xc8, 0xd8, 0x5e, 0x53, 0x85, 0xed, ++ 0x37, 0xbf, 0x18, 0x46, 0xcf, 0x1e, 0x9b, 0x87, 0xbb, 0x07, 0x7a, 0x89, ++ 0x1c, 0x83, 0xde, 0x79, 0xe4, 0xdf, 0xfe, 0x29, 0xda, 0x45, 0x15, 0xf3, ++ 0x15, 0xbf, 0x77, 0x1d, 0x97, 0xab, 0x8b, 0x7b, 0xe6, 0x1b, 0xf8, 0x47, ++ 0xaf, 0xb4, 0x72, 0xee, 0x60, 0xee, 0x9f, 0xc8, 0x6e, 0xbe, 0xd0, 0x53, ++ 0x41, 0xfe, 0xec, 0x74, 0x8c, 0xb7, 0xba, 0xa3, 0x72, 0xa6, 0xe2, 0x55, ++ 0x90, 0x3f, 0xc9, 0x51, 0xf9, 0xf3, 0xb7, 0xca, 0x9d, 0x33, 0x6e, 0x9e, ++ 0xe7, 0x3f, 0x01, 0xe4, 0x0f, 0xae, 0x27, 0x6d, 0x3e, 0x8f, 0x0b, 0xc6, ++ 0x9f, 0xff, 0x0b, 0x0a, 0x3e, 0x0d, 0x27, 0x4f, 0x86, 0xe3, 0x9f, 0x28, ++ 0x3f, 0x74, 0x53, 0x38, 0xbd, 0x08, 0x8e, 0xa8, 0xdc, 0x95, 0xd1, 0x9e, ++ 0xbe, 0x2e, 0x2a, 0x7f, 0xa5, 0x6e, 0xa8, 0x8f, 0x1c, 0x1e, 0xff, 0xf2, ++ 0x15, 0xbc, 0x4e, 0x1d, 0x46, 0xff, 0x1a, 0x5d, 0x2a, 0x28, 0xdf, 0x1b, ++ 0x1b, 0x26, 0x5f, 0xa3, 0xfb, 0xef, 0xe3, 0xf7, 0xce, 0x2a, 0x55, 0xf9, ++ 0xe7, 0xff, 0xe5, 0x7e, 0x6f, 0xc5, 0xbe, 0x51, 0xfd, 0xdf, 0xaa, 0x3d, ++ 0xd4, 0xa2, 0xc0, 0x59, 0x2d, 0x1f, 0x50, 0xf4, 0xd9, 0xbf, 0x39, 0x5f, ++ 0x19, 0x85, 0x62, 0xc2, 0x7c, 0xe5, 0xb4, 0xc4, 0xf9, 0xca, 0x77, 0x74, ++ 0x09, 0xf4, 0x1d, 0x16, 0x25, 0x5f, 0xf9, 0xb0, 0x91, 0x55, 0xee, 0xb1, ++ 0x63, 0x9e, 0x9e, 0x72, 0x2f, 0x21, 0xe4, 0x23, 0xfd, 0xe6, 0xf0, 0xd3, ++ 0xbf, 0x5a, 0xff, 0x9c, 0x1d, 0xef, 0x25, 0x08, 0x12, 0x8a, 0x9d, 0xc6, ++ 0xae, 0x13, 0x24, 0x9f, 0x1b, 0x41, 0x9f, 0x21, 0x3d, 0xa8, 0xe7, 0x0f, ++ 0xdc, 0x2f, 0xd5, 0xc5, 0xf3, 0x4b, 0x1b, 0xbb, 0xb5, 0xf7, 0x1f, 0xd4, ++ 0x72, 0x5b, 0x29, 0xbf, 0xaf, 0x50, 0x0d, 0xfb, 0x21, 0x3f, 0xb2, 0x92, ++ 0xc7, 0x37, 0x6b, 0x2f, 0xa7, 0xeb, 0x80, 0xd7, 0x18, 0x92, 0x9d, 0xe8, ++ 0x17, 0xfa, 0xaa, 0x18, 0xeb, 0x17, 0x0a, 0xc8, 0x91, 0x0c, 0x35, 0x3f, ++ 0x30, 0xc4, 0xe5, 0x52, 0xc2, 0x3c, 0xbe, 0x26, 0x36, 0x40, 0xf9, 0x7e, ++ 0x4d, 0x0d, 0x82, 0x07, 0xe5, 0xc1, 0x17, 0xf6, 0x13, 0x79, 0x79, 0x7e, ++ 0xdf, 0xb5, 0xfa, 0x89, 0xea, 0x4b, 0xb5, 0x7e, 0xe6, 0xb5, 0x25, 0xdc, ++ 0x2f, 0x54, 0xeb, 0x17, 0x04, 0xd4, 0x47, 0xcd, 0x3a, 0xdf, 0x4a, 0xca, ++ 0xef, 0x3d, 0x20, 0x48, 0x89, 0xf2, 0x44, 0x57, 0x2b, 0xf8, 0x7e, 0xb3, ++ 0xe2, 0xa7, 0xdd, 0x65, 0xe4, 0x78, 0xb0, 0xeb, 0x7a, 0x81, 0xf2, 0x6a, ++ 0xf1, 0x5e, 0x0c, 0x9e, 0xef, 0xae, 0x03, 0x3c, 0x7f, 0x7e, 0x57, 0x39, ++ 0xcf, 0x9f, 0x57, 0xfd, 0xb2, 0x6a, 0x5e, 0xfc, 0xb8, 0xa8, 0x5f, 0x96, ++ 0xee, 0xc3, 0xa8, 0xf9, 0xf4, 0x6a, 0x7e, 0xbc, 0x7a, 0x3f, 0x74, 0xfe, ++ 0x56, 0x6b, 0x18, 0xf5, 0x8b, 0x4d, 0x86, 0x2e, 0x07, 0xd2, 0xa1, 0x9a, ++ 0x57, 0xe4, 0x2a, 0xe5, 0x72, 0xce, 0xaa, 0x7c, 0x77, 0x3c, 0x7e, 0x9d, ++ 0xcb, 0x4a, 0x2b, 0x5d, 0xa5, 0x18, 0xa7, 0x2b, 0xd5, 0x0d, 0xe7, 0xe7, ++ 0x6a, 0x2b, 0x4d, 0xa0, 0xdf, 0xbc, 0xae, 0xc8, 0xcf, 0x75, 0xa5, 0xc3, ++ 0xea, 0xe5, 0x9d, 0xa5, 0x5a, 0xbd, 0x9c, 0xea, 0xf1, 0x7a, 0xf9, 0x7f, ++ 0x95, 0x5f, 0x76, 0xcc, 0xf0, 0x7e, 0xe1, 0x5f, 0x97, 0x5c, 0x9b, 0xdf, ++ 0xea, 0x96, 0xc4, 0x7a, 0xdc, 0x90, 0x7e, 0x95, 0xa5, 0x09, 0xc6, 0x6b, ++ 0xb7, 0x24, 0xfe, 0x8e, 0xe8, 0xef, 0x54, 0xfe, 0x1b, 0xf7, 0xef, 0x8f, ++ 0xb0, 0x21, 0xf7, 0x7b, 0xb8, 0x7c, 0xeb, 0x14, 0xe4, 0x5f, 0x4e, 0xa3, ++ 0x38, 0x97, 0x81, 0xe2, 0x5c, 0x2a, 0x7f, 0xe9, 0x4c, 0xe6, 0xe3, 0xef, ++ 0x53, 0xf8, 0x8a, 0x5a, 0x9e, 0x50, 0xc6, 0x1f, 0xee, 0x7b, 0x93, 0xef, ++ 0x2a, 0xfd, 0x5a, 0x04, 0xef, 0x0f, 0x70, 0xdd, 0x25, 0xbb, 0xb5, 0x7e, ++ 0xb2, 0xd2, 0x2e, 0xad, 0x9f, 0x6c, 0x42, 0x77, 0x9a, 0xa6, 0x5e, 0x16, ++ 0xce, 0xd2, 0xf4, 0xaf, 0x38, 0x9a, 0xa7, 0x69, 0x9f, 0x14, 0x29, 0xd6, ++ 0xb4, 0x5f, 0x77, 0xb2, 0x5c, 0x53, 0x9f, 0xda, 0x7f, 0xbd, 0xa6, 0xff, ++ 0xb4, 0x8f, 0xaa, 0x34, 0xf5, 0x1b, 0x07, 0xb4, 0x7e, 0xb2, 0xe9, 0x17, ++ 0x17, 0xc4, 0xdd, 0x3b, 0xe2, 0xf8, 0x5d, 0x09, 0x18, 0x11, 0xfb, 0xde, ++ 0x0c, 0xf3, 0x5d, 0x9a, 0x7e, 0xd9, 0x0d, 0xda, 0x7d, 0xe5, 0x36, 0x6b, ++ 0xf7, 0x35, 0xa6, 0x55, 0xbb, 0x2f, 0x75, 0x5c, 0x67, 0x50, 0xbb, 0xbf, ++ 0xfc, 0x4e, 0xed, 0xfe, 0xd2, 0xd0, 0x7f, 0xef, 0xfe, 0xe2, 0xfe, 0xfb, ++ 0xdb, 0xdd, 0x32, 0xcd, 0xd3, 0xd7, 0x93, 0x4f, 0xdf, 0x03, 0xdc, 0x52, ++ 0xe3, 0xa2, 0xef, 0x5e, 0xab, 0xf7, 0xff, 0xfe, 0x13, 0x07, 0xaf, 0xfb, ++ 0x52, 0x40, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 csem_int_table_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x53, 0xe1, ++ 0x67, 0x60, 0xf8, 0x51, 0x0f, 0xc1, 0x5b, 0xf9, 0x18, 0x18, 0x2e, 0xf0, ++ 0x21, 0xf8, 0xf4, 0xc0, 0x1c, 0xcc, 0x0c, 0x0c, 0x9c, 0x40, 0xac, 0xc8, ++ 0xc8, 0xc0, 0x20, 0x01, 0xc4, 0xfc, 0x40, 0xcc, 0x06, 0xc4, 0x9e, 0x0c, ++ 0x0c, 0x0c, 0xff, 0x81, 0xf8, 0x1b, 0x10, 0xbf, 0x05, 0xe2, 0x27, 0x40, ++ 0xec, 0x0c, 0xc4, 0x07, 0x58, 0xb0, 0x9b, 0xe3, 0xc6, 0xca, 0xc0, 0xe0, ++ 0x01, 0xc4, 0xdc, 0x40, 0xb3, 0x78, 0x98, 0x89, 0xb7, 0xdf, 0x89, 0x17, ++ 0xc1, 0x7e, 0xcc, 0xc3, 0xc0, 0x70, 0x0e, 0x88, 0x9f, 0xf1, 0xd0, 0x37, ++ 0x0c, 0x06, 0x1b, 0x5e, 0x27, 0x40, 0x3f, 0xbb, 0x7e, 0x43, 0xed, 0x3a, ++ 0x29, 0x32, 0xf0, 0xfe, 0x06, 0x61, 0x21, 0x31, 0x60, 0x9a, 0x14, 0x47, ++ 0xf0, 0xa7, 0x8a, 0xa3, 0xca, 0x0b, 0x8b, 0x21, 0xd8, 0xc9, 0xd2, 0x94, ++ 0xd9, 0x95, 0x0f, 0xd4, 0x0f, 0x00, 0xf1, 0x93, 0x21, 0xf0, 0x80, 0x03, ++ 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 csem_pram_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, ++ 0x0b, 0x7c, 0x94, 0xc5, 0xb5, 0xf8, 0x7c, 0xbb, 0xdf, 0xbe, 0x92, 0xdd, ++ 0xcd, 0x26, 0xe4, 0x49, 0x00, 0x37, 0x09, 0x60, 0x50, 0x1e, 0x4b, 0x80, ++ 0xc8, 0x4b, 0xdd, 0xf0, 0x32, 0x52, 0xc4, 0x04, 0x11, 0x82, 0x8a, 0x2c, ++ 0xaf, 0x10, 0x02, 0x79, 0x14, 0xa9, 0xa5, 0xff, 0xda, 0xbb, 0x0b, 0x28, ++ 0x04, 0xaa, 0xde, 0x58, 0x51, 0xa3, 0x7f, 0x6a, 0x17, 0x04, 0x1b, 0x2d, ++ 0xda, 0x80, 0xd1, 0x1b, 0x6d, 0xe0, 0x2e, 0xa2, 0x08, 0xd5, 0x6a, 0x68, ++ 0x45, 0x51, 0xab, 0x0d, 0x88, 0x88, 0x08, 0x49, 0x8c, 0x8f, 0x6a, 0xb5, ++ 0x7a, 0xcf, 0x39, 0x33, 0xdf, 0x66, 0xe7, 0xcb, 0x2e, 0x89, 0xb6, 0xfe, ++ 0x6f, 0xff, 0xbf, 0x7b, 0xc3, 0xaf, 0x1d, 0xe7, 0x9b, 0x99, 0x33, 0x67, ++ 0xce, 0x39, 0x73, 0xe6, 0xcc, 0x99, 0x99, 0xb3, 0x26, 0x96, 0xc2, 0x0c, ++ 0x97, 0x33, 0xf6, 0x0d, 0xfe, 0x41, 0x6a, 0x33, 0x31, 0xc6, 0xc6, 0x74, ++ 0xa5, 0xed, 0x4a, 0xc7, 0x70, 0x35, 0xa7, 0xab, 0xfc, 0x36, 0xbf, 0x97, ++ 0x79, 0xcd, 0x8c, 0xd5, 0xf9, 0xad, 0x94, 0x6e, 0xf1, 0xa7, 0x33, 0xef, ++ 0x60, 0xf8, 0xee, 0x33, 0x14, 0x06, 0xed, 0x8c, 0xdd, 0xeb, 0x77, 0x51, ++ 0xfe, 0x17, 0xfe, 0x42, 0x4a, 0x6b, 0xfd, 0x45, 0x54, 0xef, 0x4e, 0x7f, ++ 0x09, 0xe5, 0x6f, 0xf7, 0xfb, 0x28, 0xdd, 0xec, 0x2f, 0xa3, 0xef, 0x35, ++ 0xfe, 0x6a, 0xca, 0x6f, 0xf0, 0xaf, 0xa1, 0x74, 0x93, 0xba, 0x28, 0x0d, ++ 0x50, 0x82, 0xbf, 0xa2, 0xc2, 0xac, 0x64, 0xc6, 0xaa, 0x9e, 0xc9, 0xc9, ++ 0xdb, 0x0c, 0xb9, 0x2d, 0xb3, 0xc6, 0x27, 0xa8, 0xa3, 0x21, 0xff, 0x8a, ++ 0x91, 0x19, 0xb3, 0x00, 0xbe, 0x4f, 0xa5, 0xfe, 0x98, 0xea, 0xde, 0x34, ++ 0x70, 0x74, 0x57, 0x3d, 0x0d, 0xcf, 0x4d, 0xea, 0xa4, 0x7e, 0x08, 0xa7, ++ 0x76, 0x09, 0xc7, 0x8b, 0x59, 0x99, 0x2d, 0x46, 0xbd, 0x2c, 0x1c, 0xe7, ++ 0x9d, 0x4b, 0x04, 0x3c, 0x7b, 0x6b, 0x4d, 0x4e, 0x72, 0xd4, 0x7a, 0x83, ++ 0x11, 0xde, 0xed, 0x25, 0x00, 0x6f, 0x28, 0x14, 0xb8, 0x42, 0xd6, 0x9c, ++ 0xe8, 0xf0, 0x2e, 0x46, 0x78, 0x9b, 0x4b, 0x54, 0x5e, 0x2f, 0x39, 0x58, ++ 0x93, 0x1d, 0x1d, 0x9e, 0x07, 0xeb, 0xd5, 0xdc, 0x20, 0xe0, 0xa5, 0x07, ++ 0xac, 0x31, 0xea, 0x8d, 0xc1, 0x7a, 0x1b, 0x6e, 0x10, 0xf8, 0xf5, 0xf3, ++ 0xd5, 0x64, 0x45, 0xef, 0x77, 0x3c, 0xd6, 0x63, 0x2e, 0xf5, 0x6f, 0xad, ++ 0x56, 0x46, 0x7f, 0xdf, 0x64, 0xe3, 0xff, 0xdb, 0x5d, 0xa7, 0x2e, 0x16, ++ 0x79, 0x23, 0x66, 0x93, 0x18, 0x1b, 0xd7, 0xd5, 0x4e, 0x9f, 0x32, 0x16, ++ 0x60, 0x38, 0x4e, 0x95, 0xf9, 0x0a, 0x89, 0x0f, 0xee, 0xcc, 0xaf, 0xbf, ++ 0xc9, 0x67, 0xec, 0x26, 0x84, 0x09, 0xed, 0x03, 0x93, 0x58, 0xc8, 0x08, ++ 0xfd, 0x07, 0x92, 0x58, 0x70, 0x7d, 0x96, 0x54, 0x7f, 0x26, 0xd5, 0x6f, ++ 0xed, 0xfb, 0xf5, 0x37, 0xa9, 0x52, 0xfd, 0x80, 0x21, 0x4a, 0x7d, 0x13, ++ 0x6b, 0x50, 0xb0, 0xfc, 0xe7, 0x28, 0x47, 0xc0, 0xf7, 0xfb, 0xfc, 0xb9, ++ 0x94, 0x6e, 0x14, 0xf2, 0x73, 0xdf, 0x50, 0x03, 0x63, 0xd8, 0x2e, 0xdd, ++ 0x1c, 0x1c, 0x04, 0xed, 0xee, 0xf1, 0x7b, 0x48, 0x5e, 0xee, 0xf6, 0x8f, ++ 0xa5, 0xf2, 0xbb, 0x84, 0x1c, 0xfe, 0xbb, 0x90, 0xb3, 0xa0, 0x90, 0xb3, ++ 0x07, 0x51, 0xce, 0x20, 0xdd, 0x8a, 0x72, 0x66, 0xc6, 0xfe, 0x7c, 0xad, ++ 0xa5, 0x00, 0xa7, 0x7d, 0x6f, 0x3c, 0xdb, 0xec, 0x26, 0xf9, 0x5a, 0x4c, ++ 0x78, 0xaa, 0x8c, 0xe0, 0x6f, 0xd8, 0x3b, 0x64, 0xfb, 0x66, 0x80, 0x7f, ++ 0xdf, 0x0d, 0xab, 0x4e, 0x6f, 0x03, 0xfa, 0xb7, 0x35, 0x0f, 0xf3, 0x18, ++ 0xa1, 0xde, 0x3d, 0x43, 0x35, 0xf9, 0x62, 0x5e, 0x96, 0xdc, 0x55, 0xef, ++ 0x9e, 0xd9, 0x27, 0x9c, 0x8b, 0x86, 0x12, 0xbd, 0xcb, 0x10, 0xce, 0xdd, ++ 0x1e, 0xc1, 0x3f, 0x15, 0x06, 0x16, 0x51, 0xef, 0xee, 0x19, 0xe1, 0x7a, ++ 0x15, 0x58, 0xef, 0x2e, 0x4f, 0x18, 0x5e, 0x28, 0xb2, 0xdf, 0xbb, 0xa6, ++ 0x84, 0xeb, 0xad, 0x22, 0x3e, 0x2b, 0xac, 0xa4, 0xc1, 0xde, 0x9d, 0x2f, ++ 0x3b, 0x98, 0x42, 0xf3, 0x11, 0x04, 0x85, 0xe8, 0x6b, 0x42, 0xfa, 0xc2, ++ 0xbc, 0x7c, 0x76, 0xc0, 0x75, 0x4a, 0x2b, 0xb4, 0x4f, 0x49, 0xce, 0x4b, ++ 0x63, 0xd0, 0xee, 0x7e, 0x9c, 0x8f, 0x66, 0x9c, 0x77, 0x6e, 0xa2, 0x8b, ++ 0xd6, 0x1e, 0xe9, 0xec, 0x83, 0xef, 0x19, 0x16, 0x56, 0x8d, 0xf0, 0x81, ++ 0xb2, 0xfb, 0x8d, 0x80, 0xaf, 0x69, 0xb6, 0x3b, 0x11, 0xe9, 0x72, 0xfb, ++ 0xb5, 0x45, 0x4c, 0x19, 0xc6, 0x58, 0x5f, 0x51, 0x9e, 0x1a, 0x28, 0x52, ++ 0xb2, 0x00, 0xae, 0x7d, 0x4e, 0x91, 0x82, 0xdf, 0x4d, 0xb3, 0xa1, 0x1c, ++ 0xbe, 0xbb, 0x44, 0x79, 0xf2, 0x1a, 0x5e, 0x7e, 0x3b, 0x96, 0x3b, 0xba, ++ 0xca, 0x13, 0xb1, 0x1c, 0xbe, 0x27, 0x55, 0x43, 0x39, 0xe4, 0xed, 0x73, ++ 0x79, 0xf9, 0x1d, 0x7e, 0xe0, 0xc4, 0xe0, 0xae, 0x7a, 0x9b, 0x80, 0xcf, ++ 0x3e, 0xe2, 0x77, 0x3a, 0xff, 0x0e, 0x6c, 0x45, 0xfa, 0x98, 0x46, 0xf3, ++ 0x54, 0xc3, 0xfb, 0x09, 0x14, 0x12, 0xa0, 0xdf, 0x41, 0x4c, 0xc7, 0x74, ++ 0xe1, 0xbf, 0x69, 0xd0, 0xbd, 0x19, 0x0b, 0xed, 0x5d, 0xf8, 0xda, 0x06, ++ 0xd7, 0x53, 0x5e, 0xc3, 0x6f, 0xd3, 0xe0, 0x38, 0xca, 0x6b, 0xf8, 0xd8, ++ 0x2e, 0xec, 0x97, 0xb1, 0x10, 0xd2, 0xbe, 0x4b, 0xfa, 0x32, 0x6f, 0xae, ++ 0x98, 0x0f, 0xac, 0x3b, 0x9d, 0x13, 0xbd, 0xd9, 0x52, 0x79, 0xa6, 0xea, ++ 0x49, 0x50, 0x81, 0x4e, 0x99, 0x2f, 0x19, 0x59, 0x00, 0x58, 0x90, 0x09, ++ 0xe2, 0x89, 0xf0, 0xf4, 0xed, 0x8a, 0x98, 0x81, 0xf0, 0xec, 0x71, 0xfe, ++ 0x25, 0xf7, 0x6e, 0xfe, 0x99, 0x86, 0xca, 0x74, 0xd0, 0xd2, 0xa3, 0x82, ++ 0x1e, 0x1a, 0x1d, 0x36, 0xf6, 0x97, 0xe9, 0x60, 0x19, 0x20, 0xd3, 0x61, ++ 0xe3, 0x00, 0x99, 0x0e, 0x96, 0x0b, 0xce, 0x4f, 0x87, 0x1d, 0xcc, 0x4d, ++ 0x74, 0x8e, 0x45, 0x0f, 0xad, 0xdf, 0xcd, 0x43, 0xe4, 0x7e, 0xe3, 0x2e, ++ 0x92, 0xfb, 0xdd, 0x7c, 0x91, 0xdc, 0x6f, 0xdc, 0xc5, 0xff, 0x9c, 0x7e, ++ 0x6b, 0xb2, 0xe4, 0x7e, 0xad, 0xd9, 0x72, 0xbf, 0x35, 0xd9, 0x72, 0xbf, ++ 0xd6, 0x9c, 0x7f, 0xac, 0x5f, 0xa6, 0x7a, 0x60, 0x32, 0xa0, 0xbe, 0xd2, ++ 0xfe, 0x2e, 0x94, 0xf4, 0xdb, 0xd5, 0xcc, 0x77, 0x16, 0xdb, 0xa3, 0x9e, ++ 0xc3, 0xf9, 0xa4, 0xe9, 0x39, 0x53, 0xb2, 0x8f, 0xf9, 0xec, 0x5d, 0xfc, ++ 0x84, 0x75, 0x8a, 0xb1, 0xfc, 0x48, 0x38, 0x83, 0x25, 0xbd, 0x0a, 0x70, ++ 0x3e, 0xc5, 0x7a, 0x00, 0xc7, 0x7b, 0x7e, 0x38, 0x2e, 0x1d, 0x9c, 0x41, ++ 0x7a, 0x38, 0x5f, 0x0b, 0x7c, 0x58, 0xa4, 0x9e, 0xee, 0x06, 0x87, 0x0d, ++ 0xd4, 0x8f, 0xc3, 0xa4, 0xf0, 0x76, 0x21, 0x43, 0x44, 0xff, 0x4c, 0xf5, ++ 0xb1, 0x22, 0x47, 0x64, 0x3b, 0x8f, 0xae, 0xff, 0x1c, 0x7d, 0xff, 0x4e, ++ 0x45, 0x8c, 0xc3, 0x70, 0xde, 0xfe, 0xdd, 0x3a, 0xba, 0x66, 0xeb, 0xf1, ++ 0x49, 0x13, 0xf8, 0x30, 0xc3, 0xf9, 0xe8, 0xc1, 0x5c, 0x3a, 0x38, 0x59, ++ 0x7a, 0x38, 0x6e, 0x81, 0x4f, 0x48, 0x39, 0x2f, 0x1c, 0xb7, 0x7e, 0x1c, ++ 0x17, 0x8a, 0xfe, 0x03, 0x8a, 0xb4, 0x7e, 0x01, 0x3d, 0x86, 0x75, 0xb5, ++ 0x6b, 0x07, 0xfc, 0x68, 0x9d, 0xca, 0xb3, 0x04, 0x77, 0x82, 0x7e, 0x08, ++ 0xed, 0xfb, 0xf2, 0x14, 0xae, 0x03, 0xe7, 0x1a, 0xaf, 0x75, 0x5b, 0xa0, ++ 0xfe, 0xfe, 0x91, 0x96, 0xd0, 0xe5, 0x50, 0x7e, 0x2e, 0x58, 0x10, 0xb4, ++ 0x40, 0xf9, 0xe4, 0x27, 0x8f, 0x3a, 0xd1, 0x8e, 0xa9, 0x78, 0xd2, 0xa8, ++ 0x62, 0xb9, 0x61, 0x9f, 0x8d, 0xd6, 0x97, 0xb6, 0x1d, 0x0a, 0x95, 0x57, ++ 0x59, 0x5a, 0xee, 0x9c, 0x00, 0xe5, 0x1d, 0x4f, 0x1a, 0xd9, 0x76, 0xea, ++ 0x2e, 0xd3, 0x80, 0xe3, 0x3b, 0x25, 0x74, 0x0a, 0x0b, 0xf1, 0x7c, 0xa9, ++ 0x8d, 0x67, 0x2b, 0xb6, 0xed, 0xbf, 0x11, 0xdb, 0x97, 0x35, 0x59, 0x98, ++ 0x0d, 0xe0, 0x55, 0x3c, 0xbd, 0x6c, 0xe6, 0x04, 0xc8, 0x2f, 0x3b, 0x64, ++ 0x62, 0x58, 0xa5, 0x62, 0xe7, 0x5a, 0x73, 0x5f, 0xc8, 0x2f, 0x0f, 0x2a, ++ 0x0d, 0x98, 0x07, 0x7c, 0x69, 0x9d, 0x0a, 0xe4, 0xd9, 0x82, 0x3b, 0xa1, ++ 0xfe, 0xba, 0x7d, 0x5f, 0xb6, 0x21, 0xfe, 0xe7, 0x1a, 0x4d, 0x83, 0x10, ++ 0x9f, 0x33, 0xb0, 0x4e, 0xb8, 0x61, 0x9d, 0x78, 0xc9, 0xd1, 0x92, 0x3a, ++ 0x1b, 0xe8, 0x53, 0x1e, 0xdc, 0x3d, 0x0d, 0xdb, 0x97, 0xef, 0x52, 0x3c, ++ 0xa0, 0xe1, 0x00, 0xff, 0x9d, 0x07, 0x33, 0x10, 0xff, 0x47, 0x14, 0x8f, ++ 0x05, 0x58, 0xb8, 0xa2, 0x3e, 0x9e, 0xb9, 0x23, 0xe6, 0xcb, 0xa9, 0x46, ++ 0x23, 0x8d, 0x77, 0xd5, 0x36, 0x25, 0xc8, 0x00, 0xde, 0x32, 0x56, 0x3b, ++ 0x0d, 0xe9, 0x59, 0x81, 0xc4, 0x41, 0x3c, 0x3c, 0x96, 0xa0, 0x4d, 0xe9, ++ 0x9a, 0x6f, 0x67, 0xfc, 0x75, 0xd4, 0x9f, 0x96, 0xaf, 0x78, 0x04, 0xfa, ++ 0x83, 0xf6, 0x95, 0x8f, 0x2b, 0x1e, 0x1c, 0x72, 0xa5, 0x81, 0xf9, 0x70, ++ 0x1e, 0xb7, 0x3d, 0x6d, 0x2b, 0x79, 0xc8, 0x8e, 0xe3, 0x5d, 0x6b, 0x1e, ++ 0xec, 0xc0, 0x71, 0x6e, 0x34, 0x63, 0xbd, 0x65, 0xc1, 0x85, 0x4f, 0xd9, ++ 0xdc, 0x88, 0xe7, 0x36, 0xf3, 0x34, 0xc4, 0x77, 0xeb, 0x36, 0x73, 0xe9, ++ 0x50, 0xa4, 0x23, 0x5b, 0x50, 0x34, 0x14, 0xf1, 0xfb, 0xbf, 0x32, 0x7e, ++ 0x75, 0x46, 0x2f, 0x8e, 0x77, 0xd5, 0x48, 0xcb, 0x76, 0x23, 0xe0, 0xc1, ++ 0xec, 0xa1, 0x81, 0xb3, 0x1c, 0xdd, 0xf5, 0xec, 0x19, 0x58, 0xaf, 0xdc, ++ 0x11, 0xeb, 0x67, 0x39, 0x03, 0xbd, 0x4f, 0xeb, 0x77, 0xd0, 0x5c, 0x3c, ++ 0xac, 0xeb, 0xfb, 0x97, 0x86, 0x44, 0xd2, 0x1f, 0x2b, 0xea, 0x8d, 0xcc, ++ 0x6d, 0xed, 0xea, 0x47, 0x93, 0x8f, 0xc0, 0x11, 0x21, 0x1f, 0x7b, 0x1d, ++ 0x44, 0x6f, 0x8d, 0x9f, 0xab, 0x5c, 0x7c, 0x0a, 0x68, 0xfc, 0x5c, 0x95, ++ 0x28, 0xf8, 0xab, 0x76, 0xe4, 0xcf, 0x1a, 0xd6, 0x1d, 0x9f, 0x3b, 0x91, ++ 0x2f, 0x64, 0x4f, 0xbb, 0x28, 0xfd, 0x05, 0xac, 0x9b, 0x98, 0x6e, 0x81, ++ 0x75, 0x1e, 0xe9, 0x77, 0x2f, 0xd8, 0x4f, 0x6e, 0xb2, 0xcb, 0x3d, 0xf4, ++ 0xfd, 0x01, 0xb0, 0x93, 0x30, 0xdd, 0x0a, 0x76, 0x12, 0xa6, 0x0f, 0x82, ++ 0x9d, 0xe4, 0x16, 0x76, 0x12, 0xd6, 0xdb, 0x0e, 0x76, 0x12, 0xa6, 0x3b, ++ 0xc0, 0x4e, 0xc2, 0xef, 0x0f, 0x83, 0x3d, 0x8e, 0x69, 0x3d, 0xd8, 0xe3, ++ 0xf8, 0xfd, 0x51, 0xb0, 0xc7, 0x31, 0xdd, 0xe5, 0x0f, 0xd0, 0xf7, 0xc7, ++ 0xfd, 0x35, 0x94, 0x36, 0xf8, 0x6b, 0x29, 0xdd, 0x83, 0x7c, 0x83, 0xb4, ++ 0xd1, 0x1f, 0xa4, 0x7a, 0x4f, 0xf9, 0xeb, 0x29, 0x6d, 0xf2, 0x37, 0xd0, ++ 0xf7, 0x67, 0xfc, 0x4d, 0x94, 0xde, 0x2e, 0xe8, 0xe8, 0x9c, 0xc8, 0x0a, ++ 0x70, 0x1d, 0x75, 0x7a, 0x99, 0x0b, 0xc9, 0x9e, 0x34, 0xc3, 0x5b, 0x60, ++ 0x82, 0x7c, 0x52, 0x11, 0xcf, 0xa7, 0xde, 0x10, 0x28, 0x30, 0x43, 0x3e, ++ 0xd5, 0x07, 0x79, 0xa0, 0x4b, 0xdf, 0x95, 0xa1, 0x02, 0x0b, 0xe4, 0xfb, ++ 0x56, 0xf3, 0xf2, 0x01, 0xb7, 0xb0, 0x49, 0x56, 0xc8, 0x0f, 0x08, 0xf0, ++ 0xf2, 0xec, 0xdb, 0xbd, 0x93, 0x6c, 0x90, 0xcf, 0xae, 0xe5, 0xe5, 0x83, ++ 0xb7, 0x06, 0x26, 0xc5, 0x41, 0x7e, 0x70, 0x90, 0x97, 0x5f, 0xb4, 0x2b, ++ 0x34, 0x29, 0x1e, 0xf2, 0x17, 0x35, 0xf0, 0xf2, 0xe1, 0xcd, 0x6c, 0xb2, ++ 0x1d, 0xf2, 0xc3, 0x43, 0x3c, 0x9f, 0xf7, 0x92, 0x77, 0xb2, 0x03, 0xf2, ++ 0x79, 0x2d, 0x3c, 0x9f, 0xff, 0xe7, 0xc0, 0x64, 0x27, 0xe4, 0xf3, 0x5b, ++ 0x79, 0xfb, 0xf1, 0x67, 0x83, 0x46, 0x77, 0x94, 0xf5, 0x77, 0x8f, 0xc9, ++ 0xbd, 0x18, 0x55, 0xce, 0x01, 0xe5, 0x6d, 0xaf, 0x9a, 0x01, 0x79, 0xb3, ++ 0xfb, 0x26, 0x54, 0x89, 0x47, 0x95, 0x53, 0x94, 0x6f, 0x34, 0x79, 0xa9, ++ 0xfc, 0x7d, 0xa5, 0xdd, 0xab, 0xc2, 0x3a, 0xdf, 0x68, 0xf6, 0x52, 0xf9, ++ 0x17, 0xca, 0xe7, 0x94, 0x7f, 0xca, 0xe4, 0xa3, 0xf2, 0x78, 0x83, 0x52, ++ 0x40, 0x79, 0xb3, 0x8f, 0xca, 0xfb, 0x1b, 0xe2, 0x28, 0xdf, 0x64, 0x0a, ++ 0x50, 0xf9, 0x08, 0x43, 0x1f, 0x9e, 0x37, 0x07, 0xa8, 0xbc, 0xc0, 0xd0, ++ 0xaf, 0x00, 0xe1, 0x3f, 0x63, 0x0a, 0x52, 0xf9, 0x35, 0x86, 0x41, 0x3c, ++ 0x6f, 0x0e, 0x52, 0xf9, 0x2f, 0xd4, 0xe1, 0x05, 0x53, 0xa0, 0xfe, 0xe3, ++ 0x06, 0xdf, 0x5e, 0xd4, 0x77, 0xeb, 0x15, 0x5f, 0x19, 0xda, 0x87, 0x4c, ++ 0x6d, 0x48, 0x47, 0x7d, 0xa5, 0xd9, 0x95, 0x3b, 0x71, 0x70, 0x68, 0x67, ++ 0x66, 0x98, 0x69, 0x1e, 0xec, 0xf9, 0x43, 0xfe, 0x43, 0x34, 0x0f, 0xf0, ++ 0x2f, 0x19, 0xf3, 0xa5, 0x0f, 0xa3, 0x5d, 0x0a, 0x70, 0x0e, 0x12, 0x1c, ++ 0x13, 0xc0, 0x31, 0xf6, 0x0c, 0x27, 0xef, 0xe5, 0xb1, 0x12, 0x9c, 0xbc, ++ 0x97, 0xcb, 0x34, 0x38, 0xaf, 0x10, 0x1c, 0x5b, 0xef, 0xe0, 0xec, 0x79, ++ 0x79, 0xbc, 0x8c, 0xcf, 0xcb, 0xe5, 0x1a, 0x9c, 0x63, 0x04, 0xc7, 0xd1, ++ 0xbb, 0x71, 0xe5, 0xbd, 0x32, 0x51, 0xc6, 0xe7, 0x95, 0x95, 0x1a, 0x9c, ++ 0xe3, 0x04, 0x27, 0xb1, 0x77, 0xf8, 0x34, 0x1e, 0x95, 0xe9, 0xd3, 0x78, ++ 0x34, 0x4c, 0x9f, 0x33, 0xb8, 0x3e, 0xac, 0x4f, 0xe9, 0x1d, 0x3e, 0xa3, ++ 0x5f, 0x93, 0xe9, 0x33, 0xfa, 0xb5, 0x30, 0x7d, 0x3e, 0x26, 0x7c, 0x32, ++ 0x7a, 0x07, 0xa7, 0xf1, 0x35, 0x99, 0x3e, 0x8d, 0xaf, 0x85, 0xe9, 0xf3, ++ 0x15, 0xc1, 0xe9, 0xdf, 0xbb, 0x71, 0x8d, 0x7e, 0x5d, 0xa6, 0xcf, 0xe8, ++ 0xd7, 0xc3, 0xf4, 0x31, 0x19, 0x10, 0x4e, 0x56, 0xef, 0xe0, 0x3c, 0xf5, ++ 0xb6, 0x4c, 0x9f, 0xa7, 0xde, 0x0e, 0xd3, 0xc7, 0x69, 0x40, 0xfa, 0x0c, ++ 0xea, 0xdd, 0xb8, 0xf2, 0xdf, 0x91, 0xe9, 0x93, 0xff, 0x4e, 0x98, 0x3e, ++ 0x69, 0x84, 0xcf, 0x90, 0xde, 0xc1, 0x79, 0xea, 0x1d, 0x99, 0x3e, 0x4f, ++ 0xbd, 0x13, 0xa6, 0x8f, 0x9b, 0xf0, 0x19, 0xd6, 0xbb, 0x71, 0xe5, 0xff, ++ 0x45, 0xa6, 0x4f, 0xfe, 0x5f, 0xc2, 0xf4, 0x19, 0x42, 0x70, 0x46, 0xf6, ++ 0x0e, 0x9f, 0xa6, 0xf7, 0x64, 0xfa, 0x34, 0xbd, 0x17, 0xa6, 0x4f, 0x1e, ++ 0xc1, 0x19, 0xd3, 0x3b, 0x7c, 0xc6, 0x9e, 0x92, 0xe9, 0x33, 0xf6, 0x54, ++ 0x98, 0x3e, 0x13, 0x08, 0xce, 0xb8, 0xde, 0xc1, 0x69, 0x3a, 0x25, 0xd3, ++ 0xa7, 0xe9, 0x54, 0x98, 0x3e, 0x53, 0x88, 0xce, 0x97, 0xf6, 0x6e, 0x5c, ++ 0x63, 0xdf, 0x97, 0xe9, 0x33, 0xf6, 0xfd, 0x30, 0x7d, 0xae, 0x22, 0x38, ++ 0x05, 0xbe, 0x7a, 0xc2, 0x87, 0x01, 0x1c, 0x47, 0x6c, 0x38, 0xcf, 0x9c, ++ 0x93, 0xe9, 0xf3, 0xcc, 0xb9, 0x30, 0x7d, 0xe6, 0x10, 0x9c, 0xa9, 0x00, ++ 0x27, 0xa7, 0x67, 0x38, 0xe3, 0xdb, 0x64, 0xfa, 0x8c, 0x6f, 0x0b, 0xd3, ++ 0x67, 0x01, 0xc1, 0xb9, 0xb2, 0x77, 0x70, 0x9e, 0x69, 0x93, 0xe9, 0xf3, ++ 0x4c, 0x5b, 0x98, 0x3e, 0x65, 0x44, 0xe7, 0xab, 0x7a, 0x37, 0xae, 0xf1, ++ 0xed, 0x32, 0x7d, 0xc6, 0xb7, 0x73, 0xfa, 0x54, 0x59, 0x3c, 0x93, 0x1d, ++ 0x68, 0xdf, 0x25, 0x32, 0xcf, 0x76, 0x68, 0x72, 0xc9, 0xc9, 0x86, 0x03, ++ 0x4e, 0xc8, 0x9b, 0xec, 0xcc, 0x83, 0x60, 0x5f, 0x52, 0x42, 0x3b, 0x10, ++ 0x3e, 0xac, 0x95, 0x64, 0x17, 0xaa, 0x1e, 0xcd, 0x4e, 0xf1, 0x30, 0xb4, ++ 0x43, 0x67, 0x38, 0xdd, 0x1e, 0xf4, 0xfb, 0x18, 0x35, 0x7b, 0x84, 0xb5, ++ 0xd0, 0x7e, 0xc1, 0xbe, 0x2b, 0x51, 0xf2, 0x07, 0x7d, 0x69, 0x98, 0x74, ++ 0x0b, 0xe2, 0xeb, 0x00, 0xab, 0x2d, 0xd2, 0x2e, 0x49, 0x18, 0x1b, 0x27, ++ 0xd9, 0x43, 0x89, 0xde, 0x24, 0x29, 0xdf, 0xa7, 0xb0, 0xaf, 0x54, 0x3f, ++ 0xa5, 0x28, 0x5b, 0x2a, 0x4f, 0x2b, 0xb9, 0x48, 0x2a, 0xcf, 0xf0, 0xe5, ++ 0x49, 0xf9, 0xcc, 0xb2, 0xf1, 0x52, 0xfd, 0xfe, 0xd5, 0x93, 0xa4, 0xfc, ++ 0x05, 0x6b, 0xa6, 0x4b, 0xf5, 0xb3, 0x02, 0xb3, 0xa4, 0x7c, 0x4e, 0xcd, ++ 0x75, 0x52, 0xfd, 0x41, 0xb5, 0x8b, 0xa4, 0xf2, 0x0b, 0xeb, 0xca, 0xa5, ++ 0xf2, 0x21, 0xc1, 0x55, 0x52, 0xfe, 0xe2, 0xfa, 0xff, 0x23, 0xd5, 0x1f, ++ 0xd6, 0xb0, 0x4e, 0x2a, 0x1f, 0xd1, 0xb4, 0x59, 0x2a, 0x1f, 0x19, 0xfa, ++ 0x85, 0x94, 0x1f, 0x75, 0xe8, 0x01, 0xa9, 0xfe, 0x98, 0x96, 0xed, 0x52, ++ 0xf9, 0x25, 0xc7, 0x1e, 0x95, 0xca, 0xc7, 0xb5, 0xee, 0x91, 0xf2, 0x13, ++ 0x4e, 0x3f, 0xa3, 0xb3, 0x03, 0xe5, 0xfd, 0xff, 0xfa, 0x02, 0xc6, 0xed, ++ 0xc1, 0x0c, 0x33, 0xd9, 0x83, 0x21, 0x87, 0x99, 0xf2, 0xe6, 0x7d, 0x36, ++ 0xb2, 0xff, 0xf7, 0x63, 0x1e, 0xf8, 0x69, 0xee, 0x3b, 0x83, 0xf2, 0xe6, ++ 0x67, 0x17, 0xbb, 0x93, 0x71, 0x3f, 0x8d, 0x00, 0x60, 0xbd, 0x2f, 0xe8, ++ 0x5b, 0x76, 0x21, 0xfa, 0x7b, 0x6e, 0x1e, 0xef, 0xbb, 0xd0, 0x05, 0xdf, ++ 0x6f, 0x36, 0xfb, 0x46, 0xb8, 0xa2, 0xf8, 0x23, 0x3c, 0xaa, 0x6f, 0x9f, ++ 0x81, 0xfc, 0x45, 0x2d, 0x0a, 0x4b, 0xc7, 0xd4, 0x6d, 0xc0, 0x34, 0xce, ++ 0x28, 0xf6, 0xeb, 0x16, 0x2e, 0x5f, 0x1b, 0xb3, 0xf2, 0x1f, 0x0a, 0x44, ++ 0xc8, 0x69, 0x4d, 0x7f, 0x98, 0x7f, 0x90, 0x3f, 0x6c, 0x30, 0x93, 0xfd, ++ 0xaa, 0xc9, 0xf7, 0xc6, 0xfe, 0xa5, 0xe9, 0x0b, 0x23, 0xfa, 0xd9, 0xd0, ++ 0xdf, 0x5c, 0xb2, 0x7d, 0x28, 0xff, 0xbe, 0xd8, 0x8e, 0xfd, 0x15, 0xbd, ++ 0x88, 0xf3, 0xac, 0xca, 0xdc, 0x31, 0x18, 0xf1, 0xd2, 0xf7, 0x63, 0xc9, ++ 0x1e, 0x2b, 0xf5, 0x63, 0x1d, 0x50, 0x46, 0xfd, 0xbc, 0x86, 0xfd, 0x44, ++ 0xf8, 0xbd, 0x2c, 0x03, 0xca, 0x74, 0xfd, 0x58, 0x4b, 0xb6, 0x8b, 0xef, ++ 0xa2, 0x9f, 0x63, 0x38, 0xae, 0x58, 0xfd, 0x6c, 0xcc, 0x1e, 0x2f, 0x8f, ++ 0x67, 0x40, 0x39, 0xf5, 0xf3, 0xae, 0xae, 0x9f, 0x8d, 0x03, 0xca, 0x75, ++ 0xfd, 0xc4, 0xf1, 0xf1, 0xc0, 0x77, 0xd1, 0xcf, 0x7b, 0xe7, 0x1d, 0x4f, ++ 0xce, 0x44, 0x79, 0x3c, 0x17, 0xac, 0xa4, 0x7e, 0x3a, 0x74, 0x74, 0xb3, ++ 0x5c, 0xb0, 0x52, 0xd7, 0x8f, 0x9d, 0xfa, 0xc1, 0xef, 0x8b, 0xc9, 0x9f, ++ 0x0b, 0xbb, 0x80, 0x34, 0xe0, 0xb3, 0xa5, 0xa3, 0x94, 0xe4, 0xe0, 0x3f, ++ 0x6d, 0x2c, 0x00, 0x72, 0x61, 0xce, 0x2c, 0xff, 0x35, 0xe6, 0xd9, 0x5b, ++ 0x36, 0x36, 0x08, 0xfb, 0x71, 0x43, 0xbf, 0x50, 0x8f, 0xe5, 0x72, 0xff, ++ 0xd1, 0xd3, 0x86, 0x24, 0x1a, 0xcf, 0x67, 0x71, 0xc0, 0xff, 0x08, 0x3b, ++ 0xb5, 0x6b, 0x3f, 0x1b, 0xa0, 0x7d, 0xf1, 0x52, 0x81, 0x22, 0x0b, 0x02, ++ 0x46, 0xb0, 0xbf, 0xad, 0x14, 0xb2, 0xb9, 0x64, 0x57, 0xf1, 0x80, 0x9b, ++ 0xdc, 0x90, 0x36, 0x1d, 0x18, 0x78, 0x37, 0xf6, 0xb3, 0xc5, 0xe1, 0x19, ++ 0x04, 0xf9, 0xb6, 0xa6, 0xc9, 0xe6, 0xc5, 0x51, 0xe4, 0x69, 0x69, 0xad, ++ 0xe9, 0x54, 0x6b, 0xa4, 0x5f, 0x44, 0xdb, 0xdf, 0x4c, 0x62, 0xb9, 0xd5, ++ 0xd0, 0xff, 0x2e, 0x9b, 0x4b, 0xca, 0x6b, 0xe9, 0x4a, 0xc5, 0xc5, 0x84, ++ 0x3f, 0x82, 0xf2, 0x27, 0x60, 0xdf, 0xc2, 0x60, 0x3f, 0xf0, 0x67, 0xd8, ++ 0x17, 0x30, 0x20, 0xd5, 0xbb, 0x26, 0xbe, 0x4f, 0x7b, 0x07, 0xf6, 0x37, ++ 0x98, 0x6f, 0x85, 0xfd, 0x0d, 0x96, 0x33, 0xb6, 0x96, 0xda, 0x9d, 0x10, ++ 0x7e, 0xda, 0x13, 0xb7, 0x2b, 0x41, 0xa4, 0xf7, 0x67, 0x3f, 0xf9, 0xa1, ++ 0x89, 0xf4, 0x78, 0x80, 0xbd, 0x9a, 0x9e, 0x8a, 0x7e, 0x37, 0xfe, 0xb7, ++ 0x60, 0x4d, 0x3c, 0xfa, 0xf8, 0xc3, 0xf8, 0x2d, 0x0c, 0xf4, 0x91, 0xf2, ++ 0xa0, 0x2e, 0x33, 0x0d, 0xe9, 0xb4, 0x2f, 0xa4, 0xfd, 0x6f, 0xc7, 0xd3, ++ 0x96, 0xe0, 0x76, 0xa4, 0x6b, 0x4d, 0x26, 0xd0, 0x54, 0xd4, 0xcb, 0x66, ++ 0xec, 0x75, 0xd8, 0xe4, 0x66, 0x24, 0x51, 0x36, 0xd3, 0x30, 0x96, 0xb1, ++ 0xd9, 0xd5, 0xc5, 0x53, 0xd3, 0x68, 0x16, 0x29, 0xfd, 0x57, 0x01, 0x9e, ++ 0xb3, 0x1a, 0x47, 0x9a, 0xa0, 0x05, 0x6b, 0x33, 0xb5, 0xde, 0xe8, 0xb1, ++ 0x77, 0xc1, 0x65, 0x5e, 0xd3, 0x09, 0xa4, 0x8f, 0x15, 0xfe, 0x21, 0x9c, ++ 0x6b, 0x0a, 0x21, 0x1f, 0xd1, 0xff, 0xb5, 0x45, 0x72, 0x7e, 0x2e, 0x53, ++ 0xbb, 0xf2, 0xc0, 0xef, 0xc1, 0xc6, 0x6c, 0xc1, 0x37, 0xd1, 0xaf, 0xdb, ++ 0x6b, 0x42, 0xbe, 0x16, 0xa5, 0x72, 0x7c, 0xe6, 0x62, 0x9a, 0x87, 0xc5, ++ 0xdc, 0xdf, 0x51, 0xe2, 0xe2, 0x6d, 0x35, 0x7c, 0xaa, 0x16, 0x9b, 0x58, ++ 0x88, 0xf6, 0xa7, 0x81, 0x14, 0x86, 0xfe, 0xe8, 0x40, 0x32, 0xd5, 0xbb, ++ 0x4e, 0xdb, 0x67, 0xea, 0xf0, 0x2b, 0x31, 0x59, 0xbd, 0x45, 0x40, 0xd7, ++ 0x92, 0x85, 0x46, 0xa2, 0xab, 0x1e, 0xdf, 0x37, 0xf7, 0xc5, 0x7b, 0x0d, ++ 0xc3, 0x21, 0xad, 0xb9, 0xdb, 0x84, 0xae, 0xcd, 0x9e, 0xf0, 0x9f, 0xe7, ++ 0x93, 0xcb, 0x59, 0x19, 0xef, 0x4f, 0xa3, 0xab, 0x26, 0x2f, 0xa7, 0x04, ++ 0x7f, 0x4f, 0x20, 0xff, 0x21, 0x7d, 0x1f, 0xf9, 0x0f, 0x78, 0x9f, 0x14, ++ 0xfc, 0xef, 0x92, 0x63, 0xce, 0xff, 0x2a, 0x8b, 0x6f, 0x26, 0xf2, 0xbf, ++ 0xe3, 0x7e, 0x23, 0x23, 0x7e, 0x09, 0xbe, 0xcf, 0x11, 0x7c, 0x5f, 0x5a, ++ 0x2b, 0xf3, 0x7d, 0x0e, 0xfa, 0xc9, 0xa1, 0xfe, 0x9c, 0xd5, 0x59, 0xc1, ++ 0xf5, 0x58, 0xbf, 0xae, 0x8f, 0xc4, 0x5f, 0x18, 0xb8, 0x4c, 0x87, 0xda, ++ 0xbb, 0xa6, 0x82, 0x5a, 0xed, 0x86, 0xff, 0xdb, 0x42, 0x0e, 0xae, 0xab, ++ 0xd9, 0xfd, 0x3c, 0xb2, 0xf7, 0xfa, 0x32, 0xdd, 0xf8, 0x04, 0x1f, 0x6e, ++ 0x14, 0x7c, 0x98, 0xaf, 0xa3, 0xc7, 0x1c, 0xc1, 0xb7, 0xf9, 0x82, 0x6f, ++ 0xcb, 0x58, 0xe0, 0xb6, 0x0c, 0xf2, 0x1f, 0x05, 0x4d, 0xe8, 0x17, 0x9b, ++ 0x57, 0xa6, 0x30, 0xd4, 0x17, 0x55, 0x3f, 0xd5, 0xf8, 0xd6, 0x2a, 0xf1, ++ 0xcd, 0xa7, 0xf1, 0x4d, 0x87, 0xef, 0x8d, 0x82, 0x6f, 0x37, 0xfe, 0x84, ++ 0xf3, 0x4d, 0x8f, 0x77, 0xab, 0xe0, 0x5b, 0x6b, 0xdd, 0xc7, 0x26, 0x96, ++ 0xdd, 0x1d, 0x6f, 0x3d, 0x9e, 0x0b, 0xd6, 0xe8, 0xc6, 0x15, 0xd0, 0xf3, ++ 0xad, 0x56, 0x9c, 0x3b, 0xb8, 0xcc, 0x68, 0xef, 0x14, 0x7b, 0x0b, 0xfa, ++ 0x9c, 0x8c, 0xa8, 0x7f, 0x4d, 0xe1, 0x95, 0x7d, 0x4e, 0x46, 0xe8, 0x85, ++ 0x6b, 0x8b, 0x8a, 0xa5, 0xfc, 0xdc, 0x92, 0x79, 0x52, 0xfd, 0x79, 0xbe, ++ 0x85, 0x52, 0xf9, 0xf5, 0x65, 0xcb, 0xa5, 0xf2, 0xf9, 0xd5, 0x3f, 0x94, ++ 0xf2, 0x0b, 0xd6, 0xfc, 0x44, 0xaa, 0xbf, 0x30, 0xb0, 0x56, 0x2a, 0x5f, ++ 0x5c, 0xb3, 0x49, 0x2a, 0x5f, 0x5a, 0x7b, 0x97, 0x94, 0x5f, 0x56, 0x77, ++ 0xbf, 0x54, 0x7f, 0x79, 0x70, 0x9b, 0x54, 0xbe, 0xa2, 0xfe, 0x11, 0xa9, ++ 0xbc, 0xa2, 0x61, 0xb7, 0x94, 0xaf, 0x6a, 0x7a, 0x5a, 0xaa, 0x6f, 0xd8, ++ 0x37, 0xe4, 0x6a, 0x94, 0xaf, 0x97, 0x8e, 0x1a, 0x19, 0xfa, 0xcb, 0x3e, ++ 0xf5, 0xbc, 0x4f, 0xfe, 0xba, 0x4f, 0x3d, 0x26, 0x0f, 0xd6, 0xa9, 0x44, ++ 0x99, 0x1b, 0x87, 0xf2, 0xec, 0x26, 0x79, 0x3e, 0xe5, 0xcf, 0xa5, 0xf4, ++ 0xb4, 0xdf, 0x43, 0xf2, 0x7e, 0xc6, 0x3f, 0x96, 0xd2, 0xb6, 0xa6, 0x03, ++ 0x76, 0xf4, 0x3f, 0x56, 0xc5, 0x81, 0xde, 0x4f, 0x04, 0x3b, 0xdc, 0xf8, ++ 0xe6, 0xda, 0x9a, 0x7e, 0xb8, 0xde, 0x40, 0xfb, 0xf1, 0x8c, 0x35, 0x1b, ++ 0x5b, 0xd7, 0x06, 0x20, 0x7f, 0x00, 0x0f, 0xa3, 0x60, 0xde, 0xcc, 0xa8, ++ 0x33, 0xb3, 0xd0, 0x28, 0x06, 0xd2, 0xdd, 0x37, 0x2c, 0xcf, 0x1d, 0xc6, ++ 0x88, 0xf2, 0xd6, 0x1e, 0xca, 0xeb, 0x54, 0x16, 0xea, 0xd3, 0xbd, 0x7c, ++ 0x46, 0x6b, 0xf4, 0xef, 0xed, 0x4a, 0xc7, 0xe0, 0x0c, 0xf4, 0x13, 0xbe, ++ 0x61, 0x61, 0x3b, 0x23, 0xfc, 0x75, 0xdd, 0xcf, 0x2b, 0x58, 0x26, 0xda, ++ 0x15, 0xb1, 0xca, 0xcf, 0x1a, 0x58, 0x59, 0xe4, 0x79, 0xd6, 0x49, 0x23, ++ 0x3f, 0x27, 0x71, 0x1a, 0x27, 0x9d, 0x34, 0x42, 0xba, 0xd2, 0xcc, 0xe7, ++ 0xff, 0xca, 0x3d, 0x19, 0x93, 0x98, 0x13, 0xf3, 0xa1, 0xc1, 0xd5, 0x51, ++ 0xfc, 0x2e, 0xe1, 0xfe, 0x1a, 0x00, 0x99, 0x34, 0xe4, 0x73, 0x8e, 0x34, ++ 0xef, 0x97, 0xd5, 0x5d, 0xdc, 0x35, 0xcf, 0x19, 0xf6, 0x93, 0x4d, 0x72, ++ 0xbb, 0x3c, 0x38, 0x4a, 0xfa, 0xbe, 0xa2, 0x7e, 0x82, 0xd4, 0x2e, 0x57, ++ 0xf1, 0xbd, 0x6b, 0x84, 0x7a, 0x67, 0xf7, 0x1b, 0x69, 0xbd, 0x66, 0xa1, ++ 0x03, 0x03, 0xae, 0x19, 0x86, 0xf8, 0x79, 0x4f, 0xe2, 0x77, 0xd6, 0x94, ++ 0x42, 0x76, 0x57, 0x8b, 0xdf, 0xdb, 0xe7, 0xe4, 0x40, 0xc6, 0xfe, 0xe8, ++ 0x2f, 0xa4, 0xf4, 0x55, 0x7f, 0x11, 0xa5, 0xaf, 0xf9, 0x4b, 0x28, 0x3d, ++ 0xe6, 0xf7, 0x51, 0xfa, 0xa6, 0xbf, 0x8c, 0xd2, 0x3f, 0xfb, 0xab, 0x29, ++ 0x7d, 0xc7, 0xbf, 0x86, 0xd2, 0x56, 0x7f, 0x80, 0xd2, 0x13, 0xfe, 0x1a, ++ 0x4a, 0x4f, 0xfa, 0x6b, 0x29, 0x3d, 0xe5, 0xaf, 0xa3, 0xf4, 0xb4, 0x3f, ++ 0x48, 0xe9, 0x19, 0x7f, 0x3d, 0xa5, 0x67, 0xfd, 0x0d, 0x94, 0xb6, 0xf9, ++ 0x9b, 0x28, 0xd5, 0xf4, 0x67, 0x4f, 0xf2, 0x77, 0x5a, 0xac, 0xaf, 0x67, ++ 0x50, 0xfe, 0xa2, 0xc8, 0x99, 0xf9, 0x56, 0xb6, 0xae, 0x66, 0x62, 0x97, ++ 0x9c, 0xc5, 0xa9, 0x96, 0x75, 0x28, 0x67, 0x1a, 0x7d, 0x67, 0xd4, 0x59, ++ 0x84, 0x3c, 0xa4, 0x4a, 0xf2, 0x90, 0x88, 0xeb, 0x30, 0xc9, 0x59, 0x0f, ++ 0xe5, 0x75, 0x26, 0x21, 0x87, 0xb1, 0xda, 0x47, 0x2f, 0x47, 0x79, 0xeb, ++ 0xfb, 0x3d, 0xc8, 0x1b, 0x63, 0xeb, 0x48, 0x0e, 0x66, 0x0a, 0xb9, 0xfb, ++ 0xae, 0xf2, 0xc6, 0xd0, 0x1b, 0x9f, 0x82, 0xf2, 0x94, 0xa9, 0x93, 0x27, ++ 0x59, 0x0e, 0x35, 0x39, 0xd2, 0xf4, 0x40, 0xae, 0x52, 0x34, 0x5c, 0x1d, ++ 0xd3, 0x25, 0x57, 0x33, 0x8d, 0xdc, 0x4e, 0xd2, 0xe4, 0xea, 0xe7, 0x68, ++ 0x27, 0x46, 0xb1, 0xb7, 0x6e, 0x50, 0x15, 0xb1, 0xfe, 0x71, 0xfb, 0x88, ++ 0xf9, 0x32, 0x0c, 0x68, 0xbf, 0xad, 0x12, 0x7e, 0x7f, 0xe6, 0x4e, 0xa7, ++ 0x7c, 0xa7, 0xe8, 0x7b, 0x3d, 0x80, 0x6b, 0xc1, 0x7a, 0x6a, 0x30, 0x17, ++ 0xd7, 0x91, 0xce, 0xdc, 0xbf, 0x0d, 0x46, 0xff, 0x78, 0xe7, 0x31, 0x0b, ++ 0x43, 0x3f, 0x7c, 0xac, 0xf1, 0xe9, 0xe5, 0x25, 0x36, 0xdd, 0xbd, 0xb4, ++ 0x7f, 0x28, 0x0d, 0xc2, 0xa2, 0x36, 0xaa, 0x7b, 0xb9, 0x2d, 0x8e, 0xd3, ++ 0xd5, 0x66, 0x60, 0x85, 0x2c, 0x0f, 0xcf, 0x67, 0xf3, 0x8f, 0xf9, 0x80, ++ 0x9f, 0x71, 0xff, 0x79, 0x71, 0x1e, 0xee, 0x6b, 0xe1, 0xbb, 0xca, 0xc8, ++ 0xae, 0x0a, 0x7a, 0x8a, 0xa3, 0xf8, 0xdb, 0x19, 0xca, 0x78, 0x5a, 0xcf, ++ 0xf4, 0xd5, 0xea, 0x9f, 0x7a, 0xe0, 0xcb, 0x7c, 0x3c, 0x37, 0x9f, 0x29, ++ 0xe6, 0x79, 0xdc, 0x01, 0x23, 0x3f, 0xd7, 0x0e, 0x3d, 0xe4, 0xb9, 0x26, ++ 0xe2, 0x7c, 0x06, 0xf6, 0xdb, 0xe9, 0xe8, 0x77, 0xee, 0x18, 0x64, 0x76, ++ 0x91, 0xfd, 0x10, 0xea, 0x2b, 0xd3, 0x31, 0xd8, 0x57, 0xa2, 0xe3, 0x81, ++ 0x41, 0x9f, 0x0d, 0xc6, 0xf3, 0x8d, 0x4d, 0x20, 0x87, 0x38, 0xbf, 0x3a, ++ 0x07, 0x0e, 0x4e, 0x60, 0xe7, 0x91, 0x8f, 0x9e, 0xf4, 0x7c, 0x4f, 0xf4, ++ 0x5c, 0x14, 0xec, 0xdb, 0x4b, 0x7a, 0x9a, 0x19, 0x9e, 0x1b, 0x01, 0x3d, ++ 0xb7, 0xe3, 0xfd, 0x97, 0xde, 0xd2, 0xb3, 0x27, 0x3d, 0xd9, 0x93, 0x7e, ++ 0x3c, 0xb1, 0x99, 0xd3, 0xd9, 0x29, 0xec, 0xd3, 0x58, 0x74, 0x6e, 0x9f, ++ 0x04, 0xf3, 0x2e, 0x8a, 0x1c, 0xdf, 0xa3, 0xaa, 0xb2, 0x1c, 0xb3, 0x81, ++ 0xfc, 0xbc, 0x43, 0xa3, 0x3f, 0xee, 0x4b, 0x23, 0xe8, 0x7f, 0xa9, 0xdd, ++ 0x4d, 0xf5, 0x9f, 0xdb, 0xf7, 0xd6, 0x80, 0x56, 0xe8, 0xa7, 0xb3, 0xf1, ++ 0xc2, 0x04, 0xc6, 0xcf, 0x73, 0xc8, 0xae, 0xeb, 0x78, 0x52, 0xd8, 0xed, ++ 0xee, 0x4c, 0x99, 0x8f, 0xad, 0x7d, 0x09, 0xae, 0x06, 0xe7, 0xb9, 0x27, ++ 0x5f, 0x1f, 0x80, 0xfb, 0xe4, 0xdb, 0x30, 0x03, 0xf3, 0xec, 0xc9, 0xf8, ++ 0xa2, 0x5f, 0xa9, 0x29, 0x5d, 0xf0, 0x7a, 0x7b, 0x0e, 0x1f, 0x6b, 0x5c, ++ 0xbb, 0xbf, 0xe5, 0xfc, 0x6c, 0x4f, 0xd5, 0xe6, 0x67, 0xcb, 0x00, 0x94, ++ 0xa7, 0xcf, 0x84, 0x1e, 0x88, 0x39, 0xbe, 0x9e, 0xe4, 0x14, 0xc7, 0x07, ++ 0x70, 0xae, 0x52, 0xf8, 0xf8, 0x36, 0x18, 0x8b, 0x7e, 0x87, 0x7a, 0x26, ++ 0x3c, 0xbe, 0xd1, 0x29, 0xbd, 0x1a, 0x5f, 0x55, 0x82, 0x99, 0x29, 0x23, ++ 0x00, 0x3f, 0x87, 0xd9, 0xcc, 0x12, 0x18, 0xdb, 0xa1, 0xfa, 0x0e, 0xaa, ++ 0xb4, 0x8f, 0xf3, 0xb4, 0x06, 0xd0, 0x4f, 0xb1, 0x2f, 0xde, 0xb3, 0x1e, ++ 0x58, 0x52, 0xe5, 0x3c, 0xf3, 0x72, 0xc8, 0x8d, 0xed, 0x64, 0x7f, 0xc6, ++ 0x8a, 0x7a, 0x9b, 0x4b, 0xb6, 0x9f, 0x12, 0x5d, 0xb2, 0xfd, 0x94, 0xe1, ++ 0x8a, 0xb4, 0x9f, 0x3a, 0x0f, 0x3d, 0xe4, 0xf4, 0x01, 0x7e, 0xab, 0xd2, ++ 0x0d, 0xae, 0x93, 0xa3, 0x70, 0x9d, 0xf3, 0x8a, 0x75, 0x8e, 0xaf, 0xab, ++ 0x1a, 0x7e, 0x15, 0x0d, 0x59, 0x2e, 0xbb, 0x04, 0x47, 0xce, 0x77, 0xd6, ++ 0x2a, 0x85, 0x0d, 0x24, 0x4f, 0xee, 0x84, 0xd9, 0x51, 0xce, 0xcb, 0xb4, ++ 0x74, 0x55, 0xba, 0xd9, 0x75, 0x12, 0xd6, 0xab, 0x33, 0xf5, 0x39, 0x09, ++ 0xd8, 0xef, 0x19, 0xbf, 0xd5, 0xc5, 0xd7, 0x57, 0x97, 0x8b, 0xf7, 0x9b, ++ 0xee, 0x8a, 0x5c, 0x5f, 0x57, 0xae, 0x89, 0xa3, 0xfa, 0x1a, 0x7e, 0xb1, ++ 0xe0, 0xfe, 0xb3, 0xf1, 0x63, 0xac, 0x91, 0xbd, 0x6b, 0xc5, 0x75, 0x11, ++ 0xca, 0x72, 0x62, 0xd7, 0x8f, 0xc9, 0x4f, 0xf5, 0x13, 0x33, 0x9d, 0x4b, ++ 0x37, 0x9b, 0x3e, 0x43, 0xfb, 0xdd, 0x96, 0xab, 0xd9, 0xef, 0x2a, 0xe5, ++ 0x35, 0xb8, 0x55, 0x0d, 0xc6, 0x80, 0x65, 0x04, 0x7e, 0xdf, 0x25, 0xf5, ++ 0x07, 0xed, 0xdc, 0xda, 0x19, 0x33, 0xb6, 0x8b, 0x2d, 0x37, 0x2a, 0x3b, ++ 0xa5, 0xf1, 0x13, 0xf8, 0x6f, 0xc5, 0x83, 0x77, 0xda, 0xb7, 0x5a, 0x89, ++ 0xcf, 0x3e, 0x80, 0x98, 0x00, 0xf0, 0xda, 0x55, 0x7b, 0x0d, 0xca, 0xd5, ++ 0x09, 0x95, 0xcf, 0xe7, 0x2a, 0x21, 0xa7, 0x15, 0xd6, 0x56, 0xb3, 0xcf, ++ 0x4d, 0xe4, 0x6e, 0x41, 0x79, 0x5e, 0x34, 0x96, 0x69, 0x13, 0x66, 0xee, ++ 0x5b, 0xa0, 0xa7, 0x3f, 0x78, 0xd1, 0x44, 0xf7, 0xb4, 0xd8, 0x57, 0x00, ++ 0x3d, 0xbf, 0xeb, 0xaa, 0xc0, 0x12, 0x56, 0xe4, 0x44, 0xa7, 0xe7, 0xa2, ++ 0xc6, 0x15, 0x33, 0x70, 0xdd, 0xfe, 0xc0, 0xa0, 0xed, 0x87, 0x6b, 0xf3, ++ 0x71, 0xdc, 0xe7, 0x98, 0xa1, 0x10, 0xf5, 0xd2, 0x39, 0xf6, 0x47, 0xe7, ++ 0xa8, 0x88, 0xf9, 0x3a, 0xc4, 0xc4, 0xfd, 0x31, 0xac, 0x86, 0xef, 0x73, ++ 0x02, 0xf0, 0x0f, 0xc7, 0xb7, 0xb4, 0x56, 0xde, 0xf7, 0x2c, 0xab, 0x93, ++ 0xf3, 0xa5, 0x6c, 0x56, 0x2a, 0xea, 0xdb, 0xd2, 0x2d, 0x26, 0x16, 0x04, ++ 0xdc, 0x97, 0xe3, 0xbe, 0x49, 0x1b, 0x37, 0xe8, 0xdf, 0x0c, 0x13, 0xf7, ++ 0x6b, 0x2c, 0x63, 0xd5, 0x1b, 0x70, 0x9f, 0x7e, 0xaf, 0x89, 0xfb, 0x7b, ++ 0x16, 0xb9, 0x98, 0x9a, 0x09, 0x78, 0x55, 0xfc, 0xc7, 0x2f, 0xf3, 0xd1, ++ 0xef, 0xe3, 0x31, 0x71, 0xbb, 0x43, 0x3b, 0x4f, 0x5e, 0x9e, 0xc4, 0xf1, ++ 0x2e, 0x9f, 0x1d, 0x34, 0x7b, 0xa1, 0xfe, 0xbb, 0x8d, 0xa3, 0xe6, 0x80, ++ 0xc6, 0x85, 0xf6, 0xc1, 0x0d, 0x64, 0xff, 0x14, 0x33, 0xcf, 0x4e, 0xd6, ++ 0x9d, 0xee, 0x8b, 0x6b, 0x64, 0xfc, 0x7a, 0xc2, 0x5f, 0x8f, 0xaf, 0x66, ++ 0x07, 0x75, 0x3b, 0xd7, 0x16, 0x78, 0x24, 0xd7, 0x2b, 0xde, 0x60, 0x14, ++ 0x3d, 0x77, 0x99, 0x49, 0x11, 0xfb, 0x3f, 0x3e, 0x3f, 0x66, 0x9b, 0x64, ++ 0x7f, 0xce, 0x3c, 0x93, 0xec, 0xf7, 0xd1, 0xe4, 0xc0, 0x24, 0xe4, 0xe0, ++ 0x84, 0xea, 0xbb, 0xda, 0x34, 0x86, 0xf3, 0x1d, 0xf9, 0xa8, 0xa8, 0x1d, ++ 0x66, 0x5f, 0x44, 0x3d, 0x73, 0x57, 0xbd, 0xd9, 0xe7, 0xab, 0x67, 0xc1, ++ 0x7a, 0x46, 0xaa, 0x37, 0xcf, 0x94, 0x82, 0xf5, 0x3a, 0xa6, 0xd1, 0xfe, ++ 0x98, 0x81, 0x3c, 0x0d, 0xed, 0xaa, 0x67, 0xeb, 0x82, 0x77, 0x23, 0x87, ++ 0x27, 0xd7, 0xab, 0xf8, 0x8f, 0xc7, 0x9e, 0x0a, 0x80, 0xbc, 0x94, 0xff, ++ 0xf6, 0x1e, 0x27, 0x83, 0x75, 0xf3, 0x03, 0xb5, 0x36, 0xd5, 0x03, 0xdf, ++ 0x57, 0xee, 0xbc, 0xcd, 0xe9, 0x85, 0xf4, 0xb4, 0x1a, 0x70, 0x22, 0x3f, ++ 0x3f, 0x08, 0x1a, 0x0b, 0xa3, 0xd1, 0x63, 0x4b, 0x98, 0x1e, 0x5e, 0xbb, ++ 0x82, 0xfe, 0x34, 0x21, 0x9f, 0xac, 0x26, 0x40, 0x7e, 0x8a, 0xcf, 0x76, ++ 0x9a, 0x5c, 0xe4, 0xe7, 0xaf, 0xb7, 0x84, 0x2c, 0x20, 0xa7, 0x95, 0x8d, ++ 0xcb, 0x67, 0xb0, 0xe1, 0x94, 0x3f, 0xce, 0xf3, 0x1b, 0x3f, 0x32, 0x62, ++ 0xbe, 0x49, 0xe6, 0x57, 0xf9, 0xaf, 0xef, 0x49, 0x75, 0xf3, 0x7b, 0x36, ++ 0xdc, 0x9f, 0xc4, 0x42, 0x64, 0xe7, 0x56, 0xee, 0x78, 0x6f, 0x1a, 0xae, ++ 0x17, 0x55, 0xac, 0x83, 0xe4, 0x4c, 0xdf, 0x0e, 0xfb, 0xff, 0x3c, 0x89, ++ 0xe6, 0xf5, 0x42, 0x73, 0x42, 0xf7, 0x72, 0xc0, 0x93, 0xfc, 0x09, 0x55, ++ 0x62, 0x96, 0x55, 0x35, 0xfe, 0xfc, 0x23, 0xa3, 0x13, 0xf3, 0xb2, 0x7c, ++ 0x94, 0x09, 0x7b, 0x15, 0xe9, 0x84, 0xfb, 0xfc, 0xdb, 0x4c, 0x8e, 0xe4, ++ 0x53, 0xf1, 0x90, 0xbd, 0x84, 0x5d, 0x82, 0xf3, 0x5c, 0xa3, 0x07, 0x0b, ++ 0x72, 0xbb, 0x75, 0xfd, 0x23, 0xf7, 0x0d, 0x3f, 0x0e, 0xf8, 0x9c, 0xdd, ++ 0xf1, 0xa2, 0x53, 0x19, 0x1a, 0xa9, 0x1f, 0xb8, 0x9c, 0x75, 0x36, 0x2c, ++ 0xfe, 0x95, 0xd5, 0x10, 0x5b, 0x8f, 0xb4, 0x81, 0x1c, 0x46, 0xda, 0x47, ++ 0x00, 0x98, 0xda, 0xb9, 0x9b, 0x84, 0xbd, 0xdd, 0xcc, 0xd3, 0x95, 0xa6, ++ 0x90, 0x13, 0xef, 0xb3, 0xac, 0xdc, 0x66, 0xf2, 0x80, 0x04, 0xb2, 0x95, ++ 0x8f, 0x19, 0x19, 0xde, 0x03, 0x60, 0x6f, 0x58, 0x82, 0xe8, 0x17, 0x5d, ++ 0xf1, 0xd8, 0xf3, 0xaf, 0x8d, 0x07, 0xba, 0xaf, 0xd8, 0x6d, 0x4a, 0x9e, ++ 0xc1, 0x87, 0x63, 0x57, 0x52, 0xbb, 0xf8, 0x52, 0x05, 0xff, 0x5b, 0x93, ++ 0xd7, 0xc5, 0x87, 0xf2, 0x27, 0x9e, 0x37, 0xbb, 0x87, 0xf1, 0xef, 0xb7, ++ 0x24, 0x75, 0xf1, 0x63, 0xc5, 0xee, 0xfd, 0x66, 0x36, 0xac, 0x3b, 0xfd, ++ 0x26, 0x37, 0xec, 0x37, 0xb7, 0xda, 0xa3, 0xf0, 0xa5, 0xe1, 0xf8, 0x34, ++ 0x5c, 0x67, 0xd7, 0x3f, 0xf2, 0x57, 0x33, 0xfa, 0x13, 0x3f, 0xd8, 0xa7, ++ 0xb0, 0xb4, 0xac, 0xee, 0xed, 0xcb, 0xb6, 0x3d, 0x4f, 0xeb, 0x1d, 0xd2, ++ 0x89, 0xf8, 0x28, 0xf8, 0x14, 0xe6, 0x5b, 0x37, 0x7e, 0x85, 0x66, 0x3e, ++ 0x33, 0x9a, 0xea, 0xb9, 0x50, 0x0f, 0xc6, 0xe2, 0xd7, 0x32, 0xa1, 0x77, ++ 0x41, 0x9e, 0x1f, 0x7f, 0x06, 0xef, 0xff, 0xbc, 0x69, 0xf1, 0xe0, 0xf8, ++ 0xcb, 0x1e, 0xbf, 0xc9, 0x89, 0xe3, 0x78, 0x5f, 0xad, 0xe6, 0x72, 0xfd, ++ 0xcb, 0xdb, 0x52, 0x71, 0x7e, 0x97, 0x99, 0x02, 0xa9, 0x2e, 0x4a, 0xf9, ++ 0xf7, 0xb2, 0x07, 0x7f, 0x44, 0xf2, 0xb6, 0xec, 0xc8, 0x8f, 0x52, 0xc9, ++ 0x5e, 0x60, 0xde, 0x0c, 0x03, 0xe9, 0xe2, 0x40, 0x06, 0x8e, 0x6f, 0xe9, ++ 0xd6, 0x6b, 0x69, 0x7c, 0xa5, 0xcc, 0x47, 0x72, 0x57, 0xf6, 0x4b, 0x63, ++ 0x11, 0xde, 0x47, 0xfc, 0x54, 0x65, 0x85, 0xbb, 0xa3, 0xcc, 0x8b, 0x38, ++ 0xb3, 0x42, 0xf8, 0xbc, 0xbf, 0x1d, 0x0c, 0x19, 0x18, 0xdf, 0xfb, 0xb8, ++ 0xbf, 0x44, 0x7d, 0xf6, 0x47, 0x23, 0xdd, 0x8b, 0x62, 0xec, 0x87, 0x74, ++ 0x6f, 0xec, 0x47, 0x62, 0xac, 0xb0, 0xf2, 0x51, 0xfe, 0x53, 0x2b, 0xe7, ++ 0xd3, 0x71, 0xa1, 0x27, 0x71, 0x22, 0x4b, 0xf2, 0xba, 0x63, 0x63, 0x0b, ++ 0xf2, 0xe7, 0x4c, 0x7f, 0x6f, 0x1a, 0x9e, 0x73, 0x00, 0x1d, 0x02, 0x82, ++ 0x5e, 0xca, 0x37, 0x00, 0xd7, 0x78, 0x64, 0x6a, 0x1a, 0xe7, 0x0f, 0x73, ++ 0xab, 0xf9, 0xa2, 0x1d, 0xe8, 0xf7, 0xc9, 0xf8, 0x1d, 0xeb, 0xb7, 0x98, ++ 0xbc, 0xb6, 0xe1, 0x52, 0x3b, 0xa1, 0x0f, 0x79, 0xff, 0xab, 0x45, 0xff, ++ 0x80, 0x77, 0x1c, 0xae, 0x57, 0xef, 0xa7, 0x46, 0xb7, 0xf7, 0xc6, 0x88, ++ 0xf1, 0xc1, 0x5f, 0x0b, 0x8b, 0x90, 0xaf, 0x88, 0xf9, 0xcd, 0xe7, 0xfb, ++ 0x8e, 0x4d, 0x7c, 0x7e, 0x6b, 0xf3, 0x3d, 0x58, 0x5c, 0x88, 0xe5, 0x9f, ++ 0xbc, 0xca, 0xe7, 0x0f, 0xb6, 0xc3, 0xf5, 0x01, 0xf0, 0x0a, 0xa5, 0x51, ++ 0xf9, 0xfe, 0xd9, 0x0a, 0xe9, 0x03, 0xd8, 0x57, 0x47, 0x9b, 0xd7, 0x3b, ++ 0x4c, 0x62, 0x5e, 0xcb, 0xe5, 0x60, 0x29, 0xd2, 0x7a, 0x0f, 0x78, 0xab, ++ 0x4a, 0x42, 0xa4, 0x9c, 0x00, 0xfc, 0x24, 0xa2, 0x3f, 0xed, 0x83, 0x4b, ++ 0xb7, 0x40, 0xbb, 0x08, 0xfb, 0xab, 0x0a, 0xfb, 0xa3, 0x7a, 0xe6, 0xae, ++ 0xef, 0x11, 0xeb, 0xc3, 0x32, 0xa1, 0x07, 0x4c, 0x66, 0x98, 0xff, 0x17, ++ 0x77, 0xcd, 0x7f, 0xb6, 0x95, 0xcf, 0xfb, 0x9e, 0xec, 0xc9, 0x95, 0xa6, ++ 0xe0, 0xc3, 0x0f, 0xe0, 0x7c, 0x7d, 0xc3, 0xe2, 0x09, 0xb8, 0x71, 0xbe, ++ 0x9a, 0x8a, 0x70, 0xdc, 0x1f, 0xee, 0x3a, 0xf0, 0xda, 0x75, 0x20, 0xd7, ++ 0x1f, 0x36, 0x68, 0xf3, 0x54, 0xd6, 0x9f, 0xfa, 0x79, 0x5a, 0xb6, 0x67, ++ 0x0c, 0x8b, 0x36, 0x4f, 0x3f, 0xb4, 0xc3, 0xfe, 0x2a, 0xda, 0x3c, 0x85, ++ 0xef, 0x51, 0xe7, 0xa9, 0xbd, 0x95, 0xe4, 0xf8, 0xfb, 0xd6, 0x9f, 0x1a, ++ 0xdd, 0x86, 0x9a, 0x65, 0xbd, 0x89, 0x7a, 0xf0, 0x19, 0x77, 0x6c, 0xfa, ++ 0xe9, 0xf5, 0xe0, 0xef, 0x4d, 0x6e, 0xa2, 0xa3, 0x5e, 0x0f, 0xc2, 0xdf, ++ 0xab, 0x2c, 0xbf, 0xbb, 0xdc, 0x69, 0xf2, 0xa6, 0xc9, 0x59, 0xf9, 0x6f, ++ 0x2a, 0x2e, 0x40, 0x7d, 0x13, 0x96, 0x47, 0x4d, 0xde, 0xc2, 0xf2, 0xa8, ++ 0xc9, 0x9b, 0x7e, 0x9c, 0x32, 0xdd, 0xf4, 0xe5, 0x7f, 0x15, 0xfa, 0xe6, ++ 0x7a, 0x6b, 0xe1, 0x35, 0x68, 0x17, 0x5b, 0x3b, 0x18, 0xed, 0x57, 0x0a, ++ 0x66, 0x1b, 0x83, 0xb8, 0x4f, 0xb6, 0x7e, 0xc2, 0x68, 0xbe, 0x4f, 0xba, ++ 0x21, 0x9e, 0xf2, 0x73, 0x8d, 0xad, 0x4f, 0xa0, 0xcd, 0xf7, 0x56, 0xc5, ++ 0xdc, 0x61, 0xb8, 0x8e, 0x5f, 0xcf, 0x02, 0x26, 0x7e, 0x6e, 0x5e, 0x6b, ++ 0x22, 0x3b, 0xf5, 0xab, 0x6f, 0xbe, 0x99, 0x08, 0xe3, 0xb9, 0x4e, 0xd0, ++ 0xf5, 0x7a, 0x20, 0xf3, 0x55, 0xc0, 0x87, 0x12, 0x55, 0x09, 0xc5, 0x01, ++ 0x9e, 0xf3, 0x54, 0x16, 0x48, 0x48, 0x42, 0x7f, 0xb1, 0xc2, 0x4e, 0x44, ++ 0xe0, 0x71, 0x7d, 0x99, 0x9c, 0xc7, 0xbf, 0xcb, 0x52, 0xbb, 0xe0, 0xf4, ++ 0x54, 0xff, 0xdb, 0xda, 0xd5, 0xdf, 0x35, 0x3d, 0xe2, 0xe7, 0x67, 0x57, ++ 0x7f, 0xc2, 0x94, 0xf6, 0x17, 0x60, 0x38, 0x47, 0xc8, 0x51, 0x71, 0x33, ++ 0x3f, 0xa7, 0xa8, 0x1a, 0xad, 0x04, 0xb3, 0x69, 0xfe, 0xb5, 0xaa, 0x45, ++ 0x11, 0xfb, 0x84, 0xc7, 0xcc, 0xdc, 0xce, 0x38, 0x32, 0xe5, 0x9a, 0x31, ++ 0x48, 0xbf, 0x82, 0xb9, 0xc3, 0x12, 0x48, 0xbe, 0x6b, 0x87, 0xd0, 0x3e, ++ 0xb0, 0x4a, 0xe8, 0xad, 0xce, 0x80, 0x3b, 0x01, 0xf5, 0x79, 0x67, 0x73, ++ 0x0e, 0xed, 0xfb, 0x3a, 0x0f, 0x2d, 0x76, 0xf8, 0xa2, 0xe8, 0xaf, 0x03, ++ 0x42, 0xce, 0x9e, 0x17, 0xe7, 0x2c, 0xed, 0x76, 0xa5, 0xd6, 0x08, 0xf2, ++ 0xde, 0xce, 0x3a, 0xc8, 0x6e, 0x09, 0xd8, 0x6d, 0x51, 0xfd, 0x6e, 0x75, ++ 0x66, 0x83, 0xb0, 0x77, 0x04, 0xdf, 0xe0, 0xcf, 0x08, 0xfd, 0x97, 0x08, ++ 0x39, 0x9c, 0x07, 0x4d, 0x13, 0xf2, 0x22, 0xf8, 0x36, 0xfb, 0xaa, 0x0f, ++ 0x54, 0x67, 0x77, 0x3e, 0xe0, 0xdf, 0x89, 0x88, 0x7d, 0xc3, 0x3f, 0x4a, ++ 0x5f, 0x94, 0x6b, 0xa4, 0xef, 0x01, 0x5b, 0xeb, 0xb4, 0xa2, 0x28, 0xfe, ++ 0x99, 0x47, 0x85, 0xbe, 0xbe, 0xec, 0xd9, 0x2f, 0xcc, 0xb8, 0xce, 0x4d, ++ 0x69, 0x2e, 0x50, 0x91, 0x8e, 0x53, 0xec, 0x46, 0xc9, 0xdf, 0xb1, 0x5d, ++ 0x9b, 0xaf, 0x43, 0xd9, 0x50, 0xc4, 0xeb, 0xb2, 0x67, 0x97, 0xdf, 0x31, ++ 0x06, 0xe4, 0xb8, 0xea, 0x90, 0xd1, 0x63, 0x83, 0xf1, 0x55, 0x35, 0x7f, ++ 0x64, 0xf6, 0x45, 0xd9, 0xbf, 0xe9, 0xe9, 0x89, 0xf0, 0xd1, 0x7e, 0x6c, ++ 0x35, 0x73, 0xfb, 0xf8, 0xa8, 0xa9, 0x68, 0x29, 0xd2, 0xf5, 0xe8, 0xb5, ++ 0xfc, 0x3c, 0xf7, 0x4f, 0x66, 0x4f, 0x45, 0x34, 0x3c, 0x67, 0x5b, 0x39, ++ 0x9e, 0xf3, 0x58, 0xd1, 0xa7, 0xa3, 0x95, 0x7f, 0x3d, 0xfa, 0x16, 0xcc, ++ 0x75, 0x84, 0x26, 0x01, 0x3d, 0x3a, 0xed, 0xfc, 0x7e, 0x72, 0x77, 0xf9, ++ 0xe3, 0xf3, 0xbe, 0xd3, 0xa5, 0x04, 0xd7, 0x2a, 0x28, 0x87, 0x46, 0x9e, ++ 0x4f, 0xe6, 0xf7, 0x7f, 0xa7, 0x31, 0xdf, 0x1d, 0x13, 0x15, 0x9a, 0xef, ++ 0x97, 0x47, 0xea, 0xaf, 0x82, 0xa6, 0xe2, 0xc7, 0xf0, 0x3e, 0x4b, 0x65, ++ 0xb3, 0xe2, 0x32, 0x40, 0x79, 0xa5, 0xda, 0x6a, 0x46, 0x39, 0xae, 0x6a, ++ 0xda, 0xad, 0xa2, 0x5d, 0xfe, 0x03, 0x37, 0x7f, 0x67, 0xc1, 0xd4, 0xea, ++ 0x61, 0xb3, 0x23, 0xfc, 0x5b, 0xad, 0x66, 0xee, 0x4f, 0x3a, 0xf0, 0xb7, ++ 0xeb, 0xe6, 0x23, 0x7d, 0x3f, 0x9e, 0x6d, 0x61, 0x88, 0x97, 0x77, 0xe8, ++ 0x47, 0x4e, 0x5c, 0xef, 0x3f, 0x6e, 0x1e, 0x45, 0xf3, 0x20, 0xd6, 0xb8, ++ 0xfe, 0xe0, 0xf7, 0x5c, 0x33, 0x05, 0xfd, 0xf1, 0x66, 0xae, 0xcf, 0xf4, ++ 0xf2, 0x30, 0x2d, 0x39, 0x5e, 0xca, 0x5f, 0x3b, 0x99, 0xf5, 0xc3, 0x73, ++ 0xde, 0xcb, 0x2c, 0xad, 0x37, 0x79, 0xa2, 0xf0, 0x6f, 0x9d, 0x85, 0xcf, ++ 0xd3, 0x5e, 0xeb, 0x37, 0xeb, 0xff, 0x30, 0xfd, 0x36, 0x11, 0xf4, 0x1b, ++ 0x97, 0x6b, 0x53, 0xa4, 0x7e, 0x9b, 0x6e, 0xe1, 0x72, 0x1f, 0xa1, 0xdf, ++ 0xd2, 0xa2, 0xe9, 0xb7, 0x55, 0x6b, 0xdd, 0x69, 0x28, 0x17, 0xab, 0xf6, ++ 0xe6, 0xa4, 0x21, 0x5f, 0x57, 0x1d, 0x5e, 0x9a, 0x12, 0x4d, 0xbf, 0xbd, ++ 0x20, 0xf6, 0xb5, 0x87, 0xc5, 0x3d, 0xe9, 0xf6, 0x7e, 0xa0, 0xdf, 0x46, ++ 0x44, 0xe8, 0xb7, 0x7e, 0xa0, 0xdf, 0xa2, 0xf8, 0xc1, 0x47, 0x5b, 0x34, ++ 0xbb, 0xb3, 0x07, 0xfd, 0x66, 0xfd, 0xef, 0x99, 0x7f, 0x2f, 0xa0, 0x7e, ++ 0x8b, 0x32, 0xde, 0x2b, 0x84, 0xdc, 0x69, 0xfa, 0xad, 0xb0, 0x79, 0x2d, ++ 0xe9, 0xb7, 0xc2, 0x7e, 0x46, 0xe9, 0x3e, 0xd2, 0x65, 0x16, 0x61, 0xc7, ++ 0xc5, 0xd4, 0x6f, 0x0b, 0xef, 0xb9, 0x96, 0xf2, 0x26, 0x4f, 0x7c, 0x14, ++ 0xf9, 0x41, 0xba, 0xa2, 0x7e, 0x3b, 0x2c, 0xf4, 0x1c, 0xf6, 0x83, 0x7a, ++ 0xee, 0x67, 0x96, 0x6f, 0xa7, 0xe7, 0xe6, 0x59, 0x39, 0xbe, 0x3d, 0xea, ++ 0xb9, 0xff, 0x26, 0x3a, 0x6b, 0x7a, 0x6e, 0x55, 0x7f, 0x85, 0xec, 0x97, ++ 0xee, 0x72, 0xc8, 0xf5, 0xdc, 0xaa, 0x2c, 0xae, 0xe7, 0x56, 0xed, 0xe5, ++ 0x7a, 0x6e, 0xd5, 0x20, 0xae, 0xe7, 0xf4, 0xfa, 0x6d, 0x52, 0x37, 0xfd, ++ 0xc6, 0xdb, 0x57, 0xe6, 0x42, 0x7b, 0xda, 0x27, 0x66, 0xdd, 0x77, 0x03, ++ 0xde, 0xe7, 0x2b, 0x31, 0x79, 0xac, 0x50, 0x7f, 0x86, 0x5b, 0x7b, 0x5f, ++ 0x50, 0x3d, 0x26, 0x52, 0xdf, 0xfd, 0xcc, 0x12, 0x43, 0xdf, 0x79, 0x40, ++ 0xdf, 0xd9, 0x7b, 0xd6, 0x77, 0xaf, 0xa0, 0xbe, 0x53, 0x49, 0x8f, 0x0d, ++ 0xc4, 0x79, 0xa4, 0x97, 0x8f, 0xe9, 0x03, 0xe3, 0xa5, 0xfb, 0x6a, 0x47, ++ 0xbf, 0x38, 0xf5, 0x9b, 0xdf, 0xe2, 0x7c, 0xf9, 0x83, 0x91, 0xee, 0x03, ++ 0xbd, 0x6e, 0xe0, 0xfb, 0xa1, 0x7d, 0x5f, 0x9c, 0x1a, 0x85, 0xf3, 0xee, ++ 0x65, 0xc4, 0x07, 0xe6, 0xcb, 0x4e, 0x21, 0x7f, 0x6d, 0xfe, 0xb1, 0xa4, ++ 0x4f, 0x27, 0x0f, 0xe5, 0xf3, 0xbd, 0xe2, 0x50, 0x1c, 0xad, 0x13, 0x95, ++ 0x8d, 0x0a, 0x1f, 0xef, 0x2d, 0x4a, 0xd0, 0x8d, 0xeb, 0xc0, 0xdf, 0x3e, ++ 0xa7, 0x7d, 0xf2, 0xfc, 0xbd, 0x7c, 0x9f, 0x3c, 0xd7, 0xc2, 0xe9, 0xc1, ++ 0x7e, 0x6c, 0xe4, 0xef, 0x22, 0x80, 0x04, 0x0b, 0x23, 0xe4, 0xa1, 0xe4, ++ 0xf3, 0x72, 0xf2, 0xf3, 0x95, 0xa8, 0xcc, 0x8a, 0xf6, 0xeb, 0x82, 0x43, ++ 0xd3, 0x3f, 0x40, 0xbb, 0x75, 0xc1, 0xe7, 0x35, 0x64, 0xef, 0x2e, 0xc0, ++ 0xef, 0x78, 0xbf, 0x62, 0x77, 0xeb, 0x86, 0x4c, 0xe8, 0x77, 0xfe, 0x72, ++ 0x85, 0xf6, 0x1b, 0x4c, 0xdc, 0x87, 0xd0, 0xee, 0x4b, 0x5c, 0xdf, 0xbc, ++ 0x9f, 0xee, 0xaf, 0xe8, 0xef, 0x41, 0x68, 0xfa, 0x7c, 0x7e, 0xb5, 0xfc, ++ 0x7d, 0x81, 0xce, 0xae, 0x3f, 0x20, 0xc6, 0x09, 0xf6, 0x2c, 0xd1, 0x85, ++ 0xbd, 0x62, 0x8c, 0xea, 0x9f, 0x3b, 0xa0, 0xa7, 0x87, 0x87, 0x8f, 0xbf, ++ 0x62, 0x35, 0xb7, 0x8f, 0xc3, 0xf4, 0x00, 0xfa, 0xb8, 0x95, 0xee, 0xf4, ++ 0x00, 0x8e, 0xce, 0x58, 0x98, 0xda, 0x35, 0xfe, 0xf9, 0x4f, 0xc2, 0xb8, ++ 0x92, 0xbb, 0xc6, 0xa5, 0xd1, 0x43, 0x3f, 0x3e, 0x6d, 0x7f, 0xb2, 0x40, ++ 0xcc, 0x8d, 0x58, 0xe3, 0xd5, 0xe8, 0xd7, 0x6d, 0xbc, 0x1a, 0x3d, 0x75, ++ 0xe3, 0x7e, 0xde, 0x22, 0xec, 0xa2, 0x8b, 0xd9, 0x30, 0x9c, 0x67, 0xaf, ++ 0x1b, 0x7c, 0x77, 0x8c, 0x41, 0xb9, 0xf8, 0x3d, 0x8c, 0x1f, 0xf0, 0x99, ++ 0x33, 0x6f, 0x50, 0x5a, 0xa4, 0x1e, 0x7e, 0x51, 0xe8, 0xf3, 0xab, 0x7c, ++ 0xc7, 0xa7, 0xa4, 0xba, 0x91, 0x5e, 0xfc, 0xfd, 0xdd, 0x75, 0x65, 0xbb, ++ 0x9f, 0x4f, 0x85, 0x71, 0x5c, 0xed, 0xcd, 0xca, 0xc3, 0xab, 0x08, 0xd7, ++ 0xfe, 0xcd, 0xec, 0x43, 0x3f, 0xc2, 0x01, 0x5b, 0x07, 0xe9, 0x35, 0x4d, ++ 0xae, 0x2e, 0xb4, 0x72, 0x39, 0xff, 0xbb, 0x80, 0x73, 0xb4, 0xaf, 0x6b, ++ 0x0a, 0xad, 0x1f, 0x4d, 0x8a, 0x8b, 0xe6, 0x4b, 0x48, 0xa7, 0xb7, 0xc4, ++ 0xbd, 0xb0, 0x2a, 0xa0, 0x27, 0xce, 0xc7, 0xaa, 0x26, 0xb1, 0xde, 0x80, ++ 0xbc, 0xe1, 0x7c, 0x9b, 0xa6, 0xad, 0x3f, 0x48, 0x7f, 0xf8, 0xcf, 0xab, ++ 0x9a, 0x39, 0xfd, 0xab, 0xaa, 0x15, 0xa2, 0xff, 0x4c, 0xd6, 0x71, 0x10, ++ 0xe9, 0x5b, 0x99, 0xac, 0x78, 0x42, 0x00, 0x6a, 0x5a, 0xd3, 0xee, 0xdb, ++ 0xf0, 0x1e, 0xd5, 0x0b, 0x36, 0xf8, 0x8e, 0xf3, 0xb6, 0x4c, 0xf1, 0x6c, ++ 0xe7, 0xe4, 0xb0, 0x67, 0xa4, 0x46, 0x95, 0x4b, 0x35, 0x9a, 0x5c, 0xb2, ++ 0xea, 0x21, 0xe4, 0x57, 0xd0, 0xd6, 0xc1, 0x05, 0x58, 0x2f, 0x09, 0xdf, ++ 0x8b, 0xbc, 0x9e, 0x82, 0xf6, 0x89, 0xde, 0xde, 0xb8, 0xcc, 0xd2, 0x72, ++ 0x14, 0xf1, 0xb8, 0xec, 0xc7, 0x26, 0xb6, 0x8d, 0x75, 0xb7, 0x3f, 0x34, ++ 0x7e, 0xe7, 0xc2, 0xbf, 0x6f, 0xa2, 0xdd, 0xe7, 0xe9, 0x41, 0x7e, 0x07, ++ 0x09, 0xfb, 0xf2, 0x05, 0xa4, 0xb7, 0x1d, 0xe9, 0xda, 0x61, 0x46, 0xb9, ++ 0xaf, 0x0a, 0xf1, 0x75, 0x43, 0x2b, 0xaf, 0x52, 0xdd, 0x53, 0x88, 0x3e, ++ 0x1a, 0xbd, 0x9b, 0x60, 0x5d, 0x18, 0xcd, 0xe9, 0x8d, 0xef, 0xbe, 0xf4, ++ 0xf4, 0xbc, 0x5a, 0xcb, 0xa3, 0x3c, 0x63, 0xfd, 0x66, 0xc5, 0x84, 0xed, ++ 0xaf, 0x04, 0x3e, 0xf4, 0x81, 0xa2, 0xc9, 0x86, 0x2f, 0x0e, 0x6a, 0xf2, ++ 0x8b, 0xef, 0xc4, 0xf4, 0x74, 0xc1, 0xfd, 0x7f, 0x46, 0xc4, 0x7c, 0x47, ++ 0xbd, 0x14, 0x79, 0xee, 0x58, 0xd9, 0x74, 0x84, 0xe8, 0x32, 0x7d, 0x35, ++ 0x98, 0x55, 0x11, 0x74, 0x47, 0x7d, 0x75, 0x3e, 0xfa, 0x74, 0x9b, 0x0f, ++ 0x4d, 0xfb, 0xa3, 0xde, 0x83, 0xfa, 0xb6, 0xf3, 0xe1, 0x42, 0xab, 0x3c, ++ 0x1f, 0xf6, 0xd9, 0x3a, 0x5e, 0x1c, 0x81, 0xfe, 0xad, 0xbd, 0x0a, 0xe9, ++ 0x03, 0xd6, 0x9c, 0x28, 0xed, 0xef, 0xaf, 0xb0, 0xf2, 0x7d, 0xd3, 0x01, ++ 0x9b, 0x8f, 0xe4, 0xb6, 0xe3, 0xb0, 0x89, 0xee, 0x7b, 0xeb, 0xf5, 0xc6, ++ 0x58, 0x41, 0x7f, 0xdc, 0x4f, 0x44, 0xbe, 0x83, 0x9b, 0x8c, 0x03, 0xc1, ++ 0xf3, 0x5d, 0x97, 0x8d, 0xbd, 0xab, 0xe1, 0x91, 0xcd, 0xe5, 0x27, 0x52, ++ 0x5f, 0xbf, 0x60, 0xf3, 0x11, 0x9f, 0x62, 0xc1, 0x9f, 0x26, 0xe0, 0xc7, ++ 0xb2, 0x97, 0xc2, 0xf8, 0x62, 0x7f, 0x78, 0x9e, 0xe2, 0x96, 0xfb, 0xd3, ++ 0xaf, 0x17, 0x9a, 0x9f, 0xa7, 0xa7, 0x71, 0x5d, 0x23, 0xd6, 0xfb, 0xef, ++ 0x3a, 0xae, 0xf0, 0xf9, 0x24, 0x6b, 0x31, 0x33, 0xee, 0xcf, 0xdf, 0x6d, ++ 0x8e, 0x38, 0x67, 0x9a, 0x23, 0xfc, 0xfc, 0x9a, 0x1f, 0x2c, 0xa2, 0xde, ++ 0x4c, 0xcb, 0x98, 0xd8, 0xf5, 0xd0, 0xdf, 0x12, 0x82, 0x71, 0xbf, 0xb0, ++ 0xeb, 0x21, 0xf2, 0xeb, 0x9e, 0x7b, 0xf4, 0xf8, 0x4c, 0x94, 0xdb, 0x15, ++ 0xbf, 0x33, 0x32, 0x2b, 0xf0, 0xb9, 0x6d, 0x97, 0x83, 0x85, 0xf8, 0x3d, ++ 0x0a, 0x33, 0xae, 0xab, 0xe5, 0x8d, 0xc6, 0xa8, 0xe7, 0x22, 0x8c, 0xad, ++ 0x27, 0xfc, 0x56, 0xfc, 0xd6, 0x41, 0x7a, 0xa5, 0x7c, 0x8f, 0x25, 0x38, ++ 0x03, 0xda, 0x97, 0x3f, 0xf5, 0xee, 0x70, 0xf4, 0x4f, 0xb5, 0xad, 0xe3, ++ 0xfa, 0x25, 0xf0, 0xa8, 0x90, 0x8f, 0x40, 0xeb, 0x70, 0x3c, 0x2f, 0x2f, ++ 0x57, 0xf9, 0x79, 0xb1, 0x1e, 0xde, 0x8f, 0x85, 0xbc, 0x9c, 0x7d, 0x3a, ++ 0xbe, 0x04, 0xf5, 0xa3, 0x52, 0xcf, 0xdf, 0x75, 0x96, 0x37, 0xcc, 0x35, ++ 0x59, 0x22, 0xf6, 0xe5, 0x95, 0x78, 0xe0, 0xc6, 0xeb, 0xd1, 0x3d, 0xe4, ++ 0xc0, 0x23, 0x0a, 0xf9, 0xc1, 0xbb, 0xe3, 0xb7, 0x96, 0xd7, 0x7b, 0x84, ++ 0xeb, 0xbd, 0xf2, 0x26, 0x53, 0x10, 0xdf, 0x87, 0x96, 0xd7, 0x6f, 0xa3, ++ 0xfd, 0x6c, 0x55, 0xfd, 0x47, 0x66, 0xb4, 0xe3, 0x26, 0xff, 0xf6, 0x31, ++ 0xb2, 0x23, 0xaa, 0x9a, 0x8c, 0xb2, 0x9f, 0xb0, 0xde, 0x18, 0xb2, 0x90, ++ 0x1f, 0xd3, 0x78, 0x1c, 0x53, 0xbd, 0xbf, 0xae, 0xb2, 0xb1, 0x82, 0xe6, ++ 0x63, 0x65, 0x83, 0xf0, 0x87, 0xe9, 0xfc, 0x45, 0x2b, 0x7e, 0xbb, 0xf7, ++ 0xa9, 0x00, 0x90, 0x66, 0xc5, 0x13, 0xbf, 0x76, 0xa2, 0x9e, 0x39, 0xd3, ++ 0xb2, 0xd3, 0x49, 0x7e, 0xb8, 0x7a, 0xee, 0x67, 0x53, 0xed, 0x6a, 0x74, ++ 0x3f, 0x5c, 0x4f, 0xfe, 0xb7, 0x86, 0x4d, 0x51, 0xfd, 0x6f, 0x67, 0xf0, ++ 0x3f, 0x60, 0xfe, 0x6d, 0xb5, 0xca, 0xfe, 0x37, 0x56, 0xdf, 0xa7, 0x57, ++ 0xe7, 0xe0, 0x2b, 0x1e, 0xfb, 0xf4, 0x41, 0x3c, 0x17, 0x3a, 0xbb, 0xe7, ++ 0xc3, 0x07, 0x11, 0xef, 0x95, 0x5f, 0x7f, 0xfc, 0xe0, 0x4f, 0xd1, 0x3e, ++ 0xd9, 0x67, 0x73, 0xe1, 0x7a, 0x57, 0xf5, 0xe8, 0x51, 0xf2, 0xab, 0x6b, ++ 0xed, 0x9e, 0x12, 0xf3, 0xaa, 0xed, 0x91, 0x5f, 0x3f, 0xfc, 0x00, 0xcc, ++ 0xbf, 0xb6, 0x37, 0x2c, 0x74, 0xff, 0xaa, 0x6d, 0xef, 0xfb, 0x03, 0xdc, ++ 0x30, 0xce, 0xb6, 0xdd, 0x5f, 0xa4, 0xa2, 0xff, 0x72, 0xf5, 0xde, 0xa9, ++ 0xb4, 0x6f, 0x59, 0xfd, 0xe4, 0xe4, 0xb4, 0xf3, 0xdd, 0x23, 0x41, 0xb9, ++ 0x0c, 0xf6, 0xe2, 0x3c, 0x44, 0xcf, 0x87, 0x03, 0x8d, 0x46, 0x86, 0xef, ++ 0x20, 0xcf, 0x1d, 0xb3, 0x90, 0x9d, 0x11, 0xf6, 0xa3, 0x36, 0x54, 0x70, ++ 0xbf, 0xb4, 0x5b, 0xf8, 0x4f, 0x77, 0x45, 0x3f, 0x77, 0xd2, 0xfc, 0x7e, ++ 0x95, 0x8d, 0xd7, 0x5c, 0x7d, 0x29, 0xae, 0x7b, 0x8d, 0x26, 0x8f, 0x9b, ++ 0xbe, 0x0b, 0x3f, 0x60, 0x4f, 0x7e, 0xd3, 0x57, 0x81, 0x9f, 0x23, 0x7a, ++ 0xc1, 0xb7, 0x5d, 0xc2, 0x2f, 0xae, 0xe3, 0xdb, 0x39, 0xfc, 0x0f, 0xe0, ++ 0xcf, 0x9f, 0xac, 0xb2, 0xbf, 0xf9, 0xd3, 0xc6, 0xa5, 0xbf, 0x7a, 0x00, ++ 0xcb, 0x1a, 0xfb, 0xc4, 0xf4, 0x9b, 0x86, 0x7a, 0x41, 0x2f, 0xed, 0x5c, ++ 0x6b, 0x9b, 0xd5, 0xfb, 0x8e, 0x15, 0xe7, 0xc3, 0x9e, 0xdf, 0x90, 0x7f, ++ 0x1a, 0xf9, 0x05, 0x36, 0x37, 0x6b, 0x7b, 0xec, 0xd3, 0x01, 0xe8, 0x6f, ++ 0x38, 0x6d, 0xea, 0xb8, 0x91, 0xee, 0x5f, 0xec, 0xb5, 0xd0, 0x3d, 0xa1, ++ 0xf2, 0xbd, 0xaf, 0xd3, 0xfc, 0x68, 0x7b, 0xf2, 0x08, 0x9d, 0x17, 0x31, ++ 0x71, 0xae, 0xd4, 0xc6, 0xc2, 0x7f, 0xfc, 0x1c, 0x40, 0xec, 0x65, 0xaa, ++ 0x76, 0x38, 0xb8, 0xbf, 0x55, 0xd0, 0x1d, 0xfd, 0xb1, 0x6e, 0x27, 0x7d, ++ 0x17, 0x7e, 0x57, 0x2e, 0xb7, 0x9a, 0x3f, 0x36, 0x96, 0x1f, 0xb6, 0x8f, ++ 0x4d, 0xdc, 0x03, 0x17, 0xe7, 0x6c, 0x15, 0x3b, 0xde, 0x32, 0x33, 0x9d, ++ 0x5f, 0x5b, 0x19, 0x8b, 0x7c, 0x3a, 0x2e, 0x9d, 0x0b, 0x6a, 0xe3, 0xd6, ++ 0xc3, 0x73, 0x21, 0x1d, 0x2e, 0x89, 0x3c, 0x4f, 0x88, 0xe5, 0xe7, 0x16, ++ 0x7a, 0x34, 0xcc, 0x27, 0x7e, 0x8e, 0xd0, 0xb6, 0x4d, 0x9c, 0x2f, 0x84, ++ 0xcf, 0x0d, 0x18, 0xeb, 0x97, 0x87, 0xf7, 0xdf, 0xf9, 0x79, 0x77, 0x55, ++ 0x50, 0x79, 0x9d, 0x45, 0x99, 0x8f, 0xda, 0x79, 0x82, 0xd3, 0xa6, 0x9b, ++ 0x8f, 0xc1, 0xde, 0x9d, 0x23, 0xf4, 0x8c, 0xef, 0x77, 0xa3, 0x87, 0x62, ++ 0xe3, 0xfb, 0x56, 0x8d, 0x2e, 0x67, 0xbf, 0x8a, 0xae, 0x8f, 0x87, 0xd8, ++ 0x14, 0xf1, 0xfe, 0xc0, 0x97, 0x6b, 0x8b, 0x58, 0x77, 0x16, 0x88, 0xf5, ++ 0xa4, 0x12, 0xe8, 0xc5, 0xdf, 0x93, 0x71, 0x7c, 0xcf, 0x8a, 0xfd, 0xdd, ++ 0xd9, 0x47, 0x8d, 0x41, 0xdc, 0x07, 0x6f, 0x68, 0x38, 0x40, 0x7a, 0x55, ++ 0x3f, 0xaf, 0x2b, 0x59, 0xf4, 0xf8, 0x21, 0xe3, 0x6d, 0x5c, 0x9f, 0x54, ++ 0x36, 0xed, 0x1f, 0x8e, 0xfa, 0xe7, 0xec, 0xb3, 0x4f, 0x93, 0xdc, 0x55, ++ 0xee, 0x3a, 0x6e, 0x0e, 0x00, 0x9c, 0x83, 0xf5, 0x4f, 0x98, 0x5b, 0x87, ++ 0x76, 0xc9, 0x39, 0xea, 0xeb, 0x60, 0x84, 0xbe, 0x3e, 0xfb, 0xf8, 0xfe, ++ 0xe1, 0xfc, 0x9c, 0x83, 0xef, 0x23, 0xf5, 0xf0, 0xaf, 0x10, 0xf0, 0xab, ++ 0x9a, 0x65, 0xf8, 0x55, 0xbb, 0x3e, 0x92, 0xe0, 0xaf, 0x08, 0x34, 0x98, ++ 0x5d, 0xf6, 0x9e, 0xfb, 0x39, 0xa3, 0x7a, 0xe7, 0xe2, 0x78, 0xcf, 0xb4, ++ 0x98, 0x28, 0x2e, 0xca, 0x99, 0x06, 0x63, 0x61, 0xb4, 0x78, 0x25, 0x43, ++ 0x31, 0x90, 0x54, 0x4a, 0x17, 0x9d, 0x36, 0x38, 0xf8, 0xfb, 0x38, 0x63, ++ 0x92, 0x99, 0xec, 0xc8, 0xd5, 0x8e, 0xb1, 0xc7, 0x12, 0x92, 0x31, 0x35, ++ 0xbb, 0x71, 0x1f, 0xbd, 0x7e, 0x2d, 0xbf, 0x0f, 0xb9, 0xfe, 0x67, 0x9e, ++ 0x74, 0xe4, 0xcb, 0xfa, 0xc4, 0x39, 0x74, 0x0e, 0x54, 0xab, 0xa3, 0xa3, ++ 0x2b, 0xd9, 0x55, 0x80, 0xfb, 0x6b, 0xd7, 0x94, 0xa2, 0xd1, 0x28, 0x56, ++ 0x7a, 0x3d, 0x90, 0xe8, 0x35, 0x48, 0x78, 0xaf, 0x76, 0x14, 0xa6, 0xe1, ++ 0x7b, 0xee, 0x5b, 0x85, 0x3d, 0xc2, 0x54, 0x0f, 0xbd, 0xdf, 0x33, 0x3a, ++ 0xa7, 0x15, 0xe2, 0x38, 0x8c, 0x2e, 0x83, 0xcb, 0x16, 0x75, 0x1d, 0xe5, ++ 0xf0, 0x4c, 0xf6, 0x22, 0x8a, 0x17, 0x61, 0x72, 0xc9, 0xef, 0xe9, 0xbe, ++ 0xf7, 0xf8, 0x0f, 0xee, 0x7e, 0x72, 0xfc, 0x87, 0x40, 0xbf, 0x7f, 0x34, ++ 0xfe, 0x03, 0xa3, 0x38, 0x18, 0xff, 0xef, 0xe3, 0x3f, 0x04, 0xb0, 0x9f, ++ 0x7f, 0x81, 0xf8, 0x0f, 0x21, 0xf2, 0xdb, 0x68, 0xf1, 0x1f, 0x92, 0xbf, ++ 0xe7, 0xf8, 0x0f, 0x6b, 0x99, 0x1c, 0xff, 0x41, 0xf0, 0x33, 0x1c, 0xff, ++ 0x41, 0xf0, 0xf3, 0x7f, 0xe3, 0x3f, 0xfc, 0xff, 0x15, 0xff, 0xc1, 0x18, ++ 0xf7, 0xf7, 0x29, 0x18, 0x9f, 0x41, 0x8b, 0xff, 0x90, 0x12, 0x67, 0x9e, ++ 0x1a, 0x19, 0xff, 0xe1, 0xc2, 0xb8, 0x84, 0xa9, 0x91, 0xf1, 0x1f, 0xc6, ++ 0xc5, 0xa5, 0x4f, 0x8d, 0x8c, 0xff, 0xf0, 0x83, 0xb8, 0xac, 0xa9, 0x91, ++ 0xf1, 0x1f, 0xe6, 0xc7, 0x5d, 0x34, 0x35, 0x32, 0xfe, 0x43, 0x55, 0xdc, ++ 0xa8, 0xa9, 0x91, 0xf1, 0x1f, 0xd6, 0xc6, 0x4d, 0xa4, 0xbc, 0x16, 0xff, ++ 0xe1, 0xee, 0xb8, 0xa9, 0x53, 0xe5, 0xf8, 0x0f, 0x33, 0xa7, 0x4e, 0x81, ++ 0x7c, 0x5b, 0x9c, 0xef, 0xef, 0xb8, 0x5e, 0xc5, 0x8a, 0xff, 0xf0, 0x1e, ++ 0x4e, 0x96, 0x31, 0x3d, 0xc7, 0x7f, 0x00, 0x38, 0xe6, 0xb8, 0x31, 0xb1, ++ 0xe3, 0x3f, 0xe8, 0xe1, 0xc4, 0x8a, 0xff, 0x00, 0x70, 0x12, 0x08, 0x4e, ++ 0x8c, 0xf8, 0x0f, 0xdd, 0xf0, 0x89, 0x11, 0xff, 0x01, 0xe0, 0xa4, 0x13, ++ 0x9c, 0x18, 0xf1, 0x1f, 0xba, 0xe1, 0x13, 0x23, 0xfe, 0x03, 0xc0, 0xc9, ++ 0x22, 0x38, 0x31, 0xe2, 0x3f, 0xe8, 0xe1, 0xc4, 0x8a, 0xff, 0x00, 0x70, ++ 0x2e, 0x8a, 0x4b, 0x89, 0x1d, 0xff, 0x41, 0x0f, 0x27, 0x56, 0xfc, 0x07, ++ 0x80, 0x33, 0x8a, 0xf0, 0x89, 0x11, 0xff, 0xa1, 0x1b, 0x3e, 0x31, 0xe2, ++ 0x3f, 0x00, 0x9c, 0x89, 0x04, 0x27, 0x46, 0xfc, 0x87, 0x6e, 0xf8, 0xc4, ++ 0x88, 0xff, 0x00, 0x70, 0xa6, 0xd2, 0xb8, 0x62, 0xc4, 0x7f, 0xd0, 0xc3, ++ 0x89, 0x15, 0xff, 0x01, 0xe0, 0xcc, 0x24, 0x7c, 0x62, 0xc4, 0x7f, 0xd0, ++ 0xc3, 0x89, 0x15, 0xff, 0x01, 0xe0, 0xcc, 0x25, 0x7c, 0x62, 0xc4, 0x7f, ++ 0xe8, 0x86, 0x4f, 0x8c, 0xf8, 0x0f, 0x00, 0xc7, 0x47, 0xf8, 0xc4, 0x88, ++ 0xff, 0xd0, 0x0d, 0x9f, 0x18, 0xf1, 0x1f, 0x00, 0xce, 0x72, 0x82, 0x13, ++ 0x23, 0xfe, 0x83, 0x1e, 0x4e, 0xac, 0xf8, 0x0f, 0x00, 0x67, 0x15, 0xc1, ++ 0x89, 0x11, 0xff, 0x41, 0x0f, 0x27, 0x56, 0xfc, 0x07, 0x80, 0xf3, 0x53, ++ 0x82, 0x13, 0x23, 0xfe, 0x43, 0x37, 0x7c, 0x62, 0xc4, 0x7f, 0x00, 0x38, ++ 0xb7, 0x12, 0x9c, 0x18, 0xf1, 0x1f, 0xba, 0xe1, 0x13, 0x23, 0xfe, 0x03, ++ 0xc0, 0xb9, 0x83, 0xe0, 0xc4, 0x88, 0xff, 0xa0, 0x87, 0x13, 0x2b, 0xfe, ++ 0x03, 0xc0, 0xb9, 0x97, 0xe0, 0xc4, 0x88, 0xff, 0xa0, 0x87, 0x13, 0x2b, ++ 0xfe, 0x03, 0xc0, 0xf9, 0x15, 0xc1, 0x89, 0x11, 0xff, 0xa1, 0x1b, 0x3e, ++ 0x31, 0xe2, 0x3f, 0x00, 0x9c, 0x7a, 0x92, 0xc3, 0x18, 0xf1, 0x1f, 0xba, ++ 0xe1, 0xf3, 0x5d, 0xe3, 0x3f, 0xd8, 0x42, 0x03, 0x95, 0x1c, 0x8a, 0xff, ++ 0x40, 0x71, 0x22, 0xc3, 0xf1, 0x1f, 0x92, 0xbf, 0x75, 0xfc, 0x87, 0x66, ++ 0xc4, 0xf7, 0x7f, 0xe3, 0x3f, 0xfc, 0xcf, 0x8c, 0xff, 0x70, 0xb3, 0xdd, ++ 0xf7, 0x75, 0x1c, 0xf9, 0x41, 0xbf, 0x5b, 0xfc, 0x07, 0x5b, 0xfc, 0xb7, ++ 0x8b, 0xff, 0x70, 0xb3, 0xbd, 0x28, 0x3e, 0x1e, 0xf7, 0x97, 0xdf, 0x32, ++ 0xfe, 0x43, 0x6a, 0xfc, 0xb7, 0x8b, 0xff, 0x00, 0xfd, 0xa4, 0xc7, 0x8f, ++ 0x89, 0xdd, 0x4f, 0xac, 0xf8, 0x0f, 0x39, 0xba, 0x7e, 0x7a, 0x8a, 0xff, ++ 0x00, 0xfd, 0x0c, 0x3a, 0xef, 0x78, 0x62, 0xc4, 0x7f, 0xf0, 0xe8, 0xe8, ++ 0xf6, 0x7d, 0xc5, 0x7f, 0xf8, 0x22, 0xee, 0xfc, 0xf1, 0x1f, 0xfe, 0xe5, ++ 0xe2, 0x2c, 0xc0, 0x36, 0x05, 0xcf, 0x7f, 0x8a, 0x49, 0x14, 0xd9, 0xbf, ++ 0x4c, 0xdc, 0x85, 0x6b, 0xe3, 0xff, 0xc9, 0x71, 0x17, 0xc8, 0x58, 0xf8, ++ 0x57, 0x8a, 0xbb, 0xa0, 0xbd, 0xdf, 0x6f, 0x30, 0xe1, 0x7a, 0xf5, 0xa6, ++ 0xe0, 0xfb, 0x6b, 0x42, 0x2e, 0xde, 0x12, 0xf1, 0x17, 0x8e, 0xc5, 0x8c, ++ 0xbf, 0x10, 0xbc, 0x8a, 0xfc, 0xa2, 0xcb, 0xe5, 0xf8, 0x0b, 0xd3, 0x05, ++ 0x1f, 0xe7, 0xf9, 0x64, 0x79, 0x98, 0xce, 0xf8, 0x79, 0xc3, 0xf4, 0x29, ++ 0x59, 0x3c, 0x5e, 0x66, 0x99, 0x2e, 0xfe, 0x42, 0xae, 0x7c, 0x7e, 0x3d, ++ 0xc3, 0x77, 0x64, 0x0a, 0x80, 0x63, 0x57, 0x79, 0xe4, 0x71, 0x1c, 0x11, ++ 0xf2, 0x30, 0xb3, 0xe4, 0xa3, 0xe7, 0x90, 0x3d, 0x57, 0x8f, 0x8d, 0x1e, ++ 0x7f, 0x61, 0x96, 0xe0, 0x47, 0xb1, 0x8e, 0x2e, 0xd3, 0x05, 0xdf, 0x8a, ++ 0x45, 0x7a, 0x3d, 0x3e, 0x49, 0x01, 0x79, 0x9e, 0x51, 0x76, 0x44, 0x45, ++ 0xba, 0xce, 0x74, 0xb7, 0xaa, 0xe4, 0xd7, 0xfe, 0x81, 0xc6, 0x3f, 0xb7, ++ 0xc4, 0xbf, 0xd9, 0x02, 0xae, 0x1e, 0xdf, 0x59, 0x82, 0x7f, 0xb3, 0xae, ++ 0xe4, 0xfc, 0xd3, 0xe3, 0xfd, 0x2a, 0xf2, 0xcf, 0x09, 0x69, 0xd9, 0x28, ++ 0xe2, 0x9f, 0x1e, 0x6f, 0x3d, 0x9e, 0x7a, 0xfe, 0xb3, 0x48, 0x7e, 0x47, ++ 0xc4, 0xcd, 0x28, 0x60, 0x72, 0xdc, 0x85, 0xc9, 0x56, 0x39, 0xee, 0xc2, ++ 0x54, 0x97, 0x1c, 0x77, 0xe1, 0x8a, 0x74, 0x39, 0xee, 0xc2, 0x95, 0x6e, ++ 0x39, 0xee, 0xc2, 0x0f, 0x72, 0xe5, 0xb8, 0x0b, 0x57, 0x79, 0xe4, 0xb8, ++ 0x0b, 0x57, 0x8f, 0x95, 0xe3, 0x2e, 0x14, 0x7b, 0xd7, 0xea, 0xe2, 0x3e, ++ 0x6c, 0xd2, 0xc5, 0x7d, 0xb8, 0x4b, 0x17, 0xf7, 0xe1, 0x7e, 0x5d, 0xdc, ++ 0x87, 0x6d, 0xba, 0xb8, 0x0f, 0x8f, 0xe8, 0xe2, 0x3e, 0xec, 0xd6, 0xc5, ++ 0x7d, 0x78, 0x5a, 0x17, 0xf7, 0x61, 0xbf, 0x94, 0x5f, 0x5c, 0x73, 0x58, ++ 0xaa, 0xbf, 0xb4, 0xf6, 0x88, 0x94, 0x5f, 0x56, 0xf7, 0x86, 0x54, 0x7f, ++ 0x79, 0xf0, 0xb8, 0x54, 0xbe, 0xa2, 0xfe, 0x03, 0xa9, 0xbc, 0xa2, 0xe1, ++ 0x23, 0x29, 0x5f, 0xd5, 0xf4, 0x85, 0x54, 0xbf, 0xb7, 0x71, 0x1f, 0x5e, ++ 0x15, 0xef, 0x81, 0x5f, 0x13, 0xef, 0x81, 0x8f, 0x89, 0xf7, 0xc0, 0x6f, ++ 0xc6, 0x88, 0xfb, 0xf0, 0xd7, 0x9f, 0x7f, 0x71, 0x5b, 0xe4, 0x7b, 0xfc, ++ 0x2f, 0x7f, 0xfe, 0xcd, 0x6d, 0xf8, 0x1e, 0xdf, 0x20, 0xde, 0xc1, 0xc6, ++ 0x8a, 0xfb, 0x10, 0x2e, 0x8f, 0x11, 0xf7, 0xa1, 0xab, 0xfd, 0xb7, 0x8f, ++ 0xfb, 0x90, 0x92, 0xfc, 0xcf, 0x7f, 0x87, 0x9f, 0x63, 0xe7, 0xe7, 0x9b, ++ 0x13, 0xe2, 0x27, 0xe5, 0xd8, 0x53, 0xbe, 0xfb, 0x3b, 0xfc, 0x6b, 0x8b, ++ 0xe4, 0xf7, 0xcc, 0x73, 0x4b, 0xe4, 0xf7, 0xcc, 0x39, 0x76, 0xae, 0xcf, ++ 0xe7, 0xf9, 0xe4, 0x77, 0xcd, 0xd7, 0x97, 0xc9, 0xef, 0x9a, 0xcb, 0x6c, ++ 0xbe, 0x6c, 0xc4, 0x43, 0x1f, 0xf7, 0x61, 0x42, 0xbc, 0x37, 0xc7, 0x8e, ++ 0xfa, 0x52, 0xbc, 0xcf, 0x0f, 0xe1, 0xfb, 0x54, 0x58, 0x1b, 0x9f, 0xc5, ++ 0xf7, 0xa9, 0x90, 0x3e, 0x87, 0x71, 0x1f, 0x20, 0x3d, 0x88, 0x71, 0x1f, ++ 0x20, 0x3d, 0x84, 0x71, 0x1f, 0x20, 0xfd, 0x3d, 0xc6, 0x7d, 0x80, 0xf4, ++ 0x25, 0x8c, 0xfb, 0x00, 0xe9, 0xcb, 0x18, 0xf7, 0x41, 0xc5, 0xb8, 0x11, ++ 0x01, 0x11, 0x37, 0xa2, 0x46, 0xc4, 0x8d, 0xa8, 0x15, 0x71, 0x23, 0xea, ++ 0x44, 0xdc, 0x88, 0xa0, 0x88, 0x1b, 0x51, 0x2f, 0xe2, 0x46, 0x34, 0x88, ++ 0xb8, 0x11, 0x4d, 0x22, 0x6e, 0x44, 0x88, 0xe0, 0x9c, 0xf0, 0x1f, 0xa2, ++ 0xf4, 0xa4, 0xbf, 0x85, 0xd2, 0x53, 0xfe, 0x63, 0x94, 0x9e, 0xf6, 0xb7, ++ 0x52, 0x7a, 0xc6, 0x7f, 0x9a, 0xd2, 0xb3, 0xfe, 0x0e, 0x4a, 0xdb, 0xfc, ++ 0x9f, 0x53, 0xda, 0xdb, 0xb8, 0x11, 0x9a, 0x5c, 0xfe, 0x19, 0xed, 0x06, ++ 0x33, 0xf6, 0xcf, 0xe5, 0x58, 0x93, 0xd3, 0x19, 0xf6, 0x81, 0x1b, 0x22, ++ 0xe5, 0xb4, 0xc8, 0x7e, 0xd1, 0x06, 0x94, 0xd3, 0x58, 0xf1, 0x22, 0xe6, ++ 0x22, 0x4d, 0x53, 0x62, 0xc7, 0x8b, 0x08, 0x97, 0xc7, 0x88, 0x17, 0xd1, ++ 0xd5, 0x3e, 0x76, 0xbc, 0x88, 0xb4, 0xd1, 0xdf, 0x5f, 0xbc, 0x88, 0x7f, ++ 0x8b, 0xe7, 0xf2, 0xfa, 0x8f, 0xc6, 0x8b, 0x98, 0x5f, 0x2d, 0xc7, 0x33, ++ 0x58, 0xb0, 0xe6, 0xfc, 0xf1, 0x22, 0xca, 0x6c, 0x45, 0xab, 0x51, 0x2e, ++ 0x35, 0x79, 0xfc, 0xb7, 0x78, 0x7e, 0x5e, 0xd5, 0x53, 0xbc, 0x88, 0x6d, ++ 0x76, 0x45, 0xac, 0xd7, 0x40, 0x17, 0xb4, 0xbb, 0x80, 0x2e, 0xb4, 0x5e, ++ 0xf7, 0xf0, 0xde, 0xfe, 0x39, 0xc7, 0xc3, 0xb9, 0xb8, 0x9f, 0xe8, 0xcc, ++ 0xbd, 0xe8, 0xbc, 0x71, 0x0e, 0xf4, 0x72, 0x11, 0x9b, 0xde, 0x3c, 0xae, ++ 0xc1, 0x75, 0xdf, 0x73, 0x9c, 0x88, 0x9e, 0xe8, 0xaa, 0xd5, 0x7f, 0xb3, ++ 0x9c, 0xc7, 0x2f, 0xf8, 0xb7, 0xf8, 0xf3, 0xc7, 0x2f, 0xe8, 0x16, 0x27, ++ 0xa2, 0xa7, 0xf8, 0x02, 0x83, 0x3e, 0x23, 0x3d, 0xd9, 0xdb, 0x38, 0x11, ++ 0x3d, 0xad, 0x0b, 0x3d, 0xd1, 0x73, 0xd6, 0xf7, 0x1c, 0x27, 0xa2, 0x27, ++ 0xbd, 0xda, 0x93, 0x3e, 0xfd, 0xe3, 0x74, 0x4e, 0xe7, 0x09, 0xf1, 0xe7, ++ 0x8f, 0xc7, 0x11, 0x8e, 0x0b, 0x67, 0x6d, 0x39, 0x48, 0x8d, 0x5d, 0x5e, ++ 0x9a, 0xda, 0xaa, 0x78, 0x07, 0x5e, 0x30, 0xdb, 0x45, 0xfe, 0x93, 0xf6, ++ 0x5d, 0xe2, 0xde, 0x98, 0x97, 0xb9, 0x5d, 0xa9, 0xfc, 0x9d, 0x3a, 0xda, ++ 0x9b, 0xed, 0x7b, 0x12, 0x86, 0x33, 0x7a, 0xbf, 0xee, 0x62, 0x5e, 0xe0, ++ 0x4f, 0xbc, 0xf8, 0xae, 0xec, 0xda, 0xbf, 0x1f, 0xcf, 0xd3, 0x6f, 0x75, ++ 0x32, 0x6f, 0x62, 0x12, 0xc5, 0x83, 0x77, 0x1b, 0x73, 0x70, 0x1f, 0x36, ++ 0xd2, 0x8a, 0xfe, 0x94, 0x8a, 0xc6, 0x8f, 0x5e, 0xfe, 0x1d, 0xc0, 0xb5, ++ 0x35, 0x1b, 0xe9, 0x3e, 0x59, 0x3b, 0xe0, 0xd0, 0x42, 0x76, 0x9f, 0x37, ++ 0x11, 0xf9, 0x16, 0xcf, 0x6e, 0xa7, 0x7d, 0x3a, 0x9e, 0x71, 0x7d, 0xd3, ++ 0x27, 0xf2, 0x3d, 0xb3, 0xee, 0xf7, 0x1b, 0xb0, 0x4a, 0xc4, 0xf9, 0xcd, ++ 0x54, 0xa3, 0x9d, 0xf6, 0x4d, 0x9d, 0x5b, 0xf9, 0x3d, 0x4f, 0x23, 0xbb, ++ 0xe8, 0xbe, 0x89, 0xc9, 0x74, 0x9f, 0x9a, 0x05, 0xdd, 0xc4, 0x3f, 0xb2, ++ 0x53, 0x57, 0x08, 0x3c, 0x3b, 0x31, 0xc5, 0xfa, 0x3e, 0x2b, 0xd9, 0x8f, ++ 0xcb, 0x0e, 0x3f, 0x91, 0x1f, 0x62, 0xfc, 0xbc, 0x32, 0xd2, 0x6f, 0xd0, ++ 0xa7, 0x50, 0xf6, 0xd3, 0xd4, 0xd9, 0x9c, 0xc3, 0xf1, 0x5d, 0x25, 0x0b, ++ 0x78, 0x5b, 0xd0, 0xfe, 0x5e, 0x22, 0xe0, 0xa5, 0x14, 0xc9, 0xfe, 0x9b, ++ 0x0f, 0x17, 0x15, 0x1e, 0xc2, 0x73, 0xfa, 0x25, 0xbe, 0x52, 0xba, 0x87, ++ 0x90, 0x56, 0x22, 0xfb, 0x73, 0x98, 0x78, 0x37, 0x8e, 0xdb, 0xb1, 0xf0, ++ 0x7d, 0x39, 0xc0, 0xa7, 0xb4, 0x49, 0x61, 0x0f, 0x28, 0xdd, 0xdf, 0x91, ++ 0x97, 0x35, 0xdf, 0xb5, 0x01, 0xf7, 0x39, 0xcb, 0x83, 0x7a, 0xfb, 0x9b, ++ 0xe5, 0xa2, 0x9c, 0x95, 0xb3, 0x38, 0x0f, 0xee, 0x7b, 0x57, 0xd4, 0xcb, ++ 0xe5, 0x0e, 0x87, 0xb8, 0xcf, 0x61, 0x67, 0xf6, 0x5e, 0xd1, 0xad, 0x75, ++ 0xf0, 0x7d, 0x13, 0x47, 0x9f, 0x97, 0x6e, 0x9e, 0x10, 0xd6, 0xdf, 0xe5, ++ 0xa0, 0xfb, 0xb0, 0xcb, 0x0e, 0x2f, 0x36, 0x23, 0xb3, 0x2c, 0xe9, 0x32, ++ 0xdd, 0x6c, 0x6e, 0x99, 0x6e, 0xf1, 0xb9, 0x32, 0x7d, 0xf4, 0xf4, 0x73, ++ 0x78, 0x64, 0xfa, 0xe8, 0xe9, 0x97, 0x30, 0x56, 0xf6, 0x7f, 0x69, 0xf4, ++ 0xd3, 0xee, 0x1b, 0xaa, 0x4c, 0xdc, 0x17, 0x0d, 0xf2, 0x7b, 0xa4, 0xdd, ++ 0xde, 0xe1, 0x37, 0x6d, 0x23, 0x3c, 0xf5, 0xf4, 0xd3, 0xd3, 0x6b, 0x94, ++ 0x43, 0xdc, 0x93, 0xe8, 0xa2, 0x57, 0x91, 0x35, 0x95, 0x54, 0x3e, 0xe1, ++ 0x99, 0xa1, 0x86, 0x48, 0xbe, 0xf5, 0xf3, 0x21, 0xd3, 0x1e, 0x52, 0xf0, ++ 0xbf, 0xfb, 0x27, 0x07, 0xd7, 0x52, 0x2b, 0x8f, 0x43, 0x45, 0xbd, 0x95, ++ 0xce, 0x41, 0x33, 0x65, 0x09, 0x6f, 0x17, 0x8f, 0xf3, 0x01, 0xe3, 0xca, ++ 0x32, 0x0f, 0xcd, 0x07, 0xdc, 0xd1, 0xa3, 0x7f, 0x37, 0x9e, 0xfd, 0x59, ++ 0xc8, 0xfd, 0xbb, 0xec, 0x1b, 0x48, 0x6f, 0x2a, 0x7e, 0xee, 0xf8, 0x22, ++ 0x28, 0xdd, 0x8a, 0xf2, 0x36, 0x82, 0xff, 0xfe, 0x02, 0xf9, 0xab, 0xb4, ++ 0xdf, 0x4d, 0x60, 0x1e, 0x17, 0xee, 0xa3, 0x1a, 0xfc, 0x56, 0xf7, 0x12, ++ 0x15, 0xcf, 0x05, 0x99, 0x7b, 0xc9, 0x40, 0x3c, 0x0f, 0x74, 0x51, 0x7a, ++ 0xa7, 0x78, 0xf7, 0xdb, 0x3e, 0x94, 0xd1, 0xbe, 0xbf, 0x21, 0xf4, 0x49, ++ 0x2a, 0x9e, 0xa3, 0xdd, 0x99, 0xd7, 0x31, 0x13, 0xfd, 0x0f, 0x55, 0x4b, ++ 0x59, 0x11, 0xae, 0x5f, 0x3f, 0x72, 0xf2, 0x77, 0x17, 0x9b, 0x44, 0x3a, ++ 0xc2, 0xc9, 0xfd, 0x33, 0x9b, 0x8b, 0x0c, 0xcc, 0x3b, 0x1a, 0x7f, 0x87, ++ 0xc7, 0x18, 0x54, 0xd0, 0xef, 0xea, 0xf2, 0x1e, 0xbe, 0x1c, 0xed, 0xd1, ++ 0x66, 0x93, 0x9b, 0xde, 0x11, 0xbb, 0x3a, 0x5e, 0xbe, 0x9e, 0xca, 0x47, ++ 0xd1, 0xfb, 0xe8, 0x0c, 0x43, 0xed, 0x48, 0xc4, 0x07, 0xea, 0xd3, 0xfb, ++ 0xda, 0xf6, 0xe6, 0x77, 0x9d, 0x8b, 0x23, 0xf4, 0x70, 0x5b, 0xd3, 0xdd, ++ 0x43, 0xf0, 0x7e, 0xf1, 0xfd, 0x86, 0xe8, 0xef, 0x7a, 0x4b, 0x1d, 0xda, ++ 0xfb, 0x36, 0x7e, 0xbf, 0x63, 0x44, 0x57, 0x9c, 0x81, 0x52, 0xc7, 0x18, ++ 0x8a, 0x47, 0x70, 0x67, 0x36, 0xf4, 0x53, 0x59, 0xdc, 0x49, 0x7c, 0xd4, ++ 0xe4, 0x72, 0x82, 0xa0, 0xff, 0x73, 0xa5, 0xd3, 0x09, 0xbf, 0x27, 0x9b, ++ 0x15, 0x37, 0xfa, 0xeb, 0xa6, 0x19, 0x6f, 0xf8, 0xc1, 0x30, 0xc0, 0x6f, ++ 0xdc, 0x51, 0x95, 0xeb, 0x2f, 0x71, 0xaf, 0x7b, 0xb4, 0xa8, 0xff, 0x34, ++ 0xf3, 0xa4, 0x23, 0xbe, 0xe3, 0x2e, 0x65, 0x0a, 0xce, 0x9f, 0x71, 0x6f, ++ 0x30, 0x4f, 0x00, 0x49, 0x5c, 0x5d, 0x4a, 0xf7, 0xe9, 0x7e, 0xe7, 0x9c, ++ 0x76, 0x08, 0xf9, 0x35, 0xa5, 0x19, 0xe4, 0x09, 0xf5, 0xc8, 0x59, 0xbb, ++ 0x07, 0xaf, 0xca, 0x8f, 0x69, 0x91, 0xef, 0xcb, 0x25, 0x4e, 0xf1, 0x1d, ++ 0xc0, 0xfb, 0x85, 0x97, 0x1c, 0x63, 0xa4, 0xcf, 0x2e, 0x39, 0xa6, 0xea, ++ 0xef, 0xc7, 0x18, 0x71, 0xbf, 0x3f, 0xae, 0x55, 0xfe, 0x3e, 0x41, 0xb7, ++ 0xff, 0x5c, 0xa7, 0xc9, 0x9d, 0x93, 0xa5, 0xa2, 0xdc, 0x6d, 0xf9, 0xca, ++ 0x48, 0x78, 0xb5, 0x77, 0x30, 0xcf, 0x3a, 0x80, 0xdb, 0xbe, 0xa4, 0x2f, ++ 0x9d, 0xdb, 0xb6, 0x7f, 0xc2, 0xc8, 0x4e, 0x6c, 0xff, 0xca, 0x58, 0x18, ++ 0xed, 0x7e, 0xc9, 0xdd, 0x0e, 0xee, 0xf7, 0xba, 0xdf, 0xcc, 0x48, 0x7f, ++ 0xdf, 0x5f, 0x6a, 0xa7, 0x77, 0x0e, 0xcf, 0x96, 0x96, 0x5f, 0x80, 0xf6, ++ 0xc5, 0x67, 0x3f, 0xf1, 0x5d, 0x10, 0xcd, 0x4f, 0x19, 0x61, 0xa7, 0x25, ++ 0xf0, 0xf7, 0xe7, 0xde, 0x04, 0x36, 0x16, 0xe5, 0xf0, 0x56, 0x85, 0xd3, ++ 0xbb, 0x36, 0xa3, 0x28, 0xca, 0xba, 0xa5, 0xc9, 0x9d, 0x26, 0x87, 0x9a, ++ 0xfc, 0x65, 0x94, 0xc6, 0xf9, 0xa2, 0xdd, 0xd7, 0x4c, 0x76, 0x72, 0xfb, ++ 0x68, 0x52, 0x69, 0xae, 0x62, 0x46, 0xf9, 0xd9, 0xa7, 0x30, 0xa4, 0x6b, ++ 0xdb, 0x3a, 0xc0, 0xeb, 0x3c, 0xeb, 0x76, 0x80, 0xad, 0xcb, 0x44, 0x7c, ++ 0xaa, 0x9a, 0x3e, 0xa6, 0x7b, 0x58, 0xd6, 0x66, 0x25, 0xea, 0xef, 0xf2, ++ 0x3c, 0xe1, 0x70, 0xf2, 0xfb, 0x80, 0xeb, 0x02, 0x6b, 0xf1, 0xfe, 0xc5, ++ 0xcd, 0x30, 0x89, 0x50, 0x4f, 0x65, 0x98, 0x6b, 0xb3, 0xa2, 0xc1, 0x0f, ++ 0xb0, 0x2d, 0x64, 0x97, 0x3e, 0xe0, 0x70, 0xf3, 0x77, 0x03, 0x56, 0x11, ++ 0x47, 0x48, 0xad, 0xcd, 0xc0, 0xfb, 0x08, 0x6d, 0x4d, 0x93, 0xaf, 0xdc, ++ 0x00, 0x78, 0x3e, 0x00, 0xf3, 0x01, 0xf9, 0x7b, 0xbf, 0xc9, 0x43, 0x78, ++ 0x07, 0x2a, 0x18, 0xa3, 0xfb, 0xa4, 0xc2, 0x5f, 0xd7, 0x6f, 0x26, 0xdb, ++ 0xb6, 0x39, 0xc2, 0xfe, 0xdd, 0xeb, 0x28, 0x38, 0x8c, 0x72, 0x7b, 0xd8, ++ 0xc1, 0xed, 0xc6, 0x3e, 0x3e, 0x8f, 0x82, 0x78, 0x7b, 0xfe, 0xfe, 0x57, ++ 0x27, 0xc2, 0x6f, 0xff, 0xdc, 0x42, 0xfc, 0xeb, 0x2b, 0xec, 0x4d, 0xad, ++ 0xdd, 0x49, 0x07, 0xa7, 0x4f, 0x89, 0xd3, 0x7b, 0x00, 0xdb, 0xb3, 0xb2, ++ 0x64, 0x52, 0x3e, 0x1e, 0x9f, 0xd3, 0xbd, 0xa4, 0x0f, 0xfa, 0xcd, 0x81, ++ 0xde, 0x51, 0xec, 0x2b, 0x6d, 0x5d, 0x4f, 0xf2, 0x31, 0x3a, 0x9f, 0x48, ++ 0xb2, 0x1b, 0x82, 0xa4, 0x9c, 0xbc, 0x5e, 0xb7, 0x4b, 0xba, 0xef, 0x1d, ++ 0xa0, 0x79, 0xa3, 0xcd, 0x03, 0x16, 0x52, 0x18, 0xbe, 0xd7, 0xd7, 0xf4, ++ 0x9b, 0xd2, 0xac, 0x84, 0x1c, 0x20, 0xf7, 0xa3, 0xad, 0xf6, 0x10, 0xde, ++ 0x3f, 0x4b, 0x2a, 0x83, 0x71, 0x27, 0x63, 0x3c, 0x0f, 0x2b, 0x87, 0xd7, ++ 0xa2, 0x9e, 0x95, 0xfd, 0x5a, 0x20, 0x8f, 0xf9, 0x68, 0xdc, 0x33, 0x7a, ++ 0xef, 0x8f, 0x8e, 0x54, 0x84, 0xaf, 0xe9, 0x3d, 0x4d, 0x5f, 0xde, 0x9a, ++ 0xc8, 0xf5, 0xd1, 0xad, 0x77, 0xa9, 0x14, 0x0f, 0x74, 0xab, 0xda, 0x6a, ++ 0x43, 0x7f, 0x6a, 0x96, 0xd7, 0x3d, 0x09, 0x43, 0xd3, 0x24, 0xa9, 0x6e, ++ 0xba, 0x97, 0xd2, 0xbf, 0x8c, 0xcf, 0xc3, 0xf8, 0x9c, 0x5f, 0x26, 0x86, ++ 0xed, 0x00, 0x98, 0xe4, 0x23, 0xbf, 0x36, 0x2e, 0x88, 0xf6, 0x9e, 0x29, ++ 0x03, 0xe5, 0x29, 0x05, 0xe9, 0xe5, 0xfb, 0xd0, 0x01, 0xe9, 0xf0, 0x43, ++ 0x1d, 0xcf, 0xa2, 0xb9, 0xe0, 0xb1, 0xb1, 0x3e, 0xfc, 0xfe, 0x94, 0xd0, ++ 0x13, 0xc2, 0xae, 0x99, 0x26, 0xd6, 0xbb, 0x71, 0xef, 0x19, 0xf8, 0x3b, ++ 0xca, 0xd0, 0xe5, 0x2c, 0xf2, 0x7d, 0x91, 0x5e, 0x4f, 0x80, 0xdc, 0xff, ++ 0x09, 0x7f, 0xbf, 0xe7, 0xfe, 0xf7, 0x54, 0x8a, 0x13, 0x1a, 0xd6, 0x0f, ++ 0xa5, 0xd3, 0x68, 0x7d, 0x62, 0xc6, 0xa1, 0x07, 0x50, 0xce, 0x26, 0xbc, ++ 0xc8, 0xf8, 0x71, 0x94, 0xd0, 0x0f, 0x2e, 0xf8, 0x87, 0xf4, 0xb9, 0xe4, ++ 0x25, 0xdf, 0x7a, 0x44, 0xe3, 0xbb, 0xea, 0x05, 0x3d, 0xbf, 0x59, 0xc8, ++ 0x1a, 0xce, 0xe3, 0x4f, 0xb3, 0x8d, 0x3a, 0x04, 0xf3, 0x2d, 0x72, 0x9d, ++ 0x75, 0x8a, 0xf5, 0x5e, 0xe8, 0x91, 0x9b, 0x8a, 0x07, 0xae, 0xc7, 0xf9, ++ 0xa5, 0xc9, 0xd1, 0x05, 0xb7, 0x78, 0x8c, 0xbe, 0x08, 0x3a, 0xea, 0xdb, ++ 0x87, 0xfd, 0x94, 0x8a, 0x35, 0xfc, 0xdd, 0x9d, 0x83, 0x7a, 0xe4, 0x25, ++ 0x23, 0xde, 0x0f, 0x6b, 0x2f, 0x00, 0x7e, 0x03, 0x5d, 0x9e, 0xc4, 0xf9, ++ 0x02, 0xf4, 0x4e, 0xfc, 0x24, 0x78, 0x25, 0xf2, 0x7d, 0x4b, 0xf3, 0x15, ++ 0x36, 0x94, 0xef, 0x5b, 0x43, 0x93, 0x5c, 0x33, 0xa0, 0x4d, 0xa2, 0xb5, ++ 0x88, 0x98, 0x97, 0xc8, 0xbc, 0xe4, 0xcf, 0xc9, 0x03, 0xea, 0x60, 0x9c, ++ 0x88, 0xf5, 0x24, 0x14, 0xb0, 0x5f, 0x57, 0x8b, 0xb2, 0x9c, 0x29, 0x78, ++ 0x8f, 0xab, 0x50, 0xf2, 0xf7, 0x68, 0xbf, 0x8b, 0x07, 0x03, 0x25, 0xbe, ++ 0x84, 0xf9, 0x00, 0x72, 0x1c, 0x79, 0x8f, 0x55, 0x93, 0x4f, 0xbd, 0x3c, ++ 0x6a, 0xf2, 0xbb, 0x1e, 0x37, 0x58, 0x78, 0x7e, 0x87, 0x1e, 0x73, 0x48, ++ 0x8d, 0x4a, 0x03, 0x31, 0xc8, 0xc2, 0xb6, 0xba, 0x50, 0xcf, 0x6a, 0xf6, ++ 0xe5, 0xfa, 0xb0, 0x3d, 0x97, 0x48, 0xfb, 0x8c, 0xd5, 0xc2, 0x2e, 0x5a, ++ 0x6f, 0x9f, 0x66, 0x25, 0x35, 0xb0, 0x3f, 0x99, 0xd6, 0xf3, 0xd5, 0xb8, ++ 0x3e, 0xc1, 0xf8, 0x57, 0xa7, 0x30, 0x9a, 0x07, 0xda, 0x38, 0xf4, 0xf2, ++ 0x58, 0xf5, 0xb9, 0x81, 0x05, 0x23, 0xf6, 0x07, 0x55, 0x6a, 0x07, 0xdd, ++ 0xe3, 0xab, 0xfa, 0xdc, 0xcc, 0x82, 0x7d, 0x70, 0xdc, 0xbe, 0x49, 0x38, ++ 0x6e, 0x8d, 0x2e, 0x23, 0x05, 0x5d, 0xf4, 0x74, 0xc8, 0x76, 0x8a, 0xfd, ++ 0xa6, 0xa0, 0x47, 0x6c, 0x3c, 0xf3, 0x5d, 0x78, 0x7f, 0x36, 0xd1, 0xea, ++ 0x65, 0x1b, 0x09, 0xcf, 0x49, 0x74, 0xcf, 0xb9, 0x21, 0x94, 0x67, 0xc5, ++ 0xf5, 0xf6, 0x36, 0x1d, 0x9e, 0xbd, 0xc0, 0x6f, 0x4e, 0x34, 0xfc, 0x54, ++ 0x7b, 0x0c, 0xfc, 0x44, 0xfc, 0xb6, 0x09, 0xcc, 0xf7, 0xbb, 0x56, 0x90, ++ 0xd7, 0xfc, 0x9b, 0xea, 0x32, 0xf8, 0x7a, 0xc1, 0x5e, 0x4d, 0x8f, 0xe0, ++ 0x9f, 0x7e, 0xde, 0x8c, 0x6d, 0xaa, 0x3e, 0x60, 0x8e, 0x98, 0x2f, 0x9a, ++ 0x5f, 0x57, 0x3f, 0x4f, 0x46, 0x34, 0xb3, 0x6b, 0x90, 0xee, 0xe3, 0x42, ++ 0x2a, 0xc3, 0xf3, 0xd7, 0x9e, 0xe6, 0xcb, 0x27, 0x62, 0xbc, 0x55, 0xf1, ++ 0x9c, 0x5e, 0xed, 0x73, 0x3a, 0x06, 0xa3, 0x7c, 0xee, 0x50, 0x7d, 0xd5, ++ 0x4e, 0xb2, 0x2f, 0x5a, 0x0d, 0x18, 0xf7, 0xb7, 0xfd, 0x69, 0x46, 0xf3, ++ 0xd9, 0xb3, 0xff, 0xa4, 0x93, 0xe2, 0x1b, 0xb5, 0xf4, 0xee, 0x7e, 0xba, ++ 0x66, 0x47, 0x69, 0xf6, 0x93, 0xbe, 0x9e, 0x66, 0x3f, 0x69, 0x7a, 0x57, ++ 0xbb, 0x1f, 0xbe, 0xdd, 0xe9, 0xf3, 0x63, 0xff, 0x4a, 0x13, 0xc8, 0x27, ++ 0x8c, 0x7f, 0xbd, 0x8b, 0xef, 0x8b, 0xf6, 0x3a, 0x7c, 0xeb, 0xf0, 0x7b, ++ 0x3c, 0x8c, 0x01, 0x8f, 0x92, 0x58, 0x6e, 0x28, 0x8b, 0xbf, 0x7f, 0x95, ++ 0xe5, 0x3f, 0x96, 0xbc, 0xc7, 0xeb, 0xe4, 0xb9, 0x01, 0xe8, 0x44, 0xbf, ++ 0x93, 0x05, 0xfa, 0x7f, 0x90, 0xd2, 0x1d, 0x0f, 0xad, 0xff, 0x29, 0xce, ++ 0x44, 0x7e, 0xde, 0x02, 0xb3, 0x19, 0xf5, 0x50, 0xbf, 0x7c, 0xc6, 0x3b, ++ 0xab, 0x64, 0x74, 0x7f, 0xb2, 0xdf, 0x70, 0xe6, 0xc3, 0xf5, 0xa9, 0x5f, ++ 0x1e, 0xbf, 0xf7, 0x17, 0x14, 0xeb, 0xf6, 0x36, 0xa1, 0x6f, 0xb5, 0x74, ++ 0xaf, 0xa3, 0xe8, 0x7e, 0xc4, 0xdf, 0xa4, 0xb2, 0x80, 0x25, 0xef, 0xbb, ++ 0xe3, 0x8d, 0xa8, 0xe2, 0x7d, 0xec, 0xed, 0x4e, 0xef, 0x7d, 0x28, 0x7f, ++ 0xd6, 0x42, 0x2f, 0x8d, 0x23, 0xd3, 0xc5, 0x3c, 0x68, 0x7f, 0x66, 0xaa, ++ 0x0d, 0x0a, 0xbe, 0x9b, 0x4c, 0x5a, 0xe9, 0x56, 0xf8, 0x3d, 0x6c, 0xd6, ++ 0xf5, 0x8e, 0x09, 0xe0, 0x65, 0xce, 0x70, 0x17, 0xa0, 0x9c, 0x64, 0xe2, ++ 0x3e, 0x1a, 0xeb, 0x37, 0x47, 0x8f, 0xa3, 0xf5, 0x84, 0xd3, 0x24, 0xd9, ++ 0x99, 0x1e, 0x16, 0x8e, 0x53, 0xf5, 0x04, 0xf6, 0x0b, 0x76, 0xe6, 0x41, ++ 0x33, 0xe0, 0xdd, 0x67, 0x86, 0x16, 0xf7, 0x4a, 0x3b, 0xb7, 0xf1, 0x28, ++ 0x48, 0xa7, 0x36, 0xc7, 0x1c, 0x42, 0xba, 0xed, 0x53, 0x85, 0xdb, 0xe3, ++ 0x89, 0x9c, 0x5e, 0xfa, 0xfd, 0x00, 0x12, 0x1e, 0xf1, 0x53, 0x45, 0xfe, ++ 0x36, 0x33, 0x53, 0x6d, 0x49, 0xac, 0xeb, 0x77, 0x38, 0x0d, 0x56, 0xb2, ++ 0xe3, 0xe3, 0x99, 0xa7, 0x01, 0xf5, 0xd2, 0xcb, 0xce, 0x6c, 0x71, 0x2e, ++ 0xea, 0xa9, 0xc1, 0xfc, 0xbf, 0xab, 0x1d, 0xd6, 0xc4, 0xa1, 0x5d, 0x72, ++ 0x7c, 0xe7, 0xc4, 0x59, 0x1e, 0x15, 0xaa, 0x38, 0x2f, 0xed, 0x1c, 0x8e, ++ 0x7b, 0x26, 0x90, 0xe7, 0xc3, 0x88, 0x6f, 0xdb, 0xc4, 0xce, 0xc1, 0xb7, ++ 0x12, 0x31, 0x3a, 0x06, 0x70, 0xb9, 0xf1, 0x1a, 0xa5, 0xb8, 0x38, 0x1a, ++ 0xfd, 0x9b, 0x4c, 0x12, 0xfd, 0x6d, 0xb8, 0xcf, 0x8e, 0xd4, 0x83, 0x0e, ++ 0x33, 0xed, 0x23, 0xdb, 0x94, 0x38, 0x0f, 0xce, 0xb3, 0xb6, 0xe5, 0x0a, ++ 0xc7, 0x53, 0xb1, 0x8a, 0xb8, 0x41, 0xaa, 0xbc, 0xff, 0x17, 0xfa, 0x48, ++ 0xd3, 0xaf, 0x9d, 0xce, 0x2c, 0xc2, 0x3f, 0x9e, 0x05, 0x68, 0x1f, 0xc0, ++ 0xac, 0x1e, 0x2b, 0xdd, 0x63, 0x17, 0xf8, 0x63, 0x5c, 0x45, 0xf2, 0xeb, ++ 0xec, 0x8d, 0x0f, 0x6e, 0xc7, 0xf3, 0x28, 0x5d, 0x1c, 0x45, 0x7d, 0x9c, ++ 0xc5, 0xc9, 0x8b, 0xed, 0x74, 0xef, 0x62, 0xcb, 0x5e, 0x1b, 0xed, 0x4b, ++ 0x3b, 0x8b, 0xf8, 0xf9, 0x7c, 0x67, 0xb3, 0x85, 0xf4, 0x6f, 0xac, 0x79, ++ 0x9a, 0x86, 0xca, 0xe0, 0x3c, 0xf1, 0x02, 0x81, 0x6e, 0x1d, 0x48, 0xb7, ++ 0x34, 0x53, 0x75, 0x22, 0xea, 0xbd, 0xb4, 0xf9, 0x7c, 0xfe, 0xeb, 0xe9, ++ 0xd1, 0x8e, 0x03, 0xc5, 0xfd, 0xce, 0x1f, 0x4c, 0xc1, 0x68, 0xef, 0xd5, ++ 0xb5, 0x34, 0x3d, 0xbd, 0x6f, 0x31, 0xda, 0x65, 0xe9, 0x19, 0xe9, 0x94, ++ 0x6a, 0xdf, 0xeb, 0xec, 0x6a, 0xd4, 0x7b, 0xd8, 0xc6, 0x04, 0x45, 0x8a, ++ 0xd3, 0x37, 0x04, 0x7a, 0x14, 0xfb, 0x1c, 0x63, 0x02, 0x7c, 0x3f, 0xe7, ++ 0xfb, 0xe3, 0x6b, 0x5e, 0xd6, 0x75, 0xaf, 0xbd, 0x2e, 0x8e, 0xd3, 0xaf, ++ 0xd3, 0x37, 0x3e, 0xe1, 0x61, 0x94, 0x2b, 0x10, 0x38, 0xfa, 0x3d, 0x01, ++ 0xed, 0x5c, 0x53, 0xec, 0xe7, 0xb5, 0xf8, 0x49, 0x5a, 0x3f, 0x5b, 0xfc, ++ 0xd6, 0x62, 0x0c, 0xf9, 0x59, 0xb7, 0x68, 0xba, 0x0d, 0xd7, 0x81, 0x14, ++ 0xe6, 0xbd, 0x72, 0x1e, 0x4e, 0xca, 0x2d, 0x26, 0xb6, 0x93, 0xda, 0xe5, ++ 0x4a, 0xf7, 0x5d, 0xef, 0xf5, 0x8f, 0x2c, 0xc6, 0xf7, 0xc9, 0x99, 0x09, ++ 0xfc, 0x1e, 0xed, 0x27, 0x5b, 0xa6, 0xd2, 0x7b, 0xe6, 0x54, 0xb6, 0xce, ++ 0x36, 0x18, 0xe8, 0x50, 0x5a, 0x64, 0xf0, 0xa0, 0x3f, 0xe0, 0xdc, 0xa2, ++ 0x37, 0x9d, 0x06, 0x90, 0x9f, 0x45, 0x99, 0x2d, 0xf9, 0x28, 0xa7, 0x09, ++ 0x26, 0x5f, 0x66, 0xc2, 0x18, 0x72, 0x5d, 0xd1, 0x7e, 0x63, 0x59, 0x89, ++ 0x39, 0x18, 0x02, 0x7a, 0x25, 0xd7, 0x81, 0x42, 0x20, 0x3a, 0x06, 0xae, ++ 0x24, 0x3a, 0x2e, 0x34, 0x44, 0xf5, 0x0f, 0x67, 0x27, 0xf0, 0x7d, 0xe7, ++ 0x5b, 0x62, 0x3d, 0x49, 0x4f, 0x1f, 0x50, 0xbc, 0x64, 0x54, 0x64, 0xbe, ++ 0x1f, 0xd1, 0x55, 0x93, 0x23, 0x98, 0x3f, 0x19, 0x4b, 0x46, 0x77, 0xc5, ++ 0xc3, 0x04, 0x7e, 0x5e, 0x94, 0x10, 0x65, 0x1e, 0xb4, 0x9b, 0x58, 0x13, ++ 0xbe, 0x97, 0xd0, 0xf4, 0x51, 0xb2, 0x10, 0x33, 0x4d, 0x1f, 0x6a, 0x72, ++ 0x9c, 0x8c, 0xf3, 0x03, 0xed, 0xb8, 0x22, 0xd0, 0x4f, 0xd2, 0x79, 0x1f, ++ 0x54, 0x4d, 0xed, 0xfa, 0x3d, 0x43, 0xa5, 0xf9, 0x85, 0x2f, 0xd0, 0x8e, ++ 0x75, 0x5e, 0x3a, 0x89, 0xf4, 0x0d, 0xcc, 0xdb, 0x1a, 0x92, 0xf3, 0x5c, ++ 0xae, 0x3f, 0x6d, 0xa8, 0xcf, 0x22, 0xfc, 0x56, 0xed, 0x7b, 0x5f, 0xef, ++ 0x8f, 0xef, 0x98, 0xde, 0xfe, 0xd9, 0xc7, 0x0e, 0x7c, 0xd7, 0xf2, 0x17, ++ 0xb5, 0xc3, 0x81, 0xfa, 0xeb, 0xf4, 0x2d, 0x7f, 0x72, 0x60, 0x1c, 0xb0, ++ 0xb7, 0x6f, 0xe1, 0xfb, 0xe4, 0x1b, 0x75, 0xf6, 0xff, 0x55, 0x42, 0x3e, ++ 0x82, 0x09, 0x45, 0x53, 0x90, 0xae, 0x0b, 0xfc, 0x7f, 0xcf, 0x8f, 0xb4, ++ 0xd7, 0xd8, 0x1a, 0xee, 0x7f, 0x5e, 0x1e, 0x94, 0xdf, 0xaf, 0xe2, 0xfd, ++ 0xef, 0x48, 0x3f, 0x60, 0x45, 0x83, 0xfe, 0x3e, 0x40, 0x80, 0xc7, 0x29, ++ 0x13, 0xbf, 0xcf, 0xa9, 0xe7, 0xc3, 0x3a, 0xc1, 0x87, 0xe5, 0xbb, 0xb6, ++ 0x99, 0x33, 0xdd, 0xd8, 0xbf, 0x6f, 0x0e, 0xf6, 0x7f, 0x5a, 0xec, 0x6f, ++ 0x4e, 0x37, 0x3a, 0xe8, 0x3d, 0x85, 0x86, 0xcf, 0xa2, 0x5d, 0x23, 0xcd, ++ 0x68, 0xf3, 0xff, 0xa5, 0xd9, 0x22, 0xde, 0xe9, 0xb5, 0x98, 0xb8, 0x5e, ++ 0xf6, 0xce, 0xc0, 0xf7, 0x39, 0x3e, 0x41, 0x37, 0x3d, 0x9e, 0x07, 0xf7, ++ 0xc5, 0x13, 0xbc, 0xa5, 0xf7, 0xf0, 0xf7, 0xab, 0x0b, 0xa1, 0xaf, 0x35, ++ 0xa0, 0x17, 0x7d, 0xcd, 0x3c, 0x8e, 0x92, 0x7e, 0x1c, 0x4b, 0xdf, 0x76, ++ 0x4f, 0x43, 0x3f, 0xfa, 0xd2, 0x4d, 0x0a, 0xed, 0xe3, 0xb0, 0xfe, 0x2d, ++ 0xb0, 0x4e, 0xf8, 0xd6, 0x6c, 0xa4, 0x77, 0x3c, 0xfa, 0x71, 0x2e, 0x0c, ++ 0xc8, 0xfe, 0x1c, 0x7d, 0xbc, 0x46, 0x6d, 0x3f, 0xb0, 0x4c, 0xf0, 0x7f, ++ 0x09, 0xfe, 0x1a, 0x6f, 0x4e, 0x94, 0x38, 0x8e, 0xcd, 0xfc, 0x3d, 0xdd, ++ 0x32, 0x9d, 0x7d, 0xd1, 0x79, 0x28, 0x27, 0x1e, 0xc7, 0xbf, 0x26, 0x41, ++ 0xd8, 0xd9, 0xf9, 0xec, 0x12, 0x8c, 0xdb, 0xb9, 0xe7, 0x50, 0x76, 0x42, ++ 0xb4, 0x78, 0x18, 0x5a, 0x7a, 0x56, 0x9c, 0xf7, 0xe3, 0xbd, 0x7e, 0x4c, ++ 0x4f, 0xfb, 0x19, 0xa5, 0x53, 0x12, 0xdc, 0x3c, 0x5e, 0x57, 0xf3, 0x91, ++ 0x9b, 0x51, 0xae, 0x2a, 0x9b, 0x76, 0x53, 0x7c, 0xc4, 0x7d, 0xc1, 0xf7, ++ 0xfa, 0x8c, 0x87, 0x2a, 0x05, 0xcd, 0x5f, 0x18, 0x51, 0xa8, 0x0a, 0x84, ++ 0x3d, 0x36, 0x5f, 0xd8, 0x63, 0x7b, 0x18, 0x97, 0x1b, 0xb0, 0xa3, 0x37, ++ 0xa3, 0xfc, 0x5f, 0xfe, 0xb9, 0xce, 0x8e, 0x16, 0xe3, 0xbc, 0x41, 0x93, ++ 0xfb, 0x43, 0x49, 0x24, 0x37, 0x37, 0xe0, 0xb8, 0x86, 0xe3, 0x77, 0xf5, ++ 0x93, 0x68, 0xe3, 0xba, 0x3b, 0x41, 0x7e, 0xff, 0xd5, 0xdb, 0x71, 0x69, ++ 0xe3, 0xd1, 0xc6, 0xa7, 0x95, 0x57, 0x88, 0xf7, 0xe7, 0xfa, 0x76, 0x9a, ++ 0x9c, 0x4f, 0x11, 0x72, 0xb7, 0x64, 0x47, 0xf1, 0x86, 0xbe, 0x40, 0x8a, ++ 0xf5, 0x7b, 0xdf, 0x1f, 0x20, 0xe2, 0xc8, 0x51, 0x9c, 0x2d, 0x4d, 0x8e, ++ 0xf4, 0x72, 0xb2, 0x4c, 0xf0, 0x2d, 0x2c, 0x0f, 0xcd, 0x77, 0xd0, 0xb8, ++ 0x34, 0xbe, 0x81, 0xbc, 0xa7, 0x8b, 0x77, 0x49, 0xe9, 0xe8, 0xcf, 0xe8, ++ 0x49, 0x2e, 0xf4, 0xfc, 0x6f, 0x33, 0xb5, 0x0e, 0xc0, 0xf9, 0xaa, 0xe7, ++ 0x7f, 0x5b, 0x8c, 0x73, 0x9f, 0xed, 0x09, 0xfc, 0x5c, 0x63, 0x89, 0xdb, ++ 0x3b, 0x0d, 0xfd, 0x2b, 0x60, 0x1e, 0x6e, 0x70, 0x45, 0xd8, 0x0f, 0xa7, ++ 0xd5, 0xda, 0x83, 0x3f, 0xc5, 0x79, 0xb4, 0x83, 0xcb, 0x71, 0xe4, 0xba, ++ 0x48, 0xc6, 0xd2, 0x8b, 0x26, 0x5a, 0x67, 0x57, 0x39, 0xdc, 0x69, 0x89, ++ 0x76, 0xc1, 0xb7, 0x71, 0xf8, 0x7e, 0xd1, 0x12, 0xc0, 0x7a, 0x5a, 0x3f, ++ 0xa7, 0xfc, 0x35, 0xb3, 0x06, 0xd2, 0x79, 0x63, 0xed, 0xac, 0x81, 0x03, ++ 0xe9, 0xdd, 0x06, 0xa5, 0x5a, 0x79, 0xe9, 0xfd, 0x1f, 0x3b, 0xd1, 0x3e, ++ 0x6d, 0xcf, 0x65, 0xe4, 0x5f, 0x68, 0x73, 0xc8, 0xf8, 0x1e, 0xc1, 0xc5, ++ 0x66, 0x0c, 0xa6, 0x9c, 0xfe, 0x2b, 0xd5, 0x96, 0xaf, 0xdf, 0x42, 0x1d, ++ 0xb4, 0xa3, 0x85, 0xe2, 0xb7, 0x9e, 0xfa, 0x4a, 0xf8, 0x27, 0xbe, 0xb2, ++ 0x14, 0x46, 0x1b, 0xe7, 0xd9, 0x04, 0x6e, 0x07, 0x6a, 0xf7, 0x4f, 0x6e, ++ 0x14, 0xf3, 0xe8, 0xc6, 0x66, 0xfe, 0xde, 0x6e, 0xd1, 0xd6, 0x62, 0x33, ++ 0xf9, 0x01, 0xd6, 0xc8, 0xf7, 0x35, 0x5e, 0x52, 0x5c, 0xd3, 0x32, 0xa1, ++ 0xa9, 0xaf, 0x61, 0xa4, 0x19, 0xf9, 0xac, 0xe7, 0xc7, 0x52, 0xcf, 0x15, ++ 0xf4, 0x0e, 0xbc, 0x1b, 0x5f, 0xd8, 0xed, 0xc4, 0xd7, 0xa5, 0xfa, 0x77, ++ 0x6d, 0xe2, 0x1e, 0xd3, 0x02, 0x21, 0x1f, 0x33, 0x5d, 0x6e, 0x61, 0xa7, ++ 0xf9, 0xe8, 0x1d, 0xf1, 0x92, 0x3a, 0x23, 0xd9, 0xf7, 0xcb, 0xdc, 0xd5, ++ 0xb4, 0xbf, 0x59, 0xa1, 0x46, 0x7f, 0x8f, 0x35, 0xc6, 0x65, 0x38, 0xef, ++ 0x78, 0xf4, 0xe3, 0x58, 0xd8, 0xa8, 0x90, 0xde, 0xd3, 0xe3, 0xbf, 0x6c, ++ 0xc7, 0xda, 0x0d, 0x7d, 0x19, 0x8e, 0x9f, 0x8f, 0xaf, 0xfb, 0x38, 0x42, ++ 0xfd, 0x48, 0xcf, 0x88, 0x71, 0xb2, 0xd6, 0xcb, 0xf9, 0xbb, 0x4c, 0xb1, ++ 0x6e, 0xff, 0x17, 0x47, 0x94, 0xbc, 0x57, 0x00, 0x80, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xb5, 0x7c, ++ 0x0d, 0x78, 0x54, 0xd5, 0xb5, 0xe8, 0x3e, 0x73, 0xce, 0xfc, 0x24, 0x33, ++ 0x49, 0x26, 0xff, 0x21, 0x41, 0x3c, 0x21, 0x11, 0x12, 0x12, 0xe2, 0x90, ++ 0x84, 0x00, 0x01, 0x71, 0xf2, 0x4b, 0xc4, 0x08, 0x03, 0x01, 0x82, 0x60, ++ 0x75, 0x40, 0x51, 0x84, 0x90, 0x20, 0x7a, 0x5b, 0xef, 0xab, 0xb7, 0x99, ++ 0x90, 0x68, 0x2d, 0xfa, 0x7a, 0xa3, 0x58, 0xcb, 0x6d, 0xed, 0xfd, 0x06, ++ 0x2b, 0xad, 0x0a, 0x48, 0x80, 0xa0, 0x81, 0x26, 0xe9, 0x04, 0x14, 0x03, ++ 0x04, 0x0d, 0x82, 0x0a, 0x96, 0xd6, 0x80, 0x14, 0xb1, 0x05, 0x32, 0x80, ++ 0xb5, 0x58, 0x7d, 0x8f, 0xb7, 0xd6, 0xda, 0xfb, 0x64, 0x66, 0x4e, 0x92, ++ 0x42, 0x6f, 0x5f, 0x87, 0xd6, 0x9d, 0x7d, 0xce, 0x3e, 0xfb, 0xac, 0xbd, ++ 0xfe, 0xd7, 0xda, 0x6b, 0x9f, 0x65, 0xec, 0xd9, 0x4b, 0x72, 0x0e, 0x63, ++ 0x0f, 0xb7, 0xcb, 0x8c, 0xe5, 0x33, 0x56, 0xfb, 0xac, 0xec, 0x65, 0xa9, ++ 0x8c, 0x2d, 0x63, 0xca, 0xe9, 0xbe, 0x0c, 0x46, 0xbf, 0x6b, 0xa9, 0xf8, ++ 0x5f, 0x67, 0xe5, 0x92, 0x04, 0xc6, 0xee, 0xc5, 0x3f, 0x55, 0x68, 0xdb, ++ 0x57, 0x55, 0x32, 0x78, 0xae, 0x5c, 0xae, 0x99, 0x85, 0xcf, 0xf5, 0x6f, ++ 0x90, 0x99, 0x59, 0x82, 0xeb, 0x1e, 0xef, 0x53, 0xc9, 0x71, 0xd0, 0x36, ++ 0x49, 0x8e, 0x46, 0x18, 0xc7, 0x1e, 0x37, 0x9e, 0xee, 0xb3, 0x30, 0x66, ++ 0x81, 0x7f, 0xd7, 0x46, 0xd3, 0x3c, 0x8c, 0x25, 0xe0, 0xfc, 0xfc, 0xd7, ++ 0x23, 0xb1, 0xa7, 0x52, 0x60, 0xfe, 0xb3, 0x8a, 0xff, 0xbd, 0x08, 0x78, ++ 0xee, 0x2c, 0xc0, 0xe1, 0x81, 0x79, 0x96, 0x78, 0xf8, 0x73, 0xf4, 0x7e, ++ 0xf8, 0xff, 0x32, 0xc7, 0x8c, 0x2f, 0x24, 0x78, 0xdf, 0xfd, 0xed, 0xf2, ++ 0x29, 0x73, 0x0e, 0x5e, 0x5d, 0x6d, 0x32, 0xc0, 0xf8, 0xa5, 0x2f, 0x49, ++ 0x6c, 0x1d, 0x8c, 0xbf, 0xff, 0x69, 0xdd, 0x78, 0xb1, 0x2e, 0xfd, 0x3a, ++ 0x1e, 0xda, 0xf0, 0xa3, 0xb9, 0xe9, 0x19, 0x81, 0x71, 0x0f, 0x7b, 0x9f, ++ 0x0b, 0xe9, 0xc3, 0xda, 0x54, 0x56, 0xc0, 0xd8, 0x7d, 0x02, 0x3e, 0xf6, ++ 0xea, 0x7f, 0x05, 0xee, 0x73, 0xf8, 0x4d, 0xae, 0x08, 0xc6, 0x32, 0xed, ++ 0x11, 0x71, 0x67, 0xb3, 0xa0, 0x5b, 0xc0, 0x26, 0x5d, 0x4b, 0x63, 0xac, ++ 0xce, 0x1a, 0x99, 0xc3, 0xa2, 0xa0, 0x35, 0x33, 0xc2, 0x23, 0x3b, 0x64, ++ 0xf4, 0x6e, 0x02, 0xb8, 0xd6, 0x44, 0xc0, 0x82, 0x01, 0xce, 0x35, 0x5b, ++ 0xa3, 0xbd, 0x1e, 0xc4, 0xe3, 0xea, 0x68, 0xc6, 0x46, 0xc0, 0xb8, 0xf6, ++ 0x8d, 0x26, 0xb7, 0x0d, 0xe6, 0xc4, 0xdf, 0xed, 0x8c, 0x9d, 0xab, 0x6f, ++ 0x9e, 0x9b, 0x9e, 0x0e, 0xeb, 0xaf, 0x7f, 0x7a, 0x6e, 0xba, 0xc2, 0xd8, ++ 0x2c, 0xbb, 0x9d, 0xb1, 0x89, 0x40, 0x8f, 0xb6, 0xe7, 0x68, 0x5c, 0xb7, ++ 0xe2, 0x9a, 0x64, 0x87, 0xfe, 0x2a, 0x4b, 0xdf, 0x8f, 0xef, 0x56, 0x83, ++ 0xf0, 0x38, 0x99, 0xd3, 0x63, 0x99, 0x5c, 0x69, 0x62, 0x86, 0xc0, 0x7c, ++ 0xfa, 0x76, 0x59, 0xb3, 0xf1, 0xcb, 0xbe, 0xa0, 0x75, 0x16, 0x21, 0xfc, ++ 0x56, 0xf8, 0x63, 0x12, 0xc0, 0x2f, 0xff, 0x3d, 0xf8, 0xd5, 0xc4, 0x68, ++ 0x5b, 0x00, 0x6e, 0xfd, 0xbc, 0x7f, 0xaa, 0xdf, 0x10, 0x02, 0xf7, 0x4a, ++ 0x85, 0x39, 0x5b, 0x6c, 0x81, 0xf5, 0x68, 0xe3, 0x26, 0xda, 0x0d, 0xb4, ++ 0x1e, 0xfd, 0xf3, 0x7a, 0x7a, 0x30, 0xe6, 0xa5, 0x71, 0x7a, 0xba, 0xac, ++ 0x44, 0x3a, 0x04, 0xd1, 0x17, 0xe1, 0x54, 0x00, 0xaf, 0x3d, 0x1d, 0x56, ++ 0xef, 0x5a, 0x89, 0xf8, 0x88, 0xe0, 0xf6, 0x74, 0x84, 0x11, 0xdc, 0x17, ++ 0x93, 0xd6, 0xcd, 0x3d, 0x93, 0xc7, 0xd8, 0x61, 0x7c, 0x00, 0xe0, 0xae, ++ 0x1d, 0xf1, 0x32, 0xf5, 0x5f, 0x51, 0x5c, 0x6e, 0x7b, 0x3c, 0x5e, 0xf4, ++ 0x8f, 0x72, 0x8d, 0xc7, 0x67, 0x62, 0x19, 0x9b, 0x32, 0x3c, 0xde, 0x60, ++ 0x46, 0xc6, 0x60, 0x7c, 0x2e, 0xce, 0x0f, 0xe3, 0x76, 0x85, 0x39, 0xf3, ++ 0x98, 0x8c, 0xd7, 0x5d, 0xb1, 0xc8, 0x07, 0xd3, 0x1b, 0xfa, 0xaa, 0x2c, ++ 0x40, 0xaa, 0x3a, 0xfb, 0xa4, 0x0a, 0x05, 0xde, 0x33, 0xfd, 0xb9, 0xbe, ++ 0xaa, 0x30, 0xe8, 0x3f, 0x62, 0x9f, 0xcc, 0xfb, 0x9b, 0xfa, 0x8e, 0x5a, ++ 0x1c, 0x8c, 0x35, 0xb0, 0x29, 0x15, 0xa5, 0xf0, 0xfc, 0x63, 0x70, 0x0f, ++ 0xe7, 0xbb, 0x5e, 0x9b, 0x6f, 0x76, 0x2d, 0x66, 0xc0, 0x57, 0x35, 0x80, ++ 0x53, 0x4b, 0x0c, 0xb4, 0xc7, 0xc6, 0xbc, 0x8d, 0xf2, 0x56, 0xd3, 0x5b, ++ 0x59, 0x21, 0x45, 0x42, 0xcb, 0x98, 0x4f, 0xca, 0x05, 0x7e, 0x70, 0x46, ++ 0xfa, 0xac, 0x39, 0xd4, 0x67, 0x85, 0x30, 0xae, 0x33, 0xca, 0xfd, 0x1f, ++ 0xb8, 0xbe, 0x55, 0x57, 0x9b, 0x2e, 0xc9, 0x38, 0xee, 0x98, 0xc2, 0xe5, ++ 0xa5, 0x3b, 0x8e, 0xf0, 0xa0, 0x00, 0xec, 0x61, 0xf0, 0x5c, 0x53, 0xb8, ++ 0x53, 0xb5, 0x03, 0xbe, 0x9a, 0x62, 0x2c, 0x8e, 0xc6, 0x54, 0xba, 0xee, ++ 0x09, 0x8b, 0xc1, 0xbe, 0x53, 0x55, 0x83, 0xae, 0x6b, 0xf4, 0xc0, 0xe7, ++ 0x10, 0x8e, 0x26, 0x03, 0x73, 0x46, 0x43, 0xdb, 0x75, 0x60, 0x4c, 0x54, ++ 0x5f, 0xf6, 0xf0, 0x78, 0xeb, 0xaa, 0x57, 0xab, 0x14, 0xa0, 0xff, 0xbe, ++ 0xfa, 0x0c, 0x6a, 0xf5, 0xf7, 0x8b, 0x4c, 0xf6, 0x74, 0x07, 0x3c, 0x5f, ++ 0x64, 0x60, 0xee, 0x16, 0xdb, 0xe0, 0xfb, 0xaf, 0x22, 0xbf, 0x10, 0x9d, ++ 0xd4, 0x14, 0xa4, 0x73, 0x6d, 0xb7, 0x89, 0xe4, 0x1c, 0x7f, 0x12, 0xf0, ++ 0xfd, 0x2a, 0xa1, 0x87, 0x6a, 0x81, 0x40, 0x51, 0x00, 0xcf, 0xaa, 0x63, ++ 0xcc, 0x17, 0x1e, 0x89, 0xe3, 0xca, 0xbf, 0x50, 0xb0, 0x6d, 0x95, 0xd8, ++ 0xe9, 0x10, 0xbe, 0x62, 0x81, 0xbe, 0x3c, 0x3c, 0xdc, 0x37, 0xda, 0xd6, ++ 0xe2, 0x7c, 0x4a, 0x30, 0x9f, 0x70, 0x3c, 0x15, 0x2b, 0xa9, 0x55, 0x4a, ++ 0xd0, 0x7b, 0x4b, 0x6d, 0x99, 0x21, 0x7d, 0x39, 0xd1, 0x90, 0x81, 0xeb, ++ 0x61, 0x72, 0xb8, 0x63, 0x13, 0xe0, 0x57, 0x4e, 0x31, 0xac, 0xde, 0x01, ++ 0xeb, 0x97, 0x6f, 0x86, 0x16, 0xf0, 0xa1, 0xd8, 0x1d, 0xf2, 0x12, 0x68, ++ 0x9b, 0x4b, 0xa6, 0xcb, 0x4b, 0xa1, 0x6d, 0x34, 0xb2, 0x85, 0x2d, 0xd8, ++ 0x1a, 0xd8, 0xf2, 0x60, 0x3c, 0x75, 0x08, 0x79, 0xd2, 0xda, 0x4b, 0x76, ++ 0xd7, 0x6f, 0x90, 0xee, 0x17, 0xde, 0xef, 0x2d, 0xb0, 0x92, 0x9e, 0x1a, ++ 0x69, 0x27, 0xf9, 0x16, 0xeb, 0x6d, 0x94, 0x1c, 0x3e, 0xd4, 0x43, 0x9e, ++ 0x2e, 0xe6, 0xd8, 0x04, 0xd7, 0x9a, 0x64, 0x17, 0xe3, 0x7c, 0xdc, 0xc2, ++ 0x90, 0x8f, 0x7f, 0x2f, 0xe6, 0x71, 0x98, 0x0d, 0x3b, 0x55, 0xe0, 0xd7, ++ 0xf7, 0xec, 0x0f, 0x12, 0xff, 0x3a, 0xa2, 0x0c, 0x8f, 0xa6, 0x42, 0xff, ++ 0xa3, 0xe6, 0x15, 0x15, 0x0a, 0xf0, 0xaf, 0x23, 0xc5, 0x70, 0x25, 0x15, ++ 0x78, 0xf4, 0x78, 0xf3, 0x4a, 0xde, 0xcf, 0x32, 0x5c, 0x19, 0x0d, 0xfd, ++ 0x4f, 0x9a, 0x6b, 0x78, 0x7f, 0x2a, 0x4c, 0x99, 0xcc, 0xd8, 0xc9, 0xe6, ++ 0x55, 0x15, 0x9e, 0x6c, 0x9c, 0x97, 0xeb, 0x31, 0xb6, 0xc5, 0x99, 0x85, ++ 0xef, 0x51, 0x0c, 0x12, 0xc9, 0xa9, 0xb2, 0xd7, 0xe4, 0x6d, 0x84, 0x3f, ++ 0x9b, 0x22, 0x39, 0x3f, 0x35, 0x19, 0x81, 0x2f, 0x63, 0x70, 0xbc, 0x4a, ++ 0xe3, 0x9f, 0x6a, 0x28, 0xde, 0x6c, 0x05, 0xfe, 0x57, 0x8a, 0x9d, 0xea, ++ 0x6a, 0x1b, 0xc7, 0x35, 0xf2, 0xc3, 0xff, 0xb4, 0xd5, 0xf0, 0x28, 0x5b, ++ 0x0d, 0xab, 0x11, 0x8f, 0xd8, 0x22, 0xbe, 0xcf, 0x88, 0x75, 0x6b, 0x74, ++ 0x60, 0xad, 0xce, 0xac, 0x39, 0xa8, 0x17, 0x5a, 0x9c, 0x59, 0x73, 0x23, ++ 0x10, 0xaf, 0xee, 0xcf, 0x11, 0xaf, 0x79, 0x3d, 0xbd, 0xd3, 0x51, 0x0f, ++ 0xb7, 0x7e, 0xf0, 0x49, 0x81, 0x3b, 0x9b, 0xd3, 0x0b, 0xe7, 0xc9, 0xeb, ++ 0x61, 0x2c, 0x12, 0xd6, 0x73, 0xe1, 0xad, 0x9b, 0x36, 0xca, 0x52, 0x80, ++ 0x3e, 0x97, 0xec, 0x45, 0xe7, 0x51, 0x5f, 0x4b, 0xa0, 0xa6, 0x1f, 0x87, ++ 0x75, 0x49, 0xaa, 0x9d, 0xdd, 0x03, 0x72, 0xd7, 0xe8, 0x64, 0xaa, 0x09, ++ 0xd6, 0x95, 0xc8, 0x5e, 0xb2, 0xa3, 0xfd, 0x30, 0x20, 0x7d, 0x40, 0x05, ++ 0xb5, 0x32, 0xae, 0x5f, 0x3a, 0xa3, 0x5c, 0x5f, 0xe2, 0x73, 0x6c, 0xa4, ++ 0x8f, 0xec, 0x4c, 0xb5, 0xdd, 0xf5, 0x15, 0xbe, 0x5f, 0xd3, 0xcf, 0xac, ++ 0x37, 0x66, 0x48, 0x3d, 0xac, 0xd7, 0x57, 0xa6, 0x9c, 0xc7, 0x65, 0x06, ++ 0x7c, 0x10, 0x93, 0xd2, 0x76, 0x7c, 0x29, 0xea, 0xf3, 0xdf, 0x9a, 0x1d, ++ 0xb7, 0xa8, 0x08, 0x8f, 0x93, 0x3d, 0x0e, 0x70, 0x6c, 0x33, 0x30, 0x85, ++ 0xc5, 0x10, 0x7b, 0x64, 0x28, 0x70, 0xdf, 0xca, 0xc2, 0x1d, 0xeb, 0x50, ++ 0xde, 0x1d, 0x2c, 0xc9, 0x03, 0xf2, 0x85, 0x68, 0x23, 0xe0, 0xe0, 0x17, ++ 0x07, 0xf6, 0xd0, 0x28, 0x64, 0x48, 0x5b, 0x07, 0x3c, 0x5f, 0xca, 0xa0, ++ 0x9d, 0x84, 0x70, 0xdd, 0x4a, 0xeb, 0x92, 0x91, 0x9f, 0x26, 0x30, 0x97, ++ 0x8c, 0x7a, 0xab, 0x80, 0x79, 0xad, 0xd8, 0xf6, 0x77, 0xbc, 0x95, 0x84, ++ 0xf8, 0x7a, 0x3e, 0x8c, 0xdd, 0xe7, 0x82, 0xd6, 0xf2, 0x2a, 0x73, 0x7a, ++ 0x83, 0xf4, 0x46, 0x7e, 0xb4, 0x44, 0xf8, 0x9f, 0x15, 0x63, 0xa4, 0x36, ++ 0xdc, 0xd8, 0x32, 0x17, 0xf9, 0x34, 0xfc, 0x12, 0xb3, 0xa3, 0x1f, 0xd0, ++ 0xff, 0x0b, 0x93, 0x82, 0xf3, 0x83, 0x60, 0xdc, 0x89, 0xd7, 0x1d, 0xfb, ++ 0x0d, 0x0c, 0xe1, 0xfc, 0xb5, 0xd1, 0x6b, 0x8f, 0x82, 0xbe, 0x3f, 0x53, ++ 0x51, 0x5f, 0x66, 0x81, 0xf9, 0xfa, 0x05, 0x9d, 0xb5, 0x79, 0x9f, 0x37, ++ 0xa9, 0x99, 0xd1, 0xd0, 0xaf, 0x8a, 0x91, 0x08, 0x2f, 0xbf, 0x2e, 0xe2, ++ 0xf6, 0xd8, 0xff, 0x85, 0xc9, 0xfb, 0x72, 0x2a, 0xe2, 0xc7, 0xb2, 0xda, ++ 0x1b, 0x24, 0x57, 0xe3, 0xa3, 0xf9, 0xb8, 0xba, 0xb8, 0xe2, 0xb1, 0xd1, ++ 0xf0, 0x7c, 0x4b, 0x47, 0x38, 0xc3, 0xf7, 0x4f, 0xea, 0x0c, 0x37, 0x20, ++ 0xfe, 0x37, 0x6f, 0xc9, 0x0d, 0x43, 0x3e, 0xd8, 0x86, 0xb8, 0x81, 0xf5, ++ 0xc7, 0x98, 0xed, 0x8f, 0xe0, 0x7c, 0x31, 0x57, 0x00, 0xde, 0x54, 0xba, ++ 0xee, 0x24, 0xbc, 0x2a, 0xea, 0x84, 0x28, 0xc0, 0x6b, 0xe1, 0x4c, 0x9b, ++ 0xba, 0x0e, 0xf0, 0xfe, 0xeb, 0xb0, 0x96, 0x99, 0xc8, 0xf7, 0xfe, 0xad, ++ 0x06, 0xf6, 0x32, 0xbc, 0x62, 0x9b, 0xc9, 0x31, 0x07, 0xfb, 0xdb, 0x2e, ++ 0xab, 0x76, 0xd4, 0xb3, 0xbf, 0x4e, 0x6d, 0x09, 0xa7, 0xf5, 0x6c, 0x35, ++ 0xd0, 0x7a, 0xb6, 0x85, 0xfb, 0xc7, 0xad, 0x01, 0xb8, 0xd7, 0x65, 0x28, ++ 0x15, 0x08, 0x9f, 0x62, 0x65, 0x0a, 0xea, 0x5f, 0xc5, 0x50, 0xac, 0x3e, ++ 0x02, 0xd7, 0xa7, 0x45, 0x73, 0xfd, 0xa8, 0xe9, 0xe3, 0x9a, 0x68, 0x95, ++ 0xfa, 0xcf, 0x4b, 0xf0, 0xfe, 0x5c, 0x1c, 0x57, 0x44, 0x72, 0x53, 0x26, ++ 0xdb, 0x48, 0xde, 0xfa, 0xfd, 0xcc, 0x6b, 0x86, 0xf7, 0xc4, 0xcf, 0xeb, ++ 0x95, 0x91, 0x1e, 0xe1, 0x73, 0x80, 0x95, 0x90, 0xdf, 0x15, 0x9f, 0xcc, ++ 0x70, 0x3e, 0x17, 0x12, 0x1a, 0x5a, 0x9b, 0xd1, 0xab, 0x92, 0x9e, 0x75, ++ 0xda, 0x96, 0x00, 0xdd, 0xa7, 0x0b, 0x3d, 0x3b, 0xfd, 0x64, 0x4d, 0x25, ++ 0x8b, 0xc4, 0x8e, 0xe3, 0xd8, 0x54, 0x98, 0x6f, 0x9f, 0xcd, 0xc8, 0x70, ++ 0x5d, 0xb7, 0xb1, 0x3e, 0xd9, 0x02, 0xfd, 0xdb, 0xae, 0x32, 0x87, 0x0f, ++ 0xf9, 0xe7, 0xaa, 0x42, 0x7e, 0x98, 0x1d, 0xfe, 0x05, 0xfb, 0x7b, 0x65, ++ 0x62, 0x9e, 0x5f, 0x49, 0x4c, 0x89, 0x82, 0x71, 0x45, 0x5f, 0xaa, 0x0a, ++ 0xf2, 0x57, 0x11, 0x0b, 0xf5, 0xdb, 0xca, 0x36, 0x94, 0x7f, 0x81, 0xf6, ++ 0xad, 0xc4, 0xa2, 0xbb, 0x8e, 0xfe, 0x5c, 0x24, 0xb6, 0x4a, 0xe0, 0x3a, ++ 0xcc, 0xb3, 0x28, 0x5a, 0xf8, 0x61, 0xa3, 0xd8, 0xa8, 0x6b, 0xa4, 0xcf, ++ 0x60, 0xd6, 0x04, 0x61, 0x47, 0x55, 0x5c, 0x7f, 0xf6, 0x7f, 0xe1, 0xba, ++ 0xfa, 0x2b, 0x4c, 0x0e, 0x5c, 0xff, 0x76, 0x9b, 0xf3, 0xe3, 0xa9, 0xa8, ++ 0x07, 0x7b, 0x8d, 0x6c, 0x13, 0x1b, 0x5e, 0x8e, 0x7e, 0x55, 0x0f, 0x1a, ++ 0x7d, 0x0c, 0x08, 0xc7, 0xd5, 0x70, 0xe6, 0x8d, 0x25, 0x3e, 0xb4, 0x21, ++ 0xfd, 0xc7, 0x6d, 0x68, 0xf6, 0x84, 0xc1, 0x7a, 0xc7, 0xa5, 0xf3, 0xf9, ++ 0x91, 0xdf, 0x50, 0x6f, 0x8c, 0xfd, 0x45, 0x5c, 0x2c, 0xea, 0xed, 0x88, ++ 0x68, 0xae, 0x4f, 0xb4, 0x56, 0xe3, 0x2f, 0xe4, 0x23, 0x7b, 0x14, 0xe7, ++ 0x23, 0xfb, 0xad, 0x01, 0xf9, 0xfb, 0x5e, 0x74, 0x2a, 0x8d, 0xd3, 0xe4, ++ 0x09, 0xf9, 0x0b, 0xe7, 0xd9, 0x63, 0xf4, 0x2e, 0x76, 0x0d, 0x61, 0x17, ++ 0x81, 0x2f, 0xbf, 0x87, 0x7c, 0xb9, 0xdd, 0xc6, 0x2a, 0x90, 0xcf, 0x9f, ++ 0x19, 0x61, 0x59, 0x88, 0xf2, 0xa4, 0xbd, 0x67, 0xb7, 0xe0, 0x7b, 0x7d, ++ 0xfb, 0x54, 0xc3, 0x9a, 0x2e, 0x23, 0xae, 0xfb, 0x2f, 0xa0, 0xff, 0x01, ++ 0xee, 0xd2, 0xe4, 0xab, 0xa6, 0x60, 0xfb, 0xdd, 0x15, 0xc7, 0xe1, 0x2d, ++ 0x93, 0xbf, 0x25, 0xbf, 0xfa, 0x62, 0xbb, 0x44, 0xfe, 0x7c, 0x42, 0x3b, ++ 0xd7, 0xd7, 0xc1, 0x7c, 0x31, 0x62, 0x68, 0xbe, 0x78, 0x01, 0xf1, 0x7a, ++ 0x3d, 0xbe, 0xd0, 0xc7, 0x01, 0x1a, 0x5f, 0xec, 0xb8, 0x1e, 0x5f, 0x74, ++ 0xff, 0x63, 0x7c, 0xf1, 0x8b, 0x68, 0xe1, 0xdf, 0x0e, 0xcb, 0x17, 0xdf, ++ 0x46, 0xe2, 0xfa, 0x1f, 0xeb, 0x28, 0x49, 0x64, 0x7f, 0xc7, 0x8f, 0x69, ++ 0x13, 0x7c, 0x30, 0xdc, 0xfd, 0x29, 0x56, 0xae, 0xd7, 0xf4, 0xd7, 0xdb, ++ 0x05, 0x3e, 0x77, 0x9b, 0x9a, 0xef, 0xcc, 0x41, 0xb9, 0xbf, 0xcb, 0xe0, ++ 0x40, 0xb9, 0x06, 0xaa, 0xa7, 0xcc, 0x05, 0xfb, 0xb2, 0x3b, 0x9c, 0x3f, ++ 0xc7, 0x94, 0xd5, 0x69, 0xd8, 0xdf, 0xae, 0x70, 0x3d, 0xb2, 0xbd, 0xdd, ++ 0x4c, 0x7a, 0x64, 0xbb, 0xcd, 0xed, 0x26, 0x7b, 0x9d, 0x64, 0x61, 0xe8, ++ 0x27, 0x30, 0xc5, 0xdd, 0xf7, 0x7d, 0xd4, 0x7f, 0xc9, 0x16, 0x75, 0x5d, ++ 0x10, 0xdf, 0x3e, 0x2e, 0xf4, 0x40, 0x8b, 0xd1, 0x37, 0xe5, 0x73, 0xf4, ++ 0x7f, 0x0f, 0x70, 0xfa, 0x4e, 0xbe, 0x2b, 0x57, 0x36, 0xc1, 0xb8, 0x11, ++ 0x0f, 0x70, 0xb9, 0xce, 0x3f, 0x67, 0xda, 0x28, 0xc3, 0x3c, 0xd5, 0x31, ++ 0x45, 0xbe, 0x68, 0x18, 0xdf, 0x17, 0xcd, 0xed, 0x62, 0xdd, 0x19, 0x18, ++ 0x05, 0x7c, 0x59, 0x7b, 0xc6, 0x44, 0xfa, 0xed, 0xad, 0xce, 0x23, 0xe5, ++ 0x4e, 0x1b, 0xf9, 0x37, 0x4e, 0xe4, 0xaf, 0x49, 0x7b, 0x8e, 0x94, 0x17, ++ 0x67, 0xe3, 0x78, 0xce, 0x47, 0xdd, 0xa2, 0xd5, 0xfa, 0x53, 0x70, 0x4d, ++ 0x31, 0x64, 0x76, 0x8e, 0x25, 0x01, 0x7e, 0x5d, 0xc2, 0x4e, 0x4c, 0x61, ++ 0x5c, 0x0f, 0xb9, 0x90, 0x3f, 0x72, 0x02, 0x7d, 0xe6, 0x34, 0x52, 0x3c, ++ 0xa6, 0xf1, 0x41, 0x35, 0x63, 0x59, 0x68, 0x27, 0xe6, 0xf6, 0x39, 0xca, ++ 0x90, 0x8d, 0xaa, 0x2a, 0x42, 0xe9, 0x5b, 0xed, 0x9b, 0x49, 0x71, 0xdf, ++ 0xfc, 0xe3, 0xce, 0xb2, 0x08, 0x58, 0xd7, 0x7c, 0x97, 0xee, 0xbe, 0xa0, ++ 0x7f, 0xb5, 0x8e, 0xfe, 0xe0, 0x07, 0xff, 0x01, 0xe5, 0x64, 0xd5, 0xe6, ++ 0xde, 0x4e, 0x1b, 0xf2, 0xad, 0xca, 0xed, 0x69, 0x8b, 0x69, 0x75, 0x16, ++ 0xf7, 0x7b, 0x56, 0xa7, 0xa1, 0xff, 0xaf, 0xc9, 0x11, 0xfd, 0x00, 0x4f, ++ 0x2d, 0xbf, 0xcf, 0x78, 0x79, 0x5d, 0x90, 0x1d, 0x57, 0x63, 0xf8, 0x3a, ++ 0x9f, 0x75, 0x28, 0x74, 0xdf, 0xd3, 0x67, 0xf2, 0xde, 0x02, 0x97, 0xfe, ++ 0x37, 0xe3, 0xcf, 0xb5, 0x08, 0x7b, 0xf3, 0xad, 0x90, 0xe3, 0xdc, 0xc7, ++ 0xde, 0x58, 0x8c, 0xfc, 0x9b, 0xb7, 0xdc, 0xb9, 0x0f, 0xf1, 0xbf, 0x28, ++ 0x4e, 0xa6, 0xeb, 0xff, 0xc9, 0x7c, 0x96, 0x34, 0xa4, 0x8f, 0x43, 0x21, ++ 0xff, 0xab, 0xc5, 0xa8, 0x96, 0x7c, 0x2e, 0x05, 0xc6, 0x31, 0xc5, 0x95, ++ 0x61, 0x83, 0xfb, 0x7b, 0xe2, 0xc3, 0xf3, 0xf0, 0xfd, 0xd5, 0x31, 0xee, ++ 0x6b, 0x48, 0x27, 0xa6, 0xf8, 0xbb, 0xf1, 0xb9, 0x49, 0x85, 0xb9, 0x79, ++ 0x28, 0x57, 0xb6, 0x09, 0x4d, 0xb1, 0x68, 0x7f, 0x34, 0xb8, 0x01, 0xae, ++ 0x8a, 0x4d, 0xb6, 0x00, 0x1c, 0x1a, 0x5c, 0xe7, 0x85, 0xfe, 0xa9, 0x8e, ++ 0x59, 0x72, 0x0d, 0xf1, 0x80, 0xcf, 0xa1, 0x5e, 0x69, 0x3b, 0x75, 0xd6, ++ 0x82, 0xcf, 0x6b, 0x74, 0x6f, 0xe9, 0xb8, 0xc4, 0xe9, 0x1d, 0x44, 0x7f, ++ 0xa4, 0x77, 0x80, 0xfe, 0xd2, 0x7d, 0xd8, 0xd7, 0xf0, 0x60, 0x11, 0xad, ++ 0xd6, 0xff, 0xe7, 0xe9, 0xef, 0x1b, 0x89, 0xf4, 0x18, 0x96, 0xfe, 0x18, ++ 0xf7, 0x47, 0xfe, 0x8f, 0xe8, 0x3f, 0x2a, 0x66, 0x08, 0xfa, 0x83, 0x3f, ++ 0x95, 0x8e, 0xd7, 0x35, 0x7f, 0xaa, 0xc5, 0x04, 0x7e, 0x75, 0x76, 0xa0, ++ 0xaf, 0xd1, 0xbd, 0xda, 0x5e, 0x44, 0xe3, 0x1c, 0x26, 0x58, 0x19, 0xfa, ++ 0x4f, 0x9d, 0x10, 0x57, 0xa2, 0x1c, 0xba, 0xa3, 0xd1, 0xb9, 0x61, 0x3b, ++ 0xed, 0xfc, 0x5d, 0xfd, 0xbf, 0x3f, 0x3b, 0x0a, 0x5c, 0x40, 0x36, 0x29, ++ 0x26, 0x86, 0xcb, 0x93, 0xc9, 0x3f, 0x06, 0xfd, 0x8d, 0x09, 0x3e, 0x89, ++ 0xfc, 0xbe, 0x09, 0x20, 0xf0, 0xf7, 0x90, 0x9f, 0x35, 0x92, 0xf4, 0x9d, ++ 0x43, 0xe0, 0x87, 0x9d, 0x95, 0xa4, 0xb3, 0x19, 0xdc, 0x05, 0xbf, 0x96, ++ 0x82, 0xfe, 0x9f, 0x2f, 0x16, 0xe5, 0x60, 0x82, 0xb9, 0xd2, 0x87, 0xfc, ++ 0xbe, 0xc3, 0x3a, 0x3d, 0x05, 0xfd, 0xb7, 0x5c, 0xeb, 0xb4, 0x34, 0xe4, ++ 0xa7, 0x37, 0x33, 0x1e, 0x3b, 0x84, 0x26, 0xe7, 0xcd, 0xe4, 0xe5, 0x3b, ++ 0x5f, 0x51, 0x03, 0x7e, 0x8e, 0xa6, 0xd7, 0xf6, 0x89, 0x69, 0xb5, 0xf7, ++ 0x97, 0xc7, 0x70, 0xfa, 0xdf, 0x0e, 0x6a, 0x16, 0xfd, 0x3d, 0x74, 0x0d, ++ 0x83, 0xe1, 0xd0, 0xf4, 0x37, 0x92, 0x05, 0xe1, 0x90, 0x7c, 0xd5, 0x86, ++ 0x6b, 0x56, 0xd2, 0xc7, 0xed, 0x7d, 0x80, 0xaf, 0xdb, 0x11, 0x0e, 0xc0, ++ 0x6b, 0x97, 0xc4, 0x5a, 0x51, 0x7f, 0x17, 0x19, 0x9c, 0x71, 0x25, 0xe8, ++ 0x8f, 0xc5, 0xfb, 0x14, 0xee, 0xd7, 0x7d, 0x3d, 0x4a, 0x05, 0xbe, 0xa9, ++ 0x6c, 0x7f, 0xf7, 0x38, 0xc2, 0x5b, 0x69, 0xb1, 0xf9, 0x30, 0xdf, 0xc2, ++ 0x1c, 0xc6, 0xf3, 0x7d, 0x41, 0xf9, 0x12, 0xbd, 0x9f, 0xab, 0xf9, 0x25, ++ 0x9a, 0xdf, 0xaf, 0xf9, 0x2d, 0x5a, 0x7c, 0x89, 0xfe, 0x0d, 0xde, 0xcf, ++ 0xc7, 0xeb, 0x00, 0xbf, 0xdd, 0x0c, 0x00, 0xa2, 0xfd, 0xf1, 0x59, 0xbc, ++ 0x0d, 0xf0, 0xfe, 0xe7, 0x2f, 0xab, 0x99, 0x4e, 0x21, 0xaf, 0x0a, 0xac, ++ 0xa3, 0x52, 0xac, 0x63, 0x36, 0xeb, 0x25, 0xb8, 0xd8, 0xb7, 0xd7, 0xae, ++ 0x4d, 0x03, 0xfa, 0xcc, 0x12, 0xf8, 0xa8, 0xec, 0x86, 0xb8, 0x30, 0x07, ++ 0xef, 0x33, 0x76, 0x17, 0xe0, 0xe1, 0x2e, 0x85, 0xc7, 0x8b, 0x77, 0x39, ++ 0x20, 0x3e, 0x0c, 0xe2, 0xa3, 0xd9, 0x93, 0x43, 0xfb, 0xf8, 0x9b, 0x9e, ++ 0x10, 0x98, 0xe7, 0x7a, 0xe3, 0xf5, 0xfa, 0x7f, 0xaa, 0xc8, 0x17, 0xfc, ++ 0xb3, 0x71, 0xa6, 0xd6, 0x76, 0x83, 0x1d, 0x3a, 0x0d, 0x0c, 0x70, 0xb0, ++ 0x9e, 0xc7, 0x34, 0x85, 0xa3, 0x65, 0x8f, 0x82, 0xf1, 0x80, 0x3b, 0xd3, ++ 0x80, 0xfc, 0x58, 0x27, 0xec, 0x1a, 0x84, 0xc9, 0x43, 0xdb, 0x23, 0x21, ++ 0xaf, 0x85, 0x86, 0xbe, 0x1c, 0x07, 0xe0, 0xb7, 0x6b, 0xcf, 0x37, 0x64, ++ 0xff, 0xf6, 0xee, 0xf9, 0xe6, 0x23, 0xf4, 0xe7, 0xa6, 0x7c, 0xa1, 0x30, ++ 0x33, 0x3c, 0x5f, 0xf8, 0x45, 0x7e, 0x14, 0xea, 0x07, 0xe6, 0x0a, 0x9d, ++ 0xb7, 0xee, 0x8f, 0xad, 0x56, 0xc6, 0xaf, 0x13, 0xff, 0xd4, 0x8a, 0xb5, ++ 0xef, 0xaf, 0xc7, 0x8c, 0x18, 0xc2, 0x67, 0xa1, 0xf6, 0x37, 0xe7, 0x9f, ++ 0x5f, 0x8f, 0xf3, 0x7d, 0x79, 0x46, 0xe1, 0xbc, 0x2d, 0xde, 0x5f, 0x6e, ++ 0x72, 0xa7, 0xdb, 0x6d, 0xd8, 0xf2, 0x78, 0x7f, 0xbf, 0xc4, 0xfd, 0x1d, ++ 0xed, 0xfe, 0x7e, 0x23, 0xc0, 0x0d, 0xd7, 0x37, 0xc5, 0x68, 0x71, 0x7f, ++ 0xaf, 0x42, 0xf9, 0x19, 0xf8, 0x99, 0x83, 0xe8, 0x7c, 0x17, 0xc6, 0xfb, ++ 0xb9, 0x01, 0xba, 0xde, 0x75, 0xae, 0xe2, 0x0b, 0x25, 0x67, 0x30, 0x7d, ++ 0xf0, 0xf7, 0xff, 0x23, 0xde, 0xd7, 0xe2, 0xfc, 0xb7, 0x44, 0xfc, 0xc0, ++ 0xf6, 0x9d, 0x30, 0xa9, 0x00, 0xd7, 0x8c, 0xd6, 0x47, 0x14, 0xf4, 0xa3, ++ 0x67, 0x24, 0xc9, 0xcc, 0x19, 0xf4, 0xde, 0x3b, 0x54, 0x2b, 0x73, 0x06, ++ 0xc5, 0xfb, 0x6f, 0xc4, 0xe8, 0xfc, 0x90, 0x7d, 0xaf, 0xad, 0x9f, 0x05, ++ 0x76, 0xa4, 0xae, 0x47, 0x76, 0x84, 0xa1, 0xbc, 0xb6, 0x6f, 0x3f, 0x94, ++ 0x83, 0xfd, 0x5e, 0xd9, 0x61, 0x1d, 0x82, 0x8f, 0xf4, 0xf8, 0x9d, 0xd1, ++ 0xfe, 0x88, 0x82, 0xfc, 0x9f, 0x10, 0xcb, 0xe5, 0xe6, 0x7a, 0xef, 0x2f, ++ 0x1c, 0x07, 0x7c, 0x72, 0x2b, 0xd2, 0x9d, 0x91, 0x1f, 0x77, 0xb1, 0x40, ++ 0x22, 0x39, 0xd2, 0xd3, 0x77, 0xef, 0x9e, 0x9f, 0xc7, 0xf6, 0x65, 0x0f, ++ 0x8f, 0xef, 0xe1, 0xe8, 0xaf, 0xa7, 0xc3, 0x6f, 0xce, 0x17, 0x47, 0x21, ++ 0x5e, 0xae, 0x47, 0x0f, 0x3d, 0xdf, 0x76, 0xc2, 0x3a, 0x3d, 0xb0, 0x3e, ++ 0x1f, 0xac, 0xd3, 0x03, 0xfe, 0xd6, 0xde, 0x7a, 0x3b, 0xf5, 0xdf, 0xae, ++ 0x4f, 0xa2, 0xbe, 0xc6, 0xaf, 0x75, 0x1d, 0xbf, 0x8c, 0x45, 0x7f, 0x4d, ++ 0xe3, 0xd3, 0xb2, 0x58, 0xce, 0x37, 0x53, 0x76, 0xaf, 0x8f, 0x65, 0xb6, ++ 0x00, 0xbd, 0x34, 0x7c, 0x5d, 0x14, 0x74, 0xab, 0x66, 0x8e, 0xf9, 0xb3, ++ 0xe0, 0xcf, 0x5d, 0x92, 0x23, 0x82, 0xf4, 0x84, 0x87, 0xf5, 0x26, 0x15, ++ 0x04, 0xec, 0x55, 0xf5, 0xb1, 0x72, 0xf2, 0x33, 0x34, 0x7b, 0x55, 0x2d, ++ 0x67, 0x1b, 0x51, 0xff, 0x6a, 0xf6, 0x0a, 0xd3, 0xc2, 0xa8, 0xcf, 0xf4, ++ 0xf6, 0x69, 0x7e, 0x7a, 0x91, 0x11, 0xd5, 0xaa, 0xde, 0x2e, 0xc1, 0x02, ++ 0x8d, 0xc8, 0xbf, 0xd5, 0x0b, 0x43, 0xaf, 0x57, 0xf4, 0x34, 0x2b, 0x11, ++ 0xd4, 0x33, 0x10, 0x9d, 0x24, 0x49, 0xe0, 0x43, 0xf8, 0xd5, 0x1a, 0x3c, ++ 0x1f, 0x32, 0x17, 0xc1, 0xab, 0xa7, 0xa7, 0x06, 0x9f, 0x1e, 0x2e, 0xcd, ++ 0x9f, 0xae, 0x16, 0x74, 0x83, 0x75, 0x96, 0xe1, 0xd2, 0xe7, 0xaa, 0x45, ++ 0xb4, 0x8e, 0x41, 0x76, 0x55, 0xac, 0xf7, 0x46, 0xed, 0xa9, 0x39, 0x36, ++ 0x34, 0xce, 0xba, 0x72, 0xae, 0xf4, 0xfd, 0x9c, 0x21, 0xf8, 0x75, 0x38, ++ 0xbe, 0xd5, 0xdf, 0xd7, 0xf4, 0x40, 0x39, 0xbe, 0x20, 0x97, 0x5a, 0x0f, ++ 0xfa, 0x11, 0x09, 0xb1, 0x09, 0x44, 0xaf, 0xf2, 0xab, 0x26, 0xe6, 0x04, ++ 0x7b, 0xc1, 0x46, 0x86, 0xb1, 0xcf, 0x82, 0xf3, 0xef, 0xaf, 0x64, 0x92, ++ 0xbd, 0x7b, 0x54, 0xd8, 0xdf, 0xe1, 0xf8, 0xa6, 0xf6, 0xaa, 0x81, 0xb9, ++ 0x63, 0x03, 0xfc, 0x63, 0x6c, 0x7b, 0xce, 0x8a, 0xfc, 0xb3, 0x5b, 0x69, ++ 0xb6, 0x62, 0xde, 0xf1, 0x36, 0xdb, 0x9c, 0xc6, 0x28, 0xc0, 0x53, 0xe9, ++ 0x1f, 0x8b, 0xe7, 0xa1, 0x5f, 0x57, 0xd7, 0x67, 0x60, 0x98, 0x9a, 0x2a, ++ 0x6b, 0xbf, 0xb4, 0x0f, 0xe3, 0xf6, 0xba, 0xe3, 0xcc, 0x81, 0xfa, 0xb0, ++ 0xb8, 0xbd, 0xab, 0x04, 0xf9, 0xed, 0x6d, 0xa5, 0x57, 0xa6, 0x38, 0xfa, ++ 0x4b, 0xc6, 0x9e, 0x0b, 0xf2, 0x0f, 0xdb, 0xda, 0x1b, 0xad, 0xe8, 0x3f, ++ 0xb5, 0xc5, 0xc9, 0x14, 0xa7, 0xef, 0x8f, 0xe6, 0xfc, 0xa8, 0xdd, 0x6f, ++ 0x89, 0xe5, 0xfc, 0xd7, 0x76, 0xe6, 0xf2, 0x2c, 0xe7, 0x10, 0xf7, 0x3f, ++ 0x13, 0xf7, 0x4b, 0x4f, 0xe5, 0x1a, 0xd1, 0x48, 0xf6, 0xc7, 0x47, 0x50, ++ 0xbe, 0xa1, 0xfc, 0x69, 0x03, 0xad, 0xbf, 0x54, 0xb2, 0x57, 0x55, 0xa2, ++ 0xff, 0x71, 0x87, 0x91, 0xfc, 0x7a, 0x88, 0x5b, 0xfe, 0xf0, 0x7d, 0xcc, ++ 0x37, 0xb5, 0x99, 0xb7, 0x63, 0xaa, 0xbe, 0xac, 0xed, 0x87, 0x8f, 0xd8, ++ 0x81, 0x10, 0x2d, 0xff, 0xe7, 0xb3, 0x06, 0x33, 0xe6, 0x0f, 0xe6, 0x48, ++ 0x8e, 0x97, 0x61, 0x5c, 0xb9, 0xea, 0xef, 0xc2, 0x7e, 0xf9, 0xbc, 0x54, ++ 0xda, 0x87, 0x99, 0xf4, 0x7f, 0x65, 0xf2, 0x5f, 0xfd, 0x77, 0x4b, 0x94, ++ 0xf7, 0x28, 0x07, 0x76, 0xc1, 0x7e, 0xf9, 0x3d, 0xa9, 0x5e, 0xcc, 0x3f, ++ 0xec, 0x91, 0x78, 0xdf, 0xd3, 0xc1, 0xf3, 0xfe, 0xcc, 0xee, 0x89, 0x9d, ++ 0x05, 0xef, 0xf9, 0xa0, 0x32, 0x76, 0xc2, 0x3a, 0xe2, 0x29, 0xad, 0x7f, ++ 0x4b, 0xee, 0x3a, 0x26, 0x18, 0x38, 0x28, 0x9e, 0x7a, 0x6c, 0x17, 0xdf, ++ 0x3f, 0x7a, 0xac, 0x4c, 0xa2, 0xfd, 0xa3, 0x32, 0x7b, 0x0a, 0xf3, 0x04, ++ 0xf1, 0x55, 0xf9, 0xd3, 0x40, 0xcf, 0x3c, 0xe0, 0xc7, 0xf6, 0xc4, 0x62, ++ 0xe4, 0xdf, 0xaa, 0x0a, 0x99, 0x79, 0x83, 0xf8, 0x7a, 0xbe, 0xcb, 0xca, ++ 0xbc, 0x41, 0xe3, 0xf7, 0x87, 0x71, 0x78, 0xfc, 0x92, 0xd9, 0x8b, 0xf9, ++ 0x12, 0x4d, 0x5e, 0x67, 0x0a, 0xfe, 0xae, 0x5e, 0x18, 0x1b, 0x32, 0x7e, ++ 0x0e, 0xe3, 0x7e, 0xe2, 0x42, 0xd6, 0x6c, 0x44, 0xf9, 0xae, 0x13, 0xf0, ++ 0xd4, 0x15, 0x01, 0x3c, 0xf0, 0xfc, 0x4c, 0x11, 0xa7, 0xde, 0xed, 0x4e, ++ 0x09, 0x79, 0x6f, 0x25, 0x66, 0x41, 0x60, 0x68, 0x56, 0xdc, 0x68, 0xb2, ++ 0x8f, 0xb3, 0xbf, 0xec, 0x23, 0xb3, 0x3a, 0x47, 0x3e, 0x79, 0x6c, 0x31, ++ 0xbc, 0x87, 0x65, 0x70, 0xf9, 0xd0, 0xe4, 0xac, 0x4c, 0xae, 0x69, 0x22, ++ 0x3e, 0x48, 0x92, 0x1c, 0x18, 0x1f, 0xcf, 0x97, 0xc0, 0xab, 0x94, 0x51, ++ 0xdf, 0x85, 0xca, 0xd1, 0xec, 0xc9, 0xa1, 0xfd, 0x39, 0x4e, 0xbd, 0x7e, ++ 0x08, 0x95, 0x77, 0xbd, 0x1e, 0xd7, 0xe4, 0x7c, 0x7e, 0x87, 0x6c, 0xc4, ++ 0x38, 0x7a, 0x7e, 0x91, 0xe4, 0x60, 0x43, 0xe8, 0x03, 0xbd, 0x3f, 0xad, ++ 0xd7, 0x03, 0x93, 0x0c, 0x8e, 0x77, 0x30, 0xae, 0x9e, 0x7b, 0xd5, 0x49, ++ 0xfc, 0x35, 0x48, 0x0f, 0x9c, 0xac, 0xf8, 0x87, 0xf4, 0xc0, 0x5b, 0x20, ++ 0x5b, 0x93, 0x41, 0x5e, 0x7f, 0xa4, 0xe9, 0x83, 0x9b, 0xd8, 0x4d, 0xa8, ++ 0x0f, 0xca, 0xe4, 0x2d, 0xeb, 0x91, 0x3f, 0xfa, 0xc1, 0xae, 0x99, 0x87, ++ 0xe0, 0x0f, 0xcd, 0x2e, 0x68, 0xf1, 0x76, 0x39, 0xc8, 0x27, 0xf2, 0x03, ++ 0x3b, 0xcf, 0xf7, 0x25, 0xca, 0xae, 0x82, 0x9c, 0xc6, 0x06, 0xe2, 0xed, ++ 0x01, 0xfd, 0x00, 0x7e, 0x83, 0x63, 0x08, 0x7f, 0xe6, 0x57, 0xb1, 0x69, ++ 0x21, 0xfb, 0x49, 0x03, 0xfa, 0x22, 0xc8, 0x6f, 0x30, 0x16, 0xfc, 0xf3, ++ 0x7e, 0x43, 0x19, 0xf8, 0x8b, 0xa6, 0x5c, 0x84, 0x6f, 0x24, 0xf3, 0xe4, ++ 0x91, 0x9e, 0xa2, 0xfc, 0x1e, 0xb4, 0x3e, 0xca, 0xb3, 0x25, 0x5d, 0xa2, ++ 0x3c, 0x4a, 0x1d, 0xc4, 0xf1, 0x14, 0xcf, 0xb3, 0x5f, 0x12, 0x5c, 0xa8, ++ 0xd7, 0xa4, 0x98, 0x00, 0xdf, 0xeb, 0xfd, 0x09, 0x2d, 0x4f, 0x3b, 0x42, ++ 0xe4, 0x09, 0xf4, 0xfc, 0x30, 0x90, 0xb7, 0x9b, 0x67, 0xf4, 0x22, 0x9f, ++ 0x69, 0xfc, 0x50, 0x6e, 0xe7, 0x72, 0x51, 0x3e, 0x4f, 0xa6, 0xfc, 0xb9, ++ 0x9e, 0x3f, 0xb4, 0xf7, 0x5d, 0x8f, 0x2f, 0x7c, 0x12, 0xf0, 0x85, 0xf4, ++ 0x77, 0xf8, 0x42, 0xc8, 0xd3, 0x8d, 0xf2, 0xc5, 0x21, 0x8d, 0x1f, 0xd2, ++ 0x59, 0xfa, 0x8d, 0xf0, 0x83, 0xc6, 0x07, 0x1a, 0x5f, 0xe8, 0xed, 0xc5, ++ 0x41, 0x5d, 0xde, 0x65, 0x38, 0x7b, 0x71, 0xf2, 0x3a, 0xf6, 0xe2, 0x9d, ++ 0x0c, 0x23, 0xe9, 0x65, 0xbd, 0x9d, 0xd0, 0xec, 0xc2, 0x81, 0x38, 0xae, ++ 0x7f, 0xc7, 0xc7, 0xf2, 0x7d, 0x8a, 0x99, 0x99, 0xf3, 0x6d, 0xe8, 0x57, ++ 0x8c, 0x40, 0x7d, 0x80, 0xfe, 0x9e, 0xb0, 0x37, 0x03, 0x79, 0xa3, 0x0d, ++ 0x9c, 0x0f, 0xde, 0xe9, 0x5b, 0xaa, 0x48, 0x68, 0x37, 0x50, 0x0f, 0xa4, ++ 0x06, 0xe1, 0x5d, 0xe4, 0x4d, 0x35, 0xbe, 0xab, 0x7d, 0x9a, 0x51, 0xfe, ++ 0xb0, 0x52, 0xe8, 0x9f, 0x8b, 0x1d, 0x3c, 0x9f, 0x56, 0x57, 0x2a, 0x7b, ++ 0x2d, 0xf0, 0x67, 0x49, 0xfb, 0x73, 0xeb, 0x79, 0xdf, 0x48, 0xf9, 0xb6, ++ 0x22, 0xa5, 0x4b, 0xb1, 0xc0, 0xbc, 0xb3, 0x1d, 0x92, 0x03, 0xf3, 0x35, ++ 0x4e, 0x91, 0x7f, 0x9b, 0x75, 0xd5, 0xe4, 0x55, 0x29, 0x3f, 0x3f, 0xf4, ++ 0x7e, 0x7a, 0x95, 0xe0, 0x1b, 0x8c, 0x73, 0x70, 0xfc, 0x6c, 0xa7, 0xe4, ++ 0x85, 0x10, 0x74, 0x90, 0x1e, 0xaa, 0xba, 0xca, 0xed, 0xbe, 0x5e, 0x1f, ++ 0x55, 0x89, 0xfd, 0xf2, 0x2a, 0xdd, 0x7e, 0xb9, 0x29, 0x4e, 0xd0, 0xf5, ++ 0x66, 0x76, 0xf3, 0xbf, 0xd2, 0xee, 0xc7, 0xc7, 0x25, 0x70, 0xb9, 0x19, ++ 0x86, 0x8e, 0xda, 0xf3, 0x1a, 0x1d, 0x35, 0xfa, 0x4d, 0xc0, 0xb1, 0x28, ++ 0x3f, 0xfb, 0xbe, 0x36, 0xa9, 0x11, 0xdc, 0x3f, 0x46, 0xfa, 0xcd, 0xb8, ++ 0xaa, 0xd0, 0x3c, 0xa3, 0xe2, 0x42, 0xfd, 0x96, 0x2f, 0xcf, 0xe7, 0xfe, ++ 0x27, 0xc5, 0x74, 0x62, 0x7c, 0x5d, 0xfb, 0x25, 0x93, 0x7b, 0xfc, 0xf0, ++ 0xf0, 0x5f, 0xcf, 0x2f, 0xbd, 0x59, 0xf3, 0xc3, 0x85, 0x5f, 0xae, 0xbd, ++ 0x77, 0x26, 0xc8, 0x78, 0x0a, 0x3a, 0x86, 0x3a, 0xfb, 0xa1, 0xbd, 0xe7, ++ 0xba, 0xf6, 0x42, 0x3c, 0xaf, 0xa7, 0xd3, 0xe4, 0xb8, 0xd0, 0x78, 0x42, ++ 0xa3, 0x87, 0xa6, 0x47, 0x07, 0xe1, 0x5b, 0xe8, 0xd9, 0xe1, 0xe8, 0x75, ++ 0x3d, 0x3d, 0xab, 0xe9, 0xb3, 0x7f, 0xb5, 0x9e, 0xd5, 0xe6, 0xd7, 0xec, ++ 0x80, 0xf6, 0x5e, 0xbd, 0xfe, 0x1d, 0x2e, 0x3e, 0xd3, 0xf4, 0xe9, 0x53, ++ 0x1b, 0x0d, 0x94, 0x17, 0xb9, 0x4d, 0xc4, 0xc1, 0xb7, 0x89, 0x3c, 0xeb, ++ 0x83, 0x42, 0xce, 0x97, 0x0b, 0x7d, 0xdb, 0xff, 0x17, 0x8b, 0x01, 0xfd, ++ 0xac, 0x6d, 0x9d, 0xdc, 0x1f, 0x71, 0x98, 0xed, 0x87, 0xd0, 0x6f, 0x08, ++ 0xe4, 0xf3, 0x38, 0x5d, 0x9f, 0x8c, 0x60, 0x1e, 0xdc, 0x2f, 0x67, 0x4a, ++ 0xaf, 0x85, 0xf6, 0x2f, 0x8b, 0x81, 0xa4, 0xb8, 0x7f, 0x99, 0xcc, 0xf7, ++ 0x2f, 0xb7, 0x28, 0x3e, 0x17, 0xe9, 0x69, 0x87, 0xc2, 0x1a, 0x40, 0x5e, ++ 0xfe, 0x2a, 0xf2, 0x16, 0x4f, 0xee, 0xf5, 0x2c, 0x46, 0x3d, 0xfd, 0xe4, ++ 0xe9, 0x31, 0x06, 0xda, 0x47, 0x57, 0x7c, 0xbd, 0x18, 0x17, 0x4f, 0xca, ++ 0x55, 0x68, 0x3f, 0x28, 0xda, 0xac, 0x52, 0xbe, 0xf7, 0x62, 0x87, 0xd9, ++ 0x8e, 0xcf, 0xf5, 0xef, 0xfe, 0x5e, 0x97, 0x11, 0xe7, 0xf9, 0x0b, 0x73, ++ 0x60, 0xa8, 0xf6, 0x76, 0x87, 0x79, 0x60, 0x3f, 0x06, 0xf5, 0x42, 0x99, ++ 0xdc, 0x23, 0x63, 0x5e, 0xbe, 0xdf, 0x0f, 0xbe, 0x38, 0x8c, 0x9f, 0xb6, ++ 0xd0, 0x57, 0x82, 0xf1, 0xce, 0x6d, 0xac, 0xb7, 0x11, 0xe3, 0xea, 0x42, ++ 0xa4, 0xe3, 0x10, 0xf4, 0x7b, 0x55, 0x67, 0x5f, 0xf4, 0x79, 0xfb, 0x92, ++ 0x0e, 0xee, 0x27, 0x95, 0x44, 0xf0, 0xba, 0x9f, 0xe9, 0x80, 0x46, 0x7c, ++ 0xef, 0xf4, 0x36, 0x13, 0xf9, 0x85, 0xd7, 0xcb, 0xdb, 0x17, 0x7d, 0xc9, ++ 0xc8, 0x5f, 0x1a, 0x94, 0xaf, 0x6f, 0xe3, 0x7a, 0x06, 0x06, 0x11, 0x9f, ++ 0xdc, 0x68, 0xde, 0xbe, 0x10, 0x7d, 0x3d, 0xe0, 0xe3, 0x9f, 0xe8, 0xf4, ++ 0x0e, 0x1b, 0x26, 0x7f, 0xbf, 0xcd, 0xc4, 0xf7, 0x73, 0xfc, 0x47, 0x8c, ++ 0x0c, 0xfd, 0x5e, 0x76, 0x2e, 0x6e, 0xc8, 0xbc, 0xcb, 0xf5, 0xf2, 0xf8, ++ 0xbb, 0x3b, 0xc3, 0x9d, 0x6a, 0x24, 0xee, 0xbb, 0x71, 0xff, 0x7c, 0x77, ++ 0x67, 0xb2, 0x53, 0xcd, 0x19, 0x7e, 0x7c, 0x4e, 0x9f, 0xbf, 0x18, 0xf3, ++ 0x95, 0xdb, 0xb6, 0xcc, 0x55, 0x28, 0x4e, 0x14, 0xf9, 0xcf, 0x41, 0xfb, ++ 0x22, 0x3a, 0xfc, 0xed, 0x90, 0x58, 0x93, 0x15, 0xf3, 0x69, 0xed, 0x8e, ++ 0x52, 0x8c, 0x3f, 0x86, 0xdb, 0xe7, 0x28, 0xf6, 0x3b, 0x69, 0xde, 0x1b, ++ 0xc5, 0x1b, 0x63, 0xcd, 0x9c, 0xce, 0xa2, 0x7e, 0xe9, 0x76, 0x21, 0x63, ++ 0xdb, 0xce, 0x86, 0x3b, 0x91, 0xbf, 0xb7, 0x9d, 0x4d, 0x76, 0x22, 0x3c, ++ 0xbb, 0x05, 0x7f, 0x6a, 0xfc, 0xbe, 0xfb, 0xcc, 0xe5, 0x70, 0xda, 0xcf, ++ 0x34, 0x39, 0x55, 0xdc, 0x07, 0xf6, 0x47, 0x5b, 0x1c, 0x2f, 0x13, 0xbf, ++ 0x72, 0x3e, 0x6f, 0x19, 0x31, 0xc6, 0x8b, 0xfb, 0xad, 0xdb, 0x85, 0x3c, ++ 0x6c, 0x0b, 0xf7, 0x1f, 0xcc, 0x8a, 0x0b, 0xde, 0xcf, 0xe0, 0xfb, 0x17, ++ 0x9d, 0xf5, 0x9e, 0xaa, 0x33, 0xe9, 0xb4, 0xdf, 0x2d, 0x61, 0xbe, 0x51, ++ 0xdb, 0x27, 0xf6, 0x80, 0xbc, 0x50, 0x5d, 0x4e, 0x0c, 0x23, 0x7e, 0x32, ++ 0xb2, 0x16, 0x86, 0xef, 0x6d, 0x74, 0xb2, 0x9f, 0x63, 0x3b, 0x7d, 0x9a, ++ 0x1a, 0x85, 0xf8, 0xbe, 0x1c, 0xa7, 0xed, 0x47, 0xaa, 0x51, 0x94, 0x67, ++ 0xf8, 0xf6, 0x4a, 0x81, 0x6b, 0xfc, 0x60, 0xbc, 0xef, 0xa8, 0x77, 0x51, ++ 0x3d, 0x49, 0x6b, 0xfd, 0xc2, 0x2a, 0x05, 0x60, 0x7c, 0xb3, 0xde, 0x4d, ++ 0x6d, 0x5b, 0xfd, 0x72, 0x6a, 0xf7, 0xd4, 0xaf, 0xa6, 0xfb, 0x6b, 0x0f, ++ 0x45, 0x3e, 0x8e, 0x76, 0xbf, 0xce, 0xb9, 0xa0, 0x4a, 0x09, 0xd2, 0x1b, ++ 0x9f, 0xc5, 0xf3, 0xfc, 0x52, 0x6e, 0xd6, 0xe9, 0x12, 0xe4, 0x73, 0xf6, ++ 0x0d, 0x63, 0x18, 0xef, 0x4c, 0x7f, 0xa2, 0x4f, 0x46, 0x3d, 0x71, 0xfb, ++ 0x55, 0x58, 0x47, 0x48, 0xdd, 0x88, 0x72, 0x19, 0xf1, 0x4c, 0xf9, 0xcb, ++ 0xb4, 0x40, 0x3f, 0x55, 0x5a, 0x12, 0x86, 0x7c, 0x79, 0xfb, 0x55, 0xe8, ++ 0x07, 0x8d, 0x97, 0xe2, 0xa3, 0x39, 0x1d, 0x9a, 0x94, 0xa6, 0x5b, 0x0a, ++ 0x48, 0x5a, 0x88, 0x1f, 0xc2, 0xe2, 0x9d, 0x17, 0xe3, 0xe0, 0xfa, 0x0f, ++ 0xed, 0x2e, 0x7f, 0x5c, 0x3c, 0xf2, 0x41, 0xf5, 0xbe, 0x0b, 0x8c, 0xfa, ++ 0x97, 0xf1, 0xfa, 0x0e, 0xe9, 0x6e, 0xf9, 0x02, 0x8c, 0xcb, 0xf3, 0x15, ++ 0x51, 0xde, 0x38, 0x0f, 0xf3, 0xc6, 0xb9, 0x34, 0xed, 0x62, 0xc4, 0xdf, ++ 0xc4, 0x2e, 0x13, 0xed, 0x7b, 0x6b, 0xf9, 0xdb, 0x5c, 0x31, 0xaf, 0xf3, ++ 0xab, 0xd0, 0x3c, 0x72, 0x9e, 0xc8, 0xdb, 0xbe, 0xc9, 0xfa, 0x28, 0x9f, ++ 0x9c, 0x6f, 0x81, 0xc0, 0xca, 0x80, 0x70, 0x71, 0xfa, 0x39, 0xa5, 0xf9, ++ 0x49, 0x12, 0xe6, 0xfb, 0xe2, 0x4d, 0x0e, 0xac, 0x57, 0x98, 0x98, 0xe6, ++ 0xca, 0xc3, 0x7c, 0x6b, 0x57, 0x3c, 0xa3, 0xfc, 0x69, 0x57, 0x57, 0xc2, ++ 0x48, 0x15, 0xf0, 0xe0, 0x54, 0x78, 0x5e, 0xd7, 0xa9, 0xe5, 0x75, 0xd9, ++ 0xdf, 0xcf, 0xeb, 0x76, 0x7f, 0x1a, 0xe9, 0x21, 0x7d, 0x05, 0x7e, 0x0a, ++ 0xea, 0xa7, 0xee, 0xa3, 0x91, 0x0e, 0x1f, 0xed, 0xff, 0x59, 0xc8, 0xff, ++ 0xdb, 0x81, 0x0f, 0x62, 0x7d, 0x43, 0x38, 0xaf, 0x17, 0x60, 0xf3, 0xe6, ++ 0x51, 0x1e, 0xfd, 0x76, 0x0b, 0x5f, 0x07, 0xd8, 0x9f, 0xf8, 0x78, 0xca, ++ 0xfb, 0xf9, 0xf6, 0x1d, 0x86, 0xe7, 0x7e, 0x7b, 0x99, 0xf1, 0x7d, 0xc4, ++ 0xde, 0x93, 0xb4, 0x3f, 0x5d, 0x62, 0xc8, 0x4c, 0xec, 0x03, 0x38, 0xf7, ++ 0x49, 0x63, 0xa3, 0xb0, 0x7d, 0xf1, 0xd3, 0xc8, 0x6c, 0x6a, 0x8f, 0x46, ++ 0x9e, 0x47, 0xfc, 0x74, 0x1a, 0xac, 0x2a, 0xbe, 0xf7, 0xc3, 0x7a, 0x56, ++ 0x85, 0x75, 0x67, 0xce, 0xf7, 0x6d, 0xb4, 0x9f, 0x31, 0xfd, 0x7d, 0x9b, ++ 0x82, 0xed, 0xe1, 0xfa, 0x3e, 0xaa, 0x47, 0x7b, 0xbf, 0xfe, 0x1c, 0xb5, ++ 0x47, 0xea, 0xfd, 0xd4, 0x1e, 0xad, 0xbf, 0x4a, 0xed, 0x3b, 0x70, 0x1d, ++ 0xf9, 0xe7, 0x10, 0x3c, 0x8f, 0x6d, 0xee, 0xe2, 0x08, 0x7a, 0x6e, 0xc7, ++ 0xa2, 0x08, 0x13, 0xc2, 0xdb, 0x19, 0xc9, 0xb6, 0x68, 0xef, 0xc1, 0x7a, ++ 0x33, 0x5f, 0xb8, 0xaf, 0x15, 0x93, 0xf9, 0xef, 0xc5, 0x7f, 0xbe, 0xce, ++ 0x72, 0x13, 0xd8, 0x3b, 0xb3, 0x7b, 0xbc, 0x34, 0x81, 0xb1, 0x13, 0xf1, ++ 0x9f, 0xcf, 0x54, 0xa0, 0x7f, 0x68, 0xc6, 0xa8, 0x7f, 0xff, 0x0b, 0xdc, ++ 0xff, 0xdd, 0x4f, 0x2e, 0xac, 0xb3, 0x00, 0x5c, 0xf3, 0x8e, 0xda, 0x5a, ++ 0x7b, 0xa0, 0xff, 0xe9, 0x4f, 0x2e, 0xae, 0xb3, 0xa1, 0x9e, 0x3d, 0x14, ++ 0x0e, 0xca, 0x0e, 0xf5, 0x46, 0xff, 0x41, 0x90, 0x74, 0x96, 0x87, 0x36, ++ 0x3d, 0x99, 0x71, 0x05, 0x3b, 0x19, 0xfa, 0xb1, 0xa2, 0xef, 0xe9, 0x9f, ++ 0x59, 0x0a, 0x24, 0x5f, 0x50, 0xd2, 0x97, 0xc5, 0x80, 0xb5, 0xa6, 0xfc, ++ 0xc4, 0x3f, 0xd3, 0x02, 0x78, 0x5c, 0x60, 0x75, 0xff, 0x1b, 0xf6, 0x4d, ++ 0x9e, 0x97, 0x66, 0x96, 0xde, 0x84, 0x7d, 0xe6, 0xc1, 0x7a, 0x2e, 0xbf, ++ 0x64, 0xa4, 0xf8, 0x9e, 0x8d, 0x94, 0xe2, 0xb0, 0x7e, 0x65, 0x99, 0xdd, ++ 0x7d, 0x2c, 0x3e, 0xc8, 0x7e, 0x3b, 0xa5, 0x3f, 0xd2, 0xfe, 0x51, 0x81, ++ 0x53, 0x62, 0xd1, 0x71, 0x44, 0x57, 0xda, 0xcf, 0x62, 0xf6, 0x53, 0xb1, ++ 0xc1, 0xf2, 0xb6, 0xcc, 0x5e, 0x76, 0x0c, 0xe9, 0x71, 0x47, 0x3c, 0xdf, ++ 0xbf, 0x9a, 0x38, 0x4d, 0x72, 0x06, 0xd7, 0x49, 0xe8, 0xc7, 0x4d, 0x3c, ++ 0xa3, 0x96, 0x22, 0x9d, 0x0a, 0xce, 0x95, 0x37, 0x61, 0x3b, 0xbb, 0x22, ++ 0x9a, 0xfa, 0xae, 0x85, 0x93, 0x9a, 0x50, 0x9e, 0x4b, 0x6d, 0xc3, 0x3d, ++ 0x5f, 0x42, 0xcf, 0x2f, 0x88, 0x37, 0x12, 0x7f, 0x16, 0x2b, 0x52, 0x48, ++ 0x7d, 0x88, 0x7e, 0x5c, 0x1e, 0x30, 0x13, 0xfa, 0xc7, 0xfe, 0x03, 0xe1, ++ 0x94, 0x17, 0x98, 0x78, 0xcc, 0xdd, 0x88, 0x75, 0xa3, 0x65, 0x49, 0xa9, ++ 0xb9, 0xb2, 0xd0, 0x79, 0x8c, 0xfa, 0xd1, 0x1b, 0x71, 0x1f, 0x6d, 0x62, ++ 0xe5, 0x87, 0xa5, 0xb1, 0x28, 0x3f, 0x36, 0xc9, 0x81, 0xe6, 0xa1, 0x80, ++ 0xf5, 0x35, 0xc5, 0xc6, 0x61, 0xfd, 0x23, 0x16, 0x44, 0xe1, 0xba, 0x9e, ++ 0x2b, 0xc1, 0xfa, 0x9d, 0x89, 0xaa, 0xe4, 0x40, 0xb4, 0x15, 0x39, 0xbb, ++ 0x5a, 0xf1, 0xf9, 0x22, 0x47, 0x84, 0xa3, 0x08, 0xfd, 0xf1, 0x63, 0x6a, ++ 0x29, 0x9a, 0x9c, 0xa3, 0xca, 0x84, 0xc3, 0xf9, 0x30, 0x6e, 0x46, 0xba, ++ 0xec, 0xb0, 0xc0, 0x44, 0x47, 0x7d, 0x77, 0x4c, 0xbd, 0x00, 0xfd, 0xa2, ++ 0x8c, 0x28, 0xca, 0xe3, 0x16, 0x29, 0xab, 0xaf, 0x1c, 0xa6, 0x7e, 0x84, ++ 0xa3, 0x41, 0xc5, 0x75, 0x6c, 0xfc, 0x79, 0x2d, 0xcd, 0x63, 0x26, 0x7b, ++ 0xbe, 0x63, 0x56, 0xc9, 0x7f, 0x20, 0xff, 0x14, 0xbb, 0xa2, 0x28, 0xe7, ++ 0x57, 0x6a, 0x3b, 0x35, 0x37, 0xb8, 0x2e, 0x0c, 0xd6, 0x4d, 0x70, 0x17, ++ 0xd9, 0x65, 0x6f, 0x98, 0x84, 0xfc, 0xfd, 0x83, 0x52, 0x3b, 0xf4, 0x77, ++ 0x8c, 0x92, 0x18, 0xca, 0xcf, 0x51, 0x5f, 0xe6, 0x9f, 0xe9, 0x7e, 0x77, ++ 0xb8, 0x1a, 0x06, 0x80, 0xee, 0x30, 0xd9, 0x4b, 0x71, 0xbe, 0x1d, 0x26, ++ 0xc9, 0xbe, 0x96, 0xfa, 0xae, 0x12, 0x1c, 0xef, 0x19, 0x63, 0x54, 0x31, ++ 0x4f, 0x54, 0x1e, 0xf7, 0x45, 0xc8, 0xfc, 0x33, 0x4a, 0xa5, 0x29, 0x67, ++ 0x10, 0xfe, 0xec, 0xa8, 0x09, 0x78, 0xad, 0x62, 0xe4, 0xa5, 0x90, 0xfb, ++ 0x3d, 0x8b, 0xac, 0x64, 0x27, 0x2a, 0xdf, 0xcf, 0x26, 0x7f, 0xa8, 0x67, ++ 0x51, 0x0a, 0xd9, 0x8b, 0xca, 0xf7, 0xa7, 0x15, 0x63, 0xdb, 0x63, 0xe0, ++ 0x7e, 0x7a, 0xe5, 0xfb, 0x95, 0x15, 0x74, 0xdf, 0xc0, 0xe3, 0xdf, 0xca, ++ 0xc5, 0xdf, 0x71, 0x8a, 0x3e, 0xc5, 0xbb, 0x95, 0x8b, 0x57, 0x51, 0xbf, ++ 0x4b, 0x4a, 0xfc, 0x77, 0x7c, 0xdf, 0x95, 0xec, 0xa8, 0x5c, 0xcc, 0xa3, ++ 0xcd, 0x4c, 0xff, 0x7a, 0xae, 0x12, 0xec, 0xff, 0xad, 0xce, 0x24, 0xf9, ++ 0xcf, 0x15, 0x79, 0xbc, 0x22, 0x43, 0xe6, 0xfa, 0x69, 0x00, 0xff, 0xa3, ++ 0x07, 0xf8, 0x3e, 0x44, 0x65, 0xb6, 0x14, 0x52, 0x37, 0x37, 0x2b, 0xff, ++ 0x54, 0x48, 0x3d, 0xa8, 0x6b, 0xda, 0x17, 0x21, 0xfd, 0xb9, 0xa5, 0x97, ++ 0x42, 0xea, 0x43, 0xe7, 0x55, 0x7e, 0x1d, 0xd2, 0x5f, 0x30, 0x4f, 0xaa, ++ 0x0a, 0x1e, 0x5f, 0x7a, 0x20, 0x9f, 0xec, 0x6b, 0xbe, 0xa8, 0x5f, 0xd2, ++ 0xf2, 0x4b, 0x45, 0x82, 0x85, 0xde, 0xa9, 0xcf, 0xa8, 0x2a, 0x05, 0xb9, ++ 0x3c, 0x00, 0xed, 0x03, 0xa0, 0x1f, 0x8a, 0x7a, 0x45, 0xde, 0x55, 0xe1, ++ 0x71, 0x75, 0x06, 0xfc, 0x43, 0x3d, 0x58, 0x6a, 0xd3, 0xe5, 0x77, 0x99, ++ 0x4a, 0xfb, 0xd9, 0x15, 0xdd, 0x7c, 0xdf, 0xba, 0x3c, 0xce, 0x78, 0x3a, ++ 0xd8, 0x3e, 0x54, 0xc8, 0x4f, 0x70, 0x7f, 0x41, 0xb7, 0xfe, 0xdc, 0x03, ++ 0x46, 0xb2, 0x93, 0xb9, 0xd1, 0x32, 0xe5, 0xab, 0x34, 0xf8, 0x2a, 0x46, ++ 0x86, 0x3e, 0xaf, 0xf9, 0x5f, 0x15, 0x02, 0xce, 0x1d, 0x06, 0x77, 0x53, ++ 0x0c, 0xe5, 0xc7, 0x9c, 0xbd, 0xe8, 0x7f, 0x68, 0xf0, 0x6b, 0xef, 0xd7, ++ 0xe0, 0xae, 0x90, 0xef, 0x29, 0xa5, 0xed, 0xbf, 0xeb, 0xc0, 0xaf, 0x87, ++ 0x17, 0x00, 0x25, 0xff, 0x4d, 0x0f, 0xc7, 0x81, 0x78, 0x11, 0x87, 0x80, ++ 0xbf, 0x41, 0xfe, 0x59, 0x37, 0xaf, 0x4b, 0x83, 0x5f, 0xdc, 0x50, 0x76, ++ 0x5b, 0xf3, 0xcf, 0x2b, 0x41, 0x4f, 0x45, 0x07, 0xeb, 0x29, 0x9b, 0x14, ++ 0x87, 0xf5, 0x76, 0xc3, 0xe9, 0x29, 0x6d, 0xde, 0xe1, 0xfc, 0x30, 0x6d, ++ 0xde, 0x65, 0x76, 0x17, 0x3d, 0xef, 0xdc, 0xfa, 0xd9, 0xd1, 0x42, 0x39, ++ 0xa8, 0x9f, 0x7a, 0x2a, 0x36, 0x26, 0xb8, 0xff, 0xda, 0x67, 0xeb, 0x43, ++ 0xee, 0xc7, 0x9f, 0xaa, 0x8a, 0x0e, 0xee, 0x6f, 0xfa, 0xac, 0x0a, 0xef, ++ 0x4f, 0x57, 0xd4, 0x46, 0x1b, 0xf0, 0xe3, 0x41, 0x26, 0x39, 0x3c, 0xc8, ++ 0x9f, 0x3d, 0xaa, 0x82, 0xfb, 0xcf, 0x25, 0xc7, 0x9c, 0x4d, 0xd8, 0x96, ++ 0x9d, 0x74, 0x63, 0x99, 0x29, 0x9b, 0x71, 0xc6, 0xd3, 0x84, 0xed, 0xd4, ++ 0xf3, 0xde, 0x1e, 0x33, 0xac, 0xeb, 0x8e, 0x0c, 0x59, 0xc5, 0xb8, 0x5d, ++ 0xf3, 0x3f, 0xf4, 0xf0, 0x9a, 0x13, 0x78, 0x1c, 0x72, 0xf0, 0xaa, 0x6a, ++ 0xc5, 0xfd, 0xd3, 0x1d, 0x1e, 0xd5, 0x8a, 0xfe, 0xfb, 0x8e, 0x27, 0x54, ++ 0x2b, 0xfa, 0x1f, 0x3b, 0x9c, 0xac, 0x02, 0xe3, 0x31, 0x67, 0x9a, 0x61, ++ 0x35, 0xfa, 0xf3, 0xce, 0x2c, 0x5e, 0x67, 0x78, 0x55, 0xe8, 0xe1, 0x6f, ++ 0xe2, 0xf9, 0xf3, 0x5a, 0x7b, 0x5a, 0x71, 0x7f, 0x83, 0x7a, 0x11, 0xeb, ++ 0xc2, 0xd1, 0x27, 0xa8, 0xfd, 0xda, 0x4f, 0x75, 0xe0, 0x07, 0xd1, 0xaf, ++ 0xca, 0x1e, 0xec, 0x57, 0x1d, 0x54, 0xbc, 0x36, 0x7c, 0xdf, 0xc1, 0x27, ++ 0xbc, 0xb6, 0xe0, 0x7d, 0xc2, 0x1b, 0xf5, 0xab, 0xfe, 0x8c, 0x36, 0x3a, ++ 0x1e, 0xf9, 0x6c, 0x4e, 0x88, 0x7c, 0x96, 0x58, 0xee, 0xae, 0x0a, 0x96, ++ 0xef, 0x32, 0xfb, 0x92, 0x90, 0xfb, 0x9f, 0xc6, 0xa9, 0x04, 0xff, 0x8c, ++ 0xa4, 0x87, 0x43, 0xc6, 0xdd, 0xa1, 0x3e, 0x12, 0xd2, 0x07, 0x7f, 0x31, ++ 0x03, 0xfd, 0x91, 0x46, 0x13, 0xa3, 0x3a, 0x59, 0x8f, 0x81, 0xd7, 0xc9, ++ 0xea, 0xf1, 0xf8, 0xa8, 0xc0, 0xa3, 0xc3, 0x66, 0x47, 0x37, 0x86, 0x19, ++ 0xe3, 0x54, 0xaa, 0x6b, 0xd3, 0x8f, 0x73, 0x94, 0x70, 0xfc, 0xe9, 0xaf, ++ 0xa7, 0x27, 0xf0, 0xb8, 0x68, 0x23, 0xc8, 0x0c, 0xb6, 0xf7, 0x24, 0x70, ++ 0xf8, 0xf4, 0x75, 0xb1, 0xfa, 0x3e, 0xc4, 0x7c, 0x0b, 0x71, 0x3e, 0x98, ++ 0x39, 0x09, 0xf9, 0xdc, 0x61, 0x35, 0x5c, 0x01, 0x57, 0x97, 0x39, 0x13, ++ 0x92, 0xee, 0xa4, 0x7a, 0xd9, 0x3c, 0xc3, 0xa3, 0x69, 0xd0, 0xaf, 0x4e, ++ 0xc8, 0xe2, 0xfd, 0xa9, 0x86, 0x9d, 0x58, 0x1f, 0x7b, 0x77, 0x42, 0x36, ++ 0xef, 0xdf, 0x6a, 0xc8, 0x33, 0x82, 0x1f, 0xf0, 0x2b, 0x36, 0xfe, 0x4e, ++ 0xac, 0x07, 0xaf, 0x0d, 0x13, 0x75, 0x9d, 0x0f, 0x24, 0xd2, 0x7e, 0x98, ++ 0x16, 0xdf, 0x28, 0x86, 0x53, 0x2f, 0x2e, 0xc6, 0x38, 0x73, 0x8f, 0x91, ++ 0x61, 0xfe, 0xfe, 0x19, 0x13, 0xd8, 0xbd, 0xdc, 0xc0, 0xbe, 0xb9, 0xd5, ++ 0xcc, 0xe3, 0x52, 0xab, 0x89, 0xd7, 0x6d, 0x3f, 0x95, 0x7a, 0xf4, 0x29, ++ 0xd4, 0x1b, 0x6a, 0x98, 0x7b, 0x7a, 0x02, 0xf9, 0x51, 0xc5, 0x2a, 0xe2, ++ 0xef, 0xbc, 0xdd, 0x42, 0x75, 0x9d, 0x8f, 0xed, 0x2e, 0x4b, 0x44, 0xfa, ++ 0xdf, 0x93, 0xc0, 0xf3, 0x5c, 0x59, 0x3b, 0xa7, 0x26, 0xa1, 0x7e, 0xf9, ++ 0x17, 0xbc, 0x7f, 0x56, 0xc2, 0xc4, 0xe1, 0xdf, 0x8f, 0x75, 0xbe, 0x38, ++ 0xcf, 0xf9, 0x1d, 0x59, 0xe4, 0x7f, 0x67, 0xdd, 0x0c, 0xe8, 0x95, 0x02, ++ 0xf8, 0x87, 0xf0, 0x98, 0xae, 0x87, 0x41, 0x98, 0x40, 0xe7, 0x25, 0x98, ++ 0x33, 0x09, 0xf3, 0x6c, 0x8d, 0xd1, 0x26, 0x9a, 0xe7, 0x9e, 0x04, 0xce, ++ 0x7f, 0x37, 0xda, 0x0e, 0xaa, 0xfb, 0x8d, 0x32, 0xac, 0xde, 0x0e, 0xed, ++ 0xfd, 0x82, 0xfe, 0x0f, 0xe0, 0x7b, 0x09, 0x5f, 0xfe, 0x51, 0x73, 0x70, ++ 0x63, 0xce, 0xee, 0x1f, 0x35, 0x77, 0x3c, 0xef, 0x23, 0x7d, 0x65, 0x39, ++ 0xd7, 0x8f, 0x7e, 0xac, 0xff, 0x3b, 0x11, 0xb4, 0xaf, 0xc2, 0x46, 0xfa, ++ 0x69, 0xff, 0xe5, 0xe3, 0x7b, 0xb2, 0x1c, 0xe8, 0x9f, 0x7e, 0x12, 0xce, ++ 0xf1, 0xb7, 0xd0, 0x3b, 0xba, 0xb1, 0x4f, 0xc5, 0xfa, 0x0d, 0xef, 0x4d, ++ 0x58, 0x2f, 0x91, 0x91, 0xe8, 0xae, 0x45, 0x3c, 0x2c, 0x32, 0x7b, 0x6f, ++ 0x21, 0xfe, 0xb1, 0xad, 0x8e, 0xc0, 0xf9, 0x6f, 0xb4, 0x1e, 0x78, 0xf0, ++ 0x7b, 0x21, 0x80, 0x04, 0xfa, 0x54, 0x4f, 0xe1, 0xf4, 0xd1, 0xde, 0x0b, ++ 0x38, 0xb5, 0xa0, 0x3d, 0xf8, 0x58, 0x9c, 0x03, 0xd1, 0xe0, 0x80, 0xf7, ++ 0xff, 0x00, 0xf9, 0x40, 0x83, 0x67, 0x00, 0x0e, 0x5d, 0x5d, 0xb8, 0x96, ++ 0x67, 0xae, 0xfb, 0xa3, 0x81, 0xf2, 0x0c, 0x75, 0x12, 0xe8, 0x3d, 0xe8, ++ 0xef, 0x3c, 0xc9, 0x1c, 0x1e, 0x98, 0xe7, 0xa2, 0xe6, 0xaf, 0x8b, 0xbc, ++ 0x26, 0x6e, 0x45, 0xe1, 0x7b, 0xa6, 0x1c, 0x5e, 0x5a, 0x62, 0x83, 0x36, ++ 0xbf, 0x6d, 0x25, 0x8f, 0x73, 0x7b, 0x95, 0x90, 0x3c, 0xd7, 0xa4, 0xe3, ++ 0x8a, 0x7e, 0xbf, 0x83, 0xec, 0xd6, 0x54, 0xed, 0x79, 0x5d, 0x9e, 0x71, ++ 0xaa, 0x88, 0x6b, 0xa7, 0xea, 0xe2, 0xda, 0x17, 0x13, 0x84, 0x9d, 0x49, ++ 0x66, 0xc9, 0xc1, 0x79, 0x80, 0x35, 0x22, 0x6e, 0xb8, 0xdc, 0x33, 0x3a, ++ 0x0a, 0xfd, 0x4c, 0xd4, 0x51, 0x32, 0xe0, 0xd5, 0xa4, 0xca, 0x6c, 0x72, ++ 0x4c, 0x40, 0xce, 0x5b, 0x21, 0xee, 0x67, 0x41, 0x71, 0xbf, 0xc6, 0x67, ++ 0xe3, 0x8f, 0xd9, 0xef, 0x47, 0xb8, 0xc7, 0x1f, 0x63, 0xf7, 0x91, 0x5d, ++ 0xd7, 0xe6, 0x1d, 0xc8, 0x2f, 0x70, 0xbc, 0x5c, 0x3e, 0xce, 0xf1, 0x32, ++ 0xa1, 0x2f, 0xe3, 0xa7, 0xd3, 0xa0, 0x6f, 0xec, 0x36, 0x32, 0xaf, 0x1a, ++ 0x58, 0x4f, 0x21, 0x07, 0x95, 0x5d, 0xc6, 0xff, 0xe0, 0x78, 0xbb, 0xc9, ++ 0x8b, 0x75, 0xcb, 0x05, 0x07, 0x7e, 0x99, 0xe7, 0x83, 0x4b, 0xe6, 0x24, ++ 0x03, 0x53, 0x83, 0xf0, 0x10, 0xa6, 0x86, 0x33, 0x35, 0x48, 0x2f, 0x5a, ++ 0x33, 0x62, 0x42, 0xfa, 0xb2, 0x86, 0x6f, 0x61, 0xcf, 0xf3, 0xc4, 0xfc, ++ 0x11, 0x8e, 0xe4, 0x90, 0x79, 0xf6, 0xc4, 0x94, 0x77, 0xa3, 0x7d, 0xcf, ++ 0xb3, 0x2d, 0x27, 0xfb, 0x1e, 0x35, 0x79, 0x74, 0xc8, 0x3c, 0xac, 0x47, ++ 0x09, 0xb1, 0xf3, 0xb0, 0x28, 0xda, 0xbf, 0x9c, 0x08, 0x40, 0xfd, 0x0c, ++ 0xf0, 0x5a, 0x70, 0x4c, 0x09, 0xb1, 0xe7, 0x93, 0xe2, 0x3c, 0xb8, 0x62, ++ 0x36, 0xf9, 0xa4, 0xa2, 0xb3, 0xff, 0xcd, 0x32, 0xca, 0x41, 0xe1, 0x99, ++ 0xd0, 0xeb, 0x07, 0x86, 0xa3, 0xcb, 0x70, 0xf8, 0x63, 0x39, 0x3f, 0x45, ++ 0xff, 0xee, 0x1f, 0xc5, 0x5f, 0xb4, 0x33, 0x14, 0x7f, 0xb1, 0x15, 0xa1, ++ 0xf8, 0x8b, 0x77, 0x85, 0xe2, 0x2f, 0x71, 0x61, 0x28, 0x9e, 0x46, 0xb8, ++ 0x43, 0xf1, 0x92, 0xb2, 0x7c, 0x5c, 0xc8, 0xfd, 0x9b, 0x56, 0xe7, 0x86, ++ 0xf4, 0x6f, 0x7e, 0xbc, 0x30, 0x64, 0x7c, 0x2a, 0x18, 0xa4, 0xe0, 0x7e, ++ 0xda, 0xd3, 0x33, 0x43, 0xc6, 0xdf, 0xd2, 0x3c, 0x37, 0xa4, 0x3f, 0x76, ++ 0xc3, 0xa2, 0x90, 0xf1, 0x99, 0xde, 0xa5, 0x21, 0xf7, 0xb3, 0x5e, 0x5d, ++ 0x71, 0x43, 0xf4, 0x1e, 0xdf, 0xb2, 0x26, 0x64, 0x9c, 0x9e, 0xde, 0xb7, ++ 0xb6, 0xfd, 0xaf, 0x90, 0x79, 0x35, 0x7a, 0x7b, 0xe0, 0xdf, 0xbf, 0x82, ++ 0xde, 0xe6, 0xc4, 0x50, 0x7a, 0xa7, 0x0a, 0xfd, 0x1a, 0xed, 0xe4, 0xf5, ++ 0x65, 0xfd, 0x46, 0xdb, 0xd3, 0x12, 0xe8, 0x23, 0x4c, 0x13, 0xa1, 0x5e, ++ 0x8b, 0x6e, 0x7f, 0xf7, 0x6b, 0xcc, 0x43, 0x78, 0x8a, 0x55, 0xaa, 0x9f, ++ 0xf3, 0xcc, 0x64, 0xb4, 0x0f, 0xfd, 0x82, 0xec, 0x92, 0x50, 0x0f, 0xa5, ++ 0xc0, 0x14, 0x86, 0x34, 0xaa, 0x5f, 0xa7, 0xfa, 0xbb, 0x1f, 0x1b, 0x0c, ++ 0x21, 0xfb, 0xe2, 0x89, 0x89, 0xdc, 0xbe, 0x27, 0x26, 0xf2, 0x7c, 0xcd, ++ 0xcf, 0x4d, 0xfc, 0xdc, 0x52, 0x0a, 0xf8, 0x8f, 0x64, 0x87, 0x0c, 0x2c, ++ 0x10, 0x2f, 0x03, 0x1e, 0x22, 0x31, 0x5e, 0xa6, 0x78, 0xfa, 0xc7, 0xcf, ++ 0x60, 0xbc, 0xdc, 0x14, 0xdd, 0x97, 0xa1, 0x42, 0x7c, 0x6c, 0xc6, 0xfe, ++ 0x4d, 0x01, 0x7d, 0xb9, 0xc8, 0xac, 0x36, 0xf6, 0x01, 0x3e, 0x26, 0xc8, ++ 0x5c, 0x1f, 0x82, 0x9e, 0x4c, 0x4b, 0x84, 0xf9, 0x3f, 0x91, 0x9e, 0x30, ++ 0x72, 0x3f, 0xc2, 0x63, 0x44, 0x3f, 0x22, 0xc5, 0xc2, 0x3c, 0x91, 0xb9, ++ 0x64, 0x3f, 0x28, 0x7f, 0x1c, 0xcd, 0xe2, 0x24, 0xac, 0xc7, 0x8f, 0x0a, ++ 0xe8, 0x69, 0xf5, 0x1a, 0x10, 0x6b, 0xdf, 0x8a, 0x2c, 0x3a, 0x07, 0xf5, ++ 0x1e, 0x42, 0x82, 0xfe, 0xaf, 0x25, 0x86, 0xec, 0xe8, 0xdd, 0x9a, 0x7e, ++ 0x5a, 0x9e, 0x49, 0xfa, 0xe9, 0xb2, 0x2d, 0xd4, 0x0f, 0xbb, 0xfc, 0x40, ++ 0x1a, 0x5d, 0x3f, 0x71, 0xaf, 0x99, 0xf6, 0xfb, 0x4f, 0x88, 0x3a, 0x44, ++ 0x6d, 0xfd, 0xe7, 0x84, 0xde, 0xfa, 0x53, 0xbd, 0x85, 0xda, 0xf3, 0xf5, ++ 0xf6, 0x10, 0x3d, 0xb6, 0x7c, 0xe3, 0xfa, 0x08, 0xf4, 0x1f, 0x4f, 0x64, ++ 0x70, 0x7f, 0x51, 0xbb, 0x5e, 0x82, 0x78, 0x9b, 0x88, 0xad, 0x2c, 0xec, ++ 0x9a, 0xc5, 0x8e, 0xf9, 0xac, 0x7b, 0xc0, 0x38, 0x47, 0x01, 0xbe, 0x57, ++ 0x75, 0xf7, 0x45, 0x2e, 0x62, 0xe4, 0x37, 0x16, 0xe3, 0xba, 0x6b, 0x37, ++ 0x5e, 0xb9, 0xf7, 0x4d, 0xe8, 0xd7, 0x19, 0xfc, 0x09, 0xdc, 0x3e, 0x78, ++ 0x78, 0xbd, 0xcc, 0xc7, 0x8c, 0xfc, 0xcf, 0xea, 0x6f, 0x58, 0x88, 0xff, ++ 0x34, 0x37, 0x91, 0xc7, 0xe9, 0x73, 0xc5, 0xfc, 0x0b, 0xa0, 0xb1, 0x03, ++ 0x9e, 0x16, 0x00, 0xfe, 0xa3, 0xb1, 0x7d, 0x77, 0x5a, 0x39, 0xf2, 0x27, ++ 0x5c, 0xa7, 0xf3, 0x69, 0xb3, 0xbb, 0x19, 0xd5, 0x9f, 0xcc, 0x71, 0xa7, ++ 0xd2, 0x3e, 0xe3, 0x51, 0xe6, 0xf8, 0x70, 0x17, 0x80, 0xf8, 0x9d, 0x44, ++ 0x95, 0xe0, 0x9c, 0xc7, 0x5c, 0xb4, 0x5f, 0xff, 0xd1, 0xbd, 0xab, 0x22, ++ 0x70, 0xdc, 0xc0, 0x7c, 0xda, 0x3c, 0xc0, 0x28, 0xe8, 0x6f, 0x7c, 0x1c, ++ 0xed, 0x31, 0x26, 0x60, 0xdc, 0x7f, 0x1b, 0xaf, 0x6f, 0x80, 0xf7, 0x59, ++ 0xf0, 0xba, 0xeb, 0x9e, 0x94, 0x27, 0xd1, 0x0e, 0x69, 0xef, 0xfb, 0x88, ++ 0xb9, 0x2f, 0x7c, 0x88, 0xfb, 0xdd, 0xcc, 0x41, 0xf3, 0x6a, 0xf3, 0x33, ++ 0x16, 0x13, 0xa2, 0x9f, 0x76, 0x2c, 0x5f, 0xf9, 0x69, 0x2c, 0xbc, 0x6f, ++ 0xcd, 0x01, 0x03, 0xe5, 0x13, 0xd6, 0x74, 0x98, 0x29, 0xee, 0xea, 0x5f, ++ 0xf1, 0xd7, 0xad, 0x2f, 0xc2, 0xfd, 0xfb, 0x52, 0xfa, 0x6e, 0x42, 0xbb, ++ 0xfc, 0xc9, 0x8a, 0x6f, 0xc6, 0x20, 0x3f, 0xdc, 0xbd, 0x01, 0xf4, 0x10, ++ 0xac, 0xb1, 0x30, 0xca, 0xfd, 0x70, 0x62, 0x50, 0x9c, 0x72, 0xe2, 0x81, ++ 0x2b, 0x11, 0x78, 0x1f, 0xec, 0xeb, 0xa6, 0x17, 0xd1, 0x38, 0x6e, 0x36, ++ 0x53, 0x7d, 0xef, 0x27, 0x2b, 0x36, 0x8f, 0x09, 0xf6, 0x47, 0x1f, 0x4d, ++ 0x2c, 0xaa, 0xc5, 0xe7, 0xd8, 0xe4, 0x1b, 0x3b, 0x6f, 0x58, 0xf2, 0x7a, ++ 0x66, 0x22, 0xd5, 0x63, 0x09, 0x7e, 0x7a, 0x58, 0xf0, 0xd3, 0x9a, 0xd7, ++ 0xc6, 0x92, 0x1f, 0xb5, 0x26, 0x62, 0x80, 0x9f, 0x78, 0x7f, 0x13, 0xaf, ++ 0xef, 0xd0, 0xd6, 0xf1, 0xa1, 0xe0, 0xc7, 0x15, 0xaf, 0x7f, 0x5d, 0x10, ++ 0x7c, 0xce, 0x74, 0x07, 0xf0, 0x91, 0x3a, 0x86, 0xef, 0x6b, 0xa9, 0x20, ++ 0x53, 0x3b, 0x7b, 0x2e, 0xe7, 0xe0, 0xfd, 0x57, 0x14, 0x77, 0x13, 0xc2, ++ 0xd7, 0x79, 0xf5, 0x74, 0x24, 0xf6, 0x77, 0xbe, 0xf7, 0x37, 0x82, 0x9f, ++ 0xcd, 0xbb, 0x31, 0x78, 0x51, 0x06, 0x3d, 0x05, 0x81, 0xfd, 0x65, 0xed, ++ 0xdc, 0xe5, 0xc2, 0xf6, 0xd8, 0x3c, 0xa4, 0x3b, 0xc8, 0x59, 0x33, 0xce, ++ 0xbf, 0xe8, 0x37, 0xaf, 0x5d, 0xf8, 0x1d, 0xe2, 0xa7, 0x63, 0xf3, 0xa6, ++ 0xef, 0xe3, 0x98, 0x1b, 0x3c, 0x7f, 0xc9, 0x84, 0x7d, 0x71, 0x08, 0x3c, ++ 0x80, 0x7d, 0xa1, 0xf8, 0xa0, 0x9f, 0x85, 0xf3, 0x73, 0x1d, 0x42, 0x8f, ++ 0x2a, 0xb8, 0x83, 0x9e, 0x86, 0xe7, 0x99, 0x1c, 0x2a, 0xf1, 0xb3, 0x93, ++ 0x1d, 0xc2, 0x7d, 0x97, 0xc6, 0x2e, 0x03, 0xc3, 0xba, 0x95, 0x48, 0xdc, ++ 0xb4, 0x09, 0xca, 0xb3, 0x45, 0xca, 0x06, 0xcd, 0x08, 0x39, 0x2d, 0x49, ++ 0xa0, 0x9f, 0x85, 0x5e, 0x79, 0x25, 0xf1, 0xe4, 0x9d, 0x4d, 0xe4, 0xe7, ++ 0x87, 0xfa, 0x3d, 0xf9, 0x6f, 0xaf, 0x08, 0xf1, 0x77, 0x5c, 0xf0, 0x8f, ++ 0xfc, 0x9d, 0x97, 0xdc, 0x8d, 0x98, 0x07, 0xba, 0xae, 0xdf, 0xe3, 0x33, ++ 0x2c, 0x31, 0x45, 0xdd, 0xb8, 0xff, 0x03, 0x81, 0xb0, 0x53, 0x2a, 0x10, ++ 0x5b, 0x38, 0xf0, 0x6b, 0x4b, 0x14, 0xfb, 0x22, 0x42, 0x0f, 0x77, 0xa2, ++ 0x1c, 0x61, 0xfd, 0x3f, 0xce, 0x85, 0xf9, 0x7a, 0x5f, 0x38, 0x3f, 0x67, ++ 0x0c, 0xa6, 0x02, 0xf5, 0xf8, 0x0f, 0x60, 0x4d, 0xf8, 0xb0, 0x29, 0x45, ++ 0xb4, 0xd2, 0xc5, 0x0c, 0x0b, 0xe8, 0xc5, 0xbd, 0x89, 0x7f, 0x78, 0xe6, ++ 0x69, 0xd0, 0x93, 0x96, 0x74, 0xbe, 0x5e, 0xec, 0x37, 0xe2, 0xdf, 0xdd, ++ 0x9c, 0xdf, 0x06, 0xfc, 0xab, 0xb7, 0xc7, 0x91, 0x9e, 0x62, 0xdf, 0xc2, ++ 0xdb, 0x10, 0x0f, 0x22, 0x5f, 0xa1, 0xa7, 0x53, 0x3e, 0xc8, 0x07, 0x8b, ++ 0x0d, 0x92, 0x33, 0xf1, 0xbc, 0x6f, 0xff, 0xdf, 0x22, 0x31, 0x4f, 0xbb, ++ 0x35, 0x46, 0x7d, 0x1f, 0xe9, 0xe0, 0x3f, 0x20, 0xd3, 0x3e, 0x4d, 0x98, ++ 0xd2, 0x67, 0x8a, 0x1e, 0x22, 0x2e, 0x7b, 0x13, 0xf5, 0x9e, 0x89, 0xfb, ++ 0x4d, 0x54, 0x6f, 0xde, 0xc6, 0xf3, 0x81, 0x16, 0xd5, 0xc9, 0x30, 0x0e, ++ 0x08, 0xb3, 0xdb, 0x27, 0x04, 0x9f, 0xb3, 0x6b, 0x17, 0xfa, 0x6e, 0xd5, ++ 0xfe, 0x4f, 0x46, 0x99, 0x80, 0x0e, 0x17, 0x0c, 0x3d, 0x91, 0xd9, 0x30, ++ 0x7f, 0xcd, 0xae, 0x1d, 0x91, 0xe8, 0xc6, 0xdf, 0x6b, 0x74, 0x7f, 0x8a, ++ 0x7c, 0xb7, 0xf2, 0xc4, 0x07, 0x05, 0x76, 0x3a, 0xcf, 0xb6, 0x71, 0x14, ++ 0x9d, 0x03, 0xf0, 0x8d, 0xa6, 0xba, 0x83, 0xf1, 0x0a, 0xf3, 0x28, 0xb9, ++ 0x83, 0xe1, 0xa8, 0xdb, 0x90, 0x4b, 0xc6, 0xb8, 0x76, 0x03, 0x25, 0xe3, ++ 0xd9, 0xf8, 0xf6, 0xbc, 0x87, 0x50, 0x1f, 0xd5, 0xf9, 0xf8, 0x3a, 0x71, ++ 0x6e, 0x2c, 0xfc, 0xcb, 0x6c, 0x63, 0xd4, 0xbf, 0xd8, 0xd6, 0x18, 0x83, ++ 0xf3, 0xd5, 0xfd, 0xb6, 0x23, 0x19, 0xe5, 0x67, 0x73, 0x3c, 0x8f, 0x13, ++ 0x5f, 0xbf, 0x3a, 0x8e, 0x3f, 0xaf, 0x30, 0x05, 0xc7, 0x7f, 0x99, 0x18, ++ 0x2d, 0xf8, 0xd9, 0x6b, 0xc0, 0x38, 0x63, 0xb3, 0x88, 0x4f, 0x2e, 0x5e, ++ 0x35, 0xd0, 0x38, 0xed, 0xfd, 0xe3, 0xdb, 0x8a, 0x64, 0x3b, 0xf0, 0x43, ++ 0xb6, 0xaf, 0x79, 0x2f, 0xc5, 0x43, 0xed, 0x66, 0x15, 0xe9, 0x1a, 0xf6, ++ 0x0a, 0xe3, 0x78, 0x68, 0x0f, 0x23, 0x39, 0xaf, 0xeb, 0x9c, 0xc1, 0x30, ++ 0x9f, 0xdf, 0x1f, 0xcd, 0x1c, 0x12, 0xdc, 0xdf, 0x1a, 0xee, 0xff, 0x03, ++ 0x9d, 0x33, 0xeb, 0x30, 0xab, 0x98, 0x1f, 0x0d, 0xb3, 0x37, 0xb3, 0x18, ++ 0x98, 0x7f, 0xab, 0xd8, 0x0f, 0xcd, 0x04, 0x8e, 0xc2, 0xf3, 0x4a, 0xda, ++ 0x75, 0xed, 0x7d, 0x61, 0xed, 0x3f, 0xc5, 0x58, 0x02, 0xf9, 0x81, 0xf2, ++ 0xb4, 0x61, 0x4a, 0x33, 0xbb, 0xcd, 0x16, 0x8c, 0xe7, 0x08, 0xc2, 0x73, ++ 0x3c, 0xf2, 0x53, 0x3c, 0xbe, 0xc7, 0x67, 0xc0, 0xfc, 0x88, 0xff, 0x16, ++ 0xc6, 0x5e, 0x26, 0xb8, 0x02, 0x70, 0x32, 0x7a, 0xaf, 0x06, 0x67, 0x26, ++ 0xf9, 0x73, 0x5b, 0x4d, 0xfe, 0xb3, 0x78, 0x7e, 0x05, 0xe0, 0xb2, 0x23, ++ 0xfd, 0x33, 0x19, 0x87, 0x93, 0xb5, 0x8f, 0x55, 0x31, 0xbe, 0x0f, 0xb3, ++ 0x3b, 0x69, 0x1d, 0x61, 0x76, 0xd5, 0xe1, 0x91, 0x06, 0xc3, 0x55, 0x97, ++ 0xc3, 0xbc, 0x68, 0xbf, 0x7f, 0xbc, 0x96, 0x0d, 0xc8, 0x2b, 0xca, 0x6f, ++ 0x5d, 0x78, 0xa0, 0x6f, 0x01, 0x19, 0xd8, 0x3a, 0x9a, 0x09, 0xf9, 0xb6, ++ 0x3f, 0x5b, 0x3a, 0x2d, 0xb8, 0x0f, 0x8a, 0x64, 0x72, 0xe0, 0xf9, 0x71, ++ 0x1b, 0x62, 0x9e, 0x6d, 0x1a, 0x49, 0x71, 0x83, 0x47, 0xc6, 0x38, 0x16, ++ 0xda, 0x88, 0x18, 0x5c, 0xa7, 0xca, 0xcf, 0x3b, 0x63, 0x6a, 0x28, 0x97, ++ 0xe3, 0x01, 0xf7, 0xc5, 0xad, 0x16, 0x7e, 0x7f, 0x60, 0x3c, 0xf0, 0xb7, ++ 0x0d, 0xfb, 0x36, 0x3e, 0xce, 0x11, 0x65, 0xb7, 0xce, 0x94, 0x48, 0x4e, ++ 0x28, 0xaf, 0x57, 0x2b, 0xe4, 0xfd, 0x31, 0xc9, 0x77, 0xf6, 0x76, 0x90, ++ 0xd3, 0xbf, 0xf8, 0xf6, 0xe6, 0xa8, 0x00, 0x4b, 0xcd, 0xbb, 0x7b, 0x88, ++ 0x4f, 0x57, 0x1a, 0xda, 0x5f, 0x1c, 0x0f, 0xf7, 0x37, 0x5a, 0xdc, 0xf9, ++ 0x49, 0x80, 0xcf, 0xb7, 0x4e, 0x1a, 0xe8, 0x1c, 0xe9, 0x9f, 0x5e, 0x0b, ++ 0xf3, 0x56, 0x62, 0xfc, 0xb8, 0x7b, 0x63, 0x82, 0x73, 0x08, 0xf9, 0xd0, ++ 0xcf, 0xff, 0xc3, 0xe3, 0x6b, 0x9f, 0x4f, 0x41, 0xfa, 0xef, 0x96, 0x54, ++ 0xcc, 0x9b, 0xf6, 0x1b, 0xfd, 0xa3, 0x10, 0xde, 0xda, 0xf6, 0xcf, 0x4d, ++ 0x54, 0x8f, 0xd0, 0x76, 0x8a, 0xea, 0x93, 0x8e, 0x24, 0xb9, 0x9d, 0xf8, ++ 0x9e, 0xc9, 0x6d, 0x0d, 0xb4, 0x6f, 0x3c, 0x85, 0x35, 0xd3, 0xbe, 0x71, ++ 0x96, 0x38, 0x7f, 0xdd, 0x92, 0xc4, 0xf5, 0xc7, 0xe5, 0x63, 0x63, 0x5e, ++ 0x6e, 0x08, 0xc2, 0xff, 0x83, 0x49, 0xdc, 0x0f, 0x63, 0x7e, 0xf7, 0xcd, ++ 0x28, 0x37, 0xed, 0x42, 0x3e, 0x3b, 0xd1, 0x2f, 0x81, 0x76, 0x97, 0xf0, ++ 0x8f, 0x76, 0x75, 0xdd, 0x9d, 0xa6, 0x06, 0xe5, 0xfd, 0x1a, 0xd8, 0xde, ++ 0x14, 0xc4, 0xf7, 0x5a, 0xf6, 0x36, 0xb5, 0xda, 0xf5, 0x7e, 0x2f, 0x3f, ++ 0xcf, 0x98, 0xf5, 0x91, 0xe5, 0x3e, 0x67, 0x10, 0xff, 0xb9, 0x93, 0xb8, ++ 0x9f, 0xe7, 0x16, 0xef, 0xf3, 0x27, 0xb9, 0x17, 0x24, 0xa1, 0xdc, 0x76, ++ 0x9d, 0x36, 0x45, 0xaa, 0x78, 0x5e, 0xa5, 0x65, 0x14, 0xda, 0x91, 0x16, ++ 0xf0, 0x9f, 0xec, 0x43, 0xe0, 0x65, 0x40, 0x6e, 0x75, 0x72, 0x54, 0xa7, ++ 0xf8, 0x4d, 0x38, 0xbe, 0xee, 0x1c, 0x3f, 0x77, 0x0a, 0x74, 0x6e, 0xc2, ++ 0xfa, 0xff, 0xcd, 0x1f, 0xb5, 0x8d, 0x5b, 0x02, 0xd7, 0x77, 0x01, 0xae, ++ 0xb1, 0xde, 0xd3, 0x73, 0xc2, 0x4c, 0x75, 0x8f, 0xbb, 0x8c, 0xae, 0x14, ++ 0x1c, 0xdf, 0xf0, 0xe1, 0x57, 0x39, 0xa8, 0xb7, 0x2a, 0x10, 0x69, 0xf0, ++ 0xbf, 0xaf, 0x3a, 0x56, 0xde, 0x8c, 0x78, 0x03, 0xbe, 0x2f, 0x0e, 0x47, ++ 0xf9, 0xda, 0xce, 0x48, 0x8f, 0x69, 0xf2, 0x99, 0x8d, 0xf2, 0x09, 0xcf, ++ 0x67, 0x23, 0xdf, 0xe7, 0x63, 0x3f, 0x93, 0xf4, 0xf0, 0x56, 0x53, 0x2f, ++ 0x3f, 0xf7, 0xb9, 0x8b, 0x9f, 0xfb, 0x04, 0xbe, 0x27, 0x39, 0x00, 0xbe, ++ 0xb7, 0xa3, 0x9f, 0x90, 0x6d, 0x07, 0x39, 0xa0, 0xe7, 0xc7, 0x92, 0x7c, ++ 0x6f, 0xed, 0x35, 0xd0, 0xf9, 0x54, 0x0f, 0xe8, 0xf1, 0x5b, 0xa8, 0x5f, ++ 0x5c, 0x85, 0xfd, 0xad, 0xbd, 0xa5, 0x76, 0x92, 0x6f, 0xcc, 0xc3, 0xe7, ++ 0xa2, 0x9c, 0xfa, 0xf6, 0xd2, 0x3c, 0x2d, 0x10, 0x83, 0x20, 0xe9, 0x24, ++ 0xe6, 0x0a, 0xf6, 0x1f, 0xdb, 0x13, 0x23, 0x89, 0x8f, 0x35, 0xfd, 0x78, ++ 0x30, 0x91, 0xeb, 0xff, 0x96, 0x0c, 0x35, 0x0a, 0xeb, 0xff, 0xad, 0xb2, ++ 0x1c, 0x22, 0x17, 0x41, 0x76, 0x90, 0xf7, 0x85, 0x9d, 0xec, 0xdd, 0x50, ++ 0xfc, 0xec, 0x0b, 0xd3, 0xd0, 0xde, 0x09, 0xbb, 0x20, 0xfc, 0x27, 0x76, ++ 0x9c, 0xeb, 0xf9, 0x47, 0x85, 0xad, 0x5a, 0xf3, 0x4e, 0xe1, 0xec, 0x2d, ++ 0xb0, 0xce, 0x35, 0x87, 0xe5, 0x81, 0x7a, 0x6e, 0xf4, 0x57, 0x7d, 0x82, ++ 0x4f, 0xf6, 0x0a, 0xff, 0x15, 0xed, 0x84, 0x9a, 0xc7, 0xeb, 0x67, 0xf0, ++ 0xfa, 0xc4, 0x0d, 0xbc, 0xce, 0xb5, 0xc0, 0xb9, 0xba, 0x04, 0xcb, 0x38, ++ 0x26, 0x57, 0x34, 0xef, 0xc3, 0xb6, 0xd0, 0xd5, 0x52, 0x82, 0x67, 0x8e, ++ 0xa7, 0x2d, 0xec, 0xdd, 0xc7, 0xcf, 0x1e, 0xf3, 0xf3, 0xe3, 0xad, 0x7b, ++ 0xef, 0xc8, 0xc2, 0x7d, 0xea, 0xfe, 0x13, 0x66, 0x86, 0xfb, 0x24, 0xad, ++ 0x7f, 0xf3, 0xff, 0xe1, 0x75, 0xc0, 0xc3, 0x77, 0x3b, 0x01, 0xff, 0x43, ++ 0xd8, 0x25, 0x58, 0x0e, 0xf1, 0x1f, 0x58, 0xea, 0x14, 0x96, 0x34, 0xf8, ++ 0x7e, 0xbf, 0xa4, 0xe9, 0x8f, 0xf9, 0x95, 0x28, 0x6f, 0x17, 0x5b, 0xe5, ++ 0x40, 0x1f, 0xec, 0x61, 0x2d, 0x30, 0x38, 0xf6, 0x7f, 0x9d, 0x54, 0xf5, ++ 0xac, 0x07, 0x00, 0x4b, 0x1b, 0xe1, 0x7c, 0x1d, 0x59, 0xa2, 0x30, 0xd9, ++ 0x4d, 0x6d, 0xff, 0x91, 0xbf, 0x25, 0xa0, 0x2d, 0xd8, 0x75, 0x8c, 0xfb, ++ 0x4d, 0xad, 0x26, 0x67, 0x16, 0xf2, 0x4f, 0xeb, 0xe8, 0xd0, 0xf3, 0xfa, ++ 0x5a, 0xfb, 0x62, 0x12, 0x3f, 0xe7, 0x9c, 0x6f, 0x66, 0x43, 0xe6, 0x25, ++ 0x0f, 0x09, 0xbb, 0x37, 0xc6, 0xc3, 0x9e, 0x41, 0x3e, 0xaa, 0x6d, 0x95, ++ 0xed, 0x5e, 0xa0, 0xfb, 0x85, 0x56, 0xd9, 0x69, 0x02, 0xff, 0xe6, 0xac, ++ 0xd3, 0x9d, 0x80, 0x67, 0x65, 0xce, 0x31, 0xcf, 0x82, 0xa9, 0x68, 0xe7, ++ 0x45, 0xdc, 0xa8, 0x7d, 0x4f, 0x65, 0x19, 0xfa, 0x27, 0x60, 0xa7, 0x1e, ++ 0x7c, 0x61, 0x50, 0x1e, 0xdf, 0x80, 0x7c, 0xf4, 0x50, 0xbb, 0xc4, 0x7e, ++ 0x06, 0x6b, 0x5e, 0xfe, 0xd2, 0xd0, 0xfb, 0x0a, 0x35, 0x62, 0x9e, 0x87, ++ 0xdb, 0x36, 0xee, 0x4f, 0x01, 0x3a, 0xae, 0x78, 0x25, 0x74, 0x5c, 0x8d, ++ 0xa8, 0x13, 0xab, 0xd1, 0xf9, 0x2f, 0x87, 0x92, 0x44, 0x7c, 0x98, 0xc6, ++ 0xd2, 0xd0, 0x2f, 0x01, 0xfe, 0x21, 0xbd, 0x60, 0x54, 0x58, 0xb7, 0x19, ++ 0xf8, 0xf5, 0xc1, 0x64, 0x77, 0x07, 0xc6, 0x1b, 0x9b, 0xc5, 0x77, 0x0c, ++ 0x40, 0x7f, 0x92, 0x1c, 0x76, 0x08, 0xbe, 0xdc, 0x2a, 0xea, 0x04, 0xfc, ++ 0x5b, 0x25, 0xda, 0xd7, 0xcb, 0x7c, 0xd5, 0x2b, 0x1b, 0xe0, 0xf9, 0x42, ++ 0xc5, 0x2b, 0xa3, 0x9d, 0x62, 0xd0, 0xe2, 0x3e, 0xc1, 0x64, 0xa7, 0xbb, ++ 0x1c, 0xf1, 0x0b, 0xeb, 0x3e, 0x86, 0xfb, 0x35, 0xcb, 0x85, 0x1e, 0x5c, ++ 0xae, 0xf9, 0x65, 0x5e, 0xbe, 0x9f, 0x01, 0xe6, 0x96, 0xfc, 0xb2, 0x29, ++ 0xcc, 0xdb, 0x18, 0x89, 0xeb, 0x7e, 0x55, 0x72, 0xf8, 0x54, 0xfc, 0x8e, ++ 0xc8, 0xa0, 0x3a, 0x5c, 0x5a, 0x77, 0x9d, 0x58, 0x77, 0xcd, 0x86, 0x23, ++ 0xfb, 0x31, 0x8c, 0x5b, 0xd5, 0x12, 0x3a, 0xae, 0x4e, 0xac, 0xbb, 0x4e, ++ 0xb7, 0x6e, 0x6d, 0x5f, 0xfb, 0xcf, 0x49, 0xba, 0x73, 0xc8, 0x37, 0xb8, ++ 0x6f, 0xf1, 0x67, 0x23, 0xf7, 0x13, 0x3e, 0x10, 0xf3, 0x68, 0xf7, 0xcd, ++ 0x23, 0xb8, 0x3e, 0xac, 0x05, 0xf0, 0x90, 0x6e, 0x35, 0x5e, 0xd9, 0xeb, ++ 0xe5, 0x7e, 0x9d, 0x0d, 0xbf, 0xc3, 0x73, 0xbf, 0x80, 0xf7, 0x7e, 0x41, ++ 0xef, 0x3a, 0xe6, 0x33, 0xa5, 0xc0, 0xb8, 0x55, 0x2f, 0xf0, 0x75, 0xb2, ++ 0x67, 0x43, 0xeb, 0x3f, 0x1f, 0x6c, 0x7d, 0xc4, 0x84, 0xf1, 0x95, 0x9e, ++ 0x2f, 0x96, 0x6f, 0x31, 0x92, 0x3f, 0x0a, 0x88, 0x33, 0xa1, 0xbf, 0xa8, ++ 0xe7, 0x8b, 0x15, 0x62, 0xdd, 0x2b, 0x74, 0xeb, 0xae, 0x75, 0x4b, 0x3a, ++ 0xb8, 0xb8, 0x9f, 0x3c, 0x18, 0xae, 0x96, 0x05, 0x48, 0xd7, 0x55, 0x5b, ++ 0x8c, 0x0c, 0xeb, 0x11, 0xf5, 0x70, 0x2d, 0x6b, 0x59, 0x52, 0x8e, 0x7c, ++ 0x36, 0x98, 0x5f, 0x39, 0x5d, 0x56, 0x88, 0xf9, 0x02, 0x70, 0xae, 0xa6, ++ 0x73, 0x7c, 0x37, 0x0a, 0xe7, 0xa8, 0x11, 0x82, 0x2f, 0xc7, 0xb1, 0x71, ++ 0x44, 0x97, 0x8a, 0xd8, 0x1b, 0xa2, 0x8b, 0xde, 0x8f, 0xdd, 0xbe, 0x7f, ++ 0x9c, 0x15, 0xe5, 0xfb, 0x72, 0xf7, 0x68, 0x8a, 0xdf, 0x35, 0xba, 0xeb, ++ 0x9f, 0x2f, 0x17, 0x7e, 0xf0, 0x8c, 0x0d, 0x8c, 0xda, 0x0b, 0x6d, 0x25, ++ 0xd6, 0xf1, 0x18, 0xa7, 0xf4, 0x18, 0x1c, 0x92, 0x4a, 0xf1, 0x56, 0xe4, ++ 0x78, 0xc0, 0x47, 0x5e, 0x87, 0xcc, 0x2a, 0xa1, 0xdf, 0xdf, 0x9e, 0xb6, ++ 0xde, 0x03, 0x78, 0xcf, 0x3d, 0x9c, 0x5f, 0x85, 0xf1, 0x7c, 0xde, 0x61, ++ 0x03, 0x9d, 0x77, 0xdb, 0xd9, 0x9d, 0x4f, 0xfb, 0xc0, 0x79, 0x07, 0xd2, ++ 0x63, 0xd3, 0x28, 0x1f, 0xed, 0xa0, 0xef, 0xcd, 0xc0, 0x3c, 0x64, 0x3f, ++ 0xfb, 0x7b, 0x72, 0xd7, 0xe3, 0xb9, 0x80, 0xfe, 0x9e, 0xd2, 0x7c, 0x9c, ++ 0x57, 0x82, 0x71, 0x68, 0xe7, 0x73, 0x85, 0x1d, 0x68, 0xe8, 0xc9, 0xb5, ++ 0x06, 0x9f, 0xef, 0x2e, 0x18, 0xc1, 0xe3, 0xf5, 0xa7, 0x92, 0x3e, 0xfb, ++ 0x31, 0xfa, 0xe1, 0x33, 0xb6, 0x1b, 0xe9, 0x7c, 0xc3, 0x0c, 0xa3, 0xff, ++ 0x3d, 0xac, 0x9f, 0xda, 0xd9, 0xad, 0xd0, 0xbe, 0x75, 0xcd, 0xe1, 0xa5, ++ 0x6b, 0xc3, 0x90, 0xae, 0xaf, 0x49, 0xb4, 0x6f, 0xbd, 0xbf, 0x77, 0x4d, ++ 0xdc, 0x62, 0xe4, 0xab, 0x76, 0xa3, 0x1d, 0xf7, 0xa1, 0xfb, 0xdb, 0xff, ++ 0x6d, 0x2f, 0xde, 0xf7, 0x6c, 0x91, 0xe8, 0x7b, 0x12, 0x75, 0x1d, 0x65, ++ 0x59, 0x5b, 0xa1, 0x9f, 0xbb, 0x31, 0xcf, 0x11, 0x7c, 0xde, 0x2b, 0x37, ++ 0x5a, 0x25, 0xf8, 0xd8, 0x08, 0x2b, 0xc5, 0xc3, 0x33, 0x6e, 0x32, 0x92, ++ 0x5d, 0x3c, 0x9f, 0x6c, 0xfd, 0x25, 0xfa, 0x37, 0x2b, 0x9c, 0x1b, 0x49, ++ 0x8e, 0xcf, 0xef, 0xd9, 0x69, 0xa2, 0xfa, 0xb9, 0xad, 0x12, 0x43, 0xd3, ++ 0xbf, 0x3f, 0x69, 0xdf, 0x1b, 0x88, 0x8f, 0xf3, 0x6f, 0x1e, 0x31, 0xa1, ++ 0x93, 0x5d, 0xd2, 0x7a, 0xc4, 0xd4, 0xf7, 0x77, 0xec, 0xfd, 0x05, 0x2f, ++ 0x04, 0xfe, 0x14, 0x07, 0x37, 0x9b, 0x30, 0x4e, 0x59, 0xb5, 0x51, 0xeb, ++ 0xf7, 0x99, 0x90, 0x4e, 0x2e, 0xe1, 0xff, 0xd4, 0xbe, 0x72, 0x8a, 0xfa, ++ 0x2b, 0xda, 0x24, 0xd2, 0x33, 0x2b, 0x5e, 0x92, 0xe9, 0x3c, 0xfb, 0xbe, ++ 0x8e, 0xb7, 0x4c, 0xc8, 0xc7, 0xb5, 0x5b, 0x24, 0x96, 0x98, 0x1a, 0x74, ++ 0x7f, 0x83, 0x14, 0xf2, 0x1d, 0x84, 0xa5, 0x8c, 0xf3, 0xc1, 0x52, 0xa1, ++ 0x67, 0x56, 0x32, 0xef, 0x53, 0xc9, 0x30, 0x6e, 0x65, 0x33, 0xaf, 0x23, ++ 0x60, 0x4f, 0x87, 0xd6, 0xe5, 0xae, 0xdc, 0x32, 0x87, 0xbe, 0xdb, 0xb4, ++ 0xac, 0x79, 0x68, 0x7d, 0xf3, 0xb0, 0xe0, 0xeb, 0x87, 0x30, 0x1e, 0xbc, ++ 0x15, 0xbf, 0x83, 0x14, 0x3a, 0xee, 0x61, 0xed, 0xbb, 0x5c, 0x3a, 0x7e, ++ 0x7e, 0x5c, 0xe3, 0xe7, 0x4c, 0x96, 0x89, 0xfc, 0xfc, 0x55, 0x91, 0x1a, ++ 0x95, 0x0d, 0xd7, 0xbf, 0x3a, 0xb2, 0xe2, 0xe6, 0xa1, 0xce, 0xb1, 0xf7, ++ 0x08, 0x3b, 0xac, 0xd9, 0xc1, 0xcb, 0x3e, 0x03, 0xd9, 0x11, 0xfd, 0xb8, ++ 0x8b, 0x6d, 0x57, 0x08, 0xde, 0xba, 0x9e, 0xcb, 0x26, 0xb4, 0x83, 0xe5, ++ 0xed, 0x97, 0x08, 0xef, 0x95, 0xed, 0x5d, 0x54, 0xc7, 0x71, 0x17, 0x73, ++ 0xd7, 0x20, 0x9e, 0xee, 0x6a, 0xb7, 0xda, 0x51, 0x8e, 0x2b, 0xfb, 0xb8, ++ 0x5e, 0x9a, 0xd9, 0x6e, 0xf6, 0x7a, 0x25, 0xbc, 0xdf, 0xd2, 0x84, 0xf4, ++ 0xec, 0xef, 0xe4, 0x75, 0x8b, 0x9e, 0x3d, 0x12, 0xf9, 0x2f, 0x9a, 0xbe, ++ 0x7a, 0x48, 0xe0, 0xef, 0x21, 0x81, 0xbf, 0x87, 0x40, 0x41, 0xa7, 0xe4, ++ 0xa2, 0x1f, 0xcb, 0xe3, 0xde, 0x87, 0x33, 0x36, 0xee, 0x8f, 0x81, 0xfb, ++ 0xb5, 0xe2, 0x7a, 0xcd, 0x81, 0x7d, 0x91, 0xe8, 0xef, 0xcd, 0x64, 0x97, ++ 0xee, 0x45, 0x7a, 0xc0, 0x7b, 0x18, 0xbe, 0x87, 0xbd, 0x14, 0x8a, 0xe7, ++ 0x3b, 0x19, 0x87, 0xe3, 0xce, 0x2d, 0xbc, 0xde, 0x59, 0x6f, 0xaf, 0xfa, ++ 0x47, 0x64, 0xcd, 0xa6, 0xfc, 0x23, 0xc4, 0x9d, 0x08, 0x4f, 0xcd, 0x96, ++ 0x50, 0x3c, 0xd7, 0xea, 0xe2, 0xed, 0x75, 0x23, 0xb8, 0x7d, 0xde, 0xa4, ++ 0xc3, 0x73, 0xa5, 0x9f, 0x59, 0xb3, 0x11, 0x0e, 0x55, 0x76, 0x78, 0x69, ++ 0x74, 0xaf, 0x82, 0xef, 0xed, 0xce, 0x91, 0x28, 0xbf, 0xda, 0xad, 0xa6, ++ 0x45, 0x0d, 0xb5, 0xff, 0xa8, 0xb5, 0xef, 0x09, 0xbf, 0x59, 0xeb, 0xcf, ++ 0x16, 0xe7, 0xab, 0x5b, 0xec, 0xcd, 0xb6, 0xe0, 0x38, 0xd8, 0x94, 0xcc, ++ 0xed, 0xff, 0x8a, 0x29, 0xb2, 0x07, 0xe9, 0x34, 0x10, 0x3f, 0xa4, 0xef, ++ 0xcb, 0x51, 0x0d, 0x81, 0xf8, 0x01, 0xe2, 0x86, 0xdf, 0x8c, 0x88, 0xe7, ++ 0x71, 0x04, 0x16, 0x74, 0xbc, 0x3b, 0x52, 0x66, 0x71, 0x71, 0x81, 0xf8, ++ 0xe1, 0x87, 0x49, 0xeb, 0x2b, 0x73, 0xa1, 0x5f, 0xb7, 0x85, 0xcb, 0xf9, ++ 0xc5, 0xc9, 0x30, 0x1f, 0x7e, 0xdf, 0x4b, 0x61, 0xe4, 0x5f, 0xd6, 0x6d, ++ 0x31, 0xd3, 0x39, 0xc0, 0x3a, 0xa0, 0x3b, 0xc5, 0x09, 0xed, 0xfc, 0x1c, ++ 0x83, 0xab, 0x5d, 0x2a, 0x43, 0x7a, 0x83, 0xff, 0xfd, 0xee, 0x88, 0x89, ++ 0x78, 0xae, 0x86, 0x19, 0xe3, 0x60, 0xdd, 0x73, 0xda, 0x38, 0x9f, 0xcf, ++ 0x29, 0xbd, 0x44, 0x7c, 0x72, 0x20, 0x9d, 0xaf, 0xf7, 0xb2, 0xa2, 0x26, ++ 0x0e, 0xe5, 0x8f, 0x6b, 0x7e, 0x38, 0x9e, 0xc3, 0x52, 0x83, 0xcf, 0x3f, ++ 0x80, 0x5c, 0xe2, 0xf8, 0xda, 0x76, 0x5e, 0x0f, 0xd4, 0xba, 0xf7, 0xeb, ++ 0x51, 0xa9, 0xa8, 0xd7, 0x3a, 0xfe, 0x3a, 0x6a, 0x09, 0xb4, 0x57, 0x46, ++ 0xf0, 0xf5, 0x6b, 0x7e, 0x9e, 0x1f, 0xfc, 0xbc, 0xd1, 0xdc, 0xcf, 0x39, ++ 0x86, 0xfe, 0xe7, 0x83, 0x9a, 0xdc, 0xd8, 0xf9, 0x3e, 0xda, 0x83, 0xc2, ++ 0xce, 0x30, 0xa9, 0x89, 0xf8, 0xbb, 0xd6, 0xd8, 0xf2, 0x76, 0x0c, 0xfa, ++ 0x4d, 0x5b, 0xf9, 0xbe, 0x3d, 0xdb, 0x6d, 0xc4, 0x6f, 0x9c, 0xb1, 0x86, ++ 0x0f, 0x5e, 0x6f, 0x8a, 0x81, 0x75, 0x5f, 0x7c, 0x5d, 0xa2, 0x7a, 0x34, ++ 0x7c, 0xfe, 0x09, 0xe0, 0xb3, 0x8b, 0x4b, 0x5b, 0x4e, 0xa3, 0x1f, 0xfd, ++ 0xd5, 0x56, 0x0b, 0xf9, 0x8f, 0x0f, 0x82, 0x8f, 0x38, 0x3d, 0x77, 0xb0, ++ 0x3c, 0x6a, 0x72, 0xab, 0x7d, 0x77, 0xaa, 0x81, 0xad, 0x25, 0x7f, 0x72, ++ 0x2d, 0x6b, 0xa2, 0x76, 0x95, 0xe0, 0xe3, 0x8b, 0x6d, 0x8d, 0x26, 0xca, ++ 0x9b, 0x79, 0x83, 0x9e, 0x1f, 0x3d, 0xd8, 0xef, 0x58, 0xa5, 0xe3, 0x3b, ++ 0x53, 0x72, 0x28, 0xbf, 0x35, 0x7c, 0x10, 0x4e, 0xfe, 0x5f, 0xff, 0x01, ++ 0xd9, 0x8e, 0xfb, 0x27, 0x80, 0xa7, 0xff, 0x4e, 0x0e, 0xc6, 0x87, 0xf0, ++ 0x2f, 0x5a, 0xf7, 0x86, 0x11, 0x3d, 0xfb, 0x8f, 0xd8, 0xc8, 0x5e, 0xfc, ++ 0x49, 0xf0, 0xd9, 0x79, 0x91, 0x37, 0x6e, 0x98, 0x2c, 0xd3, 0xfa, 0x0d, ++ 0x53, 0x78, 0x9b, 0xd5, 0xf9, 0xd6, 0x68, 0xa4, 0x1f, 0xe2, 0x1b, 0xeb, ++ 0xde, 0x37, 0x77, 0xbe, 0x35, 0x8e, 0x9f, 0xa7, 0xf6, 0x12, 0xde, 0x57, ++ 0xbe, 0x8a, 0x49, 0xf1, 0x20, 0x38, 0x5b, 0xac, 0x94, 0xdb, 0xd3, 0xfa, ++ 0x0d, 0x1f, 0x2c, 0xa2, 0xef, 0xf0, 0xd4, 0xed, 0x19, 0x80, 0x6b, 0x8c, ++ 0x29, 0x2e, 0x00, 0xd7, 0x70, 0xfc, 0x2f, 0x49, 0x3c, 0x1e, 0x34, 0x48, ++ 0xa1, 0xf1, 0x60, 0xdd, 0x6e, 0xd9, 0x15, 0x5c, 0xef, 0x05, 0xeb, 0xb9, ++ 0x0f, 0xf5, 0x4f, 0x92, 0x90, 0x03, 0xa6, 0xf8, 0x13, 0xd0, 0x2f, 0x19, ++ 0x99, 0xac, 0x92, 0xfd, 0x6a, 0x68, 0xe7, 0xf4, 0x34, 0x74, 0xf0, 0x16, ++ 0xde, 0xbf, 0x80, 0xe7, 0x3b, 0x8c, 0xf4, 0xfe, 0x41, 0xf7, 0x8b, 0x3d, ++ 0x35, 0x78, 0xff, 0xab, 0x54, 0x2b, 0xdf, 0x4f, 0xbe, 0xea, 0xa9, 0xc4, ++ 0xfe, 0x77, 0x47, 0xcb, 0x54, 0x4f, 0xf9, 0xdd, 0x0f, 0x56, 0x8c, 0x0d, ++ 0xd6, 0x9b, 0x0c, 0xe1, 0x04, 0x7a, 0xd6, 0x19, 0xfd, 0x09, 0x14, 0x37, ++ 0x1e, 0x31, 0x10, 0x7c, 0x75, 0x47, 0x2e, 0x27, 0xa4, 0xdb, 0x50, 0x1f, ++ 0x6d, 0x2c, 0xb5, 0x67, 0xa3, 0xde, 0xe1, 0xfa, 0x6e, 0xff, 0x68, 0xeb, ++ 0x72, 0xe4, 0x63, 0x0f, 0xbe, 0x37, 0x31, 0x30, 0xcf, 0x6b, 0xc2, 0xde, ++ 0x32, 0x5c, 0x6f, 0x12, 0x7a, 0x15, 0x2f, 0xf0, 0x79, 0xc5, 0x7a, 0xd7, ++ 0xb2, 0xb9, 0x22, 0x3e, 0xe6, 0x7c, 0x94, 0x2d, 0xfc, 0x3d, 0x88, 0x2b, ++ 0x26, 0x26, 0x4f, 0x1c, 0x1c, 0x57, 0xdc, 0xa8, 0x3f, 0x09, 0xf6, 0xe0, ++ 0xe8, 0x62, 0x09, 0xeb, 0x89, 0x14, 0x0f, 0xc6, 0xb5, 0x3b, 0x8f, 0x73, ++ 0x7d, 0xd0, 0xd0, 0xf1, 0xd0, 0xa7, 0xc8, 0xe7, 0x75, 0x9f, 0x98, 0xa9, ++ 0xbe, 0xea, 0xbb, 0x9d, 0x0f, 0x8d, 0xa5, 0x3a, 0x5b, 0xb7, 0xfb, 0x56, ++ 0xf4, 0x2b, 0xbe, 0xea, 0x7c, 0xf8, 0x56, 0xca, 0xf3, 0x49, 0x6b, 0x09, ++ 0x2e, 0x0f, 0xc2, 0x97, 0x84, 0xfe, 0xcb, 0x87, 0x09, 0x58, 0x0f, 0xba, ++ 0xaa, 0xe3, 0xc3, 0x04, 0xb2, 0xaf, 0xbb, 0x26, 0xae, 0xf7, 0x44, 0xa0, ++ 0x9f, 0x92, 0x7b, 0x27, 0x5e, 0x07, 0xbf, 0x81, 0xf8, 0x0f, 0xfc, 0x17, ++ 0xe2, 0xbf, 0x9d, 0x3d, 0xf9, 0x9a, 0xbf, 0x62, 0xc5, 0x79, 0x57, 0x1d, ++ 0x50, 0x5c, 0x88, 0x9f, 0x55, 0x07, 0xf2, 0x0f, 0x55, 0xa2, 0x1f, 0x71, ++ 0xb8, 0x38, 0x1f, 0xd5, 0xb8, 0x74, 0x38, 0x9f, 0xfc, 0x95, 0x3c, 0xf4, ++ 0x57, 0x6c, 0x01, 0xff, 0x45, 0x5b, 0x4f, 0x65, 0x32, 0xaf, 0x77, 0xe9, ++ 0xef, 0x0a, 0xa3, 0x3c, 0x81, 0xc4, 0x46, 0x73, 0xfe, 0x61, 0xe9, 0x21, ++ 0xfc, 0x53, 0xd3, 0xfa, 0x0e, 0xd9, 0xf5, 0x9a, 0x36, 0x39, 0xa4, 0x6e, ++ 0x50, 0x7b, 0xce, 0x9d, 0xac, 0xf0, 0x7d, 0x7e, 0x8d, 0x7f, 0x5a, 0x24, ++ 0x27, 0xf1, 0xc7, 0x76, 0xde, 0xd6, 0xb4, 0xed, 0xa4, 0xf5, 0xad, 0x34, ++ 0xb6, 0x10, 0xbd, 0x1b, 0xb6, 0x18, 0xf9, 0xfd, 0xad, 0xbc, 0xd5, 0xea, ++ 0xaa, 0x3d, 0x2c, 0xc6, 0x83, 0xf8, 0x38, 0x84, 0x97, 0x80, 0x0e, 0x33, ++ 0x4d, 0x5e, 0xfa, 0x6e, 0xc5, 0xc1, 0x54, 0xee, 0xbf, 0xeb, 0xe9, 0xf1, ++ 0x59, 0x32, 0xcf, 0x63, 0x1c, 0x3c, 0xe1, 0xbe, 0x19, 0xf9, 0xe5, 0x60, ++ 0x91, 0x7b, 0xac, 0x7d, 0x08, 0xfb, 0xe0, 0x61, 0xc5, 0x3c, 0x3e, 0x95, ++ 0x04, 0xbe, 0x5b, 0xf9, 0x79, 0x25, 0xfd, 0xb8, 0x53, 0xc9, 0x3c, 0x8e, ++ 0x8f, 0x8c, 0x0d, 0x3d, 0x3f, 0x3a, 0x60, 0x5f, 0x92, 0x39, 0xff, 0xcc, ++ 0x34, 0x0d, 0xfd, 0x3d, 0xbd, 0x9f, 0x69, 0xf2, 0xc4, 0xd8, 0x33, 0x06, ++ 0xe0, 0x8b, 0xa3, 0x95, 0x46, 0xfb, 0x3a, 0xe1, 0xb7, 0x8f, 0x08, 0xfa, ++ 0x5e, 0x42, 0xd5, 0x5d, 0x46, 0xf2, 0x0f, 0x8e, 0x32, 0xfb, 0x3b, 0x58, ++ 0x67, 0x38, 0x4b, 0xd3, 0xaf, 0x93, 0xb9, 0x5d, 0xd5, 0xf2, 0xdd, 0xae, ++ 0x0d, 0x2a, 0xdf, 0xd7, 0x19, 0x7c, 0xae, 0x91, 0xf4, 0xe4, 0x7c, 0x6d, ++ 0x3e, 0xfd, 0x79, 0x69, 0xe1, 0xd7, 0xcc, 0xd7, 0xf9, 0x35, 0xeb, 0x35, ++ 0xfd, 0x37, 0x86, 0x8d, 0x41, 0xfd, 0xd7, 0x22, 0xce, 0xb9, 0xad, 0xc9, ++ 0x0c, 0xf3, 0x06, 0xe7, 0xa3, 0xf4, 0xed, 0x7e, 0xb1, 0x8f, 0x81, 0xe7, ++ 0x75, 0xb0, 0x6d, 0xc8, 0xfc, 0x98, 0xf2, 0x36, 0x07, 0xbb, 0x4e, 0xbc, ++ 0x41, 0x75, 0x66, 0x27, 0xc2, 0xd8, 0x68, 0x9e, 0x97, 0xa3, 0xfc, 0xf5, ++ 0xaa, 0x61, 0xf2, 0xd7, 0x0d, 0x03, 0xf2, 0x38, 0x2f, 0x84, 0xbf, 0x34, ++ 0x7a, 0x5c, 0x10, 0xdf, 0x55, 0xd1, 0xd3, 0xe3, 0x0d, 0x81, 0x77, 0x6d, ++ 0x9f, 0x2d, 0x5c, 0xec, 0xb3, 0x9d, 0x56, 0xdc, 0x6f, 0x24, 0x53, 0x5d, ++ 0xd6, 0x79, 0x13, 0xff, 0x8e, 0x9a, 0x9f, 0xe2, 0xab, 0x86, 0x4c, 0xee, ++ 0x1f, 0x5d, 0x28, 0x93, 0x68, 0x5f, 0x1c, 0xe0, 0x1c, 0x65, 0x0e, 0xd2, ++ 0xeb, 0x17, 0x46, 0xf0, 0xb8, 0xea, 0xbb, 0x0b, 0x24, 0xca, 0x9b, 0x76, ++ 0xe1, 0x78, 0x8c, 0x9f, 0x5a, 0x24, 0xaa, 0xab, 0x5e, 0xe5, 0xeb, 0x35, ++ 0x21, 0x1f, 0x8d, 0x69, 0x5d, 0xf2, 0x24, 0xc9, 0xab, 0x87, 0x1d, 0x63, ++ 0x41, 0xdf, 0xa9, 0x98, 0x6d, 0xe1, 0x76, 0x71, 0x80, 0x6e, 0xda, 0xba, ++ 0x07, 0xec, 0x56, 0x8c, 0x87, 0xeb, 0xe1, 0x38, 0x6a, 0x71, 0x3c, 0xda, ++ 0xc1, 0x59, 0xc2, 0xee, 0xe9, 0xcf, 0x21, 0x8d, 0x65, 0xbd, 0xe5, 0x18, ++ 0x57, 0x56, 0x3b, 0x25, 0x07, 0xee, 0xdb, 0xeb, 0xe9, 0x3d, 0x77, 0xe1, ++ 0x84, 0x77, 0xe2, 0xff, 0x01, 0x3a, 0x9f, 0x4b, 0x76, 0x1f, 0x21, 0xfd, ++ 0xd6, 0x7b, 0x79, 0x01, 0xe6, 0x3f, 0x0f, 0x66, 0x7e, 0x3e, 0x0a, 0xed, ++ 0x65, 0xed, 0x30, 0x7c, 0xfb, 0x3b, 0xc1, 0xb7, 0xda, 0xf7, 0x59, 0x1c, ++ 0x63, 0xd5, 0x46, 0xfc, 0x3e, 0xc9, 0x8f, 0x12, 0xdd, 0x9f, 0x20, 0x7e, ++ 0xfb, 0x0d, 0xdf, 0x46, 0x8e, 0x63, 0xf8, 0x7c, 0xdf, 0x7f, 0xaf, 0x91, ++ 0x90, 0x2e, 0x8c, 0xe8, 0x31, 0x9c, 0x9c, 0x9c, 0x12, 0xf3, 0x9d, 0x4a, ++ 0x16, 0xdf, 0x25, 0x8c, 0xe3, 0xfb, 0x24, 0xcb, 0xb1, 0x8f, 0xf2, 0x6a, ++ 0xf4, 0x8e, 0xa4, 0xfc, 0x42, 0xf6, 0x8d, 0xed, 0x4b, 0x35, 0xec, 0x7e, ++ 0x37, 0x07, 0xf5, 0xd6, 0xc5, 0xae, 0x03, 0x39, 0xa6, 0x20, 0x3a, 0x9e, ++ 0x5f, 0x03, 0xf2, 0x8e, 0xf6, 0xa3, 0x63, 0x5f, 0x82, 0x6a, 0x0b, 0xe6, ++ 0x33, 0x03, 0xf1, 0x97, 0x24, 0x69, 0xfc, 0xa6, 0x08, 0xbb, 0x18, 0xca, ++ 0x77, 0xe7, 0x91, 0xef, 0xb2, 0xb1, 0xfd, 0x30, 0x32, 0x1d, 0xf5, 0xee, ++ 0xf6, 0xa3, 0x91, 0xb7, 0xe0, 0x7c, 0xbb, 0x78, 0x3b, 0xc0, 0x9f, 0xed, ++ 0x32, 0x8d, 0x83, 0x78, 0x67, 0xcc, 0xfc, 0x88, 0x60, 0xf8, 0x9e, 0x24, ++ 0xf8, 0x2e, 0xb4, 0xf0, 0x79, 0x18, 0xeb, 0x1b, 0x53, 0x35, 0x3e, 0xf8, ++ 0x7e, 0xe3, 0x70, 0x7c, 0x6b, 0x4c, 0xe1, 0xf5, 0x84, 0x21, 0x7c, 0xab, ++ 0xad, 0xb7, 0x05, 0xbf, 0x87, 0x83, 0xfe, 0x7d, 0xa7, 0x99, 0xbe, 0x87, ++ 0x83, 0xf9, 0xe6, 0xe8, 0x20, 0xb9, 0x48, 0x4d, 0xe1, 0xf2, 0x30, 0x49, ++ 0x7c, 0xff, 0x66, 0x0a, 0xf3, 0xd0, 0xf7, 0x00, 0x27, 0x89, 0xef, 0xe0, ++ 0x4c, 0x51, 0x98, 0x4f, 0x89, 0xc1, 0x7d, 0x2e, 0x9f, 0xcc, 0xf7, 0x65, ++ 0xf9, 0x79, 0x86, 0x02, 0xc1, 0xbf, 0x93, 0x14, 0x5f, 0x17, 0xd6, 0x39, ++ 0x4c, 0x11, 0xfb, 0x32, 0x85, 0xac, 0x97, 0xc6, 0x4d, 0x67, 0x7e, 0x6a, ++ 0x9d, 0xcc, 0x4e, 0xe7, 0x14, 0x8a, 0x99, 0x83, 0xda, 0xc9, 0x16, 0xdf, ++ 0x9d, 0x98, 0x76, 0xc9, 0x6e, 0x69, 0xa1, 0xfa, 0x3f, 0x5f, 0x82, 0x12, ++ 0x7d, 0xd6, 0x22, 0xce, 0x43, 0x0c, 0x41, 0xb7, 0xc0, 0xfa, 0x15, 0xfa, ++ 0xee, 0x0d, 0xf1, 0xa5, 0x8c, 0xe7, 0x61, 0x86, 0xfe, 0x6e, 0x4a, 0x65, ++ 0x0a, 0x97, 0x73, 0xfa, 0x38, 0x07, 0xd2, 0xf7, 0x02, 0xa3, 0xfc, 0x14, ++ 0x7e, 0xdf, 0x0c, 0x5f, 0x32, 0x55, 0x61, 0x15, 0x58, 0x77, 0x74, 0x9b, ++ 0xc2, 0x2c, 0xe1, 0x00, 0xef, 0xf6, 0xb7, 0x0d, 0x24, 0xbf, 0x9d, 0x7d, ++ 0xaa, 0x17, 0xeb, 0x40, 0x1d, 0xb1, 0xe2, 0xb9, 0x2f, 0x18, 0xd5, 0xbb, ++ 0x4e, 0x72, 0x72, 0xf9, 0x44, 0xd3, 0x82, 0x75, 0x12, 0xda, 0x7a, 0xf5, ++ 0x78, 0x28, 0x84, 0xf9, 0x30, 0x3f, 0x36, 0x49, 0x81, 0xc8, 0x92, 0xf0, ++ 0xe8, 0xa3, 0xf7, 0xdd, 0xce, 0xf8, 0x39, 0x8d, 0x22, 0xa6, 0xd2, 0x07, ++ 0x56, 0x6e, 0xc7, 0x8f, 0x27, 0x93, 0x5e, 0xf7, 0x53, 0x9c, 0x54, 0x02, ++ 0x71, 0x12, 0xea, 0x75, 0x83, 0xc5, 0x43, 0xf8, 0x28, 0xc3, 0xe4, 0xca, ++ 0x44, 0xbe, 0xbf, 0x11, 0x09, 0xf3, 0x14, 0x36, 0x4b, 0xec, 0x38, 0xee, ++ 0x57, 0xa4, 0xf1, 0xf5, 0x6a, 0xf3, 0x17, 0x02, 0x23, 0xe0, 0xb9, 0xbd, ++ 0x32, 0xb1, 0x5e, 0x4c, 0x81, 0x1e, 0x8f, 0xe1, 0xfb, 0x1e, 0x91, 0x54, ++ 0x38, 0x5c, 0x6a, 0xe7, 0xdf, 0x09, 0x4a, 0xa0, 0xef, 0x04, 0xdd, 0x28, ++ 0x5e, 0xfb, 0x13, 0xf8, 0x77, 0x21, 0x23, 0xef, 0xf7, 0x5f, 0xfc, 0x7e, ++ 0x7e, 0x60, 0xff, 0xc7, 0x81, 0xdf, 0x0d, 0x8a, 0x0c, 0x7c, 0x8f, 0xd2, ++ 0x81, 0xe7, 0x4c, 0x30, 0x7f, 0xe7, 0x53, 0xce, 0x07, 0xfb, 0xcd, 0x77, ++ 0xa7, 0x2c, 0xad, 0x4e, 0x99, 0x18, 0xa8, 0x97, 0x63, 0x6e, 0xa6, 0xa2, ++ 0x5f, 0xa1, 0xaf, 0x97, 0x43, 0xf4, 0x9d, 0x0b, 0x3a, 0xdf, 0xac, 0xd5, ++ 0x7b, 0xbc, 0xea, 0x9d, 0xab, 0xe2, 0xb9, 0xb9, 0x85, 0x71, 0x16, 0x3a, ++ 0x4f, 0x9b, 0x6b, 0x19, 0x95, 0x87, 0x76, 0x2b, 0x23, 0xd1, 0x5d, 0x9d, ++ 0x42, 0x75, 0x1f, 0x5b, 0x6e, 0xa1, 0x49, 0x14, 0xef, 0x44, 0x57, 0x44, ++ 0x80, 0xcf, 0xad, 0xcc, 0x39, 0x19, 0xf1, 0x1c, 0xa8, 0xd7, 0xe3, 0xdf, ++ 0x4f, 0x1a, 0x38, 0xcf, 0x94, 0xc0, 0xe8, 0xfc, 0x9f, 0xd5, 0xcc, 0xeb, ++ 0x19, 0x9f, 0x01, 0xb9, 0xc0, 0xef, 0x17, 0x81, 0x54, 0xa9, 0x58, 0xd7, ++ 0xc2, 0x9e, 0x28, 0xa1, 0xfa, 0xc7, 0xa7, 0xa2, 0x2d, 0x0e, 0x3c, 0x87, ++ 0x60, 0x46, 0x78, 0xad, 0x01, 0x78, 0x1b, 0x2d, 0xa2, 0xee, 0x47, 0x57, ++ 0x77, 0xd9, 0x68, 0x33, 0xd0, 0xf7, 0x38, 0x1b, 0x59, 0x38, 0x9d, 0xe7, ++ 0x9e, 0x15, 0xe6, 0xfe, 0x1e, 0xae, 0xff, 0xb1, 0x88, 0x62, 0x3a, 0x2f, ++ 0x9d, 0xb5, 0x6d, 0x5a, 0x12, 0xf9, 0x83, 0xb0, 0xde, 0x69, 0xda, 0x7a, ++ 0x0d, 0x83, 0xeb, 0x10, 0xb1, 0xfe, 0x0f, 0x9f, 0xd3, 0xd7, 0xff, 0x69, ++ 0xeb, 0xc2, 0xe3, 0xeb, 0xf8, 0x5e, 0xbb, 0xc0, 0x97, 0xb6, 0x4e, 0xbb, ++ 0x76, 0xde, 0xc7, 0xa9, 0x84, 0x9c, 0xf7, 0xd1, 0xd6, 0xff, 0x4c, 0x38, ++ 0x5f, 0xa7, 0x11, 0x77, 0xe2, 0xd3, 0xe8, 0x59, 0x15, 0xf5, 0x83, 0x7e, ++ 0x7d, 0x1a, 0x3f, 0xfc, 0x3f, 0xdd, 0xfb, 0x35, 0x6d, 0x60, 0x5c, 0x00, ++ 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 xsem_int_table_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xbb, 0x26, ++ 0xcb, 0xc0, 0xf0, 0xa3, 0x1e, 0x81, 0x59, 0x64, 0x18, 0x18, 0x26, 0xf1, ++ 0xa1, 0x8a, 0xd1, 0x12, 0xcf, 0xe0, 0x66, 0x60, 0x78, 0x04, 0xc4, 0x2c, ++ 0x3c, 0x0c, 0x0c, 0x85, 0x40, 0x7b, 0x23, 0x80, 0x74, 0x24, 0x10, 0x1f, ++ 0x01, 0xe2, 0xa3, 0x40, 0xac, 0xc2, 0xcb, 0xc0, 0x10, 0x0b, 0xc4, 0x71, ++ 0x40, 0x3c, 0x07, 0xc8, 0x9f, 0x0b, 0xc4, 0xa5, 0x40, 0x9c, 0x05, 0x75, ++ 0x63, 0x2b, 0x0b, 0x03, 0x43, 0x3b, 0x10, 0x77, 0x02, 0x71, 0x37, 0x10, ++ 0xeb, 0x30, 0x33, 0x30, 0xe8, 0x32, 0x13, 0x6f, 0x7f, 0xb1, 0x08, 0x03, ++ 0xc3, 0x13, 0x09, 0x04, 0x5f, 0x51, 0x12, 0x68, 0xa7, 0x34, 0xfd, 0xfc, ++ 0x3f, 0xd8, 0xf0, 0x0c, 0x7d, 0xfa, 0xda, 0xc7, 0x6d, 0xc0, 0xc0, 0xb0, ++ 0xd4, 0x02, 0xc1, 0x17, 0x03, 0xb2, 0x97, 0x59, 0xa0, 0xaa, 0x59, 0x6e, ++ 0x81, 0xdf, 0x8c, 0x15, 0x68, 0xf2, 0x2b, 0xd1, 0xf8, 0xab, 0xf0, 0xe8, ++ 0xdf, 0xa7, 0x87, 0xca, 0xd7, 0xd3, 0x40, 0x73, 0x9f, 0x16, 0x03, 0x83, ++ 0x15, 0x52, 0x98, 0xe8, 0x6b, 0xe0, 0x77, 0x0b, 0x3a, 0xce, 0x04, 0xea, ++ 0xcd, 0x02, 0x62, 0x00, 0x9f, 0x30, 0x90, 0xcd, 0x68, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 xsem_pram_data_e1[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe5, 0x7d, ++ 0x0b, 0x78, 0x54, 0xd5, 0xb5, 0xf0, 0x3e, 0x73, 0x1e, 0xf3, 0xc8, 0xcc, ++ 0x64, 0x12, 0x42, 0x08, 0x10, 0xc2, 0x09, 0x2f, 0xa3, 0x0d, 0x38, 0x21, ++ 0x21, 0x05, 0x8a, 0xed, 0x10, 0x20, 0xa2, 0x45, 0x8d, 0x8f, 0x2a, 0x54, ++ 0xd4, 0x09, 0x8f, 0x24, 0xe4, 0x35, 0x01, 0x1f, 0x17, 0x6b, 0xdb, 0x0c, ++ 0x04, 0x23, 0x20, 0x68, 0xb0, 0x58, 0xa2, 0x46, 0x3b, 0x41, 0x50, 0xf0, ++ 0x06, 0x1d, 0x68, 0x90, 0x20, 0x01, 0x07, 0xb0, 0x1a, 0x7a, 0x7d, 0x04, ++ 0xaf, 0xf5, 0xd1, 0xf6, 0x7a, 0x83, 0x52, 0x40, 0x08, 0x24, 0xe2, 0x0b, ++ 0xbd, 0x6d, 0xfd, 0xf7, 0x5a, 0x7b, 0x9f, 0xcc, 0x39, 0x27, 0x33, 0x40, ++ 0xff, 0xf6, 0xff, 0x6f, 0xff, 0xfb, 0xc7, 0xaf, 0x3d, 0xec, 0x73, 0xf6, ++ 0x63, 0xed, 0xf5, 0xda, 0x6b, 0xad, 0xbd, 0xf6, 0x1e, 0x99, 0x0c, 0x24, ++ 0xd2, 0x0f, 0x08, 0xf9, 0x16, 0xfe, 0xe8, 0x73, 0xa6, 0x44, 0x08, 0x7d, ++ 0xd5, 0xf7, 0x74, 0xbe, 0x42, 0x54, 0x92, 0x48, 0x48, 0x7d, 0x0e, 0x2d, ++ 0xa7, 0x10, 0x92, 0x3e, 0x8a, 0x84, 0x88, 0x40, 0x48, 0x41, 0x0d, 0x2d, ++ 0xe7, 0x11, 0xf2, 0xd0, 0x6d, 0x24, 0x64, 0xcd, 0x24, 0x64, 0xff, 0xeb, ++ 0x16, 0xfc, 0xbe, 0xca, 0xcf, 0xca, 0xb4, 0x5d, 0xd8, 0x72, 0x39, 0xfd, ++ 0x3e, 0x9a, 0xbd, 0x7f, 0x2c, 0x8b, 0xb6, 0xa3, 0xef, 0x1f, 0x3b, 0x27, ++ 0x62, 0xbb, 0xe0, 0x2c, 0x12, 0xda, 0x4c, 0xcb, 0x49, 0x84, 0xf6, 0x36, ++ 0x92, 0xd0, 0x21, 0xfc, 0xf8, 0x2c, 0xf0, 0x36, 0xd8, 0xc7, 0xd2, 0xfa, ++ 0x4d, 0xb7, 0x59, 0x88, 0x55, 0x25, 0xe4, 0x51, 0x3a, 0x0c, 0x99, 0x44, ++ 0x88, 0x8b, 0xf8, 0xec, 0x84, 0x36, 0x5d, 0x35, 0x8a, 0xf5, 0xf7, 0xc8, ++ 0x2c, 0xcb, 0x33, 0xa2, 0x00, 0x1f, 0x23, 0x69, 0xf3, 0x69, 0x79, 0xf5, ++ 0xf4, 0x92, 0xfc, 0xd5, 0xb4, 0xb4, 0x46, 0x66, 0x70, 0x35, 0xce, 0x29, ++ 0x79, 0x26, 0x48, 0xfb, 0xf7, 0x58, 0x46, 0xe2, 0x3c, 0x68, 0xbd, 0xc7, ++ 0x9c, 0xb4, 0xde, 0xc3, 0xef, 0x97, 0x92, 0xd5, 0xb4, 0xdd, 0x86, 0xb9, ++ 0x16, 0xa1, 0x24, 0x9b, 0xd6, 0x6b, 0x56, 0x66, 0x87, 0xb2, 0xa3, 0xf3, ++ 0xd7, 0x9e, 0x73, 0x89, 0xc4, 0xdb, 0x05, 0xad, 0x96, 0x89, 0xf0, 0xf4, ++ 0xf1, 0x67, 0x44, 0x81, 0xe7, 0x2f, 0xa6, 0x58, 0x70, 0x9c, 0xb5, 0x35, ++ 0x0c, 0x1f, 0xb4, 0x9e, 0x62, 0x49, 0x23, 0xa4, 0xb5, 0xf3, 0x80, 0xcd, ++ 0x4f, 0xfb, 0x5b, 0x5b, 0xd9, 0x7a, 0xb8, 0x90, 0x7e, 0x7f, 0x70, 0x94, ++ 0xc5, 0x4b, 0x31, 0x48, 0x1e, 0xec, 0x3c, 0x60, 0xbf, 0x84, 0x8e, 0x1f, ++ 0xcc, 0xb3, 0x78, 0x47, 0xd3, 0xda, 0xe9, 0x52, 0x44, 0xf0, 0x38, 0xa3, ++ 0xe3, 0x4d, 0x22, 0x14, 0xf0, 0x09, 0xb4, 0x9e, 0x77, 0x87, 0x4d, 0x75, ++ 0xf6, 0xaf, 0x4f, 0xfb, 0x9d, 0x0a, 0xf3, 0x5e, 0x43, 0xf1, 0x2e, 0x66, ++ 0x46, 0xdb, 0x8d, 0x07, 0x38, 0x69, 0xbb, 0xb5, 0x94, 0x64, 0x61, 0x3a, ++ 0xee, 0x2f, 0x65, 0xef, 0x21, 0x18, 0xf7, 0x97, 0xd7, 0x24, 0x0b, 0x41, ++ 0x12, 0xad, 0x77, 0x15, 0x00, 0x09, 0xf5, 0xe6, 0x5a, 0x48, 0x84, 0xd6, ++ 0x23, 0x52, 0xaf, 0x8d, 0xd0, 0x71, 0x56, 0x4f, 0x79, 0xdb, 0x36, 0x9a, ++ 0xd6, 0x5f, 0x5d, 0x64, 0x81, 0x49, 0x90, 0xb5, 0x5e, 0xed, 0xbb, 0xd7, ++ 0x4e, 0xa0, 0xbf, 0x19, 0x63, 0x0e, 0x8d, 0x02, 0xba, 0x5e, 0x45, 0xbf, ++ 0xc3, 0x3c, 0xb2, 0x1f, 0x99, 0x0d, 0xf3, 0x7e, 0x78, 0xba, 0x42, 0x00, ++ 0xff, 0xbf, 0x14, 0x68, 0x3d, 0x8a, 0xe2, 0xc6, 0x62, 0xe5, 0x87, 0x00, ++ 0x9f, 0xab, 0x86, 0x78, 0xe0, 0x3d, 0x7d, 0xfa, 0x62, 0xe1, 0xb5, 0x4d, ++ 0xb0, 0x21, 0x1c, 0x64, 0xcd, 0x06, 0x42, 0xf2, 0x09, 0x80, 0x80, 0x7f, ++ 0xab, 0x7d, 0xa1, 0x95, 0x23, 0x80, 0xbf, 0xf2, 0x88, 0x17, 0xca, 0xe9, ++ 0x5e, 0xda, 0xde, 0xd9, 0xbf, 0x7d, 0x97, 0x60, 0x45, 0xba, 0x34, 0xca, ++ 0xc1, 0xc1, 0x80, 0xbf, 0x78, 0xf4, 0x1b, 0xc5, 0xf1, 0xb9, 0x3a, 0x6b, ++ 0x89, 0x1d, 0xe8, 0x41, 0x48, 0x43, 0x5a, 0xd1, 0x58, 0x42, 0xd6, 0x03, ++ 0x9e, 0x60, 0x50, 0xc9, 0xaf, 0x5e, 0xef, 0x8a, 0xd6, 0x5f, 0x29, 0x30, ++ 0xfc, 0xac, 0x93, 0x89, 0x4f, 0xa0, 0xf3, 0x4b, 0xc8, 0x53, 0x42, 0xcb, ++ 0x28, 0x9e, 0x2d, 0xd9, 0x9e, 0x39, 0x30, 0x5f, 0xa7, 0x5f, 0x21, 0x57, ++ 0xd2, 0xf2, 0x2a, 0x21, 0x38, 0x58, 0x04, 0xba, 0x8c, 0x55, 0xc8, 0x66, ++ 0x15, 0xf9, 0xc2, 0x3e, 0x9a, 0x96, 0xd7, 0x5e, 0x9a, 0xec, 0x05, 0xfe, ++ 0xab, 0x17, 0xc2, 0x69, 0x12, 0x7c, 0xbf, 0x86, 0x7e, 0xa7, 0x5d, 0x1e, ++ 0x28, 0x1a, 0x3f, 0x07, 0xf8, 0xb3, 0xc9, 0xab, 0x20, 0x3f, 0x53, 0xfe, ++ 0x39, 0x04, 0xf8, 0x5e, 0xeb, 0x4f, 0x26, 0xab, 0x55, 0xfc, 0xde, 0x89, ++ 0xed, 0x9d, 0xa3, 0x3c, 0x56, 0xc4, 0x04, 0x85, 0x87, 0xe2, 0x65, 0x00, ++ 0xe5, 0x25, 0xc0, 0x6b, 0xce, 0x75, 0xf5, 0x57, 0x8d, 0x04, 0xfa, 0x4c, ++ 0xb0, 0x78, 0x80, 0x42, 0xab, 0x85, 0xa9, 0xea, 0x7c, 0x90, 0x9f, 0x24, ++ 0x9b, 0x07, 0xc6, 0x97, 0x27, 0xdc, 0x80, 0xf4, 0x93, 0x07, 0x26, 0x0b, ++ 0x44, 0x47, 0xef, 0x9f, 0x03, 0xbd, 0x29, 0x9e, 0x6a, 0xd5, 0xa2, 0x9f, ++ 0xc3, 0xbc, 0x9e, 0xc8, 0xfb, 0x28, 0x69, 0x34, 0xad, 0xbf, 0x26, 0xe7, ++ 0xc5, 0x46, 0xa0, 0xd3, 0x93, 0xf7, 0xd8, 0x90, 0x7e, 0x4f, 0x4e, 0xe8, ++ 0x5c, 0x0c, 0x72, 0xf5, 0xd8, 0xb9, 0xdc, 0xf7, 0xfd, 0x28, 0x97, 0x8a, ++ 0x77, 0x33, 0xed, 0xe7, 0xa9, 0x9c, 0x63, 0x99, 0x84, 0x0e, 0xf8, 0xc8, ++ 0xcc, 0x8f, 0x92, 0x00, 0x7f, 0xc3, 0x46, 0x35, 0xdc, 0x49, 0xdc, 0xf4, ++ 0x39, 0xab, 0xb7, 0x96, 0x8c, 0xa3, 0xf0, 0x91, 0x86, 0xa2, 0x05, 0x99, ++ 0xc8, 0x27, 0xc2, 0x8d, 0x14, 0xaf, 0xc3, 0x96, 0x2a, 0x44, 0xb5, 0x31, ++ 0x5a, 0x7e, 0x4b, 0xe0, 0x3b, 0xf1, 0x85, 0xb3, 0x59, 0xd9, 0x49, 0xe7, ++ 0x33, 0x8c, 0xd3, 0xb9, 0xb5, 0xf3, 0x6d, 0x5b, 0x31, 0xf4, 0x37, 0x97, ++ 0x44, 0xc6, 0xb8, 0xf1, 0xbd, 0x2d, 0x35, 0x39, 0xaa, 0x67, 0x86, 0xe5, ++ 0x91, 0x48, 0x2a, 0xed, 0xff, 0xb1, 0x85, 0xaf, 0xa2, 0x9c, 0x3f, 0x79, ++ 0x59, 0xaa, 0x97, 0xc9, 0x79, 0x1a, 0xf2, 0x4b, 0x06, 0xef, 0x27, 0x1d, ++ 0xea, 0x53, 0xfd, 0x92, 0x66, 0x23, 0xc1, 0x04, 0xfa, 0x1c, 0xd6, 0xd1, ++ 0x7b, 0x03, 0xc0, 0x35, 0x2c, 0xeb, 0xd8, 0x5c, 0x80, 0x73, 0xff, 0x1b, ++ 0xaf, 0x0a, 0x40, 0xb7, 0xa7, 0xc6, 0xa5, 0xaa, 0xa0, 0x8f, 0x92, 0xfc, ++ 0x9d, 0xa4, 0x8b, 0xd2, 0x7d, 0x58, 0xf6, 0xbb, 0xf7, 0x41, 0x3d, 0x97, ++ 0x33, 0x94, 0x56, 0x94, 0x8d, 0xf5, 0xff, 0x82, 0xed, 0x4c, 0xf0, 0x3f, ++ 0xa9, 0xfa, 0x36, 0x01, 0xde, 0xb6, 0x09, 0x35, 0x87, 0x80, 0x3e, 0xc1, ++ 0x1c, 0x8b, 0x97, 0xd1, 0x9b, 0xe9, 0xc1, 0x35, 0x77, 0xa5, 0x86, 0x40, ++ 0x8f, 0x0c, 0x73, 0xfc, 0xf1, 0x7a, 0x71, 0x04, 0xf2, 0x01, 0x21, 0xa9, ++ 0x14, 0x3e, 0x0f, 0x41, 0x39, 0xa9, 0x17, 0x22, 0xb6, 0x91, 0xd0, 0xee, ++ 0x5e, 0xd6, 0x6e, 0x38, 0x09, 0x09, 0x80, 0xe7, 0x61, 0x59, 0xc1, 0xc5, ++ 0xa2, 0x1b, 0xea, 0xfb, 0x85, 0x22, 0x57, 0xff, 0x71, 0x5b, 0x41, 0x23, ++ 0x82, 0x7c, 0x50, 0x4e, 0x07, 0x7e, 0xdd, 0xae, 0x90, 0xf2, 0xa2, 0x18, ++ 0x72, 0xf0, 0x32, 0x97, 0xe7, 0x7a, 0x81, 0xcc, 0x46, 0x7e, 0x26, 0xd2, ++ 0x5f, 0x81, 0x6f, 0x86, 0x27, 0x31, 0xbe, 0xd1, 0xca, 0x4f, 0x01, 0x3c, ++ 0x74, 0xdc, 0xed, 0xaf, 0x24, 0xff, 0x30, 0x9b, 0xc2, 0xf3, 0xab, 0xa5, ++ 0x23, 0x72, 0x44, 0x0a, 0xcf, 0x43, 0xd0, 0x2e, 0x86, 0xdc, 0xac, 0xe5, ++ 0x72, 0xe0, 0xe8, 0x20, 0x41, 0x81, 0xe2, 0x75, 0xff, 0x6f, 0x7f, 0x6b, ++ 0x07, 0xbc, 0x6d, 0xb7, 0x90, 0x32, 0xa8, 0x3f, 0x35, 0x2b, 0x6c, 0xeb, ++ 0xe2, 0x74, 0x05, 0x7a, 0x2c, 0x24, 0xac, 0xff, 0xa6, 0xec, 0x8d, 0x36, ++ 0xd4, 0x17, 0x42, 0x16, 0xf2, 0xdd, 0xc2, 0x89, 0x8a, 0xcf, 0x3e, 0x0e, ++ 0xe4, 0x6f, 0xb9, 0xe0, 0xa7, 0xed, 0xd3, 0x3c, 0x4c, 0x2f, 0xbb, 0xbc, ++ 0x4a, 0x08, 0xf4, 0xb2, 0x2b, 0x2d, 0x28, 0x58, 0x28, 0x3c, 0x6a, 0x36, ++ 0xf1, 0x6c, 0xcc, 0x64, 0xdd, 0x05, 0x29, 0xfe, 0xe6, 0xc1, 0x3f, 0x80, ++ 0xd1, 0x25, 0x56, 0x7f, 0xcd, 0xda, 0xa4, 0xd0, 0x6a, 0xfa, 0x7d, 0x5e, ++ 0x36, 0x15, 0x34, 0xc0, 0x1b, 0xc5, 0x95, 0x85, 0x8e, 0xbb, 0x80, 0xb0, ++ 0x79, 0xce, 0xf3, 0xd6, 0x2f, 0x06, 0xfa, 0x11, 0x52, 0x64, 0x01, 0x7c, ++ 0xae, 0xf6, 0x30, 0xfa, 0x34, 0xc1, 0x38, 0x74, 0x2a, 0x4d, 0xe9, 0xac, ++ 0x9f, 0xb5, 0x77, 0x93, 0xd0, 0x72, 0xe0, 0x23, 0x0f, 0x6b, 0x3f, 0x0a, ++ 0x9a, 0x50, 0xba, 0x8d, 0xca, 0x7b, 0xf1, 0x5f, 0x04, 0xda, 0x6f, 0x3a, ++ 0x6f, 0x07, 0x72, 0x0f, 0xed, 0x12, 0xd2, 0x42, 0x36, 0x0b, 0x6d, 0xa7, ++ 0xd6, 0x58, 0x08, 0xc2, 0x27, 0x45, 0x0e, 0x09, 0x40, 0xf7, 0xb1, 0xa9, ++ 0x2a, 0xc0, 0xd3, 0x94, 0xe6, 0xfd, 0xf7, 0x59, 0x00, 0xff, 0x6c, 0xc9, ++ 0xbb, 0x91, 0x7e, 0x1e, 0x05, 0x70, 0xd0, 0x7e, 0x9a, 0x6a, 0x2c, 0x3e, ++ 0xd4, 0x17, 0x79, 0x4a, 0x33, 0xe8, 0xe9, 0xd5, 0x3e, 0xa6, 0xe7, 0x35, ++ 0x7c, 0x65, 0xf2, 0x71, 0xd3, 0xbd, 0x11, 0x81, 0xce, 0x9d, 0x64, 0x52, ++ 0x3d, 0x89, 0x78, 0xf2, 0x45, 0xec, 0x1e, 0x28, 0x67, 0x33, 0x78, 0x32, ++ 0xf3, 0xd8, 0xbc, 0xfa, 0xe0, 0x1f, 0xab, 0x84, 0x96, 0xd3, 0xc6, 0xe9, ++ 0xb6, 0x08, 0x81, 0x7a, 0x1a, 0x1e, 0x4a, 0x78, 0x7f, 0x25, 0x7c, 0x1e, ++ 0xce, 0xb4, 0xd0, 0x4a, 0x09, 0xe0, 0xce, 0x63, 0x70, 0xd3, 0x75, 0x19, ++ 0xe1, 0x49, 0xcf, 0x56, 0x9a, 0x41, 0x0e, 0xd2, 0xd3, 0x58, 0x7f, 0x2a, ++ 0xc5, 0x8f, 0x86, 0x77, 0x80, 0xcb, 0xa1, 0xc1, 0x95, 0x47, 0xeb, 0x83, ++ 0x1e, 0xf6, 0x2a, 0xcd, 0xc0, 0x0a, 0x0e, 0x0e, 0x5f, 0x49, 0x36, 0x83, ++ 0x67, 0xff, 0xeb, 0x6f, 0x77, 0x08, 0xac, 0x3f, 0x94, 0x2b, 0x07, 0x87, ++ 0xd7, 0xc1, 0xe7, 0x4f, 0x00, 0xde, 0x54, 0xae, 0xd7, 0x69, 0x7f, 0x2d, ++ 0x72, 0x44, 0x10, 0x69, 0xfd, 0xd0, 0x04, 0xa2, 0x6e, 0x64, 0xa3, 0xa9, ++ 0x52, 0x7e, 0xf4, 0xfb, 0x23, 0x35, 0x14, 0x0f, 0xb4, 0xe0, 0xe4, 0xe3, ++ 0x90, 0xf5, 0x56, 0x94, 0x07, 0xfa, 0x2a, 0xf8, 0x2d, 0xe5, 0x83, 0xf9, ++ 0x0d, 0xb4, 0x9c, 0x15, 0x95, 0x8f, 0xd1, 0x2b, 0xad, 0x06, 0x79, 0x71, ++ 0xf2, 0x79, 0x93, 0x06, 0x26, 0x47, 0x94, 0x6d, 0x22, 0xd0, 0x2e, 0x93, ++ 0xb0, 0xb2, 0x05, 0xca, 0x74, 0x1e, 0x25, 0x59, 0x46, 0x39, 0x23, 0x5e, ++ 0x5d, 0x99, 0xc2, 0xe1, 0x02, 0x7e, 0xa7, 0xfa, 0x67, 0xd9, 0x24, 0x85, ++ 0xf1, 0xcf, 0xa5, 0xcc, 0x8e, 0x21, 0x44, 0x57, 0x0f, 0xf8, 0x7c, 0x82, ++ 0xfa, 0xf4, 0x1a, 0xfc, 0xae, 0xe0, 0xba, 0x9e, 0xf1, 0x53, 0xc5, 0x00, ++ 0xdf, 0xb0, 0x9a, 0xd4, 0x02, 0x11, 0xf4, 0x49, 0xc7, 0xe3, 0x37, 0x58, ++ 0x80, 0xaf, 0xee, 0x22, 0x16, 0x31, 0x11, 0xf9, 0x59, 0xe8, 0xd3, 0x5f, ++ 0x74, 0xbc, 0x1d, 0x4b, 0x22, 0x76, 0x98, 0xa4, 0xa3, 0xa3, 0x28, 0x19, ++ 0xf0, 0x96, 0x51, 0x93, 0x5c, 0xa0, 0x00, 0x1e, 0x3b, 0xfc, 0x58, 0x76, ++ 0x74, 0xd4, 0xf8, 0xf0, 0x09, 0x4b, 0xd3, 0x78, 0x42, 0x86, 0x10, 0xdd, ++ 0x38, 0x99, 0xa0, 0x5f, 0x3d, 0x15, 0x2d, 0x14, 0xaf, 0xa4, 0x46, 0x09, ++ 0x83, 0xbe, 0x9e, 0xa0, 0x87, 0x93, 0x7e, 0xcf, 0x78, 0xa5, 0xe1, 0x7a, ++ 0xa0, 0xd7, 0x03, 0x8b, 0x5f, 0x1d, 0x0c, 0xf2, 0x9b, 0x6a, 0x6a, 0x3f, ++ 0xce, 0x32, 0x02, 0xe5, 0x74, 0xd8, 0x2b, 0xb4, 0x16, 0x8e, 0x7f, 0xec, ++ 0x67, 0x50, 0x7f, 0x15, 0xd7, 0x27, 0x0e, 0x80, 0x78, 0x3c, 0x3e, 0x5f, ++ 0x81, 0xe7, 0x30, 0x27, 0xd5, 0xb3, 0x54, 0x4f, 0x67, 0x50, 0x04, 0x2b, ++ 0xe3, 0xa3, 0xfa, 0x62, 0xf5, 0xa5, 0xef, 0xe6, 0xf8, 0x9d, 0x9c, 0x7f, ++ 0x92, 0xf1, 0x19, 0x81, 0xa7, 0x59, 0xaf, 0xe8, 0xea, 0x5f, 0xca, 0xeb, ++ 0x07, 0x85, 0xf3, 0xd6, 0x3b, 0x86, 0xf5, 0x34, 0x78, 0xcc, 0xdf, 0xcf, ++ 0x08, 0x16, 0xd4, 0x53, 0x2e, 0xb0, 0x33, 0x29, 0x7e, 0x1f, 0x26, 0x9e, ++ 0x39, 0xb8, 0x2e, 0x7b, 0x2d, 0xb8, 0x2e, 0x26, 0xf0, 0xf7, 0x61, 0xef, ++ 0x81, 0x02, 0xa4, 0x67, 0x98, 0x78, 0x85, 0x4c, 0xd0, 0xb7, 0x7f, 0xb5, ++ 0xea, 0xf9, 0xe0, 0x27, 0xf0, 0x12, 0xf4, 0xad, 0x14, 0x46, 0x39, 0x51, ++ 0x32, 0x1c, 0x68, 0x1f, 0x52, 0x39, 0x4e, 0x80, 0x75, 0xaf, 0x49, 0xaa, ++ 0x29, 0x83, 0xf7, 0xe1, 0x74, 0x07, 0x01, 0xbd, 0x70, 0x60, 0xc6, 0xab, ++ 0x02, 0xe0, 0x33, 0xbd, 0xcd, 0x3f, 0x1c, 0xe4, 0x50, 0xb3, 0x73, 0x0b, ++ 0xbc, 0xe1, 0x34, 0x78, 0xff, 0xe0, 0x21, 0xff, 0x25, 0x28, 0x9f, 0x71, ++ 0xec, 0x46, 0xcd, 0x4e, 0x34, 0xcf, 0x67, 0xe8, 0x15, 0xcb, 0x51, 0x1f, ++ 0x0c, 0xf7, 0xf7, 0x76, 0xc0, 0x7a, 0xef, 0xac, 0x94, 0xbc, 0x57, 0x02, ++ 0x7f, 0xf9, 0x29, 0x5c, 0x4e, 0xd4, 0x93, 0x2a, 0xf9, 0x2e, 0x85, 0xdf, ++ 0x1b, 0x5c, 0x06, 0x7a, 0x56, 0xf5, 0xd3, 0xf2, 0x20, 0xfa, 0xac, 0xe4, ++ 0xcf, 0x32, 0xf6, 0x7d, 0x55, 0x6d, 0x59, 0xee, 0x51, 0x29, 0xda, 0xef, ++ 0xaa, 0x51, 0xd4, 0x1e, 0xa5, 0x7a, 0x71, 0x7d, 0xe7, 0x7a, 0xdb, 0x35, ++ 0x60, 0x67, 0xd4, 0x58, 0x54, 0xe0, 0xdb, 0xb5, 0xde, 0xb7, 0x6d, 0x3e, ++ 0x27, 0x94, 0x0b, 0x06, 0x00, 0x9e, 0x5b, 0x8b, 0x34, 0xbb, 0x2f, 0x22, ++ 0xc0, 0x78, 0xe9, 0xef, 0xf8, 0xd0, 0xce, 0x9b, 0xe0, 0x51, 0x3c, 0xa0, ++ 0xb4, 0xc6, 0x5a, 0x23, 0x83, 0x3d, 0xba, 0xf5, 0xa2, 0x69, 0xc6, 0xbb, ++ 0xe3, 0x01, 0x0e, 0x72, 0x13, 0x25, 0xe2, 0xe0, 0xf8, 0x74, 0xa4, 0xf3, ++ 0x45, 0x3e, 0x8b, 0xb7, 0x9e, 0x00, 0x2c, 0x16, 0xdd, 0x3a, 0xb2, 0x3f, ++ 0x6b, 0x07, 0xae, 0x2f, 0x6f, 0x90, 0x4b, 0x91, 0x2e, 0xda, 0xba, 0xa2, ++ 0xad, 0x23, 0xd8, 0x23, 0xd5, 0x2f, 0xf3, 0xb9, 0x1c, 0x3d, 0xa8, 0x86, ++ 0x6d, 0x02, 0xea, 0x2b, 0x2a, 0xbb, 0x94, 0x3e, 0xf3, 0xb9, 0x1e, 0x71, ++ 0x72, 0xbd, 0x49, 0xf5, 0x30, 0xd3, 0x73, 0x7c, 0x3d, 0x59, 0xbb, 0x38, ++ 0x15, 0xd7, 0x13, 0x4d, 0x7f, 0x82, 0x6d, 0x0d, 0x4a, 0x62, 0x3e, 0xd7, ++ 0xb7, 0x6b, 0x73, 0x9e, 0x49, 0xba, 0x86, 0xc2, 0xe4, 0x04, 0x3d, 0x0b, ++ 0x7a, 0x29, 0x8d, 0x14, 0xc0, 0xfa, 0x3b, 0x1a, 0xf4, 0x0c, 0xe8, 0x27, ++ 0x29, 0x28, 0xc0, 0x78, 0x4d, 0x13, 0x3c, 0x64, 0x35, 0xae, 0x63, 0x46, ++ 0x7d, 0x3a, 0xba, 0x86, 0xe9, 0xc1, 0x07, 0xd3, 0x08, 0xf2, 0x13, 0x5d, ++ 0x87, 0x9a, 0x61, 0xbd, 0x6b, 0x4a, 0x0f, 0xa7, 0x41, 0x3f, 0x4d, 0x35, ++ 0x07, 0x04, 0xbf, 0x6e, 0xfd, 0xd4, 0xd6, 0x3b, 0x57, 0x4d, 0x27, 0x01, ++ 0x3d, 0x38, 0x2f, 0x8f, 0xad, 0x73, 0xf3, 0xb2, 0xd9, 0x78, 0xbf, 0x07, ++ 0x04, 0x4d, 0x60, 0xf0, 0x82, 0x5e, 0x35, 0xaf, 0x7b, 0xbf, 0x98, 0xb2, ++ 0x03, 0x95, 0x65, 0x02, 0xb7, 0xb7, 0xcc, 0xf8, 0x17, 0x2c, 0xcc, 0x0e, ++ 0x7c, 0x78, 0xd6, 0xdb, 0x88, 0xc7, 0xb5, 0x0b, 0x1e, 0xc1, 0x27, 0x69, ++ 0xd8, 0x80, 0xfd, 0xa5, 0xd9, 0x18, 0x0d, 0x56, 0x65, 0x1d, 0xc0, 0xf7, ++ 0x6b, 0xfc, 0x96, 0x99, 0x60, 0x77, 0xaf, 0x97, 0x3a, 0x57, 0x8e, 0xa2, ++ 0xf0, 0xaf, 0x9f, 0x39, 0x4f, 0x09, 0xd2, 0xef, 0x6b, 0xbc, 0xcc, 0xef, ++ 0x5a, 0x3d, 0x65, 0xde, 0x33, 0xb0, 0xae, 0x59, 0x2d, 0x0a, 0x83, 0xab, ++ 0xa6, 0x0c, 0xed, 0xd5, 0x04, 0x0e, 0xd7, 0x06, 0xe8, 0x1b, 0xfd, 0x44, ++ 0x05, 0xfd, 0xa2, 0xbb, 0x6f, 0xdb, 0xb8, 0x72, 0x04, 0xed, 0x27, 0x8d, ++ 0xfa, 0x31, 0x82, 0x0a, 0x95, 0x42, 0x36, 0x2b, 0xfd, 0xee, 0x04, 0x9a, ++ 0x82, 0xfe, 0xf6, 0x47, 0x18, 0xfc, 0x5e, 0x52, 0x40, 0x62, 0xc0, 0xff, ++ 0x1f, 0x82, 0x83, 0xf9, 0xa1, 0xfe, 0xce, 0x8e, 0xd1, 0x48, 0x4f, 0x8b, ++ 0x07, 0xe0, 0x4d, 0xf0, 0xf6, 0xda, 0xc0, 0x4f, 0x54, 0xa9, 0x1f, 0xa6, ++ 0xaa, 0x00, 0xaf, 0x6a, 0x1f, 0x8b, 0xf0, 0x5a, 0x3c, 0xcb, 0xd4, 0x68, ++ 0xfb, 0xdf, 0x71, 0x7f, 0xe1, 0x76, 0x58, 0xf8, 0xc1, 0xbe, 0x9f, 0xf3, ++ 0xee, 0x4c, 0x90, 0xaf, 0x75, 0xb7, 0x31, 0xbf, 0xcc, 0x0c, 0xff, 0xdd, ++ 0x53, 0x43, 0x1d, 0x16, 0x1c, 0x87, 0xa0, 0x5b, 0xe7, 0x8a, 0x83, 0xd7, ++ 0xb9, 0xa0, 0xc1, 0x40, 0xff, 0x78, 0x43, 0x08, 0x97, 0x2b, 0x8b, 0xc1, ++ 0x75, 0x54, 0x60, 0xf4, 0x7a, 0xb8, 0xb3, 0xe0, 0x2a, 0xf4, 0x93, 0x8a, ++ 0xe8, 0x7b, 0xda, 0xd1, 0x23, 0x9d, 0x23, 0xec, 0x20, 0xdf, 0xfd, 0xec, ++ 0xcc, 0x84, 0x0f, 0x73, 0xd0, 0xde, 0x31, 0xad, 0x33, 0x17, 0x2a, 0x0f, ++ 0x33, 0xe9, 0xfb, 0xb1, 0xd6, 0xf0, 0xd5, 0xc8, 0x6f, 0xdb, 0x2c, 0xa8, ++ 0xa7, 0x08, 0x61, 0x7a, 0x4e, 0x20, 0x16, 0xf5, 0xdb, 0x91, 0xb0, 0x88, ++ 0x30, 0xb8, 0x90, 0xf5, 0xa8, 0xfe, 0x5e, 0x21, 0x47, 0xe6, 0x2c, 0xa0, ++ 0xf5, 0x57, 0xec, 0x74, 0x12, 0xc0, 0x97, 0xc6, 0x0f, 0xe9, 0xbc, 0xcf, ++ 0xd5, 0x35, 0x94, 0x0f, 0x62, 0xcc, 0xbb, 0x43, 0x10, 0xe3, 0xd1, 0x9d, ++ 0xd9, 0x19, 0x9c, 0xee, 0x9d, 0x30, 0xde, 0xc0, 0x0b, 0xd3, 0x9f, 0x4a, ++ 0xb3, 0x1d, 0xec, 0xb6, 0x70, 0xa8, 0x7e, 0x48, 0x39, 0xf8, 0x1f, 0x35, ++ 0xcc, 0xdf, 0x0d, 0x47, 0x0e, 0xa0, 0xfe, 0x49, 0x9f, 0x7e, 0x33, 0xfa, ++ 0x29, 0x5b, 0x9a, 0x53, 0xe7, 0x2c, 0x00, 0xbe, 0xca, 0xf2, 0x79, 0x01, ++ 0x1d, 0x1a, 0x3c, 0x60, 0x9f, 0xc4, 0xf2, 0x13, 0xaf, 0xb6, 0xd8, 0xce, ++ 0xeb, 0xbf, 0xc7, 0xd3, 0xc3, 0x8d, 0x95, 0x2b, 0xd0, 0xef, 0x6d, 0xec, ++ 0x8c, 0x3d, 0xff, 0x29, 0x16, 0xe6, 0x6f, 0x87, 0xa9, 0x9e, 0xf4, 0x66, ++ 0xc7, 0x1f, 0x3f, 0xdf, 0xc2, 0xec, 0xe8, 0x24, 0x0b, 0xe7, 0xbb, 0x19, ++ 0xaf, 0xa6, 0xe9, 0xd7, 0x33, 0x6d, 0x5d, 0xd5, 0xd6, 0xd9, 0x61, 0x12, ++ 0x09, 0x8a, 0xba, 0xf5, 0xf0, 0x26, 0x8e, 0x3f, 0xf3, 0xba, 0x49, 0xa4, ++ 0x06, 0xdb, 0x18, 0xc6, 0xe7, 0xe8, 0x3f, 0x36, 0x2e, 0x60, 0x71, 0x88, ++ 0x0d, 0x53, 0x2c, 0x18, 0x5f, 0xd1, 0xf8, 0x9c, 0xd6, 0x4b, 0x03, 0xbc, ++ 0xd2, 0x79, 0xa0, 0x3d, 0x47, 0xf9, 0x30, 0x04, 0xf6, 0xdc, 0xc3, 0xa4, ++ 0x01, 0xe5, 0x26, 0x48, 0xdb, 0x6f, 0x26, 0xfd, 0xe1, 0xbe, 0x8d, 0x58, ++ 0x2e, 0x6a, 0x7e, 0x93, 0xf9, 0xfc, 0xfa, 0xc6, 0xe3, 0xfe, 0xf5, 0xed, ++ 0x5c, 0x5f, 0xad, 0xcb, 0xb9, 0xc7, 0x0e, 0x5d, 0xd1, 0xf1, 0xd2, 0x80, ++ 0x3f, 0x02, 0x6e, 0xa6, 0x27, 0xab, 0x5c, 0xcc, 0x8e, 0x9d, 0xb6, 0x53, ++ 0x8e, 0xfc, 0x80, 0xc2, 0x51, 0xd5, 0x2c, 0xa0, 0x9d, 0x65, 0xd9, 0x67, ++ 0x47, 0x38, 0xcf, 0x6c, 0xa2, 0x65, 0xda, 0x75, 0xc4, 0xa5, 0x60, 0xfd, ++ 0xd3, 0x1e, 0x1b, 0x96, 0x03, 0xd6, 0xce, 0x87, 0xbe, 0x47, 0xcb, 0xbd, ++ 0x3b, 0x45, 0x82, 0x76, 0x64, 0x96, 0xc3, 0x02, 0xfc, 0x7a, 0x8c, 0xf3, ++ 0x2b, 0xc9, 0xa3, 0x65, 0xb0, 0x87, 0xed, 0xac, 0x58, 0xd5, 0xbc, 0xff, ++ 0x76, 0xe8, 0xaf, 0xac, 0xcd, 0x4a, 0xec, 0xb4, 0xff, 0xaa, 0xdd, 0xa5, ++ 0xd7, 0x7e, 0x8f, 0x96, 0x4b, 0x3b, 0x64, 0x02, 0x55, 0xaa, 0x36, 0x2f, ++ 0x53, 0x86, 0xd0, 0xf2, 0xa2, 0x90, 0x10, 0x86, 0x72, 0x4f, 0x01, 0x5d, ++ 0xa8, 0x00, 0x2f, 0xc9, 0x4a, 0x08, 0xfc, 0xf6, 0x1e, 0x77, 0x67, 0xea, ++ 0x8f, 0xe8, 0xbc, 0x4f, 0xd6, 0xda, 0x88, 0x4a, 0x41, 0xa9, 0x73, 0x75, ++ 0xa6, 0xde, 0x44, 0xf1, 0x51, 0x1e, 0xda, 0x5e, 0x08, 0xed, 0xca, 0x5b, ++ 0x04, 0xd0, 0x88, 0x74, 0x1e, 0x9b, 0x5f, 0x1d, 0x0c, 0xf3, 0xda, 0x2a, ++ 0x78, 0xc1, 0xbf, 0xaf, 0xd8, 0x92, 0x60, 0xb0, 0x07, 0x8f, 0xd1, 0xa9, ++ 0xfc, 0x80, 0x7e, 0x5f, 0x42, 0xe7, 0x09, 0x72, 0x59, 0x4a, 0x1a, 0x0a, ++ 0x61, 0x9d, 0xab, 0xda, 0xbc, 0x4e, 0x51, 0x75, 0xf1, 0x87, 0x93, 0xb5, ++ 0x1e, 0x1c, 0x47, 0x2b, 0x57, 0x6d, 0xa5, 0xe3, 0xd0, 0x76, 0xd5, 0xcf, ++ 0x0b, 0x5e, 0x98, 0x62, 0xb5, 0x85, 0xf8, 0x41, 0x0f, 0x9d, 0xd9, 0x6d, ++ 0x9f, 0xfd, 0xb4, 0x13, 0xe6, 0xb7, 0x4c, 0x19, 0xe3, 0x82, 0x79, 0x3d, ++ 0xa0, 0x40, 0xbd, 0xd2, 0x50, 0xf1, 0x8b, 0x76, 0x15, 0xe0, 0x6b, 0x56, ++ 0x0a, 0xe9, 0xf7, 0xf2, 0xa6, 0x66, 0x05, 0xe2, 0x5b, 0x01, 0x2b, 0xb9, ++ 0x03, 0xfc, 0xdc, 0x8a, 0x2d, 0x03, 0x8c, 0x70, 0x35, 0x8a, 0x28, 0xaf, ++ 0x4b, 0x92, 0x6c, 0x1b, 0x41, 0x9f, 0x13, 0xa7, 0x2f, 0xed, 0x86, 0xb1, ++ 0xfd, 0xe9, 0x7c, 0xb2, 0x96, 0xea, 0xd8, 0x31, 0xd1, 0x72, 0x39, 0xe8, ++ 0x43, 0xe4, 0xc3, 0x90, 0x72, 0xbd, 0xae, 0xfe, 0x70, 0x31, 0x09, 0xf9, ++ 0xb5, 0x62, 0x8b, 0x68, 0xb4, 0xb3, 0xf9, 0xfa, 0x1f, 0x3c, 0xcc, 0xe8, ++ 0x1f, 0xdc, 0xeb, 0xc2, 0xb8, 0x9f, 0x46, 0xbf, 0x25, 0xdc, 0x5f, 0xd6, ++ 0xe8, 0xb7, 0x24, 0x89, 0xd3, 0x53, 0xea, 0xcd, 0x8f, 0x05, 0xcf, 0x43, ++ 0x40, 0x0f, 0x0a, 0x4f, 0x03, 0xe0, 0x8b, 0x3e, 0xd7, 0x70, 0xf8, 0xdc, ++ 0x53, 0xc8, 0x54, 0x88, 0xbb, 0xb8, 0x7d, 0xc4, 0x23, 0xc4, 0xe0, 0x6b, ++ 0xf3, 0xb3, 0x41, 0x26, 0xc5, 0xc0, 0xba, 0xff, 0xba, 0xfc, 0xfa, 0xa9, ++ 0xd2, 0x60, 0x74, 0x1f, 0x16, 0x43, 0xe4, 0xc9, 0xb3, 0x62, 0xce, 0xd4, ++ 0xe9, 0xb4, 0xfc, 0x3b, 0x4b, 0xd1, 0x66, 0x0b, 0xea, 0x0f, 0xaf, 0x0a, ++ 0x72, 0xa4, 0xf9, 0xd9, 0x4f, 0x59, 0x98, 0x5c, 0xd6, 0x0f, 0x56, 0x10, ++ 0x7f, 0x0d, 0x33, 0xf2, 0x9f, 0x66, 0xf1, 0x09, 0x82, 0xeb, 0x5e, 0xc3, ++ 0x8c, 0x92, 0x67, 0xc0, 0x2e, 0xa0, 0xed, 0xb7, 0x59, 0x50, 0x0e, 0x69, ++ 0xfb, 0xb1, 0xf1, 0xdb, 0x7b, 0x0a, 0x27, 0x1a, 0xda, 0x7b, 0x0a, 0xcb, ++ 0xb4, 0xf6, 0x3b, 0xb1, 0xbd, 0xed, 0xfc, 0xed, 0x1b, 0x0a, 0x27, 0x1b, ++ 0xc7, 0x2f, 0x2c, 0xd7, 0xda, 0xef, 0x45, 0xf8, 0x9d, 0xe7, 0x87, 0xdf, ++ 0x73, 0xe5, 0x14, 0xe3, 0xf8, 0x57, 0x56, 0x62, 0xfb, 0x80, 0x95, 0xd1, ++ 0xab, 0x37, 0xc9, 0x86, 0x76, 0xcd, 0x0a, 0xbb, 0xd7, 0x27, 0x31, 0x3b, ++ 0x2a, 0x02, 0xef, 0xa5, 0xe4, 0x31, 0x1b, 0xa1, 0x9e, 0xa8, 0xf1, 0x03, ++ 0xe9, 0xf4, 0x81, 0xfd, 0xed, 0x6c, 0x49, 0x1a, 0xbf, 0x9a, 0xe8, 0xf9, ++ 0xa2, 0xe0, 0x0d, 0x80, 0xc3, 0x45, 0xa5, 0x45, 0xcf, 0x17, 0x89, 0x13, ++ 0x1d, 0x06, 0x7e, 0x4c, 0xf2, 0x25, 0x1b, 0xca, 0xb4, 0x27, 0xcf, 0xb1, ++ 0xef, 0xf0, 0x32, 0x0c, 0xe2, 0xb6, 0x21, 0x3c, 0xca, 0x10, 0x05, 0xf5, ++ 0xc5, 0xd4, 0x21, 0x36, 0x84, 0xf7, 0x9e, 0x7d, 0x76, 0x2c, 0xdf, 0x33, ++ 0x99, 0xc1, 0x7b, 0xcf, 0x10, 0x27, 0xca, 0x19, 0xae, 0x2d, 0x94, 0x8e, ++ 0xf7, 0x28, 0xfe, 0xcb, 0xf5, 0x76, 0x2b, 0xac, 0x4c, 0x10, 0x4a, 0x7a, ++ 0x53, 0xf4, 0x7f, 0x04, 0xf8, 0x8d, 0xbe, 0x57, 0x2d, 0xf0, 0xde, 0x21, ++ 0x92, 0x1a, 0xd4, 0xcf, 0x56, 0x82, 0xfa, 0xe8, 0x81, 0xcc, 0xfc, 0xa7, ++ 0x83, 0x3a, 0xfc, 0xac, 0x1c, 0x46, 0xe9, 0x4b, 0xcb, 0xa7, 0xc1, 0xfe, ++ 0x19, 0x18, 0xc5, 0xeb, 0x03, 0xc3, 0x4a, 0xd2, 0x8a, 0x75, 0xe3, 0xd4, ++ 0x0f, 0x53, 0x66, 0x6f, 0xcc, 0x66, 0xef, 0xe7, 0x3b, 0x61, 0xbc, 0xa2, ++ 0x1e, 0xc0, 0x43, 0x40, 0xe9, 0x1d, 0x03, 0x76, 0xa5, 0x79, 0x1c, 0xeb, ++ 0x88, 0x89, 0x86, 0x71, 0x6c, 0x19, 0x65, 0x38, 0xce, 0x37, 0xa6, 0x71, ++ 0xac, 0x19, 0x65, 0xa6, 0x71, 0x6c, 0xb3, 0x37, 0xf2, 0xf7, 0x7c, 0x9c, ++ 0x3f, 0xc3, 0xbc, 0xe2, 0x8d, 0xf3, 0xc0, 0x88, 0xc9, 0xc6, 0xf9, 0x64, ++ 0x94, 0xe3, 0x38, 0x56, 0xd1, 0x34, 0x9f, 0x8c, 0x72, 0xd3, 0x38, 0x0e, ++ 0x36, 0x1f, 0xfa, 0x9e, 0x8f, 0x63, 0x17, 0xcf, 0x37, 0x9f, 0x91, 0x53, ++ 0x8c, 0xf3, 0x19, 0x5e, 0x89, 0xe3, 0xa4, 0x88, 0x8a, 0x21, 0x6e, 0x65, ++ 0x1d, 0x5e, 0x69, 0x1a, 0xc7, 0x89, 0xe3, 0xc0, 0x7b, 0x18, 0x87, 0xa4, ++ 0x33, 0xff, 0x46, 0xb1, 0xf6, 0x96, 0x20, 0xfd, 0x5f, 0xb6, 0x13, 0xb0, ++ 0xa7, 0x15, 0xab, 0xff, 0x59, 0xe8, 0x97, 0xfc, 0xc1, 0x4e, 0x50, 0x9f, ++ 0xa8, 0x74, 0xdc, 0x41, 0xa0, 0x57, 0x92, 0x71, 0xbf, 0xe0, 0x3f, 0x2c, ++ 0xc9, 0x38, 0x9f, 0x2f, 0x1d, 0x94, 0xfe, 0x4e, 0x3d, 0x9d, 0x83, 0x9a, ++ 0x5d, 0x80, 0xf6, 0xce, 0x42, 0x0e, 0x22, 0x09, 0xd5, 0xa3, 0x7f, 0x5e, ++ 0xcd, 0x79, 0x74, 0x41, 0xcb, 0xf5, 0x19, 0xcb, 0xe0, 0xd9, 0x36, 0x2d, ++ 0xad, 0x18, 0xfc, 0xec, 0xf5, 0x2e, 0x2f, 0xc4, 0x4f, 0xcf, 0xb4, 0x4d, ++ 0x53, 0xe6, 0xc7, 0xb0, 0x0b, 0x16, 0x36, 0xc8, 0xc7, 0xba, 0x0c, 0xfc, ++ 0xcb, 0xf5, 0x5e, 0x01, 0xc9, 0xaa, 0x01, 0x3f, 0x8b, 0xdb, 0x01, 0x5a, ++ 0xf9, 0x18, 0xd5, 0x5f, 0x84, 0xea, 0xad, 0x8f, 0xa8, 0xfe, 0x82, 0xe7, ++ 0x71, 0x99, 0xea, 0x69, 0xfa, 0xfe, 0x28, 0xd5, 0x6f, 0x44, 0xd1, 0xc3, ++ 0xbb, 0x0c, 0xdb, 0x1d, 0x93, 0x18, 0x1e, 0x8f, 0x35, 0xb1, 0x75, 0xe4, ++ 0xcb, 0x75, 0x87, 0x65, 0x8c, 0xf3, 0x05, 0xc9, 0x3b, 0x59, 0x74, 0x1e, ++ 0x37, 0xf3, 0x69, 0x2c, 0x6c, 0x48, 0x60, 0xbe, 0x02, 0x87, 0x23, 0xc0, ++ 0xe9, 0xd1, 0xbb, 0xdb, 0x1a, 0xda, 0x88, 0xf4, 0xf0, 0x0d, 0x05, 0xbb, ++ 0x87, 0x34, 0x0e, 0xa0, 0xb8, 0xe2, 0xf5, 0x46, 0x00, 0xbe, 0xa8, 0xb8, ++ 0x24, 0x63, 0x71, 0x28, 0xd8, 0x47, 0x3f, 0x5e, 0xb9, 0xfd, 0x37, 0x50, ++ 0xed, 0x5d, 0xa1, 0x78, 0xd8, 0x12, 0x3a, 0xdf, 0xd9, 0xad, 0xeb, 0xe4, ++ 0xa1, 0xb4, 0x7c, 0x46, 0xee, 0xba, 0xdd, 0xeb, 0xd4, 0xf5, 0x33, 0x5b, ++ 0xfe, 0x08, 0xe6, 0x6d, 0xa3, 0xff, 0x41, 0x3f, 0x73, 0xfc, 0xb4, 0xac, ++ 0x1b, 0xff, 0xd6, 0x32, 0x63, 0xf9, 0x36, 0x22, 0x45, 0xcb, 0x94, 0x6e, ++ 0x33, 0xc4, 0x11, 0x9c, 0x1e, 0x7c, 0x5c, 0x35, 0x24, 0x03, 0xbd, 0x6e, ++ 0x4e, 0x65, 0xf0, 0xdc, 0x06, 0xcf, 0xf1, 0xf0, 0xd9, 0x83, 0xf4, 0xba, ++ 0xdd, 0xc3, 0xda, 0x6a, 0xf0, 0x04, 0xee, 0x93, 0x49, 0x04, 0xd7, 0xa3, ++ 0xae, 0x81, 0xcc, 0xb8, 0x1d, 0x88, 0xf5, 0xfc, 0xda, 0xba, 0x62, 0x82, ++ 0xef, 0x76, 0xd9, 0xe6, 0x2b, 0xa2, 0xf4, 0xbc, 0xfd, 0x5e, 0x11, 0xf1, ++ 0x68, 0x86, 0xb7, 0x6b, 0x5f, 0x82, 0xcf, 0x42, 0xfd, 0xaa, 0xae, 0xc6, ++ 0xcf, 0x64, 0xf0, 0x2f, 0x2f, 0x04, 0xff, 0x1d, 0x4b, 0x8d, 0xdf, 0x49, ++ 0x90, 0x8d, 0xa7, 0xe1, 0x55, 0xe3, 0x83, 0x5b, 0x66, 0x4f, 0x1d, 0x70, ++ 0x54, 0x57, 0x6f, 0x8e, 0xff, 0xaa, 0x01, 0x47, 0x75, 0xfc, 0x72, 0x6b, ++ 0xd9, 0xf5, 0x86, 0xf2, 0x6d, 0x35, 0x73, 0x0c, 0xf5, 0xef, 0x58, 0x5a, ++ 0x6c, 0xf8, 0x5e, 0x1c, 0x5c, 0x64, 0xf8, 0x3e, 0x7f, 0xe5, 0x62, 0x43, ++ 0x79, 0x61, 0xc3, 0xbd, 0x86, 0xfa, 0xa5, 0x8d, 0xcb, 0x0c, 0xdf, 0x17, ++ 0x85, 0x56, 0x19, 0xbe, 0x57, 0x6c, 0x59, 0x67, 0x28, 0x57, 0x85, 0x1f, ++ 0x33, 0xd4, 0x0f, 0xb4, 0x35, 0x1b, 0xbe, 0x5b, 0xf6, 0x5d, 0x7a, 0x1d, ++ 0xc8, 0x63, 0xdd, 0xef, 0x44, 0x02, 0xf6, 0xd9, 0x17, 0xce, 0x63, 0x0f, ++ 0x81, 0x7d, 0xf5, 0x85, 0x53, 0x42, 0xbf, 0xaa, 0x1a, 0x78, 0x8d, 0xca, ++ 0xe1, 0x89, 0xda, 0x34, 0xe4, 0xef, 0x93, 0xb5, 0x2a, 0x3e, 0xcf, 0xb4, ++ 0xe5, 0xe2, 0xfe, 0x58, 0xc0, 0x41, 0xe5, 0x99, 0xae, 0xf5, 0x1b, 0xea, ++ 0x0e, 0x2d, 0x5b, 0x39, 0x05, 0xf4, 0x08, 0xad, 0x4f, 0x75, 0xf8, 0x13, ++ 0x75, 0x6f, 0x2d, 0x0b, 0x52, 0xdf, 0x7d, 0x23, 0x04, 0xa9, 0x29, 0xdf, ++ 0x8b, 0x8d, 0x0a, 0x89, 0x0c, 0x00, 0x3f, 0x26, 0xb9, 0x8f, 0xaf, 0x7b, ++ 0x45, 0xdd, 0xf7, 0xae, 0x0b, 0x7c, 0x6f, 0xa4, 0x0b, 0x56, 0x6e, 0xff, ++ 0xef, 0x62, 0x57, 0xec, 0xf7, 0x3d, 0x42, 0xef, 0x18, 0xb0, 0xef, 0x82, ++ 0x1f, 0x58, 0x71, 0xff, 0x26, 0x9e, 0xfd, 0x40, 0xff, 0x86, 0x92, 0x18, ++ 0xfe, 0x83, 0xf6, 0xec, 0x86, 0xf8, 0x86, 0x4e, 0xef, 0xbc, 0x2c, 0x32, ++ 0xbb, 0xfa, 0x72, 0xb1, 0xe0, 0x65, 0x91, 0x3e, 0x2b, 0x15, 0x26, 0xef, ++ 0x95, 0x3b, 0x06, 0x17, 0x40, 0xbc, 0xa0, 0x52, 0x89, 0x8c, 0xa9, 0x89, ++ 0x61, 0x67, 0xf7, 0x8d, 0x17, 0xa6, 0xc0, 0x0c, 0x82, 0x7e, 0x98, 0xbc, ++ 0x2c, 0x0a, 0x0d, 0x8d, 0xca, 0x2f, 0xd2, 0x6f, 0xa4, 0x41, 0xee, 0xaf, ++ 0xb1, 0xf8, 0xf7, 0x81, 0x7e, 0xee, 0xde, 0x2f, 0xb2, 0xfd, 0x81, 0xc8, ++ 0xc1, 0x0c, 0xd8, 0xa7, 0xb9, 0x5c, 0xf4, 0xbd, 0x0c, 0xef, 0x49, 0xdb, ++ 0x40, 0x5c, 0x1f, 0xdf, 0xad, 0xf5, 0x0d, 0x38, 0x3a, 0x8a, 0x90, 0xf7, ++ 0x6b, 0x67, 0xe2, 0xf3, 0xf7, 0xb5, 0x45, 0x03, 0x20, 0x7e, 0xf4, 0xc7, ++ 0xda, 0xd9, 0x58, 0xfe, 0xb0, 0xd6, 0x8f, 0xcf, 0xae, 0xda, 0x32, 0x7c, ++ 0x7e, 0x54, 0x5b, 0x83, 0xdf, 0x8f, 0xd6, 0x2e, 0xc5, 0xf2, 0xb1, 0xda, ++ 0x20, 0x3e, 0x4f, 0xd4, 0xae, 0xc4, 0xe7, 0xc9, 0xda, 0x06, 0xfc, 0xde, ++ 0x5d, 0xdb, 0x88, 0xe5, 0x33, 0xb5, 0x21, 0x7c, 0x6a, 0x72, 0xa0, 0xd9, ++ 0xa3, 0x24, 0x85, 0xdb, 0x7f, 0xdc, 0x5e, 0xa7, 0x2b, 0x07, 0x96, 0xcf, ++ 0xf2, 0x39, 0x88, 0xf4, 0xdf, 0x9d, 0x28, 0xd7, 0xde, 0x34, 0x90, 0xeb, ++ 0xb3, 0xce, 0x2f, 0xc7, 0x80, 0x9d, 0x7b, 0xf6, 0x7d, 0x2b, 0x06, 0xd1, ++ 0xe3, 0xe1, 0xc9, 0xcc, 0x6f, 0xf1, 0xe9, 0xe7, 0xc3, 0xf5, 0xbe, 0x24, ++ 0x44, 0xe9, 0x9f, 0xdb, 0xff, 0xbb, 0xdd, 0xc1, 0xe8, 0x63, 0xb7, 0x90, ++ 0x99, 0xe0, 0x9f, 0xad, 0x1a, 0xad, 0x10, 0x88, 0xab, 0x3b, 0x5e, 0xfe, ++ 0x0e, 0xda, 0xcb, 0xf4, 0xbd, 0x44, 0x50, 0x5f, 0x86, 0xbc, 0xfa, 0x7d, ++ 0xc4, 0xbe, 0xfe, 0x61, 0xce, 0x83, 0x2e, 0x4c, 0x27, 0xad, 0xfe, 0xb1, ++ 0xc7, 0xff, 0x2b, 0x7f, 0x5e, 0x36, 0xd0, 0x87, 0xd1, 0xd7, 0x71, 0x50, ++ 0xac, 0x61, 0x74, 0x7b, 0xda, 0x0b, 0x74, 0xd3, 0xe1, 0x8f, 0xd9, 0x65, ++ 0x3b, 0xb9, 0x3e, 0x37, 0xe1, 0x51, 0xe2, 0x72, 0x67, 0xc6, 0xe7, 0xe9, ++ 0x81, 0x1a, 0x3e, 0x3b, 0x33, 0x20, 0xde, 0x52, 0x25, 0x16, 0x59, 0x24, ++ 0xfa, 0xee, 0x6c, 0xab, 0x15, 0xe7, 0x75, 0xb6, 0x3d, 0x81, 0xed, 0x63, ++ 0x7b, 0x52, 0x2e, 0x2a, 0x9e, 0x57, 0xb1, 0xc5, 0xee, 0xd1, 0xeb, 0x87, ++ 0xaa, 0x70, 0x92, 0xc7, 0xa8, 0x2f, 0x06, 0x7b, 0xf4, 0xfa, 0xe2, 0x6c, ++ 0xc7, 0xd3, 0x6e, 0x90, 0xfb, 0x25, 0x69, 0x16, 0xcf, 0xd1, 0x5c, 0xe0, ++ 0x0f, 0x1f, 0xe7, 0x0f, 0xc6, 0x77, 0x5a, 0xff, 0x55, 0xe1, 0x4c, 0x8f, ++ 0xd3, 0xd0, 0x8f, 0xb1, 0x7c, 0xb6, 0x41, 0x98, 0xc9, 0xf6, 0x15, 0xd5, ++ 0xc4, 0x9b, 0x62, 0xf8, 0x07, 0xda, 0x73, 0x49, 0x9a, 0xe2, 0x39, 0x4a, ++ 0xf5, 0xc2, 0xc9, 0x2d, 0x23, 0x13, 0x61, 0x5c, 0xea, 0xc7, 0x79, 0x60, ++ 0x9c, 0xee, 0x5a, 0x8f, 0x87, 0x8d, 0x9b, 0xe6, 0xd1, 0xf3, 0x65, 0xe5, ++ 0x52, 0x07, 0xd6, 0xd7, 0xe0, 0x8b, 0xd7, 0xef, 0x3f, 0x1a, 0x3e, 0xd8, ++ 0xf1, 0xfb, 0xd8, 0xc6, 0x62, 0x4d, 0x10, 0xa7, 0x89, 0x57, 0x3f, 0x2e, ++ 0x3d, 0xa4, 0xcf, 0x15, 0xf0, 0x0f, 0x48, 0xbb, 0xfc, 0x25, 0xac, 0x3b, ++ 0x8e, 0x2c, 0x6d, 0xdd, 0x91, 0xb0, 0xac, 0xf5, 0x1b, 0x08, 0x8b, 0x41, ++ 0xeb, 0xe5, 0xf0, 0xbe, 0xc5, 0x30, 0x1e, 0x6d, 0xa7, 0x6a, 0x3e, 0x34, ++ 0xb4, 0x8b, 0x4f, 0x77, 0x89, 0x1c, 0xd3, 0xe8, 0x49, 0xf5, 0xe4, 0x95, ++ 0x3c, 0x3f, 0x84, 0x32, 0x33, 0xd2, 0xd9, 0x4f, 0x7b, 0x4c, 0xa4, 0xfd, ++ 0xf5, 0x48, 0xce, 0x95, 0x10, 0xe7, 0xcd, 0x94, 0x54, 0xd4, 0x77, 0x01, ++ 0x18, 0x88, 0xf2, 0x53, 0x95, 0xad, 0x4b, 0xf1, 0xab, 0x88, 0xee, 0x4e, ++ 0x8c, 0x7b, 0x4e, 0xd4, 0xe4, 0x5e, 0xbd, 0xe5, 0x0f, 0x94, 0xe5, 0x3e, ++ 0xf9, 0x37, 0x19, 0xe3, 0x19, 0xe4, 0xcf, 0xb4, 0x77, 0xfa, 0x5d, 0xe6, ++ 0x5f, 0x17, 0x90, 0x22, 0x37, 0x38, 0x19, 0xf3, 0x5a, 0x2b, 0x66, 0x81, ++ 0x9e, 0xfc, 0xc4, 0xa2, 0xd9, 0x03, 0x0d, 0xf9, 0x30, 0xef, 0xd3, 0xc4, ++ 0x82, 0xfb, 0xf9, 0xa7, 0xc9, 0xdb, 0xee, 0x5c, 0x9d, 0x5d, 0x56, 0x26, ++ 0xf1, 0xf8, 0xe4, 0x4a, 0xb6, 0x3e, 0x07, 0xe9, 0x7f, 0x30, 0x3f, 0x6a, ++ 0xa7, 0x19, 0xd6, 0xeb, 0xd2, 0x46, 0x63, 0xb9, 0x84, 0xdc, 0x90, 0x0a, ++ 0xf2, 0x50, 0xb2, 0x5e, 0x86, 0x1d, 0x5b, 0xb2, 0x08, 0xd6, 0x7b, 0xdd, ++ 0xbe, 0xc9, 0x6c, 0xc9, 0x83, 0xf3, 0x2e, 0x25, 0x35, 0xf5, 0x60, 0xa7, ++ 0xac, 0x96, 0xd9, 0x3e, 0xea, 0x3c, 0x0f, 0x91, 0x86, 0x52, 0xb8, 0xaa, ++ 0x76, 0x3d, 0x99, 0x0f, 0xf6, 0x6c, 0x40, 0x62, 0xfa, 0x5e, 0xf3, 0x9f, ++ 0x17, 0x25, 0x33, 0xb8, 0xcb, 0x53, 0x42, 0x8a, 0x8f, 0x7e, 0xff, 0xb8, ++ 0x35, 0xf7, 0xe6, 0xef, 0x11, 0x68, 0x1f, 0xaa, 0x07, 0xbd, 0x16, 0x74, ++ 0x11, 0x6f, 0xac, 0x78, 0xcc, 0xfc, 0x95, 0x46, 0xf8, 0x2e, 0x04, 0xbf, ++ 0x19, 0x5e, 0x42, 0x96, 0x1b, 0xe0, 0xd0, 0xfa, 0xd5, 0xe0, 0x10, 0xb7, ++ 0x08, 0x31, 0xf3, 0x34, 0x7e, 0x26, 0x09, 0x3c, 0xae, 0xc3, 0xe4, 0x63, ++ 0xad, 0x64, 0xb4, 0x5f, 0x1f, 0xe1, 0x78, 0xd0, 0xca, 0x1b, 0x4c, 0xe5, ++ 0x26, 0x53, 0x7d, 0x8d, 0x4f, 0x64, 0xce, 0x27, 0x99, 0x92, 0xff, 0x11, ++ 0xd0, 0x3f, 0x55, 0xb6, 0xde, 0x42, 0xb4, 0xd3, 0x08, 0xe5, 0x8f, 0xec, ++ 0x68, 0x3d, 0x25, 0x5a, 0x6f, 0xc3, 0xf9, 0xea, 0x59, 0xa1, 0x9e, 0x88, ++ 0xf5, 0x9a, 0xa4, 0x09, 0xf1, 0xeb, 0xd9, 0xa3, 0xfd, 0x35, 0xc7, 0xea, ++ 0xaf, 0x6a, 0xd7, 0xb6, 0x17, 0x83, 0x94, 0x9f, 0xca, 0x5f, 0x78, 0xd4, ++ 0x0d, 0x41, 0xdf, 0x4f, 0xa4, 0x86, 0x54, 0x88, 0x7f, 0x55, 0x6e, 0xbe, ++ 0xdf, 0x0d, 0x78, 0x3a, 0x21, 0x05, 0xdd, 0x40, 0xef, 0x4f, 0x42, 0x62, ++ 0xcc, 0xb8, 0xe0, 0x7b, 0x7d, 0xf8, 0xf2, 0x39, 0x05, 0xf0, 0x23, 0x90, ++ 0xb5, 0x29, 0xde, 0x9f, 0x7b, 0xf0, 0x5a, 0xd0, 0xd7, 0x5f, 0x6e, 0x96, ++ 0x31, 0x2f, 0x26, 0xb0, 0xc5, 0x1a, 0xb1, 0x52, 0x3e, 0xae, 0x6e, 0x5d, ++ 0x34, 0x0b, 0xe2, 0xf7, 0xb4, 0x7c, 0x84, 0x95, 0x1f, 0xf8, 0x14, 0xf6, ++ 0x0d, 0x03, 0x6d, 0x46, 0x7a, 0x96, 0x3f, 0xfb, 0x68, 0x2a, 0xc4, 0x89, ++ 0x28, 0x26, 0x99, 0xbd, 0x4d, 0x22, 0x68, 0x77, 0x54, 0x6f, 0xfa, 0x53, ++ 0x21, 0xe8, 0xf1, 0x00, 0xe9, 0x45, 0x3e, 0x34, 0xb7, 0x83, 0xf1, 0xcf, ++ 0x25, 0xa3, 0xdc, 0x17, 0x2b, 0x89, 0xfd, 0xbf, 0x6b, 0xf9, 0x0a, 0x01, ++ 0x2e, 0x67, 0x81, 0xd6, 0x07, 0x3f, 0x85, 0xbc, 0x84, 0x80, 0x89, 0x7f, ++ 0xca, 0xfa, 0xd6, 0x93, 0x2e, 0x05, 0xe2, 0x08, 0x1d, 0x92, 0x2b, 0x05, ++ 0xfd, 0xf2, 0xef, 0x92, 0xef, 0x82, 0x1e, 0xd0, 0xf0, 0x41, 0x42, 0xcc, ++ 0x9e, 0xa8, 0xdb, 0xba, 0x61, 0xdc, 0x11, 0x0a, 0x4f, 0xf7, 0xa6, 0x7f, ++ 0x73, 0x0b, 0x06, 0xbf, 0x9b, 0xf1, 0xe1, 0xd9, 0xf0, 0xfc, 0x5f, 0xbd, ++ 0xa4, 0xc6, 0xd7, 0x33, 0x67, 0xb8, 0x3f, 0x14, 0x6d, 0x17, 0xc2, 0x76, ++ 0x6a, 0x1b, 0xb3, 0x7f, 0x48, 0x3b, 0x7b, 0x56, 0xca, 0x11, 0x37, 0xd8, ++ 0x9b, 0x95, 0xcd, 0xb2, 0x97, 0x72, 0x28, 0xa9, 0xdc, 0xf6, 0xf4, 0x33, ++ 0x8f, 0x83, 0x9f, 0xf6, 0x81, 0x15, 0xfd, 0xb4, 0x8a, 0x6d, 0xbf, 0x79, ++ 0x77, 0x32, 0x2d, 0x57, 0x6c, 0x97, 0x53, 0x66, 0xb1, 0xe9, 0x38, 0x85, ++ 0xd4, 0x28, 0x5d, 0x02, 0xf4, 0x7f, 0x4b, 0xc7, 0x47, 0xe9, 0x50, 0xfe, ++ 0xeb, 0xdf, 0x28, 0xea, 0x58, 0xf6, 0xfe, 0xa7, 0xc9, 0x51, 0x7a, 0x54, ++ 0x6c, 0xdf, 0xaf, 0x90, 0xb1, 0xfd, 0xf1, 0x37, 0x2d, 0xbc, 0x5f, 0xe9, ++ 0x72, 0xc6, 0xa0, 0x4b, 0xf8, 0x48, 0x21, 0xd8, 0x2b, 0x75, 0x5b, 0xbf, ++ 0x52, 0xc0, 0xef, 0xfa, 0x64, 0x9f, 0x40, 0x06, 0x65, 0xf6, 0x6f, 0x5f, ++ 0xd6, 0xfc, 0x1b, 0x5c, 0x0f, 0x01, 0x4f, 0x48, 0x47, 0x4e, 0xa7, 0x3e, ++ 0xba, 0xf5, 0xa3, 0x57, 0xe4, 0xda, 0x97, 0xf2, 0xb0, 0x9e, 0x07, 0xf4, ++ 0x64, 0x3c, 0x7a, 0x3d, 0xc7, 0xf5, 0x72, 0xd5, 0x2e, 0x17, 0x49, 0x82, ++ 0xf8, 0xe7, 0xef, 0xad, 0xa1, 0x59, 0x40, 0xc7, 0xe7, 0xef, 0x74, 0xc3, ++ 0x3c, 0x8e, 0x4b, 0x35, 0x8c, 0xaf, 0x9f, 0xbc, 0x3f, 0x15, 0xf6, 0xff, ++ 0xca, 0xe4, 0x60, 0xaa, 0x07, 0x9f, 0xec, 0x7d, 0xd9, 0x53, 0x77, 0x23, ++ 0xbf, 0x95, 0x0a, 0x35, 0xa9, 0x6c, 0x1f, 0xd3, 0x37, 0x98, 0xc7, 0xcb, ++ 0x07, 0xc3, 0xfc, 0x16, 0x36, 0xfd, 0x08, 0xe7, 0x57, 0x42, 0xfc, 0xc8, ++ 0x77, 0x65, 0x4f, 0x8a, 0x45, 0x10, 0x1f, 0xfe, 0x42, 0x22, 0x33, 0xb7, ++ 0xc7, 0x90, 0x8b, 0x6b, 0x64, 0xb6, 0xff, 0x74, 0x7c, 0xa3, 0x15, 0x92, ++ 0xfc, 0xc8, 0x71, 0xb0, 0xf3, 0xc1, 0xbe, 0x7e, 0x5b, 0xc4, 0x38, 0x2b, ++ 0x21, 0x8b, 0x71, 0x1f, 0xec, 0x6e, 0x2d, 0x8e, 0x4b, 0x96, 0x60, 0xf9, ++ 0x0b, 0xbe, 0x2f, 0x35, 0x4a, 0xb6, 0x68, 0xfe, 0xa1, 0xcd, 0xc0, 0xaf, ++ 0x9b, 0x1e, 0xe8, 0x04, 0xfa, 0x9c, 0x1c, 0xe6, 0x1b, 0x04, 0x70, 0x52, ++ 0x3c, 0x04, 0x39, 0xbe, 0x04, 0xd8, 0xef, 0x17, 0x0f, 0xcf, 0x18, 0xc4, ++ 0xe8, 0xc3, 0xf2, 0x0d, 0xb0, 0x1d, 0xd5, 0xff, 0xd3, 0xe0, 0x3d, 0xd4, ++ 0xef, 0x94, 0x71, 0x9f, 0x50, 0xd7, 0x8e, 0xeb, 0x4b, 0x36, 0xfe, 0x5d, ++ 0x7c, 0x7c, 0x0a, 0xb7, 0x03, 0xd6, 0xb3, 0xe3, 0xa9, 0x6c, 0xbf, 0xd2, ++ 0x3c, 0xbf, 0xa5, 0x7c, 0x7e, 0xf4, 0xaf, 0x93, 0xe8, 0xf8, 0x4b, 0x27, ++ 0xdf, 0x4c, 0xde, 0x37, 0xad, 0x62, 0xf2, 0xad, 0xc9, 0x7b, 0xe8, 0xfa, ++ 0x99, 0xf0, 0xfd, 0xf3, 0x77, 0x98, 0xfc, 0x40, 0x3b, 0x58, 0x3f, 0x28, ++ 0x5c, 0x91, 0x41, 0xf8, 0x7d, 0xff, 0x4d, 0x02, 0xea, 0x03, 0x2b, 0x89, ++ 0xc4, 0x92, 0xeb, 0x4d, 0x32, 0x97, 0x6b, 0xe3, 0xf7, 0x00, 0x95, 0x53, ++ 0x88, 0x0b, 0x50, 0xb8, 0x25, 0xc8, 0x67, 0x88, 0xf2, 0x09, 0xed, 0x3f, ++ 0x19, 0xf1, 0x8f, 0x7e, 0x49, 0xc9, 0x7a, 0xda, 0x4e, 0x67, 0x9f, 0x05, ++ 0x60, 0x3c, 0xac, 0xa7, 0x44, 0xdf, 0xeb, 0xd6, 0x8f, 0x52, 0xae, 0x07, ++ 0x66, 0xca, 0x46, 0xf9, 0x27, 0x4d, 0x03, 0x2f, 0xca, 0x5e, 0xac, 0x94, ++ 0x49, 0x10, 0x4c, 0xcb, 0xca, 0x0f, 0xac, 0xe8, 0x77, 0x57, 0x6e, 0x93, ++ 0x8b, 0x60, 0xde, 0xa7, 0x5a, 0x0e, 0xbe, 0xfb, 0x63, 0xca, 0xd7, 0xa7, ++ 0xc2, 0x9a, 0x9c, 0x1a, 0xf5, 0xa7, 0x59, 0x4e, 0xcb, 0x76, 0x6c, 0x16, ++ 0x80, 0x3f, 0xcd, 0x72, 0x7a, 0xaa, 0x8c, 0xae, 0xd6, 0xb1, 0xe4, 0x94, ++ 0xbe, 0x8f, 0x29, 0xa7, 0x65, 0x5d, 0xff, 0x57, 0xf4, 0xa7, 0x86, 0xb7, ++ 0x80, 0x09, 0x6f, 0x54, 0x0f, 0x0e, 0x4f, 0xb2, 0xc4, 0xc7, 0x9f, 0x59, ++ 0x0f, 0xba, 0x64, 0x35, 0xa6, 0x1e, 0xa4, 0x7f, 0xef, 0x90, 0xfc, 0xfe, ++ 0x7c, 0xa7, 0xf1, 0x9b, 0xc6, 0x67, 0xd4, 0x42, 0x1b, 0x0e, 0xfa, 0xbb, ++ 0x8f, 0x1f, 0x35, 0x7e, 0xeb, 0xe3, 0x47, 0x8d, 0xdf, 0xcc, 0xf3, 0x34, ++ 0xe2, 0xcd, 0xfc, 0x7d, 0x32, 0x18, 0x6a, 0x14, 0xae, 0xa2, 0xdd, 0x32, ++ 0xfa, 0x25, 0x95, 0xed, 0x6c, 0xff, 0x86, 0xb6, 0x7b, 0x75, 0x68, 0x1e, ++ 0xe2, 0xc7, 0x87, 0xcb, 0x17, 0x69, 0x78, 0x75, 0x68, 0x8a, 0xbe, 0x1c, ++ 0x32, 0x95, 0xc3, 0xa6, 0xfa, 0x3e, 0x53, 0xb9, 0xc8, 0x54, 0xdf, 0x6f, ++ 0x2a, 0xd7, 0x18, 0xea, 0x57, 0xb6, 0x1d, 0x54, 0x58, 0x92, 0x51, 0xc4, ++ 0x50, 0xcf, 0xba, 0xf4, 0x71, 0xf2, 0x71, 0x0c, 0xfb, 0x5e, 0x5b, 0x67, ++ 0x02, 0xad, 0x9f, 0x2a, 0x41, 0xe0, 0x87, 0xf4, 0x5e, 0x05, 0xf4, 0x9c, ++ 0xbc, 0x9c, 0x9a, 0x66, 0x10, 0x3f, 0xdb, 0x2b, 0xa2, 0xbf, 0xd5, 0xa3, ++ 0xf6, 0xba, 0x93, 0xe9, 0xfb, 0xfb, 0xed, 0xcc, 0x8f, 0xed, 0xf1, 0xf0, ++ 0x72, 0x12, 0x2b, 0xf7, 0x0e, 0x54, 0xea, 0x41, 0xcf, 0x69, 0xef, 0x7b, ++ 0xed, 0x2c, 0xce, 0xd9, 0x53, 0xd4, 0xeb, 0x4e, 0xd2, 0xf9, 0xf7, 0x47, ++ 0xda, 0x45, 0x37, 0xec, 0x07, 0x77, 0x85, 0x58, 0x3e, 0x6a, 0x7f, 0x78, ++ 0xea, 0x50, 0x6e, 0xba, 0x48, 0xbc, 0xef, 0x2c, 0x2e, 0x38, 0x43, 0x74, ++ 0x66, 0x2c, 0x05, 0xff, 0xad, 0x41, 0xf4, 0x82, 0x6b, 0xb8, 0x60, 0xd9, ++ 0x2d, 0x6e, 0xd8, 0x77, 0xeb, 0x69, 0x1f, 0x79, 0xdd, 0x6c, 0xfa, 0x7e, ++ 0xe1, 0x21, 0x11, 0xcc, 0x67, 0xd2, 0xe3, 0x70, 0x8f, 0x03, 0xb8, 0x48, ++ 0xd0, 0x27, 0x0d, 0xce, 0xe7, 0xf9, 0x13, 0xf4, 0xef, 0x04, 0x09, 0xfe, ++ 0x72, 0x0a, 0xe4, 0x4d, 0xb4, 0x33, 0xfb, 0x7a, 0xc1, 0x1a, 0x93, 0x3d, ++ 0xec, 0xbc, 0x4b, 0xc1, 0xfc, 0xb2, 0xf5, 0xba, 0xb8, 0x96, 0x8e, 0xff, ++ 0xcb, 0x79, 0x3f, 0x65, 0x4d, 0xc6, 0xef, 0xe5, 0x64, 0x0d, 0xf2, 0x5f, ++ 0xb9, 0x49, 0x1e, 0xfc, 0xdc, 0x1f, 0x38, 0xac, 0xc9, 0x43, 0x0e, 0xc9, ++ 0x61, 0xfb, 0xdb, 0x84, 0xf9, 0xb1, 0x5c, 0xef, 0xce, 0x10, 0xb3, 0xaf, ++ 0x9b, 0x4d, 0xf1, 0xde, 0xd3, 0x21, 0x62, 0xde, 0xec, 0xd9, 0x76, 0x91, ++ 0xd4, 0xc3, 0x3c, 0x5b, 0x04, 0xdc, 0xe7, 0x24, 0xc1, 0x81, 0x28, 0x57, ++ 0xd5, 0xa4, 0x17, 0xf5, 0x9d, 0x86, 0x97, 0x6e, 0x90, 0x1b, 0x25, 0xbe, ++ 0x3e, 0xea, 0xde, 0xf9, 0x1f, 0xf9, 0xf7, 0x01, 0x7f, 0xbc, 0xf8, 0x87, ++ 0x71, 0x4f, 0xd0, 0x67, 0xf7, 0x8b, 0x1f, 0x8c, 0xd9, 0x03, 0xe5, 0x5d, ++ 0xef, 0x65, 0xfc, 0x81, 0xf4, 0xaf, 0x3f, 0x6d, 0xdf, 0xd7, 0xb8, 0x8f, ++ 0xd8, 0xb3, 0xcf, 0x8a, 0x71, 0xae, 0x9e, 0x7d, 0xaf, 0x65, 0xdc, 0x07, ++ 0xe5, 0x97, 0xac, 0x18, 0xe7, 0xea, 0x59, 0x6e, 0xc5, 0x7d, 0x94, 0xe0, ++ 0x3e, 0x57, 0x68, 0x34, 0x7c, 0x1f, 0xc6, 0xfc, 0x81, 0xba, 0xbd, 0x5f, ++ 0x8d, 0x63, 0x79, 0x92, 0x2b, 0x90, 0x4e, 0x7f, 0x96, 0x99, 0x3f, 0x72, ++ 0xb6, 0xfd, 0xbf, 0x3e, 0x84, 0xfc, 0x91, 0xb3, 0xed, 0x74, 0x56, 0x60, ++ 0x17, 0xec, 0x4b, 0x40, 0xb9, 0x09, 0xbc, 0x64, 0x47, 0xff, 0xbb, 0x67, ++ 0xef, 0x57, 0xf9, 0x7e, 0xe7, 0x3f, 0x6e, 0x3e, 0xd5, 0x0a, 0xf1, 0x23, ++ 0xff, 0xb9, 0xc8, 0xec, 0x1d, 0xc0, 0xaf, 0x49, 0x2c, 0x1e, 0x1c, 0xd8, ++ 0x33, 0xe9, 0x69, 0xc8, 0x6f, 0xae, 0x6a, 0xdd, 0xaf, 0x40, 0x9c, 0x7d, ++ 0xda, 0xcb, 0x7f, 0x19, 0x07, 0x7a, 0xb2, 0x67, 0x07, 0xb3, 0x77, 0xce, ++ 0xc8, 0x5d, 0x4f, 0xc1, 0x7e, 0x98, 0x55, 0xf9, 0x74, 0xb9, 0x4c, 0xf1, ++ 0x7c, 0x06, 0x84, 0x67, 0x08, 0x21, 0x4f, 0x2b, 0xe3, 0xa7, 0x05, 0xb3, ++ 0x63, 0xe1, 0x85, 0xe1, 0xa1, 0x87, 0xe2, 0x01, 0xe6, 0x45, 0xf1, 0x52, ++ 0x06, 0xfa, 0x3d, 0x1e, 0x3e, 0x32, 0x94, 0x7f, 0x56, 0x7c, 0x7c, 0x7a, ++ 0x3b, 0xd3, 0x63, 0xdf, 0xc5, 0x3c, 0xfb, 0x28, 0x5e, 0x04, 0x1f, 0x7b, ++ 0xef, 0x0a, 0xd9, 0x04, 0x9c, 0x3f, 0x7b, 0xbf, 0xef, 0xab, 0x71, 0xa0, ++ 0x67, 0x4e, 0x85, 0x97, 0xa1, 0x3d, 0x72, 0xa1, 0x79, 0x5f, 0xa1, 0xb0, ++ 0x7d, 0x96, 0xff, 0x39, 0xf3, 0x16, 0x22, 0x17, 0x33, 0xef, 0xb9, 0xff, ++ 0xb4, 0xf4, 0x66, 0xfc, 0xff, 0x11, 0xac, 0xaf, 0x03, 0xfb, 0xcb, 0x41, ++ 0x7f, 0x3e, 0xdf, 0x75, 0x0f, 0x96, 0x9f, 0x77, 0x79, 0x11, 0xde, 0x8b, ++ 0x94, 0xff, 0x9f, 0xfe, 0x4f, 0xa3, 0xfb, 0x0e, 0x4a, 0x77, 0xf7, 0x85, ++ 0xe9, 0xfe, 0xc4, 0x3f, 0xed, 0xbc, 0x2f, 0x44, 0xf7, 0x43, 0x9c, 0xee, ++ 0x2e, 0x0f, 0xec, 0x2f, 0xf7, 0xec, 0xfd, 0x0b, 0xc6, 0x4d, 0xb5, 0xf9, ++ 0x5f, 0x68, 0xde, 0x2f, 0xfd, 0x3f, 0x3a, 0x6f, 0xcd, 0x5e, 0x7f, 0xcd, ++ 0xa2, 0xbe, 0x93, 0x43, 0xeb, 0x1f, 0x22, 0x0d, 0xef, 0x8c, 0x11, 0x20, ++ 0x7f, 0xf1, 0xe0, 0x61, 0x38, 0x02, 0x56, 0x20, 0x90, 0xa2, 0x58, 0xf6, ++ 0xc8, 0x49, 0x85, 0xc5, 0x3f, 0x0a, 0x04, 0x96, 0x27, 0x48, 0x92, 0x04, ++ 0xee, 0xdf, 0x31, 0xbf, 0x68, 0x28, 0xb7, 0x13, 0x86, 0xde, 0x55, 0x82, ++ 0x76, 0xc6, 0xd0, 0xf4, 0xb5, 0x68, 0x1f, 0x10, 0x49, 0x5d, 0x0f, 0xfb, ++ 0x71, 0xaf, 0x65, 0xcc, 0xf7, 0xb2, 0x7c, 0xb0, 0xf1, 0x78, 0x0e, 0xe5, ++ 0x35, 0xcf, 0x15, 0xbc, 0x6c, 0xf4, 0x0f, 0x9f, 0x10, 0x88, 0x0f, 0xf2, ++ 0x86, 0x87, 0x66, 0xfc, 0xb0, 0x03, 0xec, 0xd5, 0xf4, 0x74, 0x11, 0xed, ++ 0x59, 0xfa, 0x44, 0x3b, 0xf6, 0x15, 0xf7, 0x4c, 0xf6, 0xbe, 0x52, 0x31, ++ 0xf8, 0x45, 0x57, 0x11, 0x5d, 0x99, 0xce, 0xab, 0x30, 0xc5, 0xe8, 0xff, ++ 0x4c, 0xe7, 0xfd, 0xcd, 0x20, 0x23, 0xde, 0xc9, 0xa1, 0xf0, 0xcf, 0xb0, ++ 0xc9, 0x9e, 0x10, 0x45, 0xd1, 0x55, 0x53, 0xfd, 0x12, 0xcc, 0xe7, 0xaa, ++ 0xc1, 0x02, 0x69, 0xd0, 0xed, 0x07, 0x4d, 0x37, 0xf9, 0x49, 0xaf, 0x82, ++ 0x5f, 0xab, 0x8b, 0x97, 0xfd, 0xad, 0xf8, 0x4b, 0xb7, 0x32, 0x3f, 0xb2, ++ 0x40, 0x18, 0xb1, 0xbe, 0x08, 0xf0, 0x37, 0x4c, 0xc4, 0x78, 0xe0, 0x05, ++ 0xf1, 0x47, 0x58, 0xfe, 0xd7, 0x6b, 0x9e, 0x1c, 0x96, 0xd7, 0x2a, 0x79, ++ 0x19, 0xfe, 0x92, 0xab, 0xbc, 0x18, 0x4f, 0xe5, 0x7e, 0x33, 0x84, 0x05, ++ 0xc0, 0x5e, 0x91, 0x9c, 0xf5, 0x9d, 0x20, 0xb7, 0x12, 0xa1, 0x7e, 0x2f, ++ 0x83, 0x1f, 0xfd, 0x65, 0xcd, 0xef, 0x8d, 0x87, 0x67, 0xc2, 0xfd, 0x68, ++ 0x89, 0x0f, 0xa9, 0xe1, 0x5d, 0x4a, 0x17, 0x31, 0x5f, 0x55, 0xd7, 0x1f, ++ 0xe2, 0x43, 0xa3, 0xc7, 0xdf, 0x4a, 0x07, 0x8d, 0x7e, 0x7f, 0x2f, 0x3d, ++ 0xce, 0x98, 0xe8, 0x91, 0xfe, 0xb9, 0x47, 0x02, 0xf9, 0x9c, 0xc6, 0xed, ++ 0xff, 0xe9, 0x9f, 0x77, 0x8a, 0x58, 0x4e, 0xf7, 0x4a, 0xb8, 0x1f, 0xc5, ++ 0xed, 0xff, 0xa9, 0xce, 0x24, 0x09, 0xec, 0xff, 0x2b, 0xa4, 0xc3, 0x22, ++ 0xc8, 0x65, 0xa9, 0xad, 0xed, 0x6a, 0x88, 0xd3, 0xdb, 0xbc, 0x02, 0xf2, ++ 0xf5, 0x25, 0xdd, 0x16, 0xf4, 0x6f, 0x6c, 0x79, 0x02, 0xe2, 0x3d, 0xab, ++ 0x51, 0xc2, 0xf2, 0x61, 0x8b, 0x67, 0x02, 0x18, 0xda, 0xd7, 0x7e, 0x6f, ++ 0xd7, 0xa9, 0x7b, 0x09, 0xc4, 0x87, 0x7d, 0x0a, 0x1a, 0xde, 0xa4, 0x88, ++ 0xc5, 0xe7, 0xff, 0xfc, 0xed, 0xb7, 0x53, 0xb4, 0xf3, 0x1a, 0xf8, 0x9d, ++ 0x90, 0x6b, 0xa8, 0xff, 0xb5, 0xa0, 0x89, 0x44, 0x1c, 0x14, 0x4f, 0x0b, ++ 0x25, 0x12, 0x4c, 0x4c, 0x86, 0xf8, 0xae, 0x40, 0x3e, 0x32, 0xc4, 0x77, ++ 0x8d, 0x65, 0xf8, 0xfb, 0x7e, 0x6a, 0xb4, 0x9f, 0x0b, 0xd5, 0x8f, 0xa7, ++ 0x47, 0xfe, 0xd1, 0xcf, 0x5d, 0x54, 0x6f, 0x7d, 0x44, 0x99, 0x63, 0x37, ++ 0x3c, 0x71, 0x5f, 0x85, 0xb2, 0x84, 0xce, 0x3f, 0xfe, 0x6e, 0x3b, 0xc3, ++ 0x57, 0xe0, 0x75, 0x12, 0x1a, 0x81, 0x71, 0x05, 0x9f, 0x58, 0xa4, 0xdb, ++ 0x37, 0x7b, 0xd0, 0xca, 0xf4, 0xc7, 0xae, 0x3f, 0xee, 0xc8, 0x85, 0xb8, ++ 0xd8, 0xd4, 0x9e, 0xec, 0x44, 0xa6, 0x4f, 0x47, 0xa1, 0x5f, 0x10, 0xe0, ++ 0x7e, 0xc1, 0x59, 0xa2, 0x26, 0x42, 0xfe, 0xc1, 0xd9, 0xf6, 0x91, 0x89, ++ 0xb8, 0x2f, 0xd8, 0x21, 0xba, 0xfc, 0x31, 0xe2, 0x32, 0x5b, 0xb9, 0xff, ++ 0xfc, 0xaf, 0x90, 0x4f, 0x41, 0x9f, 0x3d, 0x9b, 0x48, 0x03, 0x9c, 0xc3, ++ 0xe8, 0x21, 0xbd, 0x18, 0x8f, 0x0d, 0x6e, 0xb2, 0xc5, 0xdc, 0xdf, 0xbd, ++ 0xc7, 0xaa, 0xc5, 0x9b, 0x38, 0xdd, 0xe8, 0x9f, 0xa8, 0x9d, 0x37, 0x52, ++ 0x31, 0x5f, 0x24, 0x98, 0xa8, 0xa7, 0x5b, 0xf7, 0xac, 0x4f, 0xa4, 0x71, ++ 0xfd, 0xe9, 0x00, 0x7f, 0x1f, 0xe9, 0xf6, 0x4b, 0xfe, 0x5e, 0xfc, 0x82, ++ 0xbf, 0x0e, 0xf8, 0xdd, 0x6a, 0xef, 0x2a, 0x8c, 0x75, 0x1e, 0x6c, 0x25, ++ 0xc7, 0xdf, 0xb5, 0x07, 0xbe, 0xc6, 0x38, 0xe6, 0x65, 0xed, 0xcd, 0x16, ++ 0xe0, 0xdf, 0xcb, 0x36, 0x59, 0x0c, 0xfb, 0x8d, 0x41, 0x2b, 0xf7, 0xbb, ++ 0xc6, 0x93, 0xf1, 0x00, 0xd7, 0xb5, 0x07, 0xec, 0xae, 0x3c, 0xa0, 0x4b, ++ 0x87, 0xe8, 0x85, 0xfc, 0xc1, 0x40, 0xfb, 0xa7, 0x8a, 0x3f, 0xc6, 0xbe, ++ 0x95, 0x19, 0x9f, 0xd0, 0x3f, 0xc4, 0xc5, 0xf7, 0x59, 0x59, 0x9c, 0x7f, ++ 0x8f, 0x1c, 0x9e, 0x0f, 0x78, 0xdd, 0x73, 0xda, 0x86, 0xf9, 0x39, 0xbb, ++ 0x95, 0x86, 0x8a, 0x58, 0x70, 0x5e, 0x62, 0x67, 0x7a, 0x6e, 0x21, 0x09, ++ 0xdf, 0x39, 0x2e, 0xf3, 0x9f, 0x0f, 0xbf, 0x53, 0x7b, 0x9c, 0x91, 0x02, ++ 0xf0, 0x33, 0x37, 0x11, 0x1e, 0xc7, 0x30, 0xf3, 0x1f, 0x41, 0x3e, 0x3e, ++ 0xbb, 0x85, 0xe0, 0xf9, 0x50, 0xf0, 0x4b, 0x41, 0x2f, 0x9c, 0x6d, 0x61, ++ 0xe7, 0x80, 0x29, 0x4a, 0xd6, 0x82, 0x3f, 0x4d, 0xe5, 0xfd, 0x07, 0xfa, ++ 0xb8, 0xcc, 0x25, 0x6d, 0xdb, 0xff, 0x15, 0xec, 0x80, 0xea, 0x76, 0xc1, ++ 0x03, 0xa9, 0xb3, 0xd5, 0x52, 0x97, 0x02, 0xf1, 0xd6, 0x40, 0x5b, 0x92, ++ 0x08, 0xeb, 0x6e, 0x8e, 0xaa, 0xe5, 0x55, 0x7a, 0xc6, 0xde, 0xa4, 0x93, ++ 0x8b, 0x7d, 0x56, 0x96, 0x6f, 0x7c, 0x70, 0xf2, 0x9e, 0x5b, 0x61, 0xdc, ++ 0xcf, 0xba, 0x15, 0x02, 0xf6, 0x88, 0xef, 0x95, 0x5e, 0x37, 0xac, 0xdb, ++ 0x9f, 0xb5, 0xe7, 0x26, 0xc6, 0xca, 0x9b, 0xd7, 0x9e, 0xbf, 0xae, 0x25, ++ 0x57, 0x4f, 0x97, 0xa0, 0x1f, 0x82, 0x78, 0x37, 0xf3, 0x43, 0x76, 0x8b, ++ 0xc3, 0x50, 0xfe, 0x9e, 0xe8, 0x1f, 0x02, 0xf2, 0x75, 0xad, 0xb5, 0xeb, ++ 0x2e, 0x6f, 0x0c, 0xfa, 0xf9, 0x6d, 0x8c, 0xcf, 0x2e, 0x5a, 0xbf, 0x85, ++ 0xfe, 0x3f, 0xd3, 0x6f, 0xef, 0x68, 0xfa, 0xcd, 0x2f, 0x16, 0xe9, 0xe4, ++ 0x28, 0xcb, 0xd6, 0x4f, 0xbf, 0x0d, 0x8a, 0xa5, 0xdf, 0x96, 0x08, 0xea, ++ 0x20, 0xc0, 0xfb, 0x92, 0xbd, 0x23, 0x07, 0x01, 0x5d, 0x97, 0x1c, 0x92, ++ 0x07, 0xc6, 0xd2, 0x6f, 0xdb, 0x6a, 0xd9, 0x7e, 0xde, 0x0b, 0x3c, 0x1f, ++ 0xb6, 0xa7, 0x95, 0xea, 0xb7, 0xcb, 0x75, 0xfa, 0xad, 0xd5, 0x86, 0x79, ++ 0x71, 0xe6, 0x76, 0xc9, 0x36, 0x0b, 0x5f, 0x17, 0x2f, 0xa0, 0xdf, 0x42, ++ 0xff, 0x3d, 0xf2, 0xb7, 0x0d, 0xf4, 0x5b, 0x8c, 0xf9, 0x8e, 0xb6, 0x31, ++ 0xbd, 0xa1, 0xe9, 0xb7, 0x71, 0xed, 0x47, 0x50, 0xbf, 0x8d, 0x6b, 0xb5, ++ 0x18, 0xf2, 0x46, 0xd3, 0x6d, 0x17, 0xd2, 0x6f, 0xc2, 0xc0, 0x9b, 0xc0, ++ 0x1e, 0xee, 0x90, 0xbd, 0x09, 0x31, 0xf8, 0x67, 0x1b, 0xb7, 0xbf, 0x5f, ++ 0xe0, 0x79, 0x78, 0x30, 0x0e, 0xe8, 0xb9, 0x5b, 0x6d, 0x6c, 0x7f, 0xf3, ++ 0x62, 0xf5, 0x5c, 0xb6, 0x9d, 0xd1, 0xfb, 0x82, 0x7a, 0xee, 0xbf, 0x09, ++ 0xcf, 0x9a, 0x9e, 0x5b, 0xb2, 0x53, 0x3b, 0xe7, 0x68, 0xe6, 0x43, 0xa6, ++ 0xe7, 0x96, 0xec, 0xa6, 0x7a, 0x4e, 0x00, 0x7e, 0x64, 0x7a, 0x6e, 0xc9, ++ 0x5e, 0x76, 0x8f, 0x83, 0x59, 0xbf, 0x65, 0xf5, 0xd3, 0x6f, 0x04, 0xeb, ++ 0x57, 0x47, 0x58, 0xfb, 0x40, 0x5b, 0xe6, 0x86, 0xb9, 0xb4, 0xbf, 0xf1, ++ 0x3e, 0xd9, 0x6b, 0xa3, 0xf5, 0xc7, 0x47, 0xf5, 0xdd, 0x04, 0xbd, 0xbe, ++ 0xbb, 0xd5, 0xc6, 0xee, 0x5d, 0xe8, 0xa7, 0xef, 0x3a, 0x2e, 0x4e, 0xdf, ++ 0xed, 0xe4, 0xfa, 0x8e, 0xea, 0xb1, 0x11, 0xa0, 0x5f, 0xcd, 0xfc, 0xe1, ++ 0x6d, 0x37, 0xe6, 0x1d, 0xef, 0x99, 0x74, 0xbc, 0xe5, 0xd7, 0x20, 0x2f, ++ 0x6f, 0x88, 0xb8, 0x6f, 0x78, 0x98, 0x9f, 0x4b, 0x7b, 0x73, 0xd2, 0xf1, ++ 0x3c, 0xe0, 0xaf, 0x16, 0x1b, 0xd3, 0xbf, 0x75, 0x9c, 0xff, 0xce, 0xd4, ++ 0x06, 0xb1, 0xff, 0x69, 0xaf, 0xb0, 0xf9, 0x55, 0x39, 0x59, 0x3e, 0x72, ++ 0x75, 0x2b, 0xb3, 0x0f, 0xab, 0x5b, 0x84, 0x90, 0x4a, 0xff, 0x59, 0x38, ++ 0xf9, 0x6b, 0x05, 0xe0, 0x5f, 0xb4, 0x57, 0x20, 0x83, 0x68, 0xf9, 0x7a, ++ 0x2b, 0xab, 0x4f, 0x9e, 0xd5, 0xf6, 0xbd, 0xc8, 0xac, 0x1c, 0x1d, 0x3f, ++ 0x2c, 0x98, 0x58, 0x81, 0x71, 0xfb, 0x05, 0x12, 0xb1, 0x41, 0x5c, 0xbe, ++ 0xc2, 0x59, 0xf8, 0x09, 0xd8, 0xbf, 0x15, 0x13, 0x59, 0x1c, 0xbf, 0x82, ++ 0xbf, 0x5f, 0x74, 0xa8, 0xab, 0x1e, 0xe2, 0xd9, 0x8b, 0x1e, 0x13, 0x70, ++ 0xdf, 0x93, 0xf0, 0x7c, 0x00, 0x2d, 0xbf, 0xb1, 0xb4, 0x7d, 0x19, 0xc6, ++ 0x6b, 0xcd, 0x79, 0x01, 0x9a, 0x3e, 0x5f, 0x14, 0x32, 0xbe, 0xaf, 0x30, ++ 0xe5, 0x33, 0x36, 0xf3, 0x79, 0x5e, 0x2f, 0x76, 0x21, 0x5e, 0xc8, 0x5b, ++ 0x62, 0xcc, 0xbc, 0x84, 0x66, 0x33, 0x3e, 0x3a, 0x38, 0x3e, 0x36, 0x89, ++ 0xb8, 0x6e, 0xf6, 0xe1, 0x83, 0xe2, 0x47, 0xcd, 0xec, 0x8f, 0x0f, 0x4a, ++ 0xd1, 0x59, 0x39, 0xa9, 0xd1, 0xf9, 0x2f, 0x7a, 0x83, 0xce, 0x2b, 0x2f, ++ 0x3a, 0x2f, 0x0d, 0x1f, 0xe6, 0xf9, 0x69, 0x71, 0xe7, 0x0a, 0xde, 0x2e, ++ 0xde, 0x7c, 0x35, 0xfc, 0xf5, 0x9b, 0xaf, 0x86, 0x4f, 0xd3, 0xbc, 0x9f, ++ 0x06, 0xbd, 0x01, 0x0a, 0x21, 0x87, 0xe4, 0x42, 0x5e, 0x0c, 0xe5, 0x03, ++ 0xd4, 0x1b, 0xc1, 0xdf, 0x8a, 0x78, 0x7e, 0xbf, 0x68, 0xea, 0xe8, 0x41, ++ 0x7a, 0x3d, 0xbc, 0x95, 0xeb, 0xf3, 0xdc, 0x86, 0xa9, 0xd3, 0x06, 0x13, ++ 0xc0, 0x17, 0xa9, 0x01, 0xbe, 0x29, 0x69, 0x5c, 0xfc, 0xea, 0x60, 0x3a, ++ 0xef, 0x09, 0xef, 0xab, 0xe3, 0x61, 0x79, 0xfc, 0xde, 0x64, 0xab, 0x1f, ++ 0xf6, 0x47, 0xb7, 0xda, 0x7b, 0x51, 0xaf, 0x69, 0x7c, 0xf5, 0x0d, 0xe7, ++ 0xab, 0x77, 0x39, 0x1e, 0xf7, 0x0c, 0xa9, 0xc1, 0x73, 0xaa, 0x81, 0x36, ++ 0xc1, 0x03, 0x76, 0x45, 0x20, 0x62, 0x47, 0xfc, 0x05, 0x28, 0xfe, 0xe0, ++ 0xfc, 0x4a, 0x80, 0x9f, 0x5f, 0x0c, 0x50, 0xfe, 0x02, 0x79, 0x3a, 0xf8, ++ 0xd8, 0x97, 0x0c, 0x5f, 0x7b, 0x05, 0x15, 0xe2, 0xe3, 0x85, 0xda, 0xfa, ++ 0x03, 0xf8, 0xa7, 0xf5, 0x73, 0xdb, 0x19, 0xfe, 0x03, 0x21, 0x01, 0xf1, ++ 0x9f, 0x47, 0x7a, 0x71, 0x7f, 0xa4, 0xba, 0x51, 0xf0, 0x46, 0x68, 0xfd, ++ 0xea, 0xb6, 0xc5, 0x98, 0xf7, 0xa0, 0xe9, 0x5b, 0xfa, 0xe7, 0xd4, 0xd3, ++ 0x43, 0xc7, 0x8f, 0x52, 0x2c, 0x7e, 0xc4, 0x4a, 0xba, 0xf5, 0xaf, 0x82, ++ 0xd7, 0xbb, 0xd6, 0xda, 0xf0, 0x2e, 0xf0, 0xe7, 0xb5, 0xcf, 0xca, 0xa4, ++ 0x59, 0xc7, 0x9f, 0x59, 0xf4, 0xbf, 0x6f, 0x63, 0xd0, 0x49, 0xc3, 0xe7, ++ 0x85, 0xf8, 0xf2, 0x1c, 0xc7, 0xd3, 0x36, 0xc0, 0xa3, 0x13, 0xf0, 0xd5, ++ 0xcb, 0xec, 0xa7, 0xc8, 0xd7, 0x78, 0x8e, 0x46, 0xfb, 0x1e, 0x90, 0x82, ++ 0x06, 0x3c, 0x4e, 0x7b, 0xfc, 0xdc, 0x79, 0xf1, 0x34, 0x41, 0xc3, 0x13, ++ 0xf0, 0x29, 0xe8, 0xa9, 0xf6, 0x62, 0x11, 0xca, 0x25, 0x6d, 0x02, 0x19, ++ 0x90, 0xd9, 0x7f, 0x9e, 0xb0, 0x3f, 0xa9, 0x97, 0xdb, 0x45, 0x7b, 0x8f, ++ 0xb0, 0xfe, 0x9f, 0x14, 0xf0, 0xde, 0x12, 0x33, 0xdf, 0x6a, 0xf3, 0xee, ++ 0xc7, 0xb7, 0x71, 0xf8, 0x15, 0xce, 0xa5, 0x81, 0x5f, 0x74, 0xb1, 0x7c, ++ 0xfb, 0x8d, 0x89, 0x6f, 0xdf, 0xb4, 0xf7, 0xbe, 0x9e, 0x0b, 0x7c, 0xbb, ++ 0x57, 0x60, 0xf1, 0x83, 0xf6, 0x24, 0xc3, 0xfe, 0xe2, 0x10, 0x3b, 0x5b, ++ 0xff, 0xb7, 0xda, 0x29, 0x7f, 0xc3, 0xbe, 0xd6, 0x21, 0xd9, 0xbb, 0x51, ++ 0xed, 0x2f, 0xdf, 0x09, 0x7c, 0xfd, 0x02, 0xbb, 0x5f, 0x7f, 0x2e, 0xe9, ++ 0x52, 0x98, 0x08, 0xe4, 0x3d, 0x6e, 0xb1, 0x61, 0x1e, 0x19, 0xc2, 0x31, ++ 0x82, 0xd9, 0x95, 0x7a, 0xbd, 0xba, 0xcd, 0x4e, 0x06, 0xde, 0x94, 0x17, ++ 0xbf, 0xff, 0xc1, 0xbc, 0xff, 0x78, 0x76, 0x8d, 0x56, 0x1e, 0x0b, 0xe3, ++ 0x41, 0xbe, 0x57, 0x1b, 0x1d, 0x2f, 0x2b, 0x3a, 0x9e, 0x59, 0xaf, 0x6b, ++ 0x7e, 0xfe, 0x85, 0xe6, 0x35, 0xe6, 0xef, 0x9c, 0x57, 0x5f, 0x1e, 0x26, ++ 0xe9, 0xc4, 0x7d, 0xa7, 0x4c, 0xc9, 0xff, 0xb0, 0x55, 0x97, 0x07, 0x77, ++ 0x33, 0xcf, 0x33, 0xa2, 0x10, 0xa0, 0x7d, 0xa5, 0xab, 0x97, 0x6d, 0x3b, ++ 0x4f, 0x3d, 0x92, 0xe6, 0xc1, 0xf3, 0x4f, 0x77, 0x7a, 0x34, 0x3e, 0x63, ++ 0xf9, 0xee, 0x45, 0x3c, 0x8f, 0x7d, 0x86, 0x38, 0xe5, 0x3d, 0x58, 0x3f, ++ 0x3f, 0xf3, 0xb1, 0x7d, 0xbe, 0x3c, 0x0b, 0xf9, 0xdd, 0x14, 0xd0, 0xcf, ++ 0x05, 0x32, 0x9e, 0xe3, 0xfb, 0xec, 0x75, 0x19, 0xe3, 0xb5, 0x9f, 0x4d, ++ 0x67, 0x79, 0x9c, 0xd7, 0xbd, 0x71, 0x50, 0x82, 0x38, 0xcd, 0x75, 0xa0, ++ 0x9c, 0x28, 0x3e, 0xae, 0x9b, 0x20, 0xa0, 0xbf, 0x02, 0xc7, 0xb0, 0x60, ++ 0xdf, 0x6c, 0x17, 0xb5, 0x6f, 0x7c, 0x63, 0x70, 0x3e, 0xb9, 0x70, 0x8e, ++ 0x2b, 0x67, 0x53, 0xc3, 0x34, 0x38, 0x7f, 0x3c, 0x7e, 0x4b, 0xa8, 0x0e, ++ 0x9e, 0xde, 0x69, 0xbd, 0x29, 0x6f, 0x02, 0x1e, 0xa7, 0x8a, 0x04, 0xf0, ++ 0xd8, 0xe9, 0x1b, 0x30, 0x0d, 0xee, 0x4f, 0xba, 0xf3, 0x4f, 0x04, 0xef, ++ 0x0f, 0xa1, 0xeb, 0x2c, 0xb6, 0x1f, 0xdf, 0x41, 0x06, 0x42, 0xbd, 0xc9, ++ 0xbe, 0x81, 0xe8, 0x0e, 0x4c, 0x6a, 0x5d, 0x3f, 0x0d, 0xe2, 0xa3, 0xd7, ++ 0x1f, 0x74, 0x3a, 0xe1, 0x7e, 0x96, 0xac, 0x26, 0x0b, 0xf5, 0x19, 0xa2, ++ 0xf8, 0x9b, 0x4c, 0x42, 0x75, 0xb0, 0xdf, 0x3e, 0xe9, 0xa8, 0xef, 0x46, ++ 0x80, 0xb7, 0x8c, 0xda, 0x0b, 0x10, 0x77, 0x2e, 0x6b, 0x6f, 0xae, 0x73, ++ 0x43, 0xb9, 0x49, 0xf0, 0xaa, 0xb4, 0xff, 0x40, 0xd0, 0x5f, 0xe8, 0xa6, ++ 0xf3, 0xd8, 0xd6, 0xf8, 0x69, 0xe1, 0x77, 0x40, 0x1e, 0x69, 0x3d, 0xe8, ++ 0x26, 0xd0, 0xc4, 0xea, 0x05, 0x36, 0xc1, 0xc5, 0x43, 0xf0, 0x7e, 0x1d, ++ 0xe6, 0xd9, 0x94, 0x6c, 0x12, 0xf0, 0xe0, 0xd7, 0xb6, 0x90, 0x40, 0x6c, ++ 0xac, 0xdf, 0x90, 0x8d, 0xf6, 0xbb, 0xad, 0x89, 0xb6, 0xcf, 0x83, 0x75, ++ 0x82, 0xb6, 0x87, 0x7e, 0x37, 0x7d, 0xfa, 0xce, 0x8d, 0x20, 0xef, 0xaf, ++ 0x8b, 0xac, 0x7d, 0x0b, 0xdb, 0xa7, 0x2e, 0xa1, 0xed, 0x54, 0xe0, 0xdb, ++ 0x4d, 0x8b, 0xb1, 0xbf, 0x45, 0x4d, 0x02, 0x49, 0xa3, 0xfd, 0x95, 0xb5, ++ 0xb0, 0x75, 0xa0, 0xec, 0x75, 0xd9, 0x0b, 0xdf, 0x5b, 0xf7, 0x3f, 0x86, ++ 0xeb, 0xd8, 0x2c, 0x3a, 0xde, 0xe0, 0x4c, 0xd0, 0xfb, 0x91, 0xe9, 0x50, ++ 0x26, 0xb9, 0x82, 0x07, 0xcf, 0xa1, 0x54, 0x8e, 0x41, 0xba, 0xf5, 0x70, ++ 0x39, 0x27, 0x53, 0x46, 0x33, 0xfd, 0x21, 0xf0, 0x32, 0xf7, 0x1b, 0x34, ++ 0xbb, 0xe9, 0x5d, 0x3b, 0xcb, 0xf7, 0x2d, 0xf1, 0x2e, 0x53, 0x06, 0xd0, ++ 0x7e, 0xde, 0x9c, 0x38, 0x30, 0x13, 0xd2, 0x02, 0x02, 0x6d, 0x9f, 0xe2, ++ 0xfe, 0xf3, 0x51, 0x8a, 0x67, 0x3f, 0xed, 0xf2, 0x30, 0xcf, 0xdb, 0x38, ++ 0x38, 0xf1, 0x63, 0xa5, 0x4b, 0xb7, 0x0e, 0x7d, 0x66, 0x67, 0xf7, 0x5b, ++ 0x2d, 0x68, 0x9b, 0x8a, 0xf9, 0x0c, 0x0b, 0x49, 0x11, 0xe6, 0x33, 0x5c, ++ 0x3b, 0x89, 0xd9, 0x6b, 0x6f, 0x5d, 0x61, 0x0f, 0xc1, 0x15, 0x07, 0x6f, ++ 0xc9, 0xbd, 0xe9, 0xf0, 0xfe, 0xe0, 0x15, 0x56, 0xb4, 0x7f, 0xcf, 0x6c, ++ 0x93, 0x91, 0x8f, 0xce, 0x0c, 0xeb, 0xc2, 0xf8, 0xf4, 0xf1, 0x26, 0x19, ++ 0xcf, 0x0d, 0xd7, 0x35, 0xb1, 0xfb, 0xb9, 0x8e, 0xb7, 0xb0, 0x75, 0x5c, ++ 0x7c, 0x92, 0xed, 0xeb, 0x97, 0xba, 0x14, 0x2c, 0x1f, 0x6c, 0xba, 0xb1, ++ 0x10, 0xd6, 0xb7, 0xe3, 0x9b, 0xd8, 0x79, 0xc7, 0x69, 0x4f, 0xce, 0x50, ++ 0xa0, 0x5c, 0xda, 0x2c, 0x78, 0xd9, 0xfd, 0x45, 0x4c, 0x3f, 0x6a, 0xfe, ++ 0x5b, 0x89, 0x87, 0xe5, 0x23, 0x68, 0xfa, 0xaf, 0x8a, 0xcf, 0xbb, 0x5f, ++ 0xde, 0xa2, 0x49, 0xdf, 0x55, 0x69, 0xeb, 0x8d, 0x49, 0xdf, 0x55, 0xc1, ++ 0xbe, 0xb2, 0x1b, 0x9e, 0xc6, 0xf7, 0x01, 0xe2, 0x64, 0x7a, 0x10, 0xec, ++ 0x7e, 0xa0, 0x7b, 0xe4, 0x6b, 0xe4, 0xdf, 0xea, 0xd7, 0x65, 0x02, 0x76, ++ 0xbf, 0xf0, 0x71, 0x77, 0x21, 0xe6, 0x63, 0xed, 0x15, 0x30, 0x9e, 0x3f, ++ 0xa9, 0x5d, 0xf0, 0xc1, 0xbe, 0x7e, 0xd9, 0xfb, 0xd6, 0x10, 0xda, 0xab, ++ 0xa1, 0xe2, 0x3b, 0x7e, 0x02, 0x7a, 0xfc, 0x03, 0x2b, 0x11, 0x54, 0xc8, ++ 0x6b, 0xa7, 0x78, 0xa7, 0xfa, 0x61, 0xa2, 0xb5, 0xf7, 0x8f, 0xbf, 0xa0, ++ 0xef, 0x3f, 0x39, 0x6c, 0x83, 0x4c, 0x18, 0xca, 0x27, 0xc5, 0x88, 0x67, ++ 0x2d, 0xff, 0x33, 0x6f, 0x33, 0xcb, 0x63, 0xc9, 0x3b, 0xbc, 0x3e, 0x15, ++ 0xce, 0x5b, 0x92, 0xe9, 0x03, 0x50, 0xdf, 0x96, 0x36, 0x8a, 0xc4, 0xaf, ++ 0xd3, 0x1b, 0x9f, 0x08, 0xbe, 0x1b, 0x7f, 0xcc, 0xf4, 0x32, 0xde, 0x4f, ++ 0xa1, 0xd1, 0x2f, 0x4f, 0x69, 0x28, 0x81, 0x75, 0x6c, 0xa4, 0x83, 0xe9, ++ 0x25, 0x75, 0xb3, 0x0c, 0x39, 0x22, 0xe4, 0x10, 0x8f, 0x93, 0x50, 0x7b, ++ 0x1a, 0xcf, 0xdf, 0x2e, 0xda, 0xbd, 0x2e, 0x55, 0xa1, 0xf5, 0xea, 0x79, ++ 0xfe, 0xc7, 0xa2, 0xbd, 0xeb, 0x52, 0x45, 0xfa, 0xbe, 0x0e, 0xd6, 0x2f, ++ 0x5a, 0x7f, 0x91, 0xc2, 0xfa, 0x5f, 0xb4, 0x4f, 0xf0, 0x34, 0xeb, 0xfa, ++ 0xd7, 0xda, 0x6b, 0xfd, 0x69, 0xfd, 0x28, 0xbb, 0x8d, 0xfd, 0x8c, 0xdc, ++ 0xcb, 0xcb, 0x17, 0xd9, 0x8f, 0x06, 0x87, 0x36, 0x7e, 0x3c, 0x7b, 0x7c, ++ 0xe2, 0xbf, 0x9f, 0x5b, 0x0f, 0xf7, 0xc5, 0x4c, 0x7c, 0x4b, 0xc4, 0xa4, ++ 0xe3, 0x89, 0x1f, 0xcf, 0x1a, 0xa9, 0xdf, 0xef, 0xd0, 0x9e, 0x5a, 0xfc, ++ 0x35, 0xff, 0x1d, 0x0b, 0xf1, 0xe9, 0xf0, 0x36, 0xf1, 0x8f, 0x0e, 0xe2, ++ 0xd3, 0xf1, 0x45, 0xeb, 0x04, 0x2a, 0xdf, 0x94, 0x6e, 0xd7, 0xb4, 0x09, ++ 0x21, 0x00, 0xa5, 0x75, 0xc2, 0x11, 0xa5, 0x2a, 0x0f, 0xcb, 0x1e, 0x90, ++ 0xe7, 0x6a, 0x1e, 0xa7, 0xad, 0x9e, 0xce, 0xf6, 0xad, 0x5a, 0x73, 0x0e, ++ 0xaf, 0x00, 0xf9, 0x9e, 0x95, 0x27, 0x20, 0x1f, 0x90, 0xa0, 0x5f, 0x19, ++ 0x90, 0x82, 0x76, 0x90, 0x0a, 0xf1, 0xf1, 0xd2, 0x3c, 0xd6, 0xbe, 0x94, ++ 0xb6, 0x07, 0xb9, 0x6b, 0x7d, 0x8c, 0xc9, 0x21, 0xd5, 0x07, 0x2a, 0xe8, ++ 0x8b, 0xea, 0xa6, 0x75, 0x85, 0x58, 0x7f, 0x93, 0xa0, 0x42, 0xff, 0xad, ++ 0xcd, 0xc5, 0xb8, 0xde, 0x97, 0x4d, 0x14, 0x09, 0x7e, 0xdf, 0x74, 0x04, ++ 0xed, 0x8f, 0xb2, 0xb6, 0x23, 0x29, 0x20, 0xaf, 0x54, 0x3e, 0xd7, 0xc3, ++ 0xfa, 0x5b, 0x3d, 0xc5, 0x8a, 0xf7, 0x79, 0x69, 0x72, 0xa7, 0xc9, 0xf1, ++ 0x5b, 0x32, 0xbf, 0xaf, 0xc9, 0xe6, 0x19, 0x0b, 0x79, 0xfd, 0xf7, 0x01, ++ 0x50, 0x31, 0xe4, 0x57, 0x7c, 0x9d, 0x30, 0x3f, 0xb5, 0x45, 0x46, 0x39, ++ 0x0b, 0x4c, 0x64, 0x72, 0xf9, 0xd6, 0x36, 0x11, 0xe5, 0xf9, 0xe0, 0x15, ++ 0xb7, 0xa0, 0x1c, 0x9e, 0xd9, 0x2c, 0xc4, 0x91, 0xe3, 0x69, 0x0a, 0x9c, ++ 0x4b, 0x3e, 0x1e, 0x62, 0xdf, 0xfb, 0xe4, 0x78, 0xab, 0xc0, 0xe5, 0x98, ++ 0xe9, 0x87, 0xe3, 0x4e, 0x26, 0xd7, 0xd3, 0xe0, 0x3b, 0xc8, 0xf1, 0x4e, ++ 0x81, 0xfb, 0x83, 0xcc, 0x1e, 0x34, 0xcb, 0xb1, 0x26, 0x97, 0x17, 0x92, ++ 0xdf, 0x8a, 0x2d, 0x26, 0x79, 0x8e, 0x23, 0xb7, 0x9d, 0x52, 0xd7, 0x4d, ++ 0x30, 0xee, 0x9d, 0x57, 0xd8, 0x11, 0xee, 0x69, 0xdf, 0xdf, 0xfd, 0xee, ++ 0x9d, 0xa8, 0x7f, 0x64, 0xcc, 0xfb, 0x98, 0xf6, 0xfd, 0x7b, 0x53, 0x41, ++ 0xdf, 0x95, 0x48, 0x2c, 0x5f, 0x49, 0xc3, 0x63, 0x95, 0xc4, 0xf2, 0xd9, ++ 0xfa, 0xc1, 0xb1, 0x7e, 0x99, 0x32, 0xf8, 0xa2, 0xe0, 0x31, 0xc2, 0xf1, ++ 0x84, 0xdd, 0x15, 0xd5, 0x1f, 0x22, 0xf0, 0x39, 0xbb, 0x87, 0x2b, 0xb8, ++ 0x49, 0x46, 0x3e, 0x37, 0xcb, 0xe1, 0xdf, 0x2b, 0x3f, 0xff, 0x28, 0x79, ++ 0x3e, 0xc4, 0xf9, 0x47, 0x83, 0x47, 0xdc, 0xcb, 0xda, 0x43, 0xfe, 0x58, ++ 0x84, 0xe2, 0xe9, 0xb5, 0x96, 0xa7, 0x31, 0x4f, 0xf5, 0xf4, 0x73, 0x47, ++ 0xae, 0x05, 0x3c, 0x57, 0xec, 0xa1, 0x7c, 0x4b, 0xe7, 0x7b, 0xa6, 0xc5, ++ 0xc5, 0xef, 0x7b, 0x09, 0xe1, 0x3a, 0x53, 0xde, 0x2a, 0x62, 0x1e, 0x38, ++ 0x91, 0x22, 0xf9, 0x37, 0xba, 0xf4, 0x72, 0xc9, 0xf2, 0x90, 0x2a, 0x5e, ++ 0x70, 0x21, 0x7f, 0x94, 0xef, 0x60, 0xf9, 0xa4, 0xe5, 0x2f, 0x7e, 0x3c, ++ 0x0e, 0xf3, 0x44, 0x96, 0xf7, 0x62, 0x7e, 0x55, 0xf0, 0x39, 0x6e, 0x6f, ++ 0x06, 0xbb, 0xc6, 0x01, 0x5f, 0x97, 0x4b, 0x2c, 0x1f, 0xca, 0x2c, 0xe7, ++ 0x37, 0x39, 0x98, 0xfd, 0xd9, 0xbd, 0x3b, 0x61, 0x36, 0xcc, 0x43, 0xd8, ++ 0xc2, 0xce, 0xe9, 0x97, 0x87, 0x6f, 0x91, 0x81, 0x0f, 0xb5, 0x7a, 0x3f, ++ 0x74, 0xc8, 0x5a, 0x3d, 0xdc, 0xbf, 0x0c, 0x52, 0xbe, 0x85, 0xfd, 0x75, ++ 0x80, 0x4f, 0x7f, 0xee, 0x5c, 0xcb, 0x83, 0xea, 0xde, 0xca, 0xe4, 0xbe, ++ 0xbc, 0x4d, 0x46, 0x7f, 0xa9, 0x7c, 0x4b, 0x33, 0xc6, 0xb1, 0x03, 0x5b, ++ 0x3e, 0xc5, 0x3c, 0xf7, 0x69, 0x2f, 0x6c, 0xc3, 0xf8, 0x41, 0xa0, 0x4d, ++ 0x34, 0xe6, 0x3d, 0x6e, 0x11, 0x23, 0x56, 0xcc, 0xcb, 0x14, 0x8f, 0x58, ++ 0xd9, 0x3a, 0x65, 0xc8, 0x3f, 0xac, 0x6e, 0xad, 0xc2, 0xfd, 0xb6, 0xea, ++ 0x30, 0xcf, 0xef, 0x33, 0xe5, 0xbf, 0x55, 0xbc, 0xb0, 0xf7, 0xc5, 0x20, ++ 0x45, 0x4d, 0xc5, 0xaf, 0x9f, 0x75, 0x83, 0x1e, 0x38, 0xd9, 0xb9, 0xd9, ++ 0x0d, 0xf8, 0xa4, 0xfd, 0x61, 0xde, 0xe0, 0xf7, 0x3f, 0x97, 0x0c, 0x79, ++ 0x51, 0xf1, 0xf3, 0x7b, 0x7d, 0xc6, 0x7c, 0xc2, 0xf0, 0xaa, 0x98, 0xf9, ++ 0x84, 0x27, 0xe1, 0x1f, 0x94, 0xc1, 0xef, 0x75, 0x70, 0x7e, 0xd5, 0xf2, ++ 0x30, 0xb7, 0x0c, 0xe0, 0x79, 0xda, 0x91, 0xfc, 0xa2, 0x18, 0xf1, 0xfb, ++ 0xbe, 0x73, 0x3b, 0xdb, 0xbe, 0x78, 0x0a, 0xf2, 0xdc, 0xbb, 0x77, 0x9c, ++ 0x7a, 0x0a, 0xe0, 0xae, 0xfc, 0xeb, 0x67, 0x4f, 0x41, 0x3e, 0x13, 0xd9, ++ 0x67, 0xc7, 0x75, 0x29, 0xf0, 0xdc, 0xef, 0x30, 0x4f, 0x58, 0x6b, 0xf7, ++ 0x0b, 0x07, 0xf7, 0xf3, 0xb7, 0x3e, 0x8b, 0xf9, 0xd5, 0x67, 0x3e, 0xb0, ++ 0xa2, 0x9f, 0x73, 0x66, 0xef, 0xf1, 0x0c, 0xc8, 0x5f, 0x3b, 0xb3, 0xfd, ++ 0xeb, 0x54, 0x88, 0xc7, 0xdd, 0xb5, 0x77, 0x06, 0xc6, 0x2b, 0xef, 0xda, ++ 0x39, 0x6d, 0x10, 0x89, 0xa1, 0xdf, 0xb5, 0x27, 0xf0, 0x65, 0xe8, 0x22, ++ 0xf2, 0xbb, 0xcd, 0x74, 0x38, 0xd8, 0x7a, 0x10, 0xf3, 0xae, 0x4e, 0xbf, ++ 0x6f, 0x45, 0x7d, 0xd6, 0x97, 0x17, 0x1a, 0xae, 0x62, 0x79, 0xb6, 0x2a, ++ 0xcf, 0x07, 0x6d, 0x89, 0x9d, 0x47, 0xaf, 0xe5, 0x31, 0x56, 0xb7, 0xde, ++ 0x78, 0xdd, 0x15, 0xa0, 0x9f, 0x5b, 0x99, 0x3d, 0xd7, 0x97, 0xd7, 0x78, ++ 0xa1, 0x3c, 0xd0, 0x77, 0x28, 0x3d, 0x2f, 0xbf, 0x08, 0xba, 0xb5, 0xf0, ++ 0x3c, 0x5f, 0x13, 0xdd, 0x4e, 0xc3, 0x3f, 0x28, 0x7d, 0xc2, 0x26, 0xba, ++ 0x7d, 0xd1, 0xba, 0xf0, 0x57, 0x8f, 0xc3, 0xb7, 0xd6, 0x01, 0x71, 0xf3, ++ 0x40, 0x23, 0x17, 0x81, 0x2f, 0x2d, 0x4f, 0xff, 0xe7, 0x0e, 0xdf, 0x1e, ++ 0x07, 0x9c, 0xfb, 0xdb, 0x91, 0x10, 0x4c, 0x63, 0xf4, 0x0a, 0xcd, 0x12, ++ 0xc0, 0xde, 0xfb, 0x22, 0x03, 0xce, 0x35, 0x9c, 0x90, 0x7b, 0x31, 0xdf, ++ 0xa3, 0x77, 0xaf, 0xd5, 0x03, 0xf9, 0x8c, 0xe5, 0x7b, 0xdf, 0x43, 0xf9, ++ 0x38, 0xb3, 0xf3, 0x30, 0xc6, 0x55, 0x09, 0xcf, 0x93, 0x3f, 0x43, 0xfa, ++ 0xfe, 0x58, 0x5e, 0xb3, 0xc0, 0xe7, 0xb7, 0xc9, 0xc5, 0xf2, 0x47, 0x39, ++ 0xde, 0x21, 0xbf, 0x54, 0x75, 0xe3, 0x7b, 0x9e, 0x47, 0xca, 0xf8, 0x56, ++ 0xcb, 0x2f, 0x8d, 0x97, 0x57, 0xda, 0xeb, 0x18, 0xc1, 0xe2, 0xd0, 0xfc, ++ 0xdc, 0x40, 0x15, 0xf5, 0x93, 0xf8, 0xbd, 0x59, 0x7d, 0xf9, 0xa6, 0xc2, ++ 0x44, 0xa0, 0xd3, 0x11, 0x43, 0x9e, 0xae, 0x36, 0x6f, 0x73, 0x7f, 0x1e, ++ 0xae, 0x37, 0xa3, 0xf9, 0xd1, 0xb1, 0xf3, 0x76, 0xb5, 0x7c, 0xc1, 0x28, ++ 0x9d, 0xd8, 0x3a, 0xa2, 0xe5, 0x3f, 0x9f, 0x69, 0xe6, 0x79, 0xd3, 0xf4, ++ 0x7d, 0xfa, 0x78, 0xc8, 0x83, 0x63, 0xeb, 0x75, 0x20, 0x24, 0xbc, 0x47, ++ 0x62, 0xc8, 0xa3, 0x96, 0x1f, 0x7d, 0xca, 0x61, 0xca, 0x8b, 0x0e, 0x5d, ++ 0x5c, 0x5e, 0xf4, 0x85, 0xe0, 0xfd, 0xdf, 0xc5, 0xc7, 0x87, 0x0e, 0x16, ++ 0xaf, 0xd6, 0xf0, 0xd2, 0xfd, 0xe7, 0xd8, 0xfa, 0x58, 0x49, 0x60, 0x76, ++ 0x27, 0xf5, 0x4f, 0xe5, 0x04, 0xdc, 0x17, 0x60, 0xfe, 0xe9, 0x1d, 0xdc, ++ 0x3f, 0xd5, 0xf0, 0xa5, 0xc1, 0x5b, 0x1f, 0x66, 0x76, 0x43, 0xf7, 0x16, ++ 0xe6, 0x1f, 0x98, 0xe5, 0xb9, 0x3a, 0xce, 0x7d, 0x49, 0x29, 0x7c, 0x9c, ++ 0xea, 0xb6, 0xfd, 0xe3, 0x40, 0xef, 0x74, 0x1f, 0xd8, 0xcd, 0xf9, 0x8d, ++ 0xf1, 0x73, 0x75, 0xcb, 0x11, 0x96, 0x77, 0x4b, 0xf5, 0x73, 0x48, 0xaf, ++ 0x9f, 0xf9, 0xfd, 0x12, 0xe6, 0xfe, 0x32, 0x78, 0x7f, 0x81, 0xf6, 0xd8, ++ 0xfd, 0x05, 0x5a, 0x3e, 0x8d, 0xd9, 0xdf, 0x49, 0xc9, 0x77, 0x0b, 0xc0, ++ 0x7f, 0xb2, 0x93, 0xd9, 0x49, 0x27, 0xc3, 0xe2, 0xcc, 0x58, 0xf7, 0xdb, ++ 0xd8, 0x12, 0x64, 0x43, 0xfe, 0x40, 0xbd, 0x8b, 0xdd, 0x97, 0x21, 0xba, ++ 0x1d, 0x68, 0x1f, 0xdd, 0xe5, 0x9a, 0xf8, 0x7e, 0x62, 0x0a, 0x3c, 0x15, ++ 0xcc, 0xeb, 0xa9, 0x5b, 0xc6, 0xf3, 0x80, 0x7e, 0xe6, 0xc5, 0x7b, 0x45, ++ 0xeb, 0x5c, 0x57, 0x13, 0x80, 0xe7, 0x7e, 0xc0, 0x8f, 0x2e, 0xce, 0x20, ++ 0x7b, 0xfc, 0x04, 0xec, 0x34, 0x39, 0xad, 0x28, 0x4f, 0x54, 0xa3, 0xf0, ++ 0xf6, 0xd1, 0x23, 0xc5, 0x42, 0x42, 0x7a, 0xfa, 0x4b, 0x91, 0x74, 0xd0, ++ 0xe7, 0x1f, 0xe6, 0x1c, 0x97, 0xa1, 0xbf, 0xff, 0x34, 0xc5, 0x47, 0xfe, ++ 0x53, 0x22, 0xf5, 0x83, 0x28, 0x5c, 0xff, 0x19, 0x14, 0xbc, 0xcb, 0xd4, ++ 0xf8, 0x76, 0xb5, 0x56, 0xf6, 0xff, 0x54, 0x34, 0xc4, 0x33, 0xaa, 0xad, ++ 0xbd, 0x1f, 0x82, 0x7d, 0x4e, 0x5e, 0xb6, 0xe3, 0x7e, 0xb8, 0xb8, 0xcf, ++ 0x1e, 0xc4, 0xf8, 0xd8, 0x53, 0xec, 0x5e, 0x8d, 0x83, 0x3b, 0xbf, 0x7a, ++ 0x06, 0xef, 0xe5, 0xf9, 0x95, 0x95, 0x70, 0xbb, 0x50, 0x00, 0x7d, 0x50, ++ 0xca, 0xe3, 0x14, 0xc7, 0x77, 0x7e, 0xf5, 0xd4, 0x7f, 0x81, 0x1d, 0x09, ++ 0x8d, 0xe9, 0xf8, 0xa5, 0x4f, 0xd1, 0xfa, 0x60, 0x3f, 0xb7, 0x24, 0xa0, ++ 0xbd, 0xdf, 0xb3, 0x23, 0x71, 0x1c, 0xc4, 0x01, 0x4a, 0x5f, 0xbe, 0xef, ++ 0x5a, 0xd0, 0x17, 0xa5, 0xa0, 0xfb, 0xc0, 0xce, 0x7c, 0x61, 0x50, 0xa8, ++ 0x8e, 0xf6, 0x77, 0x6c, 0x20, 0x2b, 0x1f, 0xdb, 0x36, 0x0c, 0xcf, 0x05, ++ 0x54, 0xec, 0x70, 0x61, 0x3e, 0xe1, 0xc1, 0x9d, 0xbb, 0xaa, 0x41, 0xdf, ++ 0x9f, 0x79, 0x21, 0x81, 0x80, 0xbe, 0x3f, 0x2d, 0x77, 0xfd, 0x15, 0xca, ++ 0x81, 0x3d, 0x89, 0xa4, 0x59, 0x45, 0xbb, 0x4f, 0xd5, 0xaf, 0xab, 0x8b, ++ 0x88, 0xa4, 0xea, 0xed, 0xb9, 0x0a, 0x28, 0x1b, 0xf2, 0x5b, 0x08, 0xe6, ++ 0xb7, 0x60, 0xfc, 0x8d, 0xf2, 0x73, 0x45, 0x5b, 0x22, 0x9e, 0xff, 0xd0, ++ 0xd5, 0xe3, 0xf2, 0x1c, 0x1c, 0xc2, 0xef, 0x89, 0x1a, 0x02, 0x72, 0x47, ++ 0xed, 0x46, 0xd5, 0x98, 0xf7, 0xcc, 0xbe, 0x2f, 0x48, 0x60, 0xfa, 0x2b, ++ 0x60, 0xed, 0xbd, 0x87, 0xdd, 0x87, 0xc0, 0xea, 0x07, 0x94, 0xde, 0x12, ++ 0x56, 0x6e, 0x18, 0xc2, 0xe4, 0xb6, 0x13, 0xeb, 0x2f, 0xd6, 0xf8, 0x95, ++ 0x7f, 0xef, 0xdf, 0x2f, 0xab, 0x1f, 0x48, 0x60, 0xf1, 0x80, 0x68, 0x3f, ++ 0xac, 0x7d, 0xb5, 0x95, 0xdd, 0xaf, 0x61, 0xa6, 0xef, 0x4f, 0x13, 0x04, ++ 0x7e, 0x1e, 0xf7, 0x2f, 0x97, 0xc4, 0xba, 0x7f, 0x22, 0x06, 0xfc, 0xec, ++ 0x5e, 0x2e, 0x81, 0x04, 0xe1, 0xfe, 0x55, 0xb2, 0xdd, 0x8e, 0xf7, 0xf1, ++ 0x54, 0x2a, 0x91, 0x31, 0x90, 0xaf, 0xfe, 0xa2, 0xc2, 0xf6, 0x3f, 0x2a, ++ 0xdd, 0x91, 0x31, 0x90, 0xaf, 0xbe, 0x87, 0xeb, 0xbf, 0x4a, 0x07, 0x2d, ++ 0xd3, 0xf7, 0x43, 0x38, 0x1c, 0x50, 0x1f, 0xca, 0xc4, 0xd6, 0xf5, 0x3c, ++ 0xde, 0xeb, 0xb4, 0xcb, 0x8e, 0xf7, 0xe1, 0x55, 0xbd, 0xec, 0xf2, 0xa1, ++ 0x9f, 0xf0, 0xe2, 0x57, 0xc7, 0x9e, 0xc8, 0x83, 0x7c, 0xb5, 0x04, 0xcc, ++ 0x93, 0xae, 0x7a, 0xf9, 0x5f, 0x90, 0xfe, 0x55, 0xd6, 0xc8, 0xed, 0xc0, ++ 0xff, 0xbd, 0xdb, 0xad, 0x78, 0x3f, 0x69, 0xf7, 0xf6, 0x43, 0x19, 0x60, ++ 0x37, 0x74, 0xcb, 0x91, 0x8c, 0xe4, 0xf3, 0xec, 0xeb, 0x54, 0x85, 0xad, ++ 0x86, 0x7d, 0x6a, 0x6d, 0x1e, 0x27, 0x6b, 0x97, 0x4e, 0x86, 0x73, 0xbc, ++ 0xda, 0x39, 0xc3, 0xf2, 0x38, 0xfa, 0xe2, 0x8d, 0x04, 0x96, 0xd7, 0xd1, ++ 0x9c, 0xe0, 0xfb, 0x15, 0xd3, 0x73, 0xc6, 0xfb, 0x65, 0x4e, 0xd6, 0xce, ++ 0x36, 0xdc, 0x9b, 0x58, 0x6e, 0x8b, 0xad, 0xc7, 0x5a, 0x40, 0x2f, 0xe8, ++ 0xe2, 0x78, 0x62, 0xf4, 0x5c, 0x61, 0x0b, 0xf4, 0x7b, 0x9a, 0x74, 0xd5, ++ 0x0f, 0xa1, 0x24, 0xa9, 0x12, 0x7a, 0x71, 0x7f, 0xbc, 0x7c, 0x4b, 0x66, ++ 0x3a, 0xf8, 0xbb, 0x07, 0xec, 0x97, 0xe0, 0xbe, 0xd5, 0x01, 0x59, 0x45, ++ 0x7f, 0x10, 0x9e, 0x7a, 0x7d, 0x7c, 0xa2, 0xd6, 0x9b, 0x2b, 0xe1, 0x79, ++ 0xfa, 0xac, 0x5c, 0x89, 0xc2, 0xd1, 0xd3, 0xfc, 0x69, 0xc9, 0x10, 0x02, ++ 0xf9, 0x81, 0xf6, 0xd9, 0xb1, 0xf4, 0xd3, 0xde, 0x84, 0x04, 0xe4, 0xa7, ++ 0x72, 0x9b, 0x35, 0xe6, 0xf9, 0xcd, 0xdf, 0x72, 0x7e, 0xdb, 0x06, 0xf2, ++ 0x36, 0x81, 0x8d, 0xe7, 0xcd, 0x8e, 0x8e, 0x7b, 0x40, 0x0e, 0x29, 0x00, ++ 0xc7, 0x14, 0xa7, 0x8a, 0xf3, 0x29, 0xa7, 0x7e, 0x00, 0xbb, 0x27, 0x6a, ++ 0x4e, 0xae, 0xfe, 0xdc, 0xf6, 0x22, 0xa9, 0x01, 0xeb, 0x51, 0xf9, 0x42, ++ 0x7c, 0x2c, 0x22, 0xeb, 0x95, 0x3c, 0x67, 0x7f, 0xbd, 0xb2, 0x68, 0x69, ++ 0x5e, 0xae, 0x94, 0x8b, 0x0a, 0xeb, 0x9b, 0x3e, 0x7e, 0x13, 0xa3, 0x74, ++ 0x22, 0xc1, 0x14, 0xb4, 0x93, 0x24, 0x4e, 0x43, 0xb2, 0x7e, 0xb0, 0x21, ++ 0xdf, 0x5f, 0x92, 0x8b, 0x6c, 0x80, 0x2f, 0x85, 0x14, 0x79, 0x24, 0x11, ++ 0x48, 0xdd, 0x80, 0x72, 0xea, 0x20, 0x61, 0x7c, 0x3a, 0xa9, 0x19, 0xc2, ++ 0xd6, 0xa1, 0x1a, 0x02, 0xf1, 0xf1, 0x13, 0x7c, 0x7f, 0xd6, 0x2a, 0xa9, ++ 0x0f, 0xe3, 0x7d, 0x33, 0x1d, 0x22, 0xea, 0xf3, 0x0b, 0xe1, 0xed, 0xbd, ++ 0x04, 0x37, 0xc2, 0x6d, 0x95, 0x6a, 0x88, 0x17, 0xed, 0x8d, 0x59, 0x1e, ++ 0xb0, 0xc7, 0x84, 0xa0, 0x9f, 0x7c, 0x4b, 0xf9, 0xa1, 0xae, 0x76, 0x66, ++ 0x2e, 0x3b, 0x17, 0x4e, 0x7c, 0x90, 0xef, 0xe6, 0x26, 0x0c, 0x3e, 0xb7, ++ 0xe7, 0xd5, 0xaf, 0xc1, 0x3e, 0xa0, 0x7c, 0xc6, 0xee, 0xb1, 0xfa, 0x3e, ++ 0x09, 0xd5, 0xd1, 0xf1, 0xe0, 0x98, 0x31, 0xc6, 0xff, 0x0a, 0xd8, 0x7d, ++ 0xf6, 0xe6, 0xf1, 0xfe, 0xcc, 0xe9, 0x40, 0x82, 0xfb, 0x0d, 0xf7, 0x9d, ++ 0xc3, 0x5f, 0xaf, 0x76, 0x7f, 0x1e, 0xf8, 0xeb, 0x89, 0x7f, 0x9d, 0x08, ++ 0xfb, 0x31, 0x4e, 0x0f, 0x89, 0x80, 0xbd, 0x94, 0xe0, 0x24, 0x91, 0x84, ++ 0x71, 0x70, 0x4f, 0x9e, 0x74, 0x52, 0x2f, 0xbf, 0x6e, 0xc2, 0xca, 0x23, ++ 0x28, 0x3b, 0x83, 0x5e, 0xf3, 0x4c, 0x31, 0x7e, 0x37, 0xf3, 0x35, 0xf1, ++ 0x4a, 0x9f, 0xf7, 0xe9, 0x45, 0x11, 0xdb, 0x7f, 0x6e, 0x6a, 0xff, 0xf9, ++ 0xf9, 0xda, 0x6b, 0xf8, 0x08, 0xd8, 0x36, 0x7a, 0x8f, 0xe6, 0x46, 0xf1, ++ 0xe2, 0xe0, 0x73, 0x08, 0x16, 0x78, 0xcf, 0x75, 0x01, 0x3e, 0xc6, 0xb9, ++ 0xbd, 0x75, 0x40, 0x47, 0xa5, 0xf7, 0xc3, 0xfb, 0x00, 0x1f, 0xe3, 0x9c, ++ 0xcc, 0x1f, 0x4c, 0x69, 0x24, 0x7a, 0x7f, 0x2d, 0xd7, 0xc9, 0xf4, 0xd5, ++ 0x0a, 0x7e, 0xff, 0x34, 0xfd, 0x2b, 0x72, 0xea, 0xfa, 0x23, 0x1e, 0x1b, ++ 0xc6, 0x47, 0x57, 0x71, 0xbc, 0xf7, 0xd5, 0xd7, 0xe2, 0x26, 0xfd, 0xea, ++ 0xdb, 0x25, 0xc0, 0x6b, 0xbf, 0xfa, 0xf6, 0x78, 0xf5, 0x1d, 0xb1, 0xeb, ++ 0xbb, 0xe2, 0xc1, 0x93, 0x10, 0x1b, 0x9e, 0xa4, 0x38, 0xfd, 0x07, 0x63, ++ 0xd7, 0xaf, 0x7e, 0xf9, 0xbd, 0x37, 0x23, 0x2a, 0xbc, 0x64, 0x7a, 0x03, ++ 0x82, 0xf3, 0xfc, 0xdc, 0x72, 0xae, 0x13, 0xfc, 0xab, 0xc4, 0x0f, 0x53, ++ 0x8b, 0x19, 0x57, 0xb0, 0xfd, 0x00, 0x13, 0xdd, 0x1c, 0xc0, 0x7f, 0x94, ++ 0x1f, 0x1c, 0xa3, 0x74, 0xef, 0xe1, 0xff, 0xb2, 0x75, 0xf4, 0x1b, 0x11, ++ 0x83, 0xfe, 0x24, 0x82, 0x7c, 0x57, 0xcc, 0xe1, 0xa1, 0x65, 0xe7, 0x60, ++ 0x0a, 0xdf, 0x8f, 0x39, 0xb8, 0xd3, 0x37, 0xb1, 0xfd, 0xca, 0xb9, 0x77, ++ 0xb1, 0x38, 0xd1, 0x8f, 0x6d, 0xa5, 0xe8, 0xef, 0x1e, 0xe1, 0xf7, 0x01, ++ 0xcd, 0x6d, 0x64, 0x7e, 0xf5, 0xdc, 0xa5, 0x6c, 0x1f, 0x91, 0x94, 0xb1, ++ 0x73, 0x3e, 0x1e, 0xfa, 0x1f, 0x8c, 0x77, 0x1b, 0x74, 0x42, 0xe9, 0x7d, ++ 0x5b, 0x83, 0x10, 0x8a, 0x64, 0xc2, 0xbd, 0x35, 0x26, 0xfb, 0xb5, 0xef, ++ 0x7e, 0x9c, 0x45, 0x0a, 0xd4, 0x2f, 0x36, 0xc5, 0x5d, 0x34, 0x7e, 0xd2, ++ 0xce, 0x23, 0xcd, 0xe7, 0xf6, 0x75, 0x26, 0xe7, 0xcf, 0x85, 0xa4, 0xd7, ++ 0x05, 0x72, 0x6f, 0x3e, 0xf7, 0xfe, 0x0a, 0xd7, 0x6b, 0x9a, 0xde, 0x0f, ++ 0xae, 0x23, 0x59, 0x70, 0x6e, 0x5f, 0xb4, 0x38, 0xbc, 0xb0, 0x3f, 0x2a, ++ 0xf2, 0x73, 0xa6, 0xc4, 0xcd, 0xee, 0xf3, 0x23, 0xbe, 0x61, 0xec, 0x7e, ++ 0x39, 0x2d, 0x8f, 0x2b, 0x4b, 0x4d, 0x84, 0xf5, 0x8d, 0x84, 0xf9, 0x7b, ++ 0xbe, 0xcf, 0xb2, 0xe4, 0x2a, 0x75, 0x90, 0xfe, 0x9c, 0x96, 0x74, 0xce, ++ 0x81, 0xf7, 0x83, 0xd4, 0xc9, 0xde, 0x34, 0xd0, 0x83, 0xf2, 0x39, 0x6a, ++ 0xd7, 0x51, 0x57, 0x4d, 0x39, 0x37, 0x82, 0xa8, 0xba, 0x73, 0x64, 0xd4, ++ 0x9e, 0x43, 0xe1, 0x96, 0x3d, 0xec, 0xbe, 0x44, 0xc9, 0x53, 0x44, 0x4a, ++ 0xc1, 0x0e, 0xe4, 0xf7, 0x03, 0x90, 0x94, 0xab, 0xfb, 0xec, 0xae, 0xb7, ++ 0x28, 0x1e, 0x96, 0xac, 0x53, 0xf1, 0xdc, 0xea, 0x42, 0x27, 0xb3, 0x33, ++ 0x7f, 0xe1, 0x2a, 0xba, 0xd3, 0x39, 0x01, 0xec, 0xcb, 0x89, 0x5e, 0x76, ++ 0xcf, 0xad, 0x91, 0x8e, 0xc1, 0x9d, 0x6c, 0x7e, 0x75, 0x30, 0xbf, 0xcc, ++ 0xfe, 0x70, 0xd7, 0x29, 0x5e, 0x2f, 0xda, 0x9d, 0x57, 0x53, 0x8b, 0x01, ++ 0xe3, 0x38, 0x5e, 0xfc, 0x7d, 0x07, 0xd1, 0xaa, 0xbe, 0xa7, 0x82, 0x3c, ++ 0xfe, 0x9b, 0xcc, 0x7e, 0xaf, 0xa0, 0x1f, 0x1e, 0x18, 0xfd, 0xce, 0xa6, ++ 0x24, 0xe3, 0xbd, 0xec, 0x0b, 0xdc, 0xab, 0x3f, 0x04, 0x3e, 0x5d, 0xc3, ++ 0xef, 0x23, 0x5c, 0x59, 0x9b, 0x85, 0xcf, 0xd5, 0xb5, 0x69, 0x68, 0x77, ++ 0xd6, 0xd7, 0x7a, 0xf1, 0xa9, 0xe1, 0xc5, 0xe6, 0x6d, 0xc0, 0x7b, 0xdf, ++ 0x6c, 0xa3, 0x58, 0x7f, 0x36, 0x8f, 0x9f, 0xd9, 0x15, 0xd4, 0x96, 0x81, ++ 0x7c, 0x0a, 0xc9, 0x53, 0x13, 0x81, 0xb2, 0x2d, 0xbd, 0x86, 0x80, 0xbd, ++ 0x6b, 0xef, 0xc3, 0x4f, 0x03, 0xe2, 0x47, 0xe9, 0x2b, 0xfb, 0xb1, 0x6c, ++ 0xf5, 0xb0, 0xdf, 0x8d, 0x90, 0x1b, 0x67, 0x21, 0x9e, 0x69, 0x7b, 0x52, ++ 0x4a, 0xbf, 0x2f, 0x71, 0xf9, 0x1f, 0x07, 0x39, 0xb1, 0xab, 0x97, 0x19, ++ 0xee, 0x91, 0xb3, 0xa6, 0x8d, 0x37, 0xdd, 0x37, 0x68, 0xc2, 0x9b, 0xc6, ++ 0x1f, 0xdb, 0x18, 0xfe, 0xd6, 0x0a, 0x8c, 0x3f, 0xcc, 0xf8, 0x5b, 0x2b, ++ 0x77, 0xaa, 0xb0, 0xaf, 0xbc, 0xf6, 0xaa, 0xbe, 0x7b, 0x67, 0x10, 0x7f, ++ 0xd4, 0xbc, 0x67, 0xf8, 0xfb, 0x2d, 0xdb, 0x67, 0x8b, 0x8b, 0x3f, 0x4f, ++ 0x32, 0xda, 0xaf, 0x0b, 0xf2, 0xeb, 0x6f, 0xaf, 0xa3, 0xaf, 0x1e, 0xe4, ++ 0xfb, 0x8b, 0x0f, 0xd4, 0x4e, 0x44, 0x7c, 0xad, 0xe2, 0xf7, 0x48, 0xde, ++ 0x5f, 0xeb, 0xc3, 0xa7, 0x08, 0xf8, 0xa3, 0xf3, 0xb3, 0x66, 0x07, 0x09, ++ 0xdc, 0x8f, 0xce, 0x7e, 0x1b, 0x82, 0x3e, 0x9d, 0x45, 0x3e, 0xb8, 0x7f, ++ 0x16, 0x78, 0x17, 0xf0, 0x27, 0x3a, 0x19, 0x3e, 0xad, 0x69, 0x35, 0xb8, ++ 0xbf, 0x66, 0x73, 0x32, 0x7c, 0x89, 0xce, 0x20, 0xe2, 0x45, 0x76, 0x32, ++ 0x7c, 0x89, 0x4e, 0xc6, 0x6f, 0x0a, 0x2f, 0x4b, 0x80, 0xbf, 0x5c, 0x6c, ++ 0x8f, 0xef, 0x29, 0xfe, 0x0e, 0x00, 0x7f, 0xd9, 0xd2, 0x27, 0x1b, 0xf0, ++ 0xa5, 0xa4, 0x14, 0x5c, 0x1c, 0xfe, 0x1e, 0xa3, 0xf8, 0xa3, 0x70, 0xa4, ++ 0x70, 0xf9, 0x32, 0xe3, 0x21, 0x45, 0x61, 0xf7, 0x53, 0x6a, 0x72, 0x15, ++ 0xcf, 0x8e, 0x7b, 0x94, 0xce, 0x1f, 0xd6, 0xed, 0x0d, 0xb5, 0x04, 0x9f, ++ 0x03, 0xe3, 0xf8, 0x8b, 0x23, 0x5c, 0x6c, 0xdd, 0x4c, 0xb1, 0xd4, 0xec, ++ 0x97, 0x01, 0x1f, 0xc9, 0x84, 0xaf, 0x27, 0x41, 0x92, 0x9e, 0x4f, 0x58, ++ 0xea, 0x21, 0xfc, 0xa5, 0x05, 0x89, 0x0a, 0x65, 0x81, 0xc1, 0x41, 0x1a, ++ 0x86, 0x19, 0xee, 0x95, 0x14, 0x3d, 0x92, 0xe9, 0x5e, 0x36, 0x75, 0x03, ++ 0xf0, 0xc1, 0xfa, 0x43, 0xb2, 0x05, 0xee, 0xa3, 0x13, 0x97, 0x5e, 0x6d, ++ 0x38, 0x0f, 0x2a, 0xce, 0xf6, 0x25, 0xa9, 0x88, 0x4f, 0x3f, 0xde, 0xd3, ++ 0xfc, 0x60, 0xad, 0x8a, 0xf4, 0x5b, 0x07, 0x74, 0x84, 0x7b, 0x40, 0xb9, ++ 0xff, 0x75, 0x3f, 0xa7, 0xe7, 0x03, 0xfc, 0x1e, 0xca, 0x55, 0x5c, 0x3e, ++ 0xd6, 0x72, 0x79, 0x79, 0x98, 0xcb, 0x49, 0x1d, 0xbf, 0x37, 0x79, 0xcd, ++ 0x4c, 0x96, 0x67, 0x95, 0x92, 0x63, 0xe1, 0xf7, 0x95, 0x45, 0x88, 0x3e, ++ 0x8f, 0x29, 0xc9, 0x1b, 0x26, 0x0a, 0x85, 0x0b, 0x6d, 0x6a, 0x15, 0x9f, ++ 0x78, 0xcf, 0x22, 0x79, 0xdf, 0x1a, 0x1a, 0x4d, 0xdb, 0x25, 0x64, 0x13, ++ 0x1f, 0xf0, 0x49, 0xd2, 0xfb, 0xf7, 0x86, 0xd8, 0x7d, 0x8d, 0x45, 0x83, ++ 0xc1, 0x0e, 0x4a, 0xd2, 0xee, 0x5f, 0x9c, 0xa2, 0x26, 0xcd, 0xc1, 0x83, ++ 0xb0, 0x11, 0x89, 0xf9, 0x1d, 0x54, 0x15, 0xa2, 0x1f, 0xd3, 0x69, 0x89, ++ 0x75, 0x4f, 0x55, 0x9d, 0xf7, 0x80, 0x0d, 0xe2, 0xa1, 0xf1, 0xe0, 0x49, ++ 0xf0, 0xfa, 0x32, 0xef, 0xa7, 0xe3, 0x25, 0x34, 0xba, 0xd0, 0x7e, 0x1f, ++ 0xe0, 0x2f, 0x9a, 0xb3, 0x90, 0x96, 0x9d, 0x8d, 0x09, 0x18, 0xff, 0x4b, ++ 0xe0, 0xbf, 0xcf, 0xe2, 0xa4, 0x70, 0x97, 0xea, 0xe8, 0x1d, 0xef, 0x1e, ++ 0xea, 0x8d, 0xae, 0xab, 0x12, 0x5d, 0x94, 0x9e, 0x1e, 0x80, 0x91, 0x3e, ++ 0x1f, 0x69, 0x1c, 0x89, 0xbf, 0xcb, 0xf2, 0xa8, 0x5c, 0x84, 0xbf, 0xe3, ++ 0xf2, 0x28, 0x5f, 0x4f, 0xb5, 0x7b, 0xce, 0xb5, 0x76, 0xdf, 0x70, 0xfd, ++ 0xe8, 0xce, 0xbb, 0xcc, 0xe0, 0xb7, 0xae, 0x97, 0x7d, 0xd8, 0xce, 0x33, ++ 0xc5, 0x28, 0xff, 0xeb, 0xb9, 0xbe, 0x4d, 0x9e, 0x6e, 0xe4, 0x73, 0x4d, ++ 0xdf, 0x1e, 0xed, 0xd3, 0xb7, 0xfe, 0x11, 0x00, 0x4f, 0xea, 0xb9, 0xe9, ++ 0xa8, 0xc7, 0x52, 0x6e, 0x88, 0xad, 0x77, 0xeb, 0x64, 0x05, 0xef, 0x2d, ++ 0xaf, 0x1b, 0xcb, 0xe4, 0x3c, 0x58, 0xac, 0xb0, 0xfb, 0x4b, 0xfb, 0xeb, ++ 0x01, 0x8c, 0x53, 0x9f, 0xf5, 0x8f, 0xd9, 0x08, 0x7a, 0x54, 0xe3, 0xab, ++ 0xe5, 0x84, 0xe9, 0x9d, 0x20, 0x71, 0x78, 0x71, 0x1d, 0xe2, 0xf7, 0xdb, ++ 0x68, 0x76, 0xf0, 0x4a, 0xb8, 0x07, 0x90, 0xeb, 0x57, 0x78, 0x8a, 0xa3, ++ 0xd8, 0xef, 0x0f, 0xa4, 0xce, 0x65, 0xf7, 0xf9, 0xae, 0xe1, 0xf7, 0x58, ++ 0x3d, 0x44, 0xf9, 0x8a, 0xe0, 0xbd, 0xa7, 0x5e, 0x7c, 0x5e, 0xed, 0x62, ++ 0xfb, 0x13, 0xcb, 0x6d, 0xe3, 0xf1, 0x3e, 0xb5, 0x3a, 0xa7, 0x05, 0xf5, ++ 0x84, 0xf4, 0x81, 0x35, 0x04, 0x26, 0x87, 0xb4, 0x7f, 0x92, 0x07, 0xe2, ++ 0x05, 0x92, 0xec, 0xed, 0xf4, 0x41, 0xbc, 0xcf, 0x25, 0x85, 0xe1, 0xde, ++ 0xdc, 0x3a, 0x67, 0x1e, 0xde, 0xfb, 0x2e, 0x24, 0xe5, 0x79, 0x80, 0xfe, ++ 0x5f, 0xba, 0x16, 0x0c, 0x3f, 0x5f, 0x3e, 0x1d, 0x9d, 0x28, 0xde, 0x97, ++ 0xe9, 0x49, 0x29, 0x22, 0x1f, 0x65, 0xe3, 0x6e, 0x00, 0x9e, 0x47, 0x96, ++ 0x3d, 0x37, 0x10, 0x88, 0x1b, 0x6e, 0x48, 0xa9, 0xb1, 0x03, 0xde, 0x26, ++ 0xb9, 0x58, 0x5c, 0xbf, 0xb1, 0x38, 0x1f, 0xf1, 0x48, 0xf1, 0x7b, 0x9d, ++ 0x6b, 0x60, 0xb4, 0x9f, 0x41, 0xb3, 0xaf, 0xee, 0xbb, 0x07, 0x0b, 0xba, ++ 0xdd, 0x10, 0xe7, 0x5c, 0xf3, 0xad, 0x2e, 0x66, 0x2f, 0x91, 0xf4, 0x20, ++ 0x19, 0xa5, 0x93, 0xf3, 0x46, 0xed, 0x77, 0x4e, 0xd4, 0x20, 0xc9, 0xd2, ++ 0xc9, 0xfb, 0xf2, 0xd1, 0x85, 0x04, 0xf6, 0x87, 0xfa, 0xcb, 0x79, 0x1c, ++ 0x3d, 0xb6, 0x99, 0xe9, 0xb1, 0x15, 0x42, 0x6c, 0x3d, 0xa6, 0xd9, 0x99, ++ 0x9a, 0x1e, 0x93, 0x4d, 0xfa, 0x41, 0x7b, 0xd6, 0x0f, 0x9f, 0x69, 0x38, ++ 0xa7, 0xa5, 0xa4, 0x78, 0x81, 0x77, 0xe1, 0x19, 0xb4, 0x78, 0xc1, 0xbe, ++ 0x7b, 0xb1, 0xfe, 0xd6, 0x24, 0xc4, 0x43, 0x0d, 0xe0, 0x81, 0xa4, 0x5d, ++ 0xdd, 0xe7, 0xbf, 0xfe, 0x60, 0x04, 0xd8, 0x8f, 0xf9, 0x31, 0xf9, 0xcd, ++ 0xac, 0xbf, 0x16, 0xf4, 0xad, 0xe7, 0xbe, 0x54, 0xa0, 0xd3, 0x09, 0x59, ++ 0x1d, 0x34, 0x07, 0xf8, 0xe9, 0x50, 0xec, 0xf5, 0x7c, 0xea, 0x23, 0x97, ++ 0x3e, 0x0c, 0x7c, 0xb0, 0xe0, 0xb7, 0xa2, 0xa0, 0xdf, 0x4f, 0x29, 0x3d, ++ 0xb7, 0x12, 0xd7, 0xd3, 0x92, 0x73, 0x13, 0xf1, 0x59, 0xd6, 0x38, 0x13, ++ 0xf9, 0x9e, 0x40, 0x14, 0x5c, 0xe7, 0x87, 0x1d, 0x6f, 0xba, 0xdb, 0x0d, ++ 0x70, 0x1d, 0x6f, 0xe4, 0x79, 0x00, 0x4d, 0x72, 0x08, 0xf2, 0x33, 0x8e, ++ 0x37, 0xde, 0x8d, 0xf7, 0x95, 0x40, 0x9e, 0xb7, 0xa8, 0xdb, 0xdf, 0x27, ++ 0x79, 0x2a, 0xda, 0x97, 0xda, 0x3d, 0x63, 0xc7, 0x43, 0x77, 0xba, 0xf5, ++ 0xfb, 0xbb, 0x25, 0xbf, 0xb0, 0xfb, 0xc0, 0x6e, 0x8d, 0xc7, 0x5f, 0x25, ++ 0x4d, 0xb1, 0xfd, 0x7a, 0x58, 0x43, 0x21, 0x7e, 0x4a, 0x01, 0xcc, 0x02, ++ 0x7b, 0x98, 0xda, 0x37, 0xbd, 0x11, 0xb0, 0x7f, 0x36, 0x5a, 0xbd, 0x41, ++ 0x12, 0x2d, 0x07, 0x1f, 0xb1, 0xc7, 0xcc, 0x4f, 0x5c, 0xe2, 0x9a, 0xf1, ++ 0x28, 0xe0, 0x7d, 0x89, 0xcb, 0xf7, 0x24, 0xc8, 0x39, 0x71, 0xb2, 0x7b, ++ 0x41, 0xe3, 0xf3, 0x39, 0x1b, 0xf7, 0x18, 0x6c, 0x02, 0xc3, 0x7e, 0xd3, ++ 0xe3, 0x3c, 0x4f, 0x53, 0xf2, 0xbb, 0xf5, 0xf7, 0xbb, 0xf5, 0xdd, 0xc7, ++ 0xc9, 0xe3, 0x24, 0xc4, 0x16, 0xe7, 0xbb, 0x43, 0xfb, 0x7d, 0x83, 0x38, ++ 0xdf, 0xdd, 0x2c, 0x9f, 0x83, 0x78, 0x62, 0x7f, 0xd7, 0xfc, 0x84, 0x84, ++ 0xa8, 0x9f, 0xd0, 0x06, 0xf3, 0xa8, 0x6a, 0x3c, 0x55, 0xff, 0x01, 0xe2, ++ 0x89, 0xfb, 0x09, 0x1c, 0xee, 0x13, 0x32, 0x83, 0xfb, 0xc4, 0x33, 0x56, ++ 0xf6, 0x3b, 0x37, 0x26, 0xbe, 0x38, 0xc1, 0xf3, 0x47, 0x16, 0x09, 0x0c, ++ 0xaf, 0x1a, 0x7f, 0x9f, 0xe8, 0xb3, 0x77, 0xfc, 0x78, 0x0f, 0x8d, 0x99, ++ 0xff, 0x84, 0x8d, 0x97, 0x6e, 0x98, 0x44, 0xfb, 0xfd, 0xac, 0x43, 0xc6, ++ 0x38, 0x5c, 0x25, 0xe5, 0x1f, 0xe0, 0x1b, 0x61, 0xe3, 0x24, 0xcc, 0x5f, ++ 0x17, 0x1e, 0x99, 0xf4, 0x30, 0xe4, 0x25, 0x7d, 0xfe, 0xba, 0x88, 0xdf, ++ 0xcb, 0xcf, 0xd9, 0xf0, 0x7b, 0xf7, 0xcf, 0xbc, 0x1b, 0xe6, 0x42, 0x9c, ++ 0xe7, 0x0d, 0x19, 0xef, 0xeb, 0xfe, 0xbc, 0x63, 0x46, 0x22, 0x8b, 0xf3, ++ 0x18, 0xe3, 0xd0, 0x0b, 0xdd, 0x6c, 0x9d, 0x3f, 0xc9, 0xe5, 0xbe, 0xe4, ++ 0xdc, 0x6a, 0xe4, 0xcf, 0x3e, 0xfe, 0x68, 0x58, 0xa8, 0x80, 0x5c, 0x95, ++ 0x9c, 0x7b, 0x08, 0xed, 0x99, 0x92, 0x2d, 0x02, 0xde, 0x13, 0x49, 0x82, ++ 0xbd, 0xaf, 0x4e, 0x95, 0x38, 0x1f, 0x4e, 0x86, 0xf6, 0xa7, 0x0b, 0x97, ++ 0x03, 0xbe, 0xa7, 0x34, 0xe0, 0xfe, 0x46, 0xe9, 0x66, 0xab, 0x77, 0xb5, ++ 0xd0, 0x9f, 0xce, 0x27, 0x5d, 0xaa, 0xe1, 0x5e, 0xf5, 0xd2, 0xae, 0x35, ++ 0xd8, 0x2f, 0xa1, 0xf6, 0x54, 0x8a, 0x6e, 0xbf, 0xfb, 0x04, 0xcf, 0x03, ++ 0x2e, 0x3d, 0xc7, 0xee, 0x07, 0x24, 0x9e, 0x20, 0x49, 0x03, 0xbe, 0xe7, ++ 0x7a, 0x27, 0xca, 0xbf, 0xc6, 0x7b, 0x5f, 0xbb, 0xed, 0xb1, 0xe3, 0xec, ++ 0xdf, 0x70, 0x7b, 0xa6, 0xe4, 0xdc, 0x64, 0x83, 0xdf, 0x10, 0x9d, 0xdf, ++ 0xf7, 0x99, 0x7c, 0xf2, 0xf5, 0xbc, 0xb4, 0x6b, 0x22, 0x83, 0xab, 0x6f, ++ 0x3e, 0x1b, 0x26, 0xc5, 0x9a, 0x4f, 0x74, 0x1e, 0x53, 0xb0, 0x7d, 0x77, ++ 0x52, 0xec, 0xf1, 0x33, 0x39, 0x9e, 0x8f, 0xd5, 0x96, 0xc1, 0xc9, 0x0d, ++ 0x52, 0xa6, 0xb0, 0x7a, 0x25, 0x0d, 0x77, 0x2b, 0xa0, 0x4f, 0x4a, 0x9a, ++ 0x92, 0x92, 0x05, 0xdd, 0xbc, 0x4a, 0x1b, 0x2b, 0x0c, 0x79, 0x18, 0xa5, ++ 0x4d, 0xc5, 0xca, 0x3c, 0x5d, 0xbf, 0x51, 0x3a, 0x38, 0x5e, 0x9b, 0x3a, ++ 0x2a, 0x4a, 0x87, 0xcc, 0x87, 0xe4, 0x2b, 0x97, 0x3b, 0x61, 0xbd, 0x2f, ++ 0x72, 0xb9, 0x61, 0xbc, 0x8d, 0x8b, 0xf2, 0x7f, 0xa2, 0x42, 0x7f, 0x4c, ++ 0xff, 0x7c, 0x22, 0x37, 0x64, 0xd4, 0xa0, 0x7e, 0xb9, 0xd3, 0x1d, 0xeb, ++ 0x5c, 0x43, 0xa6, 0x5b, 0x35, 0xc4, 0x95, 0x4a, 0x1b, 0x39, 0x7d, 0xa8, ++ 0x9d, 0x9c, 0xa7, 0xa3, 0x8f, 0x46, 0x17, 0x73, 0xfb, 0x63, 0xcd, 0xa5, ++ 0xf9, 0x3f, 0x81, 0x78, 0xf2, 0x63, 0xec, 0x56, 0x90, 0xf8, 0x7a, 0xc7, ++ 0x44, 0xb7, 0xcc, 0xd8, 0x78, 0x9b, 0xdc, 0x87, 0xb7, 0x2c, 0xcc, 0x07, ++ 0xba, 0x30, 0xde, 0xbe, 0x63, 0xc8, 0xfb, 0xe9, 0x87, 0x37, 0x4e, 0x5f, ++ 0x0d, 0x2f, 0xda, 0x7b, 0x6a, 0x1f, 0xe5, 0x02, 0xbe, 0x26, 0x43, 0xc0, ++ 0x69, 0x20, 0xf4, 0xc3, 0xe8, 0x7f, 0x21, 0x7c, 0x45, 0xc7, 0xe5, 0xf4, ++ 0x9f, 0x1a, 0x7b, 0x1e, 0xfe, 0xbe, 0x79, 0x2c, 0x25, 0x41, 0x6a, 0x3f, ++ 0x2c, 0xb8, 0xe0, 0x3c, 0xee, 0x23, 0x41, 0xdb, 0x79, 0xe6, 0xa1, 0xd1, ++ 0x9f, 0x5c, 0x66, 0xa0, 0xbf, 0xff, 0xa1, 0xd1, 0x57, 0x82, 0x1c, 0x6a, ++ 0xf4, 0x5e, 0x70, 0xe0, 0x31, 0xe4, 0xdf, 0x05, 0x54, 0x1e, 0x61, 0x5f, ++ 0xfe, 0x78, 0xc3, 0xdd, 0x86, 0xf5, 0x21, 0x0a, 0x5f, 0x1c, 0xba, 0x8f, ++ 0x0a, 0x92, 0xec, 0xfc, 0xff, 0x73, 0x74, 0xff, 0x44, 0x0e, 0x66, 0x40, ++ 0xde, 0x57, 0x70, 0x1d, 0x5b, 0x47, 0x4e, 0x6c, 0x7c, 0x30, 0x43, 0x8f, ++ 0xe7, 0x25, 0xae, 0xa9, 0x0b, 0x81, 0x2e, 0x64, 0xd3, 0xc0, 0x8b, 0x5a, ++ 0x3f, 0x82, 0x05, 0xde, 0x0e, 0x15, 0xd7, 0x25, 0x19, 0xe3, 0x61, 0xbb, ++ 0x5d, 0xfe, 0x80, 0x9b, 0xbe, 0x2f, 0xe3, 0x7e, 0xf5, 0x8a, 0xa4, 0xc2, ++ 0x31, 0xb1, 0xd6, 0x7d, 0xea, 0x17, 0x4e, 0x81, 0xf8, 0x73, 0x5d, 0xed, ++ 0xcc, 0x29, 0x10, 0x6f, 0x93, 0xb9, 0xdd, 0x08, 0xbf, 0xac, 0x05, 0xf6, ++ 0x26, 0x5c, 0x81, 0x1e, 0xeb, 0x7e, 0xad, 0x06, 0x4e, 0xd7, 0xfb, 0x6b, ++ 0x6b, 0x30, 0x7e, 0x4d, 0x6c, 0x41, 0xe2, 0xd1, 0x9f, 0xf7, 0x25, 0xcc, ++ 0x2e, 0xfa, 0x86, 0xb0, 0x78, 0x8b, 0xd6, 0x4e, 0x91, 0xfd, 0x1e, 0x88, ++ 0x7f, 0x2a, 0xfc, 0x3c, 0xb2, 0x2c, 0xf9, 0x57, 0x66, 0xe6, 0x41, 0x1c, ++ 0x23, 0x25, 0x27, 0xa8, 0xc3, 0xdf, 0x43, 0x6e, 0x66, 0xd7, 0xad, 0x49, ++ 0x3b, 0xe0, 0x81, 0x7c, 0x52, 0x2b, 0xed, 0x1f, 0xe2, 0x31, 0xb6, 0x74, ++ 0xe9, 0xac, 0x71, 0x9f, 0x92, 0x95, 0x73, 0x84, 0x49, 0x32, 0xcc, 0x47, ++ 0x4e, 0x09, 0x13, 0x8c, 0x67, 0x66, 0xd3, 0xf7, 0x3a, 0x7c, 0x2b, 0x29, ++ 0x14, 0xce, 0xf3, 0xf8, 0x9b, 0x92, 0xcd, 0x8d, 0xfb, 0x45, 0x12, 0x61, ++ 0x76, 0x9a, 0x36, 0x7f, 0xfa, 0x06, 0xd7, 0xb3, 0x07, 0xf8, 0xba, 0xb4, ++ 0x1c, 0xe2, 0xb8, 0x29, 0x60, 0x87, 0x59, 0xd0, 0x1f, 0x5a, 0xcf, 0xe3, ++ 0x94, 0xbf, 0xac, 0x2d, 0xe2, 0x78, 0x90, 0x70, 0x1d, 0xb3, 0x26, 0xb1, ++ 0xfa, 0x4a, 0x22, 0x83, 0xdb, 0x0e, 0x71, 0x6b, 0x11, 0xd6, 0xd5, 0x08, ++ 0x96, 0x5d, 0x70, 0xc3, 0x8e, 0x88, 0x57, 0x93, 0xe1, 0xef, 0x8f, 0x26, ++ 0x11, 0x15, 0x7f, 0xa7, 0x6f, 0x00, 0x89, 0xd4, 0xe3, 0x3d, 0x26, 0x53, ++ 0xbb, 0xee, 0x81, 0xf7, 0xbe, 0x04, 0xff, 0x16, 0xe0, 0x83, 0x2f, 0x07, ++ 0x77, 0x7e, 0x28, 0x40, 0x1c, 0xba, 0xc8, 0x7f, 0x09, 0xac, 0xbf, 0x8d, ++ 0x62, 0x30, 0x47, 0xa5, 0xf5, 0x7f, 0x25, 0xf6, 0xe6, 0x40, 0x3d, 0xf8, ++ 0x7d, 0xaf, 0xf7, 0x93, 0xd9, 0x73, 0x38, 0xe4, 0x2d, 0xfb, 0x75, 0xfb, ++ 0x52, 0xec, 0x5e, 0x4e, 0x55, 0x1f, 0xd7, 0x33, 0x97, 0x87, 0x2f, 0x95, ++ 0x4c, 0xfb, 0x35, 0x7f, 0xbe, 0x44, 0xff, 0xbd, 0x39, 0xc1, 0xb7, 0x0b, ++ 0xe0, 0x48, 0xf9, 0x58, 0xc0, 0x7d, 0x98, 0x3a, 0x3b, 0xbb, 0xd7, 0xa7, ++ 0xce, 0x75, 0x73, 0x22, 0xac, 0xdf, 0x87, 0x39, 0xbd, 0x90, 0xfe, 0xc0, ++ 0x3f, 0x1d, 0xcc, 0x8e, 0x39, 0x2b, 0xa9, 0x89, 0xc9, 0x18, 0xdf, 0xcc, ++ 0xca, 0x7d, 0xc5, 0x30, 0xbe, 0xd7, 0x50, 0x96, 0xb8, 0xff, 0xb6, 0x89, ++ 0xf2, 0xa3, 0xa4, 0xbb, 0x97, 0x75, 0x94, 0xe4, 0xb3, 0x00, 0xbf, 0x8c, ++ 0x6e, 0xa0, 0xef, 0xf5, 0xf4, 0x8b, 0x11, 0x57, 0x4b, 0x76, 0xe2, 0xf5, ++ 0xb7, 0x31, 0xf7, 0x61, 0x34, 0xf8, 0xe8, 0xb8, 0x04, 0xf0, 0x27, 0x9e, ++ 0x2b, 0x64, 0xeb, 0xab, 0x89, 0x0f, 0xf6, 0x08, 0x0c, 0xfe, 0xa0, 0x8b, ++ 0xfb, 0x5b, 0x24, 0x28, 0x02, 0x3d, 0xe7, 0x68, 0xf7, 0x05, 0x4b, 0x2b, ++ 0x58, 0x59, 0xfb, 0xbd, 0x08, 0xa0, 0x22, 0x85, 0xe3, 0x03, 0x6d, 0x7f, ++ 0x81, 0xac, 0x60, 0x65, 0xbe, 0x4f, 0x19, 0x98, 0xc7, 0xf6, 0x21, 0xcd, ++ 0xf0, 0xcc, 0x69, 0x7f, 0xa0, 0x13, 0xe2, 0xfa, 0x73, 0xda, 0x07, 0xcf, ++ 0x87, 0xfd, 0xa9, 0x39, 0xce, 0x31, 0x7f, 0x82, 0xe7, 0x1e, 0xb9, 0xf7, ++ 0x40, 0x02, 0xd8, 0x81, 0x77, 0x0b, 0x78, 0xfe, 0xe3, 0xc7, 0xbf, 0x7b, ++ 0x45, 0x4e, 0xa0, 0xcf, 0x9d, 0xef, 0x6c, 0xc4, 0xf3, 0xc6, 0xa7, 0xb9, ++ 0xdc, 0xdd, 0x4e, 0x7a, 0xf1, 0x1e, 0x76, 0x3f, 0xf1, 0xf0, 0x7d, 0xf2, ++ 0x10, 0xbe, 0x9f, 0x07, 0x3f, 0x30, 0x87, 0xe5, 0xb0, 0x0c, 0x7e, 0xfa, ++ 0xdc, 0x48, 0xe8, 0x47, 0xd7, 0xd0, 0xd2, 0x6d, 0xaf, 0x84, 0xae, 0x01, ++ 0xb3, 0xed, 0xf6, 0x8e, 0xde, 0xdf, 0x80, 0x1a, 0xf0, 0x87, 0x3d, 0x85, ++ 0xb8, 0x07, 0xa0, 0xb5, 0x6b, 0xf3, 0xbe, 0xca, 0xca, 0xac, 0x5d, 0x14, ++ 0x0f, 0x36, 0x6e, 0x8f, 0xda, 0x70, 0x5e, 0xd1, 0x79, 0xdb, 0x10, 0x0f, ++ 0x1f, 0xf4, 0xe5, 0x8d, 0x07, 0x91, 0x1e, 0x7d, 0x78, 0xe2, 0xf7, 0x2a, ++ 0x69, 0x78, 0xe9, 0x9b, 0x77, 0xe2, 0xcd, 0x57, 0x43, 0x9c, 0x37, 0x9e, ++ 0x3e, 0x9b, 0xe3, 0xcc, 0xfa, 0x13, 0xdb, 0xfc, 0x60, 0x70, 0x99, 0xf1, ++ 0xf4, 0x39, 0x7c, 0xa2, 0x76, 0xe4, 0xe7, 0x6e, 0x9f, 0x3d, 0x91, 0xea, ++ 0xb7, 0x8f, 0xdd, 0x3e, 0x07, 0x3c, 0x2b, 0x6d, 0xbd, 0x19, 0xd2, 0x08, ++ 0x94, 0x17, 0x37, 0x94, 0xab, 0x45, 0xff, 0xf0, 0x54, 0x8a, 0x87, 0xd3, ++ 0xc3, 0xfc, 0x97, 0x0c, 0x04, 0x7c, 0x74, 0x0e, 0xb8, 0x28, 0x3d, 0xfa, ++ 0xa1, 0x9d, 0xe9, 0x01, 0x92, 0x97, 0x81, 0xf3, 0xd1, 0xee, 0x7d, 0x3f, ++ 0x78, 0xef, 0x71, 0x17, 0xd8, 0x9d, 0xf5, 0x3b, 0xdf, 0xcb, 0x80, 0x67, ++ 0x95, 0xd8, 0xb5, 0xf6, 0x16, 0x8c, 0x6f, 0x8a, 0xe8, 0x0f, 0x9d, 0x6d, ++ 0xbd, 0xe4, 0xbc, 0xe7, 0xc3, 0x3e, 0x84, 0xb8, 0x13, 0x5d, 0xff, 0x46, ++ 0x27, 0x6a, 0x7c, 0xc8, 0xe6, 0x77, 0x07, 0x3f, 0x5f, 0x73, 0x47, 0x6b, ++ 0x02, 0x9e, 0xaf, 0xb9, 0x63, 0xa9, 0x68, 0xb8, 0xb7, 0xf9, 0x8e, 0xa5, ++ 0x2c, 0xef, 0x8e, 0x48, 0x9d, 0xe3, 0x6e, 0x32, 0xd8, 0xeb, 0x2b, 0xe2, ++ 0xf6, 0x03, 0x71, 0x00, 0x73, 0x3f, 0xf3, 0x97, 0x16, 0x90, 0x8f, 0x07, ++ 0xc0, 0x3e, 0xab, 0x67, 0x2a, 0xc6, 0x05, 0x9e, 0x62, 0xfc, 0x35, 0x7f, ++ 0xba, 0x4f, 0x84, 0x7c, 0xe4, 0xc9, 0x2b, 0x05, 0x8c, 0xb7, 0x4c, 0x3a, ++ 0xaa, 0xb6, 0x75, 0xd1, 0xf2, 0xfc, 0x50, 0x12, 0xfe, 0xde, 0xd1, 0xfc, ++ 0x7b, 0x97, 0xe4, 0xc2, 0x3d, 0x04, 0xd5, 0x9d, 0x2c, 0xbe, 0x37, 0x48, ++ 0x5c, 0x9c, 0xf3, 0x33, 0x88, 0x9f, 0x1c, 0x60, 0xeb, 0x38, 0x94, 0x17, ++ 0x83, 0x7c, 0x3b, 0x7d, 0xaa, 0x53, 0x17, 0xef, 0xef, 0x96, 0x6b, 0x72, ++ 0xe0, 0xde, 0xbd, 0xe0, 0x6d, 0x4e, 0x1f, 0xf0, 0x4f, 0xf1, 0x4d, 0xbe, ++ 0x0f, 0xf0, 0xf7, 0x12, 0x79, 0x1c, 0x42, 0x5b, 0x57, 0x77, 0x35, 0x16, ++ 0x63, 0x1e, 0x6b, 0xf1, 0x5c, 0x75, 0x22, 0xd0, 0xbd, 0x38, 0x6c, 0xc7, ++ 0xdf, 0x1f, 0x2c, 0xb6, 0x11, 0xc9, 0x41, 0xf5, 0x58, 0xb1, 0x44, 0x6c, ++ 0xf0, 0x1c, 0xa4, 0x10, 0xc9, 0x0e, 0x4f, 0x07, 0xb1, 0xc1, 0x33, 0x7f, ++ 0x39, 0xbb, 0x27, 0xbb, 0xa4, 0xf1, 0x7a, 0xb4, 0x0f, 0xdc, 0x13, 0x8b, ++ 0x14, 0xb8, 0xff, 0xb6, 0xb8, 0xfd, 0xd9, 0x2f, 0xa0, 0x7d, 0xa9, 0x14, ++ 0xd9, 0xcf, 0xce, 0xb5, 0x30, 0xfc, 0x14, 0xb7, 0x1f, 0xfa, 0x1a, 0xf8, ++ 0x67, 0xa1, 0xaf, 0x08, 0xf3, 0x0e, 0xbf, 0xb3, 0x45, 0x31, 0xf8, 0x7f, ++ 0x63, 0xc3, 0xc6, 0xf2, 0xe5, 0x6d, 0xc6, 0x72, 0x4e, 0xc4, 0x58, 0xce, ++ 0xed, 0x30, 0x96, 0xb7, 0xc2, 0x1d, 0x67, 0x3a, 0x3b, 0xe2, 0xc0, 0x5e, ++ 0x2b, 0xae, 0x13, 0x15, 0xa7, 0xd8, 0x39, 0xbd, 0x97, 0x04, 0x58, 0x9b, ++ 0x20, 0x1e, 0x6c, 0x45, 0x79, 0x9a, 0x56, 0xd1, 0x9e, 0x0f, 0xfb, 0xd1, ++ 0xa7, 0x9e, 0x77, 0x59, 0xe0, 0xfb, 0x9e, 0xbf, 0x30, 0xbf, 0xb7, 0x77, ++ 0xab, 0x1d, 0xef, 0x7b, 0xdb, 0xff, 0x7b, 0x07, 0x71, 0x40, 0x5e, 0xe1, ++ 0x0b, 0xf6, 0x8d, 0xf0, 0xfd, 0x94, 0x23, 0x9c, 0x0f, 0x71, 0x38, 0x5a, ++ 0x9f, 0xfd, 0xce, 0x56, 0x51, 0x78, 0x0c, 0xf8, 0x6f, 0x2f, 0x5e, 0xa6, ++ 0xf9, 0xe9, 0xa1, 0x71, 0x30, 0xaf, 0x17, 0xff, 0xca, 0xf2, 0x64, 0x7a, ++ 0xb7, 0x5a, 0xf1, 0xf7, 0x53, 0x4e, 0xed, 0x7e, 0xf6, 0x79, 0xd8, 0x17, ++ 0x3b, 0xb5, 0x75, 0x28, 0xda, 0x59, 0x2f, 0x09, 0x41, 0x0b, 0xf4, 0x1b, ++ 0x5c, 0xc5, 0xe8, 0x6f, 0xe6, 0xd3, 0x8a, 0x2d, 0x46, 0xbf, 0xf8, 0x9e, ++ 0x44, 0xa6, 0x6f, 0x7a, 0x04, 0x86, 0xef, 0x4b, 0x1a, 0x8d, 0xf3, 0xbe, ++ 0x34, 0x64, 0x2c, 0xff, 0x3c, 0x91, 0xf9, 0x53, 0xf3, 0x88, 0xee, 0x7d, ++ 0x26, 0xec, 0xdf, 0xab, 0xf5, 0x69, 0xb0, 0xae, 0x3e, 0x1d, 0xfb, 0xbe, ++ 0xe1, 0xfb, 0xb9, 0x5c, 0x3c, 0xf7, 0x9c, 0xa2, 0xf1, 0xad, 0xc8, 0xef, ++ 0x67, 0x23, 0xaa, 0xee, 0xfc, 0xd2, 0x9e, 0xe8, 0xfe, 0xdd, 0x5d, 0x43, ++ 0x21, 0xaf, 0x02, 0x70, 0x31, 0x22, 0xfa, 0xbe, 0xc2, 0x34, 0xae, 0xd6, ++ 0x7f, 0x51, 0x22, 0xdb, 0x87, 0x4f, 0xe1, 0xfb, 0x33, 0xbd, 0x6f, 0x88, ++ 0x88, 0x9f, 0x93, 0xa6, 0xdf, 0x2d, 0xec, 0xb3, 0xeb, 0x6a, 0x6b, 0x06, ++ 0x4f, 0xd7, 0xad, 0x43, 0x25, 0x8d, 0xfb, 0x53, 0x8b, 0xc1, 0x3f, 0x6a, ++ 0xda, 0x9f, 0x3a, 0x4f, 0xb7, 0xbe, 0x54, 0x6e, 0x3d, 0x98, 0x7a, 0x2b, ++ 0xe6, 0x25, 0x49, 0xf8, 0xbb, 0x4c, 0x95, 0x73, 0x9e, 0x79, 0x68, 0x72, ++ 0x0a, 0xbc, 0x17, 0xc3, 0x00, 0x2f, 0x7c, 0x87, 0xb8, 0x57, 0x77, 0xf8, ++ 0x37, 0x6e, 0xa8, 0x47, 0xed, 0xdd, 0xf1, 0xa2, 0x0e, 0xef, 0xa5, 0x8d, ++ 0x77, 0x0f, 0x9e, 0xae, 0x93, 0xd3, 0xbf, 0x95, 0x2f, 0x35, 0x79, 0xaa, ++ 0xe4, 0xf6, 0xc9, 0xae, 0x89, 0x9d, 0x85, 0x90, 0x27, 0x5e, 0xd1, 0xc8, ++ 0x7e, 0xbf, 0xa9, 0x22, 0xfc, 0xa3, 0x1b, 0xe1, 0xf7, 0x17, 0x49, 0x13, ++ 0x3b, 0x67, 0x9a, 0x2f, 0x91, 0x22, 0x91, 0xca, 0x4f, 0xe5, 0xf6, 0x1f, ++ 0xfd, 0x10, 0x7e, 0x8f, 0x2b, 0xf0, 0xe4, 0x04, 0x2f, 0xc0, 0x43, 0xbb, ++ 0xb8, 0x09, 0xde, 0x57, 0xb4, 0x7c, 0x8a, 0xe7, 0x09, 0x56, 0x9b, 0x7e, ++ 0x47, 0x40, 0x7b, 0xee, 0xe3, 0xf4, 0xa5, 0xf5, 0x23, 0x16, 0x5a, 0x7f, ++ 0xf5, 0xcd, 0xce, 0x32, 0xd0, 0x4f, 0xb4, 0xdf, 0x57, 0xa0, 0x7c, 0x20, ++ 0x6b, 0x23, 0xde, 0x6f, 0xe2, 0x3e, 0xc1, 0xe2, 0xb4, 0xf4, 0xfd, 0xfb, ++ 0xf0, 0x93, 0x28, 0x27, 0x0a, 0x82, 0x6f, 0xde, 0x4a, 0x9b, 0x9e, 0x22, ++ 0xe1, 0x77, 0xaf, 0xc9, 0x84, 0x79, 0x1b, 0xf9, 0x8c, 0xf2, 0xad, 0x00, ++ 0x76, 0x57, 0xef, 0x66, 0x01, 0x7f, 0xd7, 0x96, 0x5a, 0x5a, 0xf9, 0x37, ++ 0x80, 0x49, 0xed, 0x5b, 0x86, 0x79, 0xb7, 0xf4, 0xfb, 0x1d, 0xb1, 0xce, ++ 0x3b, 0x2f, 0x0a, 0x19, 0xfb, 0x31, 0xd3, 0xff, 0xf7, 0x9c, 0x7f, 0xe9, ++ 0x5f, 0x96, 0x9e, 0x8f, 0xcc, 0xf5, 0x06, 0xcc, 0x0a, 0xe2, 0xb9, 0xc4, ++ 0xca, 0xa5, 0x54, 0xdf, 0xe9, 0xec, 0xfc, 0xca, 0xa3, 0x0d, 0x78, 0x9f, ++ 0xa3, 0x79, 0x1c, 0x0c, 0xc2, 0xe9, 0xf2, 0x0d, 0x60, 0xbd, 0x54, 0x51, ++ 0xbe, 0xed, 0xdc, 0x6e, 0x20, 0x82, 0x2d, 0x9f, 0xe7, 0xcd, 0x8e, 0x64, ++ 0x65, 0xbc, 0xb7, 0x10, 0xf8, 0x95, 0x32, 0x4a, 0xc5, 0x65, 0x64, 0xba, ++ 0x0a, 0xf8, 0xbe, 0x81, 0xcc, 0x84, 0xe7, 0x4b, 0x42, 0xe4, 0x21, 0x51, ++ 0x64, 0x7a, 0x02, 0xe3, 0x40, 0xdb, 0x12, 0x50, 0x4f, 0x74, 0x7b, 0xba, ++ 0x9e, 0x79, 0x02, 0xf8, 0xab, 0x65, 0x2c, 0xc6, 0x9f, 0x86, 0xf0, 0xf3, ++ 0x9e, 0xdd, 0x6a, 0x04, 0xef, 0x79, 0xec, 0xe1, 0xf1, 0xc9, 0x6e, 0x0f, ++ 0x2b, 0x97, 0xb7, 0xdb, 0x31, 0x0f, 0xe6, 0xd4, 0x69, 0x05, 0xf5, 0xe8, ++ 0xb2, 0xf0, 0x41, 0x37, 0xd0, 0xa3, 0xfb, 0x79, 0xbb, 0x05, 0x7e, 0x97, ++ 0xf4, 0xd4, 0xf6, 0x01, 0x05, 0x90, 0x27, 0xd9, 0x1d, 0x66, 0xf7, 0xff, ++ 0x9e, 0x0c, 0x0f, 0xc0, 0xdf, 0x7f, 0x8d, 0xb7, 0x6e, 0x99, 0xf5, 0x81, ++ 0xb6, 0x4e, 0x1e, 0x81, 0x7f, 0xc2, 0x7a, 0x9a, 0xe8, 0xfb, 0x06, 0xd6, ++ 0x5b, 0xb2, 0x82, 0xe5, 0x91, 0x0e, 0x1a, 0x50, 0x93, 0x13, 0xeb, 0xf7, ++ 0x24, 0xb4, 0x76, 0x29, 0x4a, 0x4d, 0x0e, 0xf8, 0x29, 0xff, 0x0b, 0xc9, ++ 0x35, 0x40, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xdd, 0x7d, 0x0d, 0x78, 0x54, 0xd5, ++ 0x99, 0xf0, 0xb9, 0x73, 0xef, 0xfc, 0x65, 0x66, 0x92, 0x99, 0xc9, 0x24, ++ 0x99, 0x84, 0xfc, 0x4c, 0x42, 0x08, 0x01, 0x02, 0x4e, 0x42, 0x88, 0x48, ++ 0x51, 0x27, 0x21, 0x60, 0xc0, 0x54, 0x07, 0x8a, 0x1a, 0x7f, 0x8a, 0xc3, ++ 0x7f, 0x80, 0xfc, 0x89, 0xb6, 0x1b, 0x95, 0x6e, 0x26, 0x26, 0x62, 0x42, ++ 0x51, 0xc3, 0x1a, 0x11, 0x10, 0x70, 0x40, 0x51, 0xba, 0x6a, 0x1b, 0x5c, ++ 0xd4, 0x68, 0x83, 0xcf, 0x80, 0x68, 0xb1, 0xd5, 0x7e, 0xb1, 0x76, 0xbb, ++ 0xfe, 0xec, 0xb2, 0x23, 0xb0, 0x88, 0x56, 0x20, 0xa2, 0xa5, 0xb4, 0xdb, ++ 0x96, 0xef, 0x7d, 0xdf, 0x73, 0xee, 0xcc, 0xdc, 0x49, 0xa2, 0x74, 0x77, ++ 0xbf, 0xee, 0xf3, 0x7c, 0xe9, 0x43, 0xaf, 0xe7, 0x9e, 0x73, 0xcf, 0xcf, ++ 0xfb, 0xbe, 0xe7, 0xfd, 0x3f, 0x67, 0x86, 0xbe, 0x6b, 0xf5, 0xee, 0xce, ++ 0x67, 0xf0, 0x17, 0xcc, 0x57, 0x5c, 0x8c, 0x9d, 0x0b, 0xb8, 0xbd, 0x1b, ++ 0xa0, 0xbc, 0x58, 0x82, 0x57, 0x57, 0x30, 0x66, 0x71, 0xfa, 0x8d, 0xf6, ++ 0x34, 0xc6, 0x6c, 0xe5, 0x8c, 0xf9, 0xe0, 0x9f, 0xf3, 0x88, 0xbc, 0x5b, ++ 0x86, 0xfa, 0xe3, 0xb2, 0xf7, 0xfb, 0xf6, 0xb1, 0x8c, 0x2d, 0x63, 0x7e, ++ 0x03, 0xc3, 0x67, 0x79, 0xc0, 0xc0, 0x0a, 0xe0, 0x9b, 0x4e, 0x68, 0x9c, ++ 0xc9, 0xd8, 0x52, 0x85, 0x85, 0x15, 0x27, 0x3c, 0x17, 0xfa, 0x3e, 0x90, ++ 0xa6, 0x50, 0x99, 0x31, 0xf8, 0x7e, 0xe9, 0x76, 0x29, 0xd4, 0x01, 0xdf, ++ 0x2f, 0xdb, 0x68, 0x64, 0xcc, 0xc4, 0xe8, 0xef, 0x22, 0xfc, 0x5b, 0xd1, ++ 0x0b, 0xe5, 0xe2, 0x58, 0x79, 0x15, 0x0b, 0x19, 0x98, 0x0c, 0xff, 0xb1, ++ 0x3d, 0xae, 0x1d, 0xf4, 0xbf, 0x4a, 0x09, 0x1f, 0x94, 0x92, 0x19, 0x5b, ++ 0x6d, 0x62, 0x61, 0x0b, 0xf4, 0xbb, 0xfa, 0x29, 0xed, 0x77, 0x6b, 0x58, ++ 0x98, 0xe6, 0xd3, 0xf0, 0xdc, 0x45, 0x63, 0x7c, 0xff, 0xb0, 0x3e, 0xc6, ++ 0x60, 0x6a, 0xbf, 0x63, 0xea, 0xba, 0x7c, 0x1e, 0xfb, 0x34, 0xc6, 0x5c, ++ 0x06, 0x28, 0xc3, 0xba, 0x87, 0xde, 0xd1, 0x87, 0x10, 0x0e, 0xff, 0x21, ++ 0xfb, 0x69, 0x5d, 0x6b, 0x58, 0x80, 0xfa, 0xb9, 0xa5, 0xb5, 0x8a, 0x1d, ++ 0x4f, 0x65, 0xac, 0xf9, 0xee, 0xd6, 0xcc, 0x65, 0xf0, 0x3c, 0xdb, 0x7a, ++ 0x4f, 0xe6, 0xb2, 0xa9, 0x50, 0x8f, 0xf3, 0x80, 0xf1, 0xad, 0x8c, 0x7f, ++ 0xcf, 0x60, 0x5d, 0x7b, 0x00, 0x66, 0x6b, 0xaa, 0x59, 0x38, 0x07, 0xe6, ++ 0xb7, 0x1c, 0xd6, 0x9b, 0x54, 0x06, 0xe5, 0x01, 0x29, 0x3c, 0x19, 0xcb, ++ 0x26, 0x16, 0x4c, 0x2e, 0xe3, 0xef, 0x53, 0xca, 0xf8, 0x7a, 0x7d, 0x71, ++ 0xf3, 0xab, 0x67, 0x3d, 0x34, 0x5e, 0xfd, 0x76, 0xed, 0x7b, 0xf6, 0xeb, ++ 0x54, 0x82, 0x67, 0x03, 0x1b, 0xa4, 0x7a, 0xf6, 0x54, 0x5c, 0x3d, 0xc0, ++ 0xa3, 0x41, 0xc0, 0xa1, 0xe1, 0x39, 0x78, 0x1f, 0x07, 0x87, 0x19, 0xcf, ++ 0x49, 0x41, 0xdb, 0x65, 0x58, 0x0a, 0x75, 0xa4, 0xc3, 0xfc, 0x9a, 0x4e, ++ 0x31, 0xb6, 0x01, 0x4a, 0x4d, 0xfb, 0x2f, 0x1a, 0x35, 0xfd, 0xb3, 0x1e, ++ 0xc6, 0x00, 0x0e, 0x19, 0x49, 0x8c, 0x99, 0x01, 0x5f, 0x8f, 0x4a, 0xac, ++ 0xae, 0xaf, 0x84, 0xbe, 0x9b, 0x30, 0x7f, 0x32, 0xb4, 0xc1, 0xbf, 0xab, ++ 0xb1, 0xdc, 0x4e, 0xed, 0x8e, 0x0a, 0xf8, 0x3d, 0x7a, 0xc3, 0x8a, 0xcc, ++ 0x00, 0xb4, 0x7b, 0xd8, 0x01, 0xe5, 0x2c, 0x01, 0xe0, 0xe9, 0x30, 0x86, ++ 0x0e, 0x07, 0xa7, 0x72, 0xd8, 0x04, 0xe3, 0x24, 0x4d, 0x8d, 0x96, 0xa9, ++ 0xbe, 0xe2, 0x3e, 0x5e, 0x9e, 0x6f, 0x2f, 0xae, 0xd9, 0x92, 0xcd, 0xd8, ++ 0x66, 0x7d, 0x20, 0xd3, 0x0e, 0x40, 0x5c, 0x2a, 0xfb, 0xdf, 0xd4, 0x01, ++ 0xfc, 0x9e, 0x71, 0x06, 0x6e, 0x40, 0xbc, 0x2c, 0xd5, 0xf9, 0x72, 0x15, ++ 0x5c, 0x2f, 0xf3, 0x15, 0xf9, 0x61, 0x1e, 0xac, 0x95, 0xc3, 0xe1, 0xb1, ++ 0xb2, 0x96, 0x09, 0x2d, 0x25, 0xb1, 0x79, 0xc5, 0xe6, 0xc7, 0xf1, 0xbb, ++ 0x59, 0xea, 0x0b, 0xeb, 0x80, 0xce, 0x82, 0xaf, 0x48, 0xde, 0x3d, 0x1e, ++ 0xa4, 0xdb, 0x21, 0x7d, 0xc0, 0x1a, 0x6b, 0xd7, 0x6c, 0x97, 0x68, 0x1d, ++ 0x29, 0x87, 0x22, 0x6f, 0x8e, 0x41, 0xbc, 0xbf, 0x28, 0xb1, 0xdd, 0xd0, ++ 0x6e, 0xab, 0xf4, 0xf1, 0x9b, 0x63, 0xe0, 0xbb, 0xad, 0x73, 0x3d, 0xac, ++ 0x03, 0xca, 0x6e, 0xc0, 0x93, 0x5c, 0x86, 0xef, 0x59, 0xa7, 0x04, 0x70, ++ 0x29, 0xdf, 0x3f, 0xff, 0x8e, 0x37, 0x10, 0xcf, 0xe5, 0x49, 0xde, 0x71, ++ 0xf0, 0x68, 0xdc, 0x5f, 0x29, 0x37, 0x5a, 0x69, 0xfd, 0xb7, 0xfb, 0x61, ++ 0x3e, 0x19, 0x96, 0x96, 0x5d, 0x3a, 0xa8, 0xcf, 0xb8, 0xbd, 0xb8, 0x0c, ++ 0xe9, 0x1b, 0xd6, 0x7d, 0xfb, 0x02, 0x78, 0x7f, 0x97, 0xdd, 0x43, 0xe3, ++ 0x65, 0x5a, 0x39, 0xde, 0xdd, 0xf7, 0x05, 0xf3, 0xd7, 0x96, 0xe0, 0xf8, ++ 0xfe, 0x3b, 0xde, 0x80, 0xf1, 0x86, 0x26, 0x27, 0x79, 0x71, 0xfc, 0x0c, ++ 0x80, 0x95, 0xcd, 0x49, 0xcf, 0x2e, 0x33, 0xb6, 0x63, 0xed, 0x12, 0xb6, ++ 0x7b, 0x34, 0x99, 0xf7, 0x9f, 0xa6, 0x93, 0x6f, 0x9f, 0x8f, 0xe5, 0x32, ++ 0x5e, 0x76, 0xae, 0x93, 0x7c, 0xbb, 0x89, 0xf8, 0x36, 0xd1, 0xba, 0x33, ++ 0x8c, 0xac, 0x06, 0xe7, 0x89, 0xef, 0x43, 0x25, 0xb4, 0x65, 0x7c, 0xfb, ++ 0xa8, 0x3e, 0xc4, 0xf1, 0x3b, 0xab, 0xa5, 0x14, 0xfb, 0xcb, 0x18, 0xcb, ++ 0x9f, 0x2e, 0x43, 0x38, 0x1b, 0xfb, 0x79, 0x5b, 0xc5, 0xf7, 0x40, 0xa6, ++ 0x8e, 0xa5, 0xe3, 0x7c, 0xe1, 0xbf, 0x61, 0x3e, 0x77, 0xed, 0xab, 0xcc, ++ 0x70, 0xc2, 0xf7, 0x6f, 0x7f, 0x6e, 0x52, 0x74, 0x29, 0xf0, 0x74, 0x33, ++ 0x36, 0x88, 0xed, 0x94, 0xb0, 0x95, 0xe1, 0xb3, 0xb0, 0x98, 0xb7, 0x37, ++ 0x89, 0xf6, 0xa5, 0xb3, 0x32, 0x70, 0x33, 0xb8, 0x72, 0xb5, 0xed, 0xce, ++ 0xea, 0x7d, 0x29, 0x53, 0x01, 0x2e, 0xc1, 0x77, 0x65, 0x86, 0xf8, 0xf8, ++ 0xca, 0xea, 0x4b, 0x71, 0x40, 0xbb, 0x6f, 0x19, 0xf8, 0x3a, 0x12, 0xf1, ++ 0xb8, 0x13, 0xf1, 0x03, 0xeb, 0x69, 0xbe, 0x00, 0x33, 0x4f, 0x8d, 0xc3, ++ 0x5b, 0xdd, 0x79, 0x03, 0xf6, 0xd7, 0x7c, 0x41, 0x61, 0xa1, 0xa9, 0xb1, ++ 0xf7, 0x9f, 0xb7, 0x99, 0x58, 0xa8, 0x28, 0x56, 0x6e, 0xa8, 0x3f, 0x34, ++ 0x07, 0xdb, 0x35, 0xb2, 0xc1, 0xf5, 0x48, 0x57, 0x8d, 0x7d, 0x16, 0x16, ++ 0x8a, 0xa3, 0xf7, 0x6f, 0x25, 0x8d, 0x3c, 0xae, 0x4a, 0xdf, 0xcd, 0x17, ++ 0x74, 0x2c, 0x98, 0x4a, 0xe4, 0x9b, 0xed, 0xb7, 0x21, 0x7c, 0x86, 0xd6, ++ 0x2f, 0xc7, 0xf9, 0x1f, 0x90, 0xd8, 0x1e, 0x86, 0xf5, 0x06, 0x16, 0x8c, ++ 0x1b, 0xbf, 0xf9, 0x82, 0x53, 0x5b, 0x8e, 0xce, 0x33, 0x9d, 0xfa, 0x89, ++ 0xb5, 0x63, 0xda, 0x76, 0xfd, 0xbf, 0xa7, 0x76, 0x6c, 0x7a, 0x24, 0x19, ++ 0xc7, 0x39, 0x63, 0x8f, 0x24, 0x3b, 0xc5, 0xfa, 0xf0, 0xbb, 0x2c, 0x99, ++ 0xb5, 0x20, 0x5e, 0xce, 0x86, 0x74, 0x41, 0x3d, 0xec, 0xe3, 0x33, 0x1e, ++ 0x5e, 0x7f, 0x96, 0xb1, 0x9a, 0x3e, 0x6b, 0xac, 0xbd, 0xda, 0xdf, 0x99, ++ 0x3a, 0x03, 0x0b, 0x13, 0xdc, 0x87, 0xa8, 0x5f, 0x84, 0x4b, 0x10, 0x78, ++ 0xdb, 0xb6, 0x81, 0x2f, 0x0c, 0x1e, 0x28, 0x37, 0x0c, 0x1c, 0x24, 0xb8, ++ 0xa8, 0xf4, 0x10, 0x0f, 0x9f, 0x60, 0x1c, 0xdf, 0x48, 0xef, 0x18, 0x0c, ++ 0xeb, 0x60, 0x4f, 0xff, 0xda, 0xbe, 0xaa, 0xab, 0xc4, 0x0c, 0xa8, 0x38, ++ 0xa4, 0xee, 0xdf, 0x35, 0x5d, 0xbe, 0x99, 0x50, 0x2f, 0xeb, 0x34, 0xfb, ++ 0xd9, 0x52, 0x1e, 0xdd, 0xdf, 0xc4, 0x56, 0x1e, 0xd5, 0xc9, 0x82, 0x1f, ++ 0x34, 0x74, 0x55, 0xcf, 0x8c, 0x2f, 0xf3, 0xf6, 0xb1, 0xef, 0x1b, 0x6b, ++ 0xaa, 0x61, 0xff, 0x97, 0x97, 0xf0, 0xef, 0x8f, 0xda, 0x9b, 0x8e, 0xdc, ++ 0xa7, 0xc4, 0xf8, 0x11, 0xac, 0x23, 0x17, 0xe1, 0x12, 0x2d, 0x9b, 0x12, ++ 0xca, 0x56, 0x28, 0x4f, 0x8e, 0x2b, 0xdb, 0x13, 0xea, 0x5d, 0x09, 0xf5, ++ 0xee, 0x84, 0x72, 0x36, 0x6f, 0xff, 0xb9, 0x2d, 0x9c, 0x2b, 0x7b, 0x19, ++ 0xfb, 0xd4, 0xbe, 0xb6, 0x46, 0x01, 0xfe, 0xf2, 0x79, 0x66, 0x78, 0x91, ++ 0x04, 0xe5, 0x8d, 0x1d, 0x77, 0xd5, 0x54, 0x03, 0x9f, 0x6b, 0x2c, 0x1f, ++ 0xf4, 0xc9, 0xc8, 0x3f, 0x07, 0x24, 0xaf, 0xc4, 0x62, 0xf0, 0x6b, 0xf2, ++ 0x32, 0x5f, 0x08, 0xe0, 0x67, 0xf5, 0x46, 0x0c, 0x4b, 0x4b, 0x10, 0x0e, ++ 0x83, 0x6f, 0xe2, 0xfe, 0x6f, 0xe8, 0x97, 0xec, 0x12, 0xd0, 0xb9, 0xb5, ++ 0x6f, 0x5f, 0x98, 0xca, 0xf8, 0x9d, 0x27, 0xee, 0xbb, 0x3e, 0x89, 0xbe, ++ 0x6b, 0xe8, 0xfb, 0x98, 0xbe, 0x1b, 0xb5, 0xff, 0x62, 0x1d, 0xed, 0xe3, ++ 0x0d, 0xc5, 0xc7, 0xa8, 0x1d, 0x00, 0xc0, 0x7e, 0x02, 0xf0, 0x74, 0x13, ++ 0x93, 0x58, 0x0a, 0x80, 0x34, 0x5f, 0x09, 0xfc, 0x11, 0xf9, 0x64, 0x63, ++ 0xdf, 0x27, 0x5c, 0xee, 0xb2, 0x21, 0x03, 0x5f, 0x1f, 0xe7, 0x83, 0x67, ++ 0x32, 0x7d, 0xaf, 0x13, 0x1f, 0x3c, 0x20, 0xd9, 0x71, 0xdf, 0x45, 0xe9, ++ 0x0e, 0xfb, 0xb5, 0xc6, 0xe8, 0x5d, 0x6d, 0xff, 0xd1, 0xe4, 0x81, 0x7f, ++ 0xc6, 0x6e, 0x2c, 0x77, 0x7d, 0xd1, 0xae, 0x40, 0xfb, 0x7f, 0x6b, 0xfc, ++ 0x64, 0x1a, 0x03, 0x54, 0x7d, 0x84, 0x4d, 0xae, 0x40, 0xbe, 0x1a, 0x9a, ++ 0x80, 0xf2, 0x78, 0x1b, 0x0b, 0x4c, 0x40, 0x39, 0xf4, 0xdd, 0xc6, 0x71, ++ 0x07, 0x75, 0xd0, 0xee, 0xa8, 0x3e, 0xb2, 0x83, 0x01, 0xbc, 0x8a, 0x1d, ++ 0x1b, 0x6a, 0x14, 0x68, 0x77, 0xd4, 0x16, 0xc9, 0x91, 0x80, 0x87, 0x4c, ++ 0xdc, 0xd4, 0xcb, 0xcb, 0x69, 0x91, 0x1d, 0x08, 0xcf, 0xe0, 0xa6, 0x47, ++ 0x09, 0xbe, 0x47, 0x73, 0x22, 0x39, 0x3a, 0x28, 0x4f, 0x71, 0x84, 0x79, ++ 0x79, 0x5c, 0x64, 0x07, 0x96, 0x6f, 0xdc, 0xf4, 0x2c, 0x2f, 0x4f, 0x8e, ++ 0xe4, 0xc8, 0xf0, 0x7d, 0x41, 0xf0, 0xb9, 0x9a, 0x6a, 0x28, 0xef, 0xb1, ++ 0x8f, 0xbc, 0x5f, 0xf3, 0x1c, 0x9c, 0x8f, 0xab, 0xf3, 0x3b, 0x31, 0xd6, ++ 0x97, 0xe5, 0x48, 0x43, 0xb2, 0xe3, 0x72, 0x62, 0x87, 0x1e, 0x20, 0x06, ++ 0xfc, 0x70, 0xd1, 0xea, 0xcf, 0x9e, 0xdf, 0x03, 0x70, 0x58, 0x74, 0x8f, ++ 0x85, 0xf8, 0xd4, 0x9e, 0xcf, 0xbf, 0x33, 0xcf, 0x4f, 0xeb, 0x0f, 0xfa, ++ 0x95, 0x0a, 0xe0, 0x87, 0x9c, 0xf4, 0xb9, 0x1c, 0x23, 0x7e, 0xac, 0x90, ++ 0x1e, 0x90, 0x89, 0xb2, 0xcb, 0x19, 0xc3, 0x87, 0x2d, 0x77, 0xd0, 0x43, ++ 0x7c, 0x7e, 0x62, 0xcb, 0x3e, 0x94, 0xf7, 0x19, 0x8b, 0x4a, 0x88, 0xcf, ++ 0x5f, 0x48, 0xf1, 0xb5, 0x3b, 0xa6, 0xc5, 0x9e, 0xbf, 0x4b, 0xe7, 0xcf, ++ 0x76, 0x87, 0x9d, 0xf3, 0x65, 0x59, 0xe7, 0xa3, 0xf6, 0xf7, 0xda, 0x48, ++ 0xef, 0x79, 0xd8, 0xcc, 0xd7, 0x03, 0xfb, 0x86, 0xf0, 0x6b, 0x15, 0xf8, ++ 0x28, 0x17, 0xeb, 0x29, 0x77, 0xe8, 0xe8, 0x99, 0x6b, 0x9f, 0x4d, 0xfd, ++ 0x7c, 0x28, 0xf9, 0xb6, 0x9a, 0x64, 0x7c, 0xb2, 0xa0, 0x19, 0xf1, 0xb9, ++ 0x2a, 0x89, 0xf4, 0x8c, 0x5b, 0x77, 0x01, 0x5f, 0x00, 0xbe, 0xdc, 0x2b, ++ 0xe6, 0xdd, 0xbb, 0x69, 0x42, 0x28, 0x08, 0xfd, 0xdf, 0x2a, 0x31, 0x3f, ++ 0xf2, 0x8d, 0x5e, 0x87, 0x2f, 0x13, 0xf9, 0xc3, 0x4b, 0x7f, 0x91, 0x6f, ++ 0xc7, 0xf5, 0xf6, 0x96, 0x42, 0x19, 0x9e, 0x3f, 0x15, 0xfc, 0xbe, 0x77, ++ 0xbe, 0x2f, 0xd3, 0x11, 0x27, 0x17, 0x7b, 0x77, 0xf1, 0x7a, 0x95, 0xef, ++ 0xf4, 0xe6, 0xf3, 0xef, 0x55, 0x79, 0x93, 0xd1, 0xc1, 0xc7, 0xc9, 0x78, ++ 0x78, 0xc2, 0x6e, 0x5c, 0x87, 0x45, 0x61, 0x3e, 0x2c, 0x2f, 0xaf, 0x2b, ++ 0xda, 0xdd, 0x4e, 0x72, 0x7b, 0x01, 0xcd, 0x97, 0xf9, 0x7c, 0x99, 0x12, ++ 0xac, 0xf7, 0xc4, 0xaa, 0x02, 0x1d, 0xea, 0x91, 0x2a, 0x7e, 0x94, 0x42, ++ 0xdf, 0x75, 0x58, 0x7f, 0x0b, 0xf6, 0x6f, 0x8d, 0xe1, 0x49, 0x1d, 0xbf, ++ 0x1d, 0xd7, 0x9d, 0x86, 0x7a, 0x00, 0xc8, 0x7d, 0x58, 0x6f, 0x9b, 0x33, ++ 0xd0, 0x8e, 0xf8, 0x04, 0x3d, 0x60, 0x0a, 0xe9, 0x81, 0x42, 0x0f, 0x68, ++ 0xc7, 0xf5, 0xc6, 0xc1, 0x97, 0x29, 0x91, 0x69, 0xf8, 0xfe, 0xff, 0x23, ++ 0x38, 0xdd, 0x89, 0xeb, 0xfe, 0xef, 0xc2, 0x69, 0x04, 0x7e, 0x11, 0xc4, ++ 0x71, 0x1b, 0x5b, 0x81, 0x5f, 0xe8, 0xe2, 0xf8, 0x85, 0x80, 0xdf, 0x66, ++ 0x29, 0xac, 0xcf, 0xe0, 0xfc, 0xc2, 0x8b, 0x72, 0x0e, 0xdf, 0x2f, 0x00, ++ 0xfe, 0x78, 0x8b, 0x3d, 0xf0, 0x00, 0xf6, 0xaf, 0x8e, 0xbf, 0xe8, 0xde, ++ 0x46, 0xd2, 0xfb, 0xd4, 0x79, 0x59, 0xfe, 0xee, 0xe5, 0x9a, 0x9b, 0xd8, ++ 0xf0, 0x7d, 0x96, 0xa8, 0x97, 0x1d, 0xfd, 0xd0, 0xb4, 0x91, 0x81, 0x1c, ++ 0x3b, 0x6a, 0xe8, 0x23, 0xbe, 0x78, 0x74, 0x1e, 0xf3, 0xb6, 0x23, 0xff, ++ 0xd0, 0xb1, 0x7a, 0x84, 0xa3, 0xaa, 0x57, 0x56, 0xdc, 0xb3, 0xe6, 0x6d, ++ 0x06, 0xfa, 0xec, 0x97, 0x0e, 0x99, 0xf0, 0xdc, 0x2d, 0xf9, 0x32, 0x71, ++ 0x5d, 0xdd, 0x80, 0x57, 0x13, 0xca, 0xe1, 0xf9, 0x86, 0xd0, 0x9e, 0xfc, ++ 0x98, 0x5c, 0xec, 0x75, 0x84, 0xb6, 0xae, 0x40, 0xbc, 0xde, 0x50, 0xe2, ++ 0x0d, 0x7a, 0x48, 0x3e, 0xd2, 0x7e, 0x0b, 0xb6, 0x5a, 0xa8, 0x5d, 0xaf, ++ 0x23, 0xc2, 0x14, 0xac, 0xbf, 0xc2, 0x63, 0x87, 0x99, 0x20, 0x9e, 0x09, ++ 0x1f, 0x43, 0x37, 0x1b, 0x42, 0xbb, 0x25, 0xc4, 0x37, 0xa7, 0x97, 0xde, ++ 0x55, 0x13, 0x43, 0x41, 0x89, 0xf0, 0x1e, 0xa4, 0xef, 0x6f, 0xe6, 0xf4, ++ 0xd3, 0x3b, 0x9f, 0x91, 0x7e, 0xdf, 0x7b, 0xb3, 0x9b, 0xe8, 0xc6, 0xcc, ++ 0x42, 0x66, 0x9c, 0xcf, 0x68, 0x74, 0x90, 0xde, 0xc1, 0x88, 0x8e, 0x98, ++ 0xe2, 0x9b, 0x32, 0xdf, 0x16, 0x83, 0xc3, 0x2f, 0xc5, 0xbe, 0xb6, 0x94, ++ 0x47, 0x5e, 0xfc, 0x17, 0xd4, 0x23, 0x37, 0x9a, 0x49, 0x8f, 0x44, 0x99, ++ 0x89, 0x76, 0x17, 0xeb, 0xc9, 0xa0, 0xf9, 0x02, 0x3e, 0x5f, 0x22, 0xfa, ++ 0x50, 0xed, 0xa5, 0x47, 0x32, 0x43, 0x1b, 0xc8, 0x3e, 0xf3, 0x56, 0x20, ++ 0x3e, 0x1e, 0xb0, 0xf9, 0x16, 0xd3, 0xfc, 0x7f, 0x60, 0xf1, 0xe0, 0xfc, ++ 0xb7, 0x9b, 0x59, 0x97, 0xa9, 0x0c, 0xcd, 0x0f, 0xd6, 0x49, 0xfc, 0x4e, ++ 0xcc, 0x87, 0xf5, 0x3c, 0xc6, 0x50, 0x3f, 0xbb, 0x5d, 0xe8, 0x67, 0xff, ++ 0x5e, 0x7f, 0xce, 0x86, 0x7a, 0xc0, 0x1b, 0x0e, 0xae, 0x5f, 0x21, 0xa1, ++ 0x98, 0x80, 0xff, 0x2d, 0x61, 0xbc, 0x7e, 0xc9, 0x3a, 0xcb, 0xc7, 0x68, ++ 0xcf, 0x2c, 0x59, 0x27, 0x87, 0x8d, 0x60, 0xaf, 0xb0, 0xae, 0xd9, 0xbe, ++ 0x48, 0x9c, 0x9d, 0x41, 0x14, 0x05, 0xfd, 0x05, 0x04, 0xbf, 0x64, 0x5b, ++ 0x86, 0x6c, 0x48, 0x37, 0x01, 0xfc, 0x2e, 0x19, 0xfb, 0xff, 0xa3, 0xcd, ++ 0x63, 0xc5, 0x32, 0x7c, 0x3f, 0x05, 0xd1, 0x0e, 0xdf, 0x17, 0xc7, 0xbe, ++ 0x7f, 0x5f, 0xec, 0xdb, 0x45, 0x32, 0x9f, 0x3f, 0x6b, 0xb3, 0x78, 0x10, ++ 0xbe, 0x89, 0x7c, 0xfd, 0x7d, 0x75, 0x7e, 0x3d, 0x8f, 0xf9, 0xe2, 0xc7, ++ 0x53, 0xc7, 0x49, 0xec, 0x17, 0xec, 0xb8, 0x0f, 0x90, 0x3e, 0x01, 0xee, ++ 0xe1, 0x14, 0xd4, 0xe7, 0x7f, 0x20, 0x13, 0x5e, 0x13, 0xe7, 0xeb, 0x32, ++ 0x0c, 0x3d, 0x68, 0x86, 0xfa, 0x45, 0x6d, 0xb2, 0xe3, 0x3e, 0x80, 0x67, ++ 0xa0, 0xd5, 0x46, 0xeb, 0x55, 0xe7, 0x7b, 0x7b, 0xc6, 0xd0, 0x95, 0x64, ++ 0x5f, 0x25, 0xf4, 0x7f, 0xd2, 0xd2, 0x54, 0xa1, 0xe0, 0xfa, 0x85, 0xfd, ++ 0xc1, 0xd6, 0x69, 0xed, 0x2f, 0xc6, 0x0c, 0xb1, 0x32, 0xd0, 0xc5, 0x72, ++ 0x36, 0x44, 0x76, 0xcc, 0xb0, 0xf7, 0xc2, 0x6e, 0x4d, 0xb4, 0xfb, 0x18, ++ 0xfb, 0x8b, 0x31, 0xbe, 0x9d, 0xba, 0x5f, 0x98, 0x47, 0x4a, 0x98, 0xbf, ++ 0xa0, 0x2b, 0x8f, 0xa4, 0x20, 0xde, 0x02, 0x12, 0xc7, 0x9b, 0xc1, 0x30, ++ 0xb4, 0x08, 0xf9, 0x4e, 0xe2, 0xbc, 0x55, 0x78, 0x1a, 0x9d, 0x3a, 0x01, ++ 0x77, 0x4e, 0x17, 0x89, 0xf0, 0x36, 0x3a, 0xb9, 0xdc, 0x49, 0x84, 0xb7, ++ 0xcb, 0x10, 0xc9, 0xc1, 0x7e, 0x03, 0xad, 0x46, 0x82, 0x53, 0x62, 0xff, ++ 0xaa, 0x5c, 0x7c, 0xcc, 0x0c, 0xfb, 0x07, 0xe8, 0x6e, 0x8b, 0x24, 0x11, ++ 0xbd, 0x6e, 0xb9, 0xdb, 0x42, 0x72, 0x8e, 0x99, 0x38, 0x9e, 0x9b, 0x57, ++ 0x27, 0x79, 0x90, 0x7e, 0xb7, 0x19, 0x86, 0x9e, 0xa6, 0x7d, 0xf5, 0xaa, ++ 0x91, 0x21, 0xde, 0xcf, 0x9a, 0x87, 0x5e, 0x22, 0x7e, 0x55, 0xc8, 0xfd, ++ 0x0a, 0x67, 0x7f, 0x29, 0xef, 0xc2, 0x76, 0x67, 0xd2, 0x38, 0xdd, 0x9f, ++ 0x79, 0x45, 0x4f, 0xfb, 0x8d, 0x4f, 0x06, 0xf4, 0xa1, 0x5f, 0xca, 0xbb, ++ 0xa9, 0x5e, 0xe2, 0xfd, 0x9e, 0x69, 0xb7, 0x78, 0x70, 0xbf, 0x36, 0x23, ++ 0xa4, 0x61, 0xfc, 0xe6, 0xe0, 0x7f, 0xb6, 0x31, 0x80, 0xef, 0x71, 0x1d, ++ 0xb7, 0x93, 0x9b, 0xfb, 0xb5, 0xf6, 0xf0, 0x19, 0xf8, 0x57, 0x5f, 0x16, ++ 0xe3, 0x1b, 0x67, 0x19, 0x1f, 0x27, 0xd8, 0xcf, 0xf9, 0x04, 0xac, 0x74, ++ 0x15, 0x8d, 0x73, 0x6b, 0x12, 0xdb, 0x00, 0xfd, 0x36, 0xe9, 0x24, 0x1f, ++ 0xea, 0x4f, 0x4d, 0xab, 0x27, 0x86, 0x3a, 0x38, 0x3d, 0x99, 0x70, 0x3f, ++ 0x35, 0x88, 0x29, 0x35, 0xe9, 0xc0, 0x2e, 0x2c, 0x8b, 0xed, 0xff, 0x26, ++ 0xdd, 0xb1, 0x22, 0xb4, 0xab, 0x1a, 0x4c, 0x1b, 0x07, 0xe5, 0x64, 0xaa, ++ 0x3f, 0x8c, 0xf6, 0x18, 0x43, 0x7b, 0x0a, 0xbe, 0x5b, 0x8d, 0x1f, 0xe5, ++ 0x0f, 0x87, 0x7f, 0xd3, 0xc6, 0xdf, 0xfe, 0x19, 0xe7, 0xdd, 0xb4, 0x5f, ++ 0x4b, 0x17, 0x0d, 0x31, 0xfa, 0x91, 0x2e, 0x4a, 0xf8, 0x7d, 0x1c, 0x3d, ++ 0xe5, 0xc7, 0xe8, 0x84, 0xf4, 0x6f, 0xe4, 0x1f, 0xd5, 0x2c, 0x34, 0x4e, ++ 0xe2, 0x7e, 0x1a, 0x2c, 0x5b, 0x6a, 0x06, 0x43, 0xe8, 0xa7, 0x69, 0x16, ++ 0xfe, 0x8b, 0xb4, 0x43, 0x91, 0x39, 0x48, 0x3f, 0xb6, 0xf2, 0x3e, 0xb6, ++ 0x04, 0x9e, 0xcd, 0xa7, 0xb8, 0xfe, 0x31, 0x63, 0x60, 0xd7, 0xeb, 0x68, ++ 0x07, 0x3b, 0x6a, 0x06, 0x73, 0x70, 0x99, 0xcd, 0xad, 0x6b, 0xa7, 0x9e, ++ 0x98, 0x1a, 0xc3, 0xaf, 0x3a, 0xcf, 0x2b, 0x06, 0x36, 0xc9, 0x68, 0xdf, ++ 0xa9, 0x7a, 0x4b, 0x9c, 0x7d, 0x39, 0x61, 0xc1, 0xe4, 0xf8, 0xe7, 0x7d, ++ 0xf4, 0x1d, 0xda, 0xab, 0x38, 0x5e, 0x04, 0x5f, 0xe1, 0xbe, 0x51, 0xb8, ++ 0xbc, 0xdb, 0x2c, 0xe4, 0x1d, 0xc8, 0x45, 0xe2, 0xcb, 0xcb, 0x7b, 0xc6, ++ 0x93, 0x5c, 0x44, 0xb9, 0x85, 0xfc, 0x4d, 0xb5, 0x77, 0x91, 0xdf, 0x21, ++ 0x7f, 0x79, 0xc6, 0x59, 0x75, 0x9b, 0x13, 0xd6, 0xe9, 0x4d, 0xad, 0xba, ++ 0xc9, 0x39, 0x8d, 0x8f, 0x43, 0x7a, 0x3e, 0x1a, 0x49, 0x57, 0x0c, 0x87, ++ 0x67, 0xa2, 0xdc, 0x51, 0xdb, 0xa1, 0xdd, 0xdb, 0x62, 0x1d, 0xbd, 0x5d, ++ 0xd4, 0x0f, 0xb4, 0x35, 0x85, 0xf3, 0x0f, 0x45, 0xa2, 0xf2, 0x8a, 0x5f, ++ 0xe8, 0x77, 0x6d, 0xa0, 0xf9, 0x29, 0x44, 0x2f, 0x6b, 0x77, 0xe4, 0x13, ++ 0x3f, 0x56, 0xfd, 0x35, 0x0d, 0xc2, 0x4f, 0xb5, 0x42, 0xf8, 0x77, 0x56, ++ 0x08, 0xff, 0xce, 0xca, 0x2d, 0x46, 0xe6, 0x89, 0xf7, 0x67, 0x85, 0xb4, ++ 0xe5, 0x06, 0xc1, 0x0f, 0x1a, 0x59, 0x84, 0xfb, 0xb9, 0xf6, 0x42, 0x7d, ++ 0xbc, 0x5f, 0xa7, 0x9a, 0x85, 0x6d, 0x58, 0x8f, 0xfe, 0x1d, 0x7c, 0xf6, ++ 0x69, 0xbf, 0x6f, 0x66, 0xa1, 0x59, 0x0a, 0xe2, 0xb7, 0xff, 0xa2, 0x31, ++ 0xfe, 0x3d, 0xeb, 0xe5, 0xeb, 0xbd, 0x5d, 0xe0, 0x7d, 0xab, 0x99, 0xfb, ++ 0x75, 0x66, 0xac, 0xdb, 0x25, 0x73, 0x67, 0x15, 0x5f, 0x6f, 0x4a, 0x99, ++ 0x2f, 0xff, 0x7e, 0x94, 0x23, 0x6f, 0xe9, 0xc9, 0xff, 0xf0, 0x1f, 0x02, ++ 0x4f, 0x2a, 0x5c, 0x2c, 0xce, 0xaa, 0xc5, 0x08, 0xef, 0x24, 0xb4, 0xd7, ++ 0xb0, 0xdd, 0xfd, 0x46, 0x82, 0xcb, 0x09, 0x90, 0xd7, 0xfb, 0x84, 0xdf, ++ 0x63, 0x01, 0xda, 0xa1, 0x6d, 0x81, 0xcc, 0xc2, 0x42, 0x04, 0x8f, 0x3d, ++ 0x77, 0x81, 0x6d, 0x38, 0x7c, 0x37, 0xbc, 0x6a, 0xae, 0x47, 0x7a, 0xe9, ++ 0x71, 0x72, 0xbd, 0x45, 0x7d, 0x3f, 0xc7, 0xa9, 0xa7, 0x32, 0xf9, 0x83, ++ 0x10, 0xee, 0xed, 0x16, 0xd2, 0xbb, 0x01, 0xcc, 0x53, 0x90, 0x8e, 0x2a, ++ 0x0a, 0x54, 0x39, 0xca, 0xa6, 0xa0, 0x1f, 0xea, 0x63, 0x3d, 0xe8, 0x63, ++ 0x50, 0x6e, 0xba, 0xd1, 0x1a, 0xc0, 0xfe, 0x22, 0xa8, 0x37, 0x40, 0x79, ++ 0x87, 0xe0, 0x5f, 0x3b, 0x9c, 0x06, 0xea, 0x4f, 0x2d, 0x47, 0xed, 0x3c, ++ 0x41, 0x2f, 0x30, 0x0e, 0xf5, 0x87, 0x7e, 0x19, 0x7f, 0x1c, 0x1d, 0x3c, ++ 0x15, 0x6d, 0xbf, 0x49, 0xe8, 0x93, 0x9c, 0x2f, 0x6c, 0x5e, 0x95, 0x44, ++ 0xfc, 0x28, 0x46, 0xb7, 0x3a, 0x46, 0x74, 0x5b, 0xe2, 0x37, 0xa0, 0x3f, ++ 0xe9, 0x55, 0xc1, 0x47, 0x5e, 0x05, 0x80, 0x92, 0x9d, 0xd5, 0x67, 0xe6, ++ 0x7c, 0x44, 0xe1, 0xfc, 0xe9, 0xd5, 0x53, 0x13, 0x89, 0xef, 0x1d, 0xf9, ++ 0x6c, 0x35, 0xf1, 0x95, 0x73, 0x75, 0x49, 0xcc, 0x28, 0x51, 0x7b, 0x9f, ++ 0x84, 0xf5, 0x2f, 0x1a, 0x43, 0xf7, 0x41, 0x79, 0x99, 0xf0, 0xb3, 0xbe, ++ 0x2a, 0x71, 0x3d, 0x31, 0x78, 0xc0, 0x46, 0xfd, 0x34, 0x18, 0x02, 0x5b, ++ 0xd1, 0xef, 0xd0, 0xf0, 0xc2, 0x38, 0x2f, 0x60, 0x8c, 0xbd, 0x64, 0x08, ++ 0xfd, 0xe8, 0x69, 0xac, 0x7f, 0xcd, 0x4c, 0x7e, 0xad, 0x86, 0x64, 0x3e, ++ 0xcf, 0x86, 0x57, 0xc7, 0x10, 0x9f, 0xfc, 0xa9, 0x3e, 0xf4, 0xec, 0x8f, ++ 0xc9, 0x4f, 0x61, 0x24, 0xfd, 0xad, 0x21, 0xc9, 0x93, 0x42, 0xf5, 0x3f, ++ 0x4f, 0x65, 0x58, 0xdf, 0x65, 0x09, 0x84, 0x71, 0x1f, 0x65, 0x19, 0xb9, ++ 0x5e, 0xd9, 0x60, 0x08, 0x17, 0x39, 0x00, 0x8e, 0xc7, 0x42, 0x5c, 0x3f, ++ 0x3e, 0x86, 0x8c, 0x06, 0xfb, 0x1f, 0xb0, 0x91, 0xde, 0x03, 0xd3, 0xcc, ++ 0xc4, 0xf1, 0x8f, 0x77, 0x67, 0x78, 0x37, 0x78, 0x62, 0x70, 0x39, 0xfe, ++ 0xe0, 0x24, 0xa2, 0xff, 0xcd, 0x7a, 0x8e, 0xb7, 0xe0, 0x2b, 0xdc, 0xef, ++ 0x79, 0x4c, 0xef, 0x9f, 0x93, 0x09, 0xe5, 0x63, 0x2f, 0x96, 0x7a, 0xc1, ++ 0xb2, 0x64, 0x67, 0xfd, 0x86, 0xb0, 0x01, 0xe6, 0xd8, 0xfc, 0x30, 0xd7, ++ 0xe7, 0x96, 0xea, 0x3c, 0x3b, 0x5b, 0x91, 0x37, 0xbd, 0x66, 0xf1, 0x6a, ++ 0xec, 0xd1, 0x87, 0x56, 0xd6, 0x62, 0x7d, 0xf3, 0xea, 0x75, 0xd7, 0x21, ++ 0x1f, 0x1c, 0x6d, 0x3f, 0x23, 0x3f, 0x8f, 0xf7, 0xe7, 0x9e, 0x61, 0x43, ++ 0xb9, 0x64, 0x8f, 0xd6, 0x17, 0xf4, 0x85, 0x61, 0xdc, 0x33, 0x03, 0x13, ++ 0xbc, 0x24, 0x3e, 0x99, 0x1b, 0x90, 0x0d, 0x74, 0x62, 0xe7, 0x6d, 0x4f, ++ 0xe8, 0x01, 0xde, 0x48, 0x5f, 0x07, 0xf4, 0x44, 0xbf, 0x97, 0xda, 0x3f, ++ 0xae, 0x17, 0xed, 0x43, 0x94, 0x2f, 0x38, 0x4e, 0x33, 0xf0, 0xdf, 0xa8, ++ 0x9f, 0x99, 0xf8, 0x6f, 0x5c, 0x59, 0x1e, 0xa9, 0xcc, 0xf1, 0xd9, 0xfc, ++ 0x6a, 0x86, 0xd0, 0xdf, 0xb4, 0xf5, 0xb7, 0xa6, 0x04, 0xce, 0xe1, 0xfe, ++ 0x6a, 0xfa, 0x87, 0xdf, 0x1f, 0x6d, 0x25, 0xf8, 0x0e, 0x11, 0xff, 0x63, ++ 0x3d, 0xdc, 0x7f, 0x7e, 0x42, 0xef, 0x5b, 0x84, 0x74, 0xea, 0xa8, 0x0e, ++ 0x1b, 0x96, 0xc4, 0xc9, 0xed, 0xa4, 0x54, 0x2e, 0xcf, 0x97, 0x1a, 0x85, ++ 0x9e, 0xc7, 0xc2, 0x86, 0xf8, 0x7d, 0xa7, 0xd6, 0x57, 0x54, 0x69, 0xe9, ++ 0x5c, 0x7d, 0x9a, 0x53, 0x39, 0xbd, 0xdb, 0x06, 0x39, 0x1f, 0x1f, 0x5e, ++ 0xaf, 0x13, 0xfb, 0xe1, 0x3b, 0x46, 0x94, 0x5b, 0xdc, 0xb5, 0x03, 0xf6, ++ 0xf6, 0x29, 0xee, 0xef, 0x48, 0x4a, 0xf5, 0x50, 0xfd, 0x8c, 0x53, 0x61, ++ 0xc3, 0x52, 0x28, 0xe7, 0xad, 0x0b, 0x1b, 0x56, 0x88, 0x27, 0xee, 0x0b, ++ 0x80, 0x77, 0xd8, 0x04, 0xeb, 0x3e, 0xb1, 0xd5, 0xc6, 0xf7, 0x33, 0x80, ++ 0x01, 0xfb, 0x59, 0x31, 0x9d, 0x91, 0xbe, 0xb2, 0x42, 0x06, 0x3d, 0xb5, ++ 0x0c, 0xdf, 0x7b, 0xfa, 0x23, 0x80, 0x97, 0x93, 0x2f, 0x3a, 0x38, 0x7d, ++ 0xfd, 0x09, 0xa0, 0x02, 0xf0, 0x5e, 0xcc, 0x44, 0x3b, 0x23, 0xe8, 0xb5, ++ 0xc0, 0xb7, 0x5e, 0xee, 0x94, 0xc2, 0xa8, 0xf7, 0x2f, 0xde, 0x62, 0xdc, ++ 0x6d, 0xce, 0xc7, 0x7d, 0xec, 0x93, 0x6d, 0x88, 0xcf, 0x1d, 0x12, 0xf1, ++ 0xad, 0xc5, 0x9d, 0x95, 0x45, 0x5b, 0xa1, 0xbc, 0x7a, 0xff, 0x64, 0xc2, ++ 0x7f, 0xf2, 0x74, 0x4e, 0x97, 0xab, 0x43, 0x0e, 0x92, 0x7f, 0x33, 0x04, ++ 0x1f, 0x5c, 0x6a, 0x0c, 0x19, 0x48, 0xcf, 0x7e, 0x96, 0xfb, 0xf1, 0xa0, ++ 0x7f, 0xd2, 0x97, 0x1b, 0xe0, 0xa3, 0xcc, 0xb2, 0xe1, 0x70, 0x40, 0xfe, ++ 0xad, 0xa1, 0x87, 0x90, 0x36, 0x0e, 0x31, 0xa3, 0x4f, 0xf0, 0xd3, 0xbd, ++ 0x71, 0xf1, 0x87, 0x82, 0x38, 0xbe, 0xde, 0x97, 0xf0, 0x3d, 0xe8, 0x79, ++ 0x5a, 0xfa, 0x08, 0xaa, 0x72, 0x87, 0xf3, 0x39, 0xe6, 0xc9, 0x40, 0x3e, ++ 0xa7, 0xf2, 0x61, 0x8b, 0xd3, 0x3f, 0x2d, 0x95, 0xf0, 0x50, 0x98, 0x81, ++ 0xf8, 0x05, 0x7c, 0x72, 0x3e, 0xb9, 0x4f, 0x22, 0xb8, 0x36, 0xb2, 0x16, ++ 0x2e, 0x37, 0x04, 0xbf, 0x8f, 0x8e, 0x2b, 0xe4, 0xc5, 0x49, 0x39, 0xc8, ++ 0xe5, 0x92, 0x71, 0x13, 0x3d, 0xe7, 0xa5, 0xe6, 0x13, 0xde, 0x56, 0xa3, ++ 0xbc, 0x21, 0xbf, 0x3a, 0xb7, 0xff, 0x46, 0xa3, 0x83, 0x79, 0xa9, 0x3a, ++ 0x61, 0x27, 0x8c, 0x4c, 0x07, 0xd7, 0x0a, 0x3a, 0x68, 0x38, 0xc5, 0xc2, ++ 0x57, 0xc2, 0x78, 0x0d, 0xeb, 0x58, 0xb8, 0x71, 0x0a, 0x7f, 0xda, 0xa6, ++ 0x90, 0x1c, 0xe4, 0xf2, 0xd0, 0x24, 0xe2, 0x1d, 0x26, 0x1e, 0x0f, 0xf9, ++ 0x26, 0xb9, 0x98, 0x28, 0x07, 0x87, 0xc9, 0xbd, 0x04, 0x79, 0x97, 0x61, ++ 0x10, 0xf2, 0x4d, 0xe0, 0x39, 0xde, 0xdf, 0x8d, 0xf2, 0x7e, 0xc6, 0xba, ++ 0x90, 0x8c, 0x7e, 0xcf, 0x5c, 0xbb, 0xaf, 0x32, 0x63, 0x5a, 0x4c, 0x7f, ++ 0x69, 0x7e, 0xdf, 0x64, 0xf2, 0x5c, 0x86, 0x65, 0x3f, 0x2b, 0xb0, 0xa2, ++ 0xff, 0xa6, 0xf2, 0x59, 0x37, 0xfa, 0x7f, 0xc1, 0x5e, 0xc7, 0x7d, 0x65, ++ 0x01, 0xb8, 0xec, 0x42, 0xf9, 0xa2, 0xea, 0xb7, 0x6e, 0xbe, 0x5e, 0xb7, ++ 0x81, 0xd3, 0xaf, 0x5e, 0xf1, 0xb3, 0x52, 0x2b, 0xe2, 0x65, 0x90, 0xec, ++ 0xd9, 0xa1, 0x34, 0x66, 0x47, 0x7a, 0x54, 0xe1, 0xb9, 0xc3, 0x06, 0xdf, ++ 0x95, 0xe1, 0x77, 0x7c, 0xbf, 0x45, 0xbf, 0x37, 0xb1, 0xce, 0xa4, 0xb8, ++ 0xef, 0xab, 0x5e, 0x35, 0x13, 0x5f, 0x3d, 0xff, 0x8a, 0x2d, 0x64, 0x24, ++ 0xbd, 0x23, 0x90, 0xe7, 0x80, 0xfe, 0xd2, 0x3f, 0x32, 0x92, 0x1e, 0x7a, ++ 0xe6, 0x55, 0x1b, 0xc9, 0xcf, 0x33, 0x42, 0xfe, 0xb9, 0x54, 0xbf, 0x00, ++ 0x5b, 0x4f, 0xf8, 0x59, 0x27, 0xf0, 0x1a, 0x64, 0x55, 0x63, 0xd0, 0xbf, ++ 0xca, 0xa4, 0x79, 0x63, 0x90, 0x05, 0xaa, 0x7a, 0x58, 0xa3, 0x63, 0x34, ++ 0x7f, 0xb7, 0xa8, 0xcf, 0x1f, 0xbc, 0x91, 0xd3, 0x95, 0x91, 0xec, 0xc9, ++ 0xf3, 0x8e, 0xc8, 0xf7, 0xb1, 0x0c, 0xf3, 0x61, 0xa8, 0x5f, 0xdf, 0x25, ++ 0xf0, 0xdc, 0xbc, 0x7f, 0x56, 0xe9, 0xbd, 0xf0, 0xbe, 0xd9, 0x6f, 0xf5, ++ 0x72, 0xe8, 0x07, 0x4a, 0x91, 0x5e, 0x8d, 0xf2, 0x5d, 0x37, 0xa2, 0xdf, ++ 0x65, 0x8e, 0xbc, 0x6e, 0xe8, 0x6e, 0x58, 0x47, 0x63, 0x8e, 0xd5, 0x6e, ++ 0x84, 0x4f, 0xaa, 0xf3, 0xfe, 0xf5, 0x37, 0x37, 0x43, 0xf9, 0xd3, 0xfd, ++ 0x7a, 0x66, 0x44, 0x3c, 0xef, 0x99, 0x55, 0xc7, 0x0a, 0x46, 0xe7, 0xbf, ++ 0xab, 0x42, 0xfa, 0x63, 0x91, 0xb8, 0xfd, 0xb2, 0x66, 0xaf, 0xb6, 0xdc, ++ 0xd8, 0xa7, 0x2d, 0x37, 0x33, 0xe5, 0x58, 0x24, 0x8e, 0x1f, 0x3f, 0x9e, ++ 0x6a, 0x73, 0x9d, 0x9c, 0x44, 0xbc, 0xc3, 0x7b, 0x11, 0xe8, 0xdb, 0x68, ++ 0x6c, 0x39, 0xb5, 0x0b, 0xe6, 0x6b, 0xfc, 0xa9, 0x91, 0xe4, 0x51, 0x4b, ++ 0x6a, 0x20, 0x94, 0x9a, 0x86, 0x7a, 0xf9, 0xd0, 0x9b, 0x08, 0x67, 0x63, ++ 0xde, 0xe7, 0x53, 0xd0, 0x8f, 0x51, 0x95, 0xf7, 0x27, 0x8a, 0xfb, 0x9c, ++ 0xff, 0x01, 0xf3, 0xe2, 0xbc, 0xcf, 0x9b, 0x2b, 0x49, 0x7e, 0x9f, 0xdf, ++ 0x6a, 0xf6, 0x04, 0xe3, 0xf8, 0x57, 0xb3, 0xa0, 0xff, 0xde, 0xdc, 0x5a, ++ 0xaa, 0xef, 0xdd, 0x66, 0xf4, 0x48, 0xbc, 0xbe, 0x76, 0x5a, 0x05, 0xea, ++ 0x83, 0x34, 0x36, 0xfe, 0x99, 0x74, 0x00, 0xff, 0xe6, 0x2d, 0x73, 0x3f, ++ 0x25, 0xbb, 0x09, 0xb5, 0x76, 0x28, 0xf7, 0xa2, 0x7e, 0x89, 0xdf, 0xbd, ++ 0x20, 0x85, 0xda, 0x51, 0x7f, 0xdc, 0xc2, 0xe5, 0xde, 0x69, 0xd0, 0x1f, ++ 0x4d, 0x30, 0x9f, 0x93, 0x08, 0x67, 0x8c, 0x7b, 0xc8, 0x03, 0x73, 0x4c, ++ 0xf0, 0x9f, 0xbd, 0xce, 0x9a, 0x09, 0xc8, 0x5f, 0x94, 0x3f, 0x2b, 0x7e, ++ 0xc4, 0xff, 0x03, 0xd8, 0x55, 0x9c, 0xbe, 0x7b, 0x20, 0xca, 0xa7, 0xb9, ++ 0x9f, 0xe7, 0x5a, 0xf4, 0xf3, 0x8c, 0x25, 0x3f, 0xcf, 0x01, 0xe4, 0x1b, ++ 0x8d, 0xa6, 0x88, 0xa1, 0x12, 0xfa, 0xb9, 0xfa, 0xcf, 0x5f, 0x11, 0x5f, ++ 0x5e, 0xd9, 0xba, 0x84, 0xf4, 0xfa, 0x98, 0x9e, 0x6b, 0x24, 0x3e, 0xb2, ++ 0xf2, 0xee, 0x00, 0xbd, 0x7f, 0x7d, 0xeb, 0x35, 0xb4, 0xae, 0x93, 0xb0, ++ 0x6e, 0x84, 0xcf, 0xc9, 0x1d, 0xdc, 0x9e, 0x5b, 0x99, 0x6d, 0x0d, 0xe1, ++ 0xfc, 0xae, 0x76, 0x70, 0xfd, 0x77, 0x25, 0x7c, 0x27, 0x49, 0xc3, 0xe1, ++ 0x92, 0x08, 0x87, 0x4f, 0xb6, 0x5f, 0xe3, 0x46, 0x7c, 0x7f, 0xc2, 0xf8, ++ 0x78, 0xc1, 0x3e, 0xae, 0x27, 0x7c, 0x62, 0x1f, 0x4c, 0x26, 0xfe, 0xe3, ++ 0x69, 0x49, 0x46, 0x3d, 0xaf, 0x79, 0xcb, 0x35, 0x9f, 0x22, 0xdf, 0x5a, ++ 0xb9, 0x43, 0xf6, 0xa2, 0x1c, 0x67, 0x07, 0x6c, 0xe4, 0x17, 0x59, 0xb9, ++ 0x63, 0xf6, 0x84, 0xe5, 0x56, 0xec, 0xe7, 0xcb, 0xd4, 0x4a, 0x84, 0xdb, ++ 0xce, 0xd9, 0x76, 0x99, 0xde, 0xcb, 0xfe, 0x10, 0xf7, 0xaf, 0x0c, 0x5e, ++ 0x0d, 0xef, 0x95, 0x9d, 0x97, 0x7b, 0x70, 0x9f, 0x1c, 0xde, 0x61, 0xe4, ++ 0xf3, 0x73, 0x98, 0x9e, 0xc6, 0xf9, 0x5f, 0xfd, 0x67, 0x99, 0xe8, 0x5e, ++ 0xd1, 0xb1, 0x00, 0xea, 0xab, 0xbd, 0x06, 0xdf, 0x04, 0xdc, 0x6f, 0x9e, ++ 0xed, 0x7b, 0xe6, 0x20, 0x5c, 0x3f, 0x99, 0x9f, 0xa5, 0xa3, 0xf6, 0xcf, ++ 0x4b, 0xcc, 0x8e, 0x70, 0x70, 0xb4, 0xa6, 0xe3, 0xfb, 0x95, 0x92, 0xe2, ++ 0xc7, 0xfd, 0x55, 0xbf, 0x65, 0x55, 0x6d, 0xbc, 0x3e, 0xd2, 0x95, 0x2a, ++ 0x13, 0x7e, 0x2a, 0xf3, 0xd6, 0xa5, 0x47, 0xac, 0x44, 0xef, 0x37, 0xa2, ++ 0x9c, 0x6b, 0xdc, 0xa1, 0x27, 0xbd, 0xee, 0xf0, 0x82, 0x0f, 0x7f, 0x73, ++ 0xb3, 0x2b, 0x46, 0xef, 0x2b, 0xe5, 0x9e, 0x1b, 0x67, 0xc4, 0xe9, 0x1b, ++ 0xcd, 0xdb, 0xbf, 0x2d, 0xe8, 0x01, 0x24, 0x36, 0xc0, 0x69, 0xa5, 0x80, ++ 0x93, 0x31, 0x6f, 0x5d, 0x11, 0x8e, 0xfb, 0x4d, 0xf4, 0xbf, 0xf2, 0xbe, ++ 0x96, 0x22, 0x1e, 0xaf, 0xf9, 0xfa, 0x7d, 0x10, 0xdd, 0xdf, 0xdb, 0xf9, ++ 0x7e, 0xf8, 0x33, 0xc8, 0xfb, 0x8b, 0xe8, 0xef, 0xcb, 0x76, 0x6a, 0xf4, ++ 0xfb, 0xd1, 0xec, 0x20, 0xd5, 0x1f, 0x6d, 0xf2, 0x32, 0xdf, 0x1e, 0x2b, ++ 0xc5, 0x15, 0x7d, 0x68, 0xe7, 0x16, 0xb8, 0x14, 0xaa, 0x2f, 0x40, 0x02, ++ 0x02, 0xfa, 0x52, 0xfe, 0xb0, 0x76, 0xef, 0x3b, 0x30, 0xff, 0xfd, 0xa9, ++ 0x01, 0x8b, 0x0b, 0xca, 0x79, 0xcc, 0x57, 0x8a, 0x78, 0xf5, 0x0c, 0xd9, ++ 0xab, 0x40, 0x9d, 0xc4, 0x25, 0x91, 0xfe, 0xc3, 0xb6, 0x1b, 0xb9, 0x3e, ++ 0xa9, 0x70, 0xbf, 0xdc, 0xe6, 0x34, 0xf6, 0xf4, 0x86, 0xb8, 0x79, 0xe6, ++ 0x8a, 0xfe, 0x60, 0x7f, 0xba, 0xb0, 0x9f, 0x33, 0x1f, 0xfc, 0xe9, 0x4d, ++ 0x84, 0x5f, 0x53, 0xee, 0xe7, 0x53, 0x78, 0xbc, 0xed, 0x2b, 0x8a, 0x5f, ++ 0x59, 0x07, 0x78, 0x5c, 0xd3, 0xea, 0xf5, 0x33, 0xa4, 0x8b, 0xe6, 0x81, ++ 0xf9, 0x6c, 0x59, 0x49, 0x8c, 0x1f, 0x36, 0x7b, 0x39, 0xbf, 0x1e, 0xc6, ++ 0x57, 0x5c, 0x7a, 0xce, 0xbf, 0x5c, 0x43, 0xd4, 0x4f, 0x4d, 0x1a, 0xe7, ++ 0x67, 0xaa, 0x3f, 0x78, 0x5b, 0x6b, 0x12, 0xf9, 0xfd, 0xb6, 0xb9, 0x42, ++ 0x66, 0x6e, 0xdf, 0x06, 0x19, 0xf2, 0xf3, 0xeb, 0xca, 0x65, 0x1e, 0x8f, ++ 0x11, 0x7a, 0x89, 0x5f, 0xf8, 0xd1, 0x4c, 0xbe, 0xd7, 0x19, 0xc6, 0x6b, ++ 0x98, 0x57, 0xf6, 0x8e, 0x83, 0xf2, 0xa0, 0xef, 0x78, 0x67, 0x2a, 0x94, ++ 0xdf, 0x29, 0x9f, 0xed, 0x95, 0xa1, 0x6c, 0xf5, 0x3d, 0xd9, 0x55, 0x80, ++ 0xeb, 0xf6, 0xea, 0x45, 0xfd, 0x58, 0xf2, 0x27, 0xbe, 0x3d, 0xb3, 0x92, ++ 0xf4, 0x93, 0xeb, 0x7c, 0x32, 0x8d, 0xcb, 0xea, 0x93, 0xc9, 0x5e, 0x1f, ++ 0xf4, 0xbd, 0xe7, 0x5a, 0x06, 0xe3, 0x5e, 0xcf, 0x7c, 0xa9, 0x27, 0x60, ++ 0x8c, 0x1a, 0x10, 0xd6, 0x88, 0xc7, 0x41, 0x1c, 0x1b, 0xf0, 0x65, 0x54, ++ 0x02, 0xd3, 0x5d, 0x71, 0x76, 0xd3, 0xb7, 0xbd, 0x73, 0x53, 0x4f, 0xc4, ++ 0xcb, 0x4b, 0x1f, 0x97, 0xff, 0x68, 0x8f, 0xf7, 0x89, 0xb8, 0xc2, 0x48, ++ 0x70, 0xf0, 0xa6, 0x56, 0x5e, 0x85, 0xf0, 0xbd, 0xfa, 0x2a, 0x8e, 0x87, ++ 0xcf, 0x9e, 0xe7, 0xf6, 0xc7, 0x67, 0x66, 0xee, 0xe7, 0x56, 0xdb, 0x7d, ++ 0x66, 0xe3, 0x72, 0xc6, 0xef, 0x52, 0xfd, 0x84, 0x7d, 0xb9, 0xc8, 0xe7, ++ 0xa3, 0xe5, 0xdb, 0x8a, 0x35, 0x71, 0x62, 0x97, 0xa1, 0x2f, 0x17, 0xf7, ++ 0xd9, 0x6f, 0x25, 0x6d, 0x3f, 0xab, 0xbb, 0x74, 0x14, 0xbf, 0x5d, 0xd5, ++ 0xc5, 0x28, 0x5e, 0xfb, 0xd9, 0x8f, 0x5e, 0xce, 0x45, 0x7e, 0xfb, 0xe9, ++ 0x9e, 0x97, 0x73, 0x97, 0xc4, 0xcd, 0x2f, 0xf1, 0x3b, 0xf5, 0x79, 0x8b, ++ 0x3a, 0x9e, 0xf0, 0x4b, 0xa9, 0x7e, 0x4a, 0x97, 0x88, 0x5b, 0x2f, 0xf1, ++ 0x1a, 0xb9, 0x3f, 0x70, 0x14, 0x3f, 0xa5, 0xda, 0x9e, 0x6d, 0xe1, 0xf6, ++ 0xd8, 0x59, 0xe0, 0xee, 0x48, 0x77, 0xea, 0x77, 0x67, 0xeb, 0x93, 0x7c, ++ 0xa8, 0x57, 0x9e, 0x65, 0x26, 0xe2, 0x67, 0x4b, 0x06, 0x84, 0xdf, 0xd3, ++ 0xe7, 0x2b, 0x74, 0xa1, 0xfd, 0xa0, 0x7e, 0x9f, 0xd0, 0xff, 0x23, 0x82, ++ 0x7e, 0xa4, 0x7e, 0x89, 0xec, 0x73, 0x4b, 0xc9, 0x10, 0xf1, 0xd7, 0x55, ++ 0x26, 0xff, 0x9b, 0x63, 0x3c, 0x98, 0xb7, 0xe2, 0x23, 0xfc, 0xcc, 0x45, ++ 0x3c, 0x4a, 0x48, 0xaf, 0x3e, 0x03, 0xae, 0x5b, 0x11, 0x76, 0x9e, 0x51, ++ 0xf1, 0xdf, 0x81, 0x78, 0x58, 0xde, 0xa3, 0xc5, 0x63, 0x8e, 0x4b, 0xc4, ++ 0x33, 0xec, 0x2e, 0xc2, 0xbb, 0xa1, 0xc9, 0xaa, 0xa0, 0x7c, 0x48, 0xef, ++ 0x10, 0xfc, 0xfa, 0x7b, 0x3a, 0xb2, 0x5f, 0x0c, 0x59, 0x6e, 0x2b, 0xf2, ++ 0xa5, 0xab, 0x8b, 0x92, 0x3a, 0x31, 0x2e, 0xef, 0x4a, 0x4a, 0x9e, 0x82, ++ 0x7e, 0xf5, 0x9c, 0xac, 0x62, 0x6a, 0x1f, 0xac, 0xe2, 0x74, 0x1d, 0x4c, ++ 0x67, 0xe4, 0xb7, 0xca, 0x64, 0x2d, 0x12, 0xf1, 0x5b, 0x3b, 0xf7, 0x83, ++ 0x67, 0x4f, 0x67, 0x76, 0xcc, 0x03, 0xf9, 0xa9, 0x8b, 0xeb, 0x0d, 0x6e, ++ 0xe6, 0xdd, 0x22, 0x93, 0x3e, 0xd8, 0x27, 0x51, 0x3c, 0x40, 0xac, 0x5f, ++ 0xe5, 0xeb, 0x48, 0x2f, 0xc8, 0xe7, 0x3e, 0x93, 0x4c, 0x44, 0x2f, 0xd2, ++ 0x80, 0x44, 0xfa, 0x9d, 0xac, 0xeb, 0x5b, 0x84, 0xfd, 0x8e, 0x46, 0x3f, ++ 0x5b, 0x5c, 0xaa, 0x5d, 0xcd, 0xe9, 0x27, 0x5a, 0xfe, 0x1b, 0xd1, 0xcf, ++ 0x6e, 0x75, 0xbc, 0x61, 0xf4, 0x13, 0xa0, 0x38, 0xde, 0x12, 0xb7, 0x69, ++ 0x64, 0xfa, 0x11, 0x7e, 0xd7, 0x4b, 0x6e, 0x3f, 0x5a, 0x1c, 0xf1, 0x7b, ++ 0x26, 0xd5, 0x0f, 0x2d, 0xe1, 0x7a, 0x6b, 0x45, 0x7f, 0xb5, 0x26, 0x6b, ++ 0x58, 0x9e, 0x42, 0xfc, 0xe1, 0xf3, 0x78, 0x7f, 0xea, 0x76, 0xd0, 0x33, ++ 0xd1, 0x1e, 0x51, 0xe3, 0x8e, 0x63, 0x3a, 0x16, 0x7b, 0xb8, 0x9e, 0x3e, ++ 0x18, 0x41, 0xbb, 0xdc, 0x72, 0xb9, 0x89, 0xe4, 0xdc, 0x0f, 0x75, 0x83, ++ 0xf9, 0xa8, 0xcf, 0x27, 0xc6, 0x21, 0x01, 0xb3, 0x0e, 0xe4, 0xf7, 0xc8, ++ 0x63, 0xc8, 0xaf, 0xd8, 0x5a, 0xe5, 0x3f, 0x91, 0x1a, 0x27, 0xef, 0x0f, ++ 0x70, 0xbb, 0xa1, 0xe9, 0x6e, 0x1f, 0xbd, 0x9f, 0x35, 0xc0, 0xe5, 0x7b, ++ 0x73, 0xa1, 0x81, 0xf4, 0xce, 0xe6, 0x7e, 0x29, 0x88, 0x78, 0x6e, 0xf2, ++ 0x1b, 0x42, 0xa6, 0x7c, 0x8a, 0xbb, 0x2c, 0x26, 0xb9, 0xfd, 0xa0, 0xd9, ++ 0xc3, 0xe3, 0x28, 0x9e, 0x76, 0x8a, 0xa3, 0xfc, 0xc0, 0xc3, 0xe3, 0x2c, ++ 0x51, 0x3f, 0x6a, 0x64, 0xe7, 0xbd, 0x48, 0x6f, 0xf5, 0x56, 0xf2, 0x3b, ++ 0x24, 0xc6, 0x63, 0x5e, 0xfa, 0x8b, 0xcc, 0xc7, 0x1f, 0xc7, 0x68, 0xfc, ++ 0xde, 0x52, 0x1e, 0xff, 0xe9, 0x9d, 0xeb, 0x21, 0xbf, 0x46, 0x62, 0x9c, ++ 0x8d, 0x75, 0x69, 0xf7, 0xaf, 0x1a, 0x67, 0x39, 0x6b, 0x03, 0xc0, 0xc0, ++ 0x78, 0x4b, 0x36, 0x9a, 0x09, 0x0f, 0x59, 0x32, 0x87, 0x33, 0x4b, 0x31, ++ 0x71, 0xf9, 0x32, 0x9c, 0x0f, 0x90, 0xbf, 0x36, 0x7d, 0xba, 0x40, 0x8c, ++ 0x88, 0x87, 0x44, 0xf7, 0x35, 0x90, 0x24, 0x96, 0xb3, 0x44, 0xbd, 0x1a, ++ 0xbf, 0xb1, 0x95, 0xf8, 0xf3, 0x51, 0xc3, 0x5d, 0x94, 0xba, 0xff, 0xad, ++ 0xa4, 0x69, 0x7f, 0x4d, 0xbe, 0xc3, 0x3d, 0x3f, 0xc4, 0x7c, 0x86, 0x51, ++ 0xf3, 0x1d, 0x82, 0xc6, 0x5a, 0xac, 0x37, 0xa1, 0xf6, 0x2c, 0xea, 0x71, ++ 0xda, 0x20, 0x6f, 0xd5, 0xb2, 0xcf, 0xec, 0xc1, 0xf8, 0x4e, 0xac, 0x5e, ++ 0x01, 0xbd, 0xd1, 0xd4, 0x2f, 0x89, 0xf1, 0x5e, 0xbe, 0x76, 0x36, 0x88, ++ 0xe0, 0xb3, 0x92, 0x3a, 0x7e, 0xe7, 0x06, 0x9f, 0x95, 0xe2, 0xc9, 0x9a, ++ 0xf1, 0xe2, 0xe7, 0xa7, 0x24, 0xf4, 0xaf, 0x87, 0xfe, 0xad, 0x1e, 0xd1, ++ 0x3e, 0xf8, 0xe3, 0xb9, 0xb3, 0x0b, 0x29, 0x6e, 0x29, 0xea, 0xa5, 0x0d, ++ 0x3e, 0x98, 0xdf, 0xc3, 0x7a, 0x6d, 0x7f, 0x04, 0x52, 0xf1, 0x3d, 0x16, ++ 0xd4, 0xf1, 0x0e, 0x67, 0xd4, 0xfc, 0x70, 0xe3, 0xcc, 0x98, 0xdc, 0x07, ++ 0x3d, 0xc0, 0x9a, 0x36, 0x2d, 0x26, 0xff, 0x1f, 0xf8, 0xb0, 0xb6, 0xe7, ++ 0x32, 0x18, 0xcb, 0x62, 0xff, 0xd2, 0x80, 0x72, 0x55, 0x95, 0xe3, 0xcd, ++ 0x2e, 0x9e, 0xff, 0x90, 0xb8, 0x5f, 0xd3, 0xd3, 0x38, 0xbf, 0x07, 0xfd, ++ 0x35, 0x3d, 0x8d, 0xe4, 0x0e, 0xd7, 0x6b, 0x6b, 0x45, 0xfc, 0x12, 0xf4, ++ 0xd9, 0x39, 0xb8, 0xb5, 0x9a, 0xd7, 0xf9, 0x19, 0xc6, 0x2f, 0x41, 0x5f, ++ 0xc8, 0x4a, 0x23, 0x7d, 0xe1, 0xf3, 0x93, 0x07, 0x11, 0x7f, 0x0b, 0x3e, ++ 0x23, 0x7d, 0xbe, 0xf9, 0x82, 0xc2, 0xfd, 0x2e, 0xa0, 0x77, 0xa0, 0x7e, ++ 0x6e, 0x12, 0x74, 0xce, 0xfa, 0xf5, 0x24, 0x6f, 0x55, 0x3a, 0x58, 0x2d, ++ 0xf8, 0x4f, 0xaf, 0x03, 0xe4, 0x3d, 0xd2, 0xeb, 0x01, 0x69, 0x5a, 0x90, ++ 0xe8, 0xa2, 0x25, 0xf7, 0x06, 0xc0, 0xc1, 0xdf, 0xa7, 0xf9, 0x0a, 0x71, ++ 0x1e, 0xaa, 0xdd, 0x95, 0x38, 0xdf, 0x2b, 0xd3, 0xb8, 0x7d, 0xdc, 0x5c, ++ 0x5c, 0xb5, 0xb5, 0x08, 0xfb, 0x7f, 0x4a, 0x62, 0x28, 0xef, 0x37, 0x14, ++ 0x1f, 0x4b, 0x47, 0xbd, 0xa4, 0x79, 0xe0, 0xe3, 0xf4, 0xe5, 0x71, 0xdf, ++ 0xad, 0xea, 0x7f, 0x94, 0xe0, 0xb0, 0x6a, 0xaf, 0x7e, 0xc4, 0xf5, 0x5f, ++ 0x99, 0xc6, 0xe3, 0x9d, 0x4d, 0xaf, 0xbc, 0x48, 0xfe, 0xc1, 0xcf, 0x42, ++ 0x12, 0xed, 0xe5, 0x7a, 0x25, 0xd4, 0x3d, 0x03, 0xca, 0xf5, 0xf5, 0x3a, ++ 0xd4, 0xd0, 0x58, 0x79, 0x68, 0xf1, 0xcd, 0xe4, 0xef, 0xaf, 0x33, 0xb0, ++ 0x71, 0xb0, 0xbe, 0xb1, 0x28, 0x8f, 0x70, 0x1e, 0x7b, 0xbf, 0x13, 0x9c, ++ 0x81, 0xf6, 0x19, 0xfc, 0x93, 0xe0, 0xd5, 0x36, 0xff, 0x0a, 0x92, 0x7b, ++ 0xdb, 0xea, 0x4c, 0x56, 0x8c, 0x3b, 0x34, 0x17, 0x2f, 0xb9, 0x83, 0xe0, ++ 0x60, 0x4f, 0xf2, 0x21, 0x1c, 0x36, 0x14, 0x57, 0x65, 0xe2, 0x38, 0x4d, ++ 0xf3, 0xe7, 0xd8, 0x29, 0x4e, 0x00, 0xfa, 0x15, 0xd6, 0x37, 0xdd, 0x7d, ++ 0x0b, 0xf9, 0x4d, 0xd4, 0x79, 0x6d, 0xe8, 0xd7, 0xd7, 0xa0, 0xde, 0x55, ++ 0x01, 0x7a, 0xd6, 0x3f, 0xc1, 0xbc, 0x73, 0x9c, 0xf3, 0x6a, 0xbc, 0xb0, ++ 0xff, 0xc6, 0xc8, 0xfb, 0x4a, 0xef, 0xb4, 0x62, 0xdc, 0x78, 0x64, 0xfe, ++ 0xfb, 0x5e, 0x3a, 0xc7, 0x67, 0xa7, 0xe4, 0x0f, 0x5e, 0x5f, 0x4e, 0x7e, ++ 0x42, 0x16, 0xef, 0xf7, 0xcb, 0xeb, 0xe7, 0xfa, 0xdc, 0x0d, 0x69, 0x06, ++ 0x8d, 0x5f, 0xf8, 0x86, 0x34, 0x85, 0xe0, 0x30, 0x33, 0x38, 0x38, 0x0b, ++ 0x69, 0xef, 0x35, 0x25, 0x62, 0x41, 0xbd, 0xb7, 0x99, 0xf9, 0xbe, 0x40, ++ 0xfb, 0x92, 0xf9, 0xad, 0x9e, 0x3d, 0x84, 0x27, 0xce, 0x47, 0x5c, 0x6d, ++ 0x1e, 0xf2, 0x1f, 0x99, 0x5c, 0x91, 0x1f, 0x5e, 0x86, 0xf5, 0x33, 0x15, ++ 0xb2, 0x1f, 0x98, 0x12, 0x79, 0x04, 0xc7, 0x3d, 0xd3, 0xed, 0xf2, 0x6e, ++ 0x60, 0x82, 0x7e, 0xb1, 0x7c, 0x77, 0x49, 0x08, 0xf9, 0xe8, 0xeb, 0x69, ++ 0x81, 0x25, 0x88, 0xdf, 0x0a, 0xa1, 0x3f, 0x9e, 0x79, 0xe5, 0x9a, 0x52, ++ 0xf4, 0xb3, 0xa9, 0xfa, 0x51, 0xf7, 0x2e, 0x73, 0x08, 0xe3, 0x84, 0xdd, ++ 0x36, 0xcf, 0x3f, 0xd4, 0x20, 0x1f, 0xfc, 0x83, 0xc2, 0xe3, 0xe2, 0xa6, ++ 0xa1, 0xc1, 0x59, 0x88, 0x8f, 0x3f, 0x3a, 0xa9, 0xdf, 0x6e, 0x73, 0xa8, ++ 0x1b, 0xf1, 0x1f, 0xdc, 0xa4, 0xa7, 0xfa, 0x57, 0x6c, 0x81, 0x46, 0xa4, ++ 0xcb, 0x53, 0xf3, 0x6b, 0x8a, 0x28, 0x2f, 0xc7, 0x1a, 0x2c, 0xc2, 0x38, ++ 0xb0, 0xde, 0xd5, 0xc3, 0x50, 0x4f, 0x00, 0x73, 0x81, 0xfc, 0x09, 0x26, ++ 0x97, 0x9f, 0x61, 0xbc, 0x74, 0x56, 0x70, 0xb1, 0x22, 0x21, 0x9f, 0x4f, ++ 0xd0, 0x3b, 0x66, 0x89, 0xfc, 0x52, 0x62, 0x9e, 0xf0, 0xbe, 0x4a, 0xb0, ++ 0xb1, 0x71, 0x40, 0x05, 0x27, 0x4d, 0xb4, 0x05, 0x3a, 0x2f, 0xa6, 0xc6, ++ 0xf4, 0x90, 0x23, 0x7f, 0x5a, 0xa8, 0xe0, 0x4b, 0x55, 0x3f, 0xd1, 0x99, ++ 0x78, 0x3c, 0xab, 0xba, 0x2e, 0x89, 0xc9, 0x48, 0xf7, 0xeb, 0x87, 0xde, ++ 0xd4, 0xa1, 0xff, 0xda, 0x35, 0x48, 0xfa, 0x6b, 0x63, 0x9f, 0x44, 0xe3, ++ 0x34, 0x16, 0xbf, 0x40, 0xf9, 0x62, 0x6b, 0x44, 0x5e, 0x52, 0x34, 0x3f, ++ 0x48, 0x89, 0x50, 0xbe, 0xd4, 0xfa, 0x34, 0x8b, 0xd0, 0x03, 0x3b, 0xb9, ++ 0x1e, 0xcd, 0x06, 0xc9, 0x5e, 0x66, 0xcf, 0x71, 0x7c, 0x32, 0x16, 0xa1, ++ 0x3c, 0xaa, 0x98, 0x1d, 0xd1, 0x4e, 0xed, 0xd4, 0xfe, 0x0c, 0xc2, 0xef, ++ 0xde, 0x28, 0xfc, 0x2e, 0x20, 0xc1, 0xa8, 0x7e, 0x53, 0x9a, 0xaa, 0x5f, ++ 0xde, 0xa7, 0xf5, 0xd7, 0x8b, 0x71, 0x37, 0x4b, 0x83, 0x3e, 0x19, 0xe1, ++ 0x5a, 0x2a, 0x69, 0xfc, 0xc5, 0xea, 0x73, 0xaf, 0xf8, 0x3e, 0xe5, 0xd0, ++ 0xd0, 0x1c, 0xdc, 0xbf, 0x43, 0xaf, 0xa8, 0x79, 0x9c, 0x3c, 0x4f, 0x73, ++ 0xeb, 0xb4, 0x89, 0x5e, 0x54, 0x9d, 0x86, 0xe5, 0x71, 0xf6, 0x7f, 0x31, ++ 0x07, 0xe9, 0x06, 0x14, 0x6d, 0xda, 0xaf, 0x4d, 0xfd, 0x97, 0x96, 0xc7, ++ 0xf9, 0xbc, 0xd8, 0x67, 0xff, 0xe3, 0x79, 0x9c, 0x5e, 0xc9, 0xb7, 0x1b, ++ 0x9e, 0x2f, 0xa7, 0x39, 0xb4, 0x79, 0x9c, 0x5e, 0x0e, 0x3f, 0x35, 0xce, ++ 0x96, 0x98, 0xbf, 0x79, 0x26, 0x33, 0xac, 0xf0, 0x7c, 0xac, 0xc8, 0xce, ++ 0x3d, 0x48, 0x9f, 0xfd, 0x46, 0xca, 0xf3, 0xaa, 0xed, 0xff, 0xd9, 0xfb, ++ 0x28, 0x1f, 0x6b, 0x4d, 0xac, 0x0f, 0xe3, 0x90, 0x89, 0x7a, 0x46, 0x9b, ++ 0xfd, 0x3b, 0x61, 0xa4, 0xfb, 0xb3, 0xa7, 0x4f, 0xee, 0xbc, 0x9f, 0x61, ++ 0x1e, 0xef, 0x4b, 0x5e, 0xca, 0xe7, 0x48, 0xd0, 0x1f, 0x12, 0xed, 0x84, ++ 0xdd, 0xd8, 0x24, 0x73, 0x74, 0x7d, 0xef, 0x37, 0x51, 0x7c, 0x72, 0x7d, ++ 0x2f, 0x5a, 0xfe, 0x1f, 0xd7, 0xf7, 0xb8, 0x3e, 0x1f, 0xdc, 0xc3, 0xf3, ++ 0x07, 0x54, 0x7e, 0xde, 0x2c, 0xec, 0xb3, 0xb3, 0xf5, 0xe7, 0x92, 0x51, ++ 0xce, 0x1c, 0x4b, 0x53, 0xf5, 0xcf, 0x84, 0x3c, 0x87, 0xa7, 0x44, 0x9e, ++ 0xc3, 0xc0, 0xc8, 0x79, 0x0e, 0x8a, 0xc8, 0x17, 0x02, 0x7d, 0x3d, 0x48, ++ 0x74, 0xb2, 0x8f, 0xc7, 0x75, 0x8e, 0x3c, 0x6d, 0x21, 0xfe, 0x71, 0xce, ++ 0xae, 0xec, 0x46, 0x7d, 0xe9, 0xb4, 0x6d, 0xe8, 0xfb, 0x08, 0x2c, 0x45, ++ 0xe8, 0x49, 0x9d, 0x07, 0x8c, 0x1e, 0xe4, 0x17, 0xc0, 0xef, 0x88, 0x7f, ++ 0x07, 0xf7, 0xe9, 0x79, 0x9c, 0x06, 0xe3, 0x36, 0x18, 0xc7, 0x79, 0x6d, ++ 0x82, 0x88, 0xe3, 0x88, 0x78, 0xd1, 0xab, 0x16, 0xd2, 0x5b, 0x1a, 0x92, ++ 0x3d, 0x29, 0xf8, 0xbd, 0x1a, 0xa7, 0xf9, 0xa9, 0x90, 0x37, 0x0d, 0x49, ++ 0x3c, 0x3e, 0xd3, 0x65, 0x09, 0xfc, 0x3e, 0x6d, 0x84, 0xb8, 0xcd, 0x2e, ++ 0xa1, 0x7f, 0xed, 0x82, 0xae, 0xec, 0xd8, 0xdf, 0xfb, 0x46, 0x11, 0xc7, ++ 0x06, 0x06, 0x81, 0xf6, 0xce, 0x83, 0x39, 0x3c, 0xee, 0x20, 0xe2, 0x36, ++ 0x67, 0x45, 0xdc, 0xe6, 0x78, 0xb1, 0x2e, 0x6c, 0xe0, 0x7e, 0x08, 0xf2, ++ 0x53, 0x79, 0xba, 0x14, 0x96, 0x09, 0xf5, 0x9e, 0xf7, 0xcd, 0x21, 0x0f, ++ 0xf7, 0x67, 0x99, 0x74, 0x20, 0xf7, 0x97, 0xaa, 0x71, 0x9b, 0xd7, 0xb8, ++ 0x9f, 0x6a, 0xa9, 0x88, 0xcf, 0x1c, 0x5f, 0x30, 0x87, 0xf2, 0x87, 0x96, ++ 0x63, 0x7e, 0xbc, 0x8c, 0x7e, 0x0c, 0xee, 0x67, 0x8e, 0xe6, 0xeb, 0x33, ++ 0xbb, 0x0e, 0xd7, 0xb3, 0x06, 0xd8, 0xc5, 0x36, 0x64, 0x31, 0x41, 0x80, ++ 0xfa, 0xe5, 0xf0, 0x5a, 0xd2, 0x49, 0xa8, 0x4f, 0x78, 0x3a, 0xa1, 0x4c, ++ 0xca, 0xb2, 0xaf, 0xa7, 0x06, 0xc6, 0x5d, 0xd2, 0xa9, 0x23, 0x7b, 0x64, ++ 0x69, 0x97, 0xd6, 0x5f, 0x7e, 0x7e, 0xc3, 0x1d, 0x35, 0x28, 0xbf, 0x1f, ++ 0xe8, 0xe4, 0xf1, 0xc7, 0x60, 0x97, 0x44, 0xf2, 0x7b, 0x29, 0xf3, 0xb9, ++ 0x51, 0xdf, 0x50, 0xe9, 0x61, 0x5c, 0x7a, 0x2a, 0xd1, 0x59, 0xb0, 0x53, ++ 0xe7, 0xc3, 0x71, 0xae, 0x4c, 0xe7, 0xfe, 0x04, 0x00, 0x7d, 0x88, 0xd6, ++ 0x27, 0x9e, 0x9d, 0x7a, 0xe1, 0x67, 0x17, 0xf3, 0x68, 0x67, 0xba, 0x30, ++ 0x3e, 0x75, 0x12, 0x7f, 0x3e, 0x60, 0x57, 0x6a, 0x46, 0x94, 0xcb, 0xa2, ++ 0xbf, 0x4e, 0x7d, 0x8b, 0xa9, 0x12, 0xf5, 0xd8, 0x1c, 0x1d, 0xf9, 0x79, ++ 0xcf, 0x1b, 0x7c, 0x75, 0xe4, 0x27, 0x75, 0x16, 0x11, 0xde, 0x3a, 0x6d, ++ 0x2d, 0x5d, 0x35, 0xbc, 0x9e, 0xf6, 0xca, 0x79, 0xf3, 0x90, 0x9f, 0xea, ++ 0xaf, 0x54, 0xb8, 0xa2, 0xc7, 0x3c, 0x4e, 0xe4, 0x93, 0x63, 0xd2, 0x45, ++ 0xfc, 0x26, 0x61, 0xbd, 0xcb, 0x7b, 0xb4, 0xe5, 0xc4, 0xf8, 0xc3, 0xaa, ++ 0x90, 0xb6, 0xbc, 0x94, 0x05, 0xc6, 0x67, 0xe2, 0x39, 0x85, 0xbd, 0xda, ++ 0xf7, 0x63, 0xd2, 0x39, 0xff, 0x3f, 0xbf, 0x21, 0x5f, 0xf8, 0xf9, 0xbd, ++ 0xe4, 0xe7, 0xef, 0xd4, 0x7b, 0x7e, 0x95, 0x8f, 0x7c, 0xaa, 0x5b, 0x21, ++ 0x3e, 0xd9, 0x9e, 0xcd, 0xe1, 0xa5, 0xcb, 0xe1, 0xcf, 0x02, 0x47, 0x75, ++ 0x1d, 0xe9, 0x07, 0x0e, 0xd0, 0x2b, 0x68, 0xbe, 0x7c, 0xfe, 0x05, 0x57, ++ 0xba, 0x24, 0x94, 0x97, 0x9d, 0x0e, 0x4e, 0x97, 0xff, 0xdd, 0x79, 0x27, ++ 0xce, 0x77, 0x76, 0x7a, 0x11, 0xd7, 0x13, 0x50, 0xb9, 0xc3, 0x7d, 0xd4, ++ 0x2d, 0x85, 0x38, 0xbc, 0xf8, 0xbc, 0x2f, 0xd5, 0x5f, 0xb1, 0x22, 0x5d, ++ 0x6b, 0x6f, 0x46, 0xcb, 0xff, 0xf3, 0xf6, 0x26, 0xa7, 0xc7, 0x6e, 0x59, ++ 0xec, 0x37, 0x3b, 0xf1, 0x9f, 0x25, 0x22, 0xde, 0x78, 0x5c, 0xf2, 0x3e, ++ 0x1d, 0xc6, 0xf7, 0x56, 0xd0, 0x0b, 0x60, 0xde, 0x4b, 0xbb, 0xe5, 0x32, ++ 0xd4, 0x4f, 0x66, 0x7d, 0xc7, 0x4a, 0xeb, 0x68, 0x7a, 0xcd, 0x1c, 0x32, ++ 0x42, 0x7d, 0xe3, 0xba, 0x48, 0x2e, 0xee, 0xa3, 0xa6, 0xaa, 0x48, 0x51, ++ 0xcb, 0x08, 0x70, 0xc5, 0xd9, 0x2a, 0x2a, 0xdf, 0x82, 0x76, 0x4b, 0x5c, ++ 0x60, 0x1f, 0xe0, 0xbe, 0xed, 0xd2, 0xc6, 0xa1, 0x86, 0xc7, 0x15, 0x7d, ++ 0xf7, 0xa6, 0xa7, 0xa1, 0x1d, 0x72, 0x7c, 0xdf, 0xcf, 0x10, 0xdf, 0xfb, ++ 0xcc, 0x24, 0x97, 0xe0, 0xbf, 0x0e, 0x1a, 0xd1, 0xdf, 0xf1, 0x4a, 0x3e, ++ 0xe9, 0x4b, 0x53, 0x52, 0x02, 0x1d, 0xe9, 0x28, 0xcf, 0x93, 0xc2, 0x3b, ++ 0x9f, 0xc9, 0x47, 0xfd, 0x84, 0xeb, 0x47, 0x8d, 0x03, 0xc6, 0x5d, 0xa8, ++ 0xff, 0x2d, 0xe9, 0xd4, 0x9e, 0xab, 0x61, 0x1b, 0xb5, 0x71, 0x2e, 0xd6, ++ 0xe5, 0x24, 0x7f, 0x06, 0xeb, 0xd5, 0xbe, 0xc7, 0xf3, 0x2b, 0x9a, 0xef, ++ 0x86, 0xc5, 0xbd, 0xb8, 0x9c, 0xdf, 0x6c, 0x08, 0x4c, 0x40, 0xbd, 0xee, ++ 0xea, 0xab, 0x78, 0x7c, 0xfd, 0xf4, 0x2a, 0x1d, 0x43, 0xfc, 0x2e, 0x95, ++ 0xbd, 0x2b, 0x90, 0x8f, 0x9c, 0x36, 0x6b, 0xf5, 0xee, 0xd3, 0x36, 0x8e, ++ 0xaf, 0xdd, 0xe9, 0xaa, 0x9c, 0xf1, 0x16, 0x21, 0x9e, 0xa3, 0xe5, 0x61, ++ 0x78, 0xf6, 0x16, 0x21, 0x9e, 0x97, 0xea, 0x58, 0x20, 0xbe, 0x9f, 0x46, ++ 0xc4, 0xf3, 0x54, 0xcc, 0x4e, 0xe7, 0x78, 0x3e, 0xfd, 0xe2, 0xe5, 0x45, ++ 0x88, 0xe7, 0xcf, 0xf7, 0x5d, 0x5e, 0x84, 0x78, 0xde, 0xac, 0xef, 0xf1, ++ 0xe1, 0xbe, 0x79, 0xc6, 0x19, 0x78, 0x1a, 0xe1, 0x73, 0x62, 0xb6, 0x9f, ++ 0xf4, 0x26, 0x35, 0xaf, 0xf2, 0x52, 0xe9, 0xb1, 0x3f, 0x81, 0x1e, 0xfb, ++ 0xff, 0xdf, 0xd1, 0x63, 0x5d, 0x7c, 0xbe, 0x5f, 0xa2, 0x1c, 0x3c, 0x1c, ++ 0x85, 0x97, 0x56, 0x0e, 0xba, 0x0c, 0x9e, 0x6c, 0xe4, 0x87, 0x4b, 0x4c, ++ 0xc6, 0xaf, 0x95, 0x87, 0xf8, 0x37, 0xa2, 0x3f, 0xcd, 0x64, 0x24, 0x7f, ++ 0xc4, 0x6b, 0x7f, 0xfa, 0xf2, 0x21, 0x94, 0x6f, 0xc1, 0x01, 0x99, 0xf4, ++ 0x0f, 0xb5, 0xbf, 0xd7, 0x94, 0xc0, 0x58, 0xf4, 0x17, 0xbc, 0xf6, 0xbe, ++ 0xdb, 0x1b, 0x94, 0x46, 0xef, 0xbf, 0x45, 0xe8, 0x55, 0x6e, 0x13, 0x0b, ++ 0xa2, 0xdf, 0x43, 0xd5, 0xf7, 0x55, 0xbd, 0x31, 0x91, 0x1f, 0xbf, 0x2f, ++ 0xe0, 0x78, 0x2a, 0xdd, 0x57, 0x8b, 0x7a, 0xb6, 0xea, 0x9f, 0xad, 0x17, ++ 0x7d, 0x9a, 0x42, 0x5f, 0x72, 0xfd, 0xf4, 0x29, 0x89, 0xfc, 0xaf, 0x26, ++ 0x4f, 0x1f, 0xcf, 0xaf, 0x3f, 0xb0, 0xd8, 0x8e, 0xfe, 0xd9, 0x53, 0x21, ++ 0xee, 0x8f, 0x6d, 0x7a, 0xb1, 0x94, 0xfc, 0xb5, 0xab, 0x42, 0xaf, 0x87, ++ 0x31, 0xff, 0x89, 0x0d, 0x48, 0x76, 0xb4, 0x1b, 0x56, 0x3d, 0xf5, 0x71, ++ 0x32, 0xc6, 0xb3, 0xc1, 0x0e, 0xfd, 0x24, 0x3d, 0x2e, 0xbe, 0x32, 0x5b, ++ 0xd8, 0xa1, 0xa7, 0x42, 0xc7, 0x93, 0x31, 0xee, 0x0d, 0xe3, 0xd7, 0xa0, ++ 0x5c, 0xb6, 0xb8, 0x86, 0x0c, 0x48, 0xbf, 0x4d, 0x60, 0x9f, 0x41, 0x13, ++ 0xd6, 0xa4, 0x0c, 0xd1, 0xb9, 0xa2, 0x26, 0x17, 0x23, 0x79, 0x5f, 0xde, ++ 0xaf, 0xb5, 0xd7, 0xd4, 0xf8, 0xe4, 0x36, 0xbf, 0x81, 0xf8, 0xdd, 0xb6, ++ 0x01, 0x29, 0x84, 0xf6, 0x59, 0xba, 0x21, 0x90, 0x9f, 0x8d, 0xf2, 0x89, ++ 0x65, 0xdb, 0x4f, 0x5a, 0x62, 0xfb, 0xe5, 0x77, 0xe9, 0x3e, 0x17, 0xc6, ++ 0x2d, 0x63, 0x71, 0x61, 0xdf, 0xef, 0x71, 0x5e, 0xaa, 0x5f, 0x27, 0xb2, ++ 0x35, 0x85, 0xe8, 0x30, 0xa2, 0x67, 0x3e, 0xd2, 0x03, 0xb6, 0xda, 0x04, ++ 0x5f, 0xe2, 0xf1, 0x9a, 0xdf, 0x6d, 0x77, 0x84, 0x78, 0xfe, 0x12, 0x6f, ++ 0xff, 0xbb, 0x50, 0x3e, 0x95, 0x55, 0x79, 0xbd, 0x42, 0x9c, 0xd3, 0x5b, ++ 0x21, 0xce, 0xe9, 0x21, 0xff, 0x0e, 0x27, 0xf0, 0xef, 0xf8, 0x72, 0x34, ++ 0xde, 0xac, 0x9e, 0x47, 0x03, 0x7e, 0x1e, 0x1e, 0x29, 0xfe, 0x1d, 0x97, ++ 0xb7, 0x14, 0xff, 0x7d, 0x13, 0x1b, 0x12, 0xf9, 0x79, 0x17, 0x8d, 0x9a, ++ 0x7e, 0xa3, 0xf9, 0x3a, 0x2d, 0xa5, 0x1e, 0x98, 0xf7, 0x9a, 0xdb, 0xac, ++ 0x74, 0x0e, 0xb1, 0x19, 0xe8, 0xba, 0xb5, 0x2c, 0x46, 0x87, 0x0d, 0x62, ++ 0x29, 0x2a, 0x1d, 0x36, 0x09, 0xbf, 0x6e, 0x73, 0xfd, 0x31, 0xb2, 0x03, ++ 0x9a, 0xf1, 0xfc, 0x05, 0xea, 0x55, 0x5e, 0x4e, 0x87, 0x0d, 0x60, 0x1f, ++ 0x61, 0x7e, 0x67, 0xe2, 0xbe, 0x65, 0x7d, 0xda, 0x7c, 0xc6, 0xd1, 0xf6, ++ 0x71, 0x69, 0x86, 0x76, 0x1f, 0x47, 0xcb, 0x7f, 0x23, 0x3f, 0xe6, 0xcc, ++ 0x0c, 0xed, 0xfe, 0x55, 0xd7, 0xaf, 0xfa, 0xc1, 0xa3, 0xeb, 0x1c, 0x90, ++ 0xf8, 0xfe, 0x4a, 0x58, 0x57, 0xa2, 0x5d, 0x99, 0xe8, 0xbf, 0x56, 0xed, ++ 0xc2, 0x4b, 0xe5, 0x6b, 0xdf, 0x89, 0xce, 0x87, 0xc3, 0x23, 0x5a, 0xfe, ++ 0x1b, 0xf3, 0xb5, 0xdb, 0x33, 0x46, 0xe3, 0x6b, 0xda, 0xf8, 0xc0, 0x5f, ++ 0xcd, 0xd7, 0x12, 0xe3, 0x04, 0x85, 0xdc, 0xff, 0x8d, 0x71, 0x02, 0x8c, ++ 0xdb, 0xfe, 0x77, 0xe3, 0x04, 0x9f, 0x7a, 0x7a, 0xd2, 0x75, 0x3c, 0x4f, ++ 0x5f, 0x13, 0x3f, 0xed, 0x92, 0x5a, 0xae, 0x33, 0x8d, 0xc5, 0xb8, 0x22, ++ 0x8f, 0x2f, 0x37, 0xda, 0x8c, 0x14, 0x87, 0x4d, 0x8c, 0xab, 0x36, 0x7b, ++ 0xe6, 0x88, 0x38, 0xe2, 0xe0, 0x6f, 0xae, 0x40, 0xb9, 0xb9, 0x5f, 0xcf, ++ 0x50, 0x9e, 0xd7, 0x5b, 0x57, 0x52, 0xbc, 0xb2, 0x59, 0x7e, 0xce, 0x80, ++ 0x47, 0x0e, 0x87, 0xc5, 0x13, 0x95, 0x83, 0xa4, 0xb7, 0xff, 0xb5, 0x71, ++ 0xf5, 0xf5, 0x19, 0x36, 0x17, 0xf1, 0x23, 0x0f, 0xcb, 0xc7, 0xb8, 0x7a, ++ 0x62, 0x5e, 0xd1, 0xeb, 0xd6, 0x2f, 0x53, 0x03, 0x71, 0xf8, 0xad, 0x2a, ++ 0x01, 0x85, 0x7f, 0x04, 0x3a, 0x36, 0x29, 0x41, 0x16, 0x7f, 0x5e, 0xad, ++ 0x37, 0x83, 0xeb, 0xc1, 0xaf, 0x8b, 0xfc, 0x17, 0xb7, 0x81, 0xe7, 0xb1, ++ 0x3f, 0x6c, 0x03, 0x3b, 0x0b, 0xd6, 0xe7, 0xd6, 0xf1, 0xfc, 0x9c, 0xbf, ++ 0x4f, 0xf3, 0x6f, 0xce, 0x48, 0x43, 0x3e, 0xce, 0xe1, 0xf7, 0xc4, 0x2b, ++ 0x37, 0x31, 0x3c, 0x77, 0xf4, 0x84, 0xbe, 0x8f, 0xf8, 0x44, 0xb0, 0xd1, ++ 0xea, 0x45, 0x7e, 0xa7, 0xfa, 0x55, 0xa2, 0xe3, 0x09, 0xfb, 0xf3, 0x52, ++ 0xe9, 0xfa, 0xc7, 0x09, 0xfb, 0xfc, 0xc7, 0x7f, 0xe3, 0x7d, 0xde, 0xaf, ++ 0xd2, 0xf3, 0x5f, 0x1b, 0xef, 0xda, 0x02, 0x6b, 0xd5, 0xd0, 0x3f, 0xa3, ++ 0xb8, 0xd6, 0xdb, 0x18, 0xaf, 0xc9, 0x1f, 0x4e, 0xa7, 0xa3, 0xf5, 0x33, ++ 0x1a, 0xbd, 0xfe, 0x22, 0xc3, 0xff, 0x66, 0x06, 0xed, 0x33, 0xdf, 0x14, ++ 0xca, 0xbb, 0xbd, 0x44, 0x7e, 0x62, 0x29, 0x1f, 0x3a, 0x8e, 0xfe, 0x1b, ++ 0xb6, 0xdf, 0xe8, 0x41, 0x7b, 0xc2, 0x24, 0xce, 0x65, 0xb0, 0x8d, 0x99, ++ 0x22, 0x4f, 0xd2, 0x5b, 0x31, 0x9f, 0xf2, 0x85, 0xf9, 0xb9, 0x06, 0xf5, ++ 0xfc, 0xc7, 0x68, 0x7a, 0xdf, 0xc7, 0xd1, 0xfd, 0xce, 0xf5, 0xbe, 0x8f, ++ 0x47, 0xe5, 0x3b, 0xff, 0x35, 0xbd, 0xaf, 0xcd, 0xe9, 0x3f, 0x8e, 0x72, ++ 0xf6, 0x44, 0xa5, 0xaf, 0x08, 0xe5, 0xe2, 0x03, 0x36, 0x98, 0x3f, 0xda, ++ 0x73, 0x3f, 0x32, 0x8e, 0x78, 0xce, 0x42, 0x3d, 0x0f, 0x00, 0xf4, 0xc4, ++ 0xcf, 0x9b, 0x3c, 0xcf, 0xe3, 0xdc, 0x89, 0x74, 0xf5, 0x87, 0x04, 0x7e, ++ 0xf9, 0x87, 0xff, 0x25, 0x7e, 0xa9, 0x77, 0xff, 0x8d, 0xf8, 0x65, 0xfd, ++ 0x1f, 0x93, 0xd1, 0xaf, 0x39, 0x7a, 0x3f, 0x41, 0x9e, 0xf7, 0x5b, 0x35, ++ 0xe8, 0x13, 0x71, 0x29, 0x86, 0x71, 0x21, 0x75, 0x1d, 0xcd, 0x83, 0x3c, ++ 0xbf, 0x2c, 0x5d, 0xe4, 0x4d, 0xa9, 0xef, 0xbf, 0x12, 0x7a, 0xec, 0xed, ++ 0x6e, 0x5f, 0x86, 0x1b, 0x9e, 0x9f, 0x7f, 0x60, 0x32, 0xb1, 0x14, 0x50, ++ 0x71, 0x90, 0xc6, 0x50, 0xdf, 0xf2, 0x5b, 0xc9, 0xdf, 0xdf, 0xd4, 0xc7, ++ 0xf3, 0x40, 0x9a, 0xd6, 0x31, 0x8a, 0xeb, 0xaa, 0xe7, 0x28, 0x9b, 0xfa, ++ 0xe7, 0x33, 0xd4, 0xeb, 0xf6, 0xa7, 0x06, 0xf2, 0xf1, 0xfb, 0x07, 0x3e, ++ 0xb4, 0x06, 0xe5, 0x14, 0xf4, 0x83, 0x2f, 0x60, 0xa8, 0xcf, 0x9d, 0xf9, ++ 0x80, 0x97, 0x5b, 0x52, 0x03, 0xe3, 0xb0, 0xbe, 0x79, 0x5d, 0x44, 0x13, ++ 0x57, 0xa8, 0xb8, 0xf8, 0xe5, 0x7a, 0xf4, 0x57, 0xc0, 0x7c, 0xc9, 0xfe, ++ 0x77, 0x19, 0xb5, 0xe7, 0x29, 0xe6, 0xbb, 0x39, 0x3f, 0x53, 0x9f, 0xd7, ++ 0x09, 0x78, 0x47, 0xd7, 0xe5, 0xe2, 0xf3, 0x64, 0x7d, 0x72, 0x08, 0xf5, ++ 0x40, 0x8b, 0x67, 0x90, 0xfc, 0x44, 0x4d, 0xfb, 0xb9, 0x72, 0x56, 0x21, ++ 0xfb, 0xc8, 0x1f, 0xcf, 0xd6, 0x38, 0xe9, 0x7c, 0x44, 0xd3, 0xfe, 0xca, ++ 0x52, 0x3a, 0x6f, 0xde, 0x67, 0x2e, 0x45, 0x3d, 0xb6, 0xe2, 0xa3, 0x5a, ++ 0x3b, 0xfa, 0x1f, 0x3e, 0xbf, 0xd2, 0x45, 0x79, 0x04, 0xb9, 0x72, 0x64, ++ 0x15, 0xea, 0x51, 0xaf, 0xa7, 0x05, 0x66, 0xe2, 0x7c, 0x6d, 0xe5, 0xa1, ++ 0xb9, 0xa8, 0x87, 0xe6, 0x81, 0x1e, 0x8a, 0x7a, 0xed, 0xe7, 0xfb, 0xe6, ++ 0x96, 0x06, 0xe2, 0xfc, 0xd9, 0x9b, 0xd1, 0x9f, 0x0d, 0xfd, 0x6e, 0xb6, ++ 0x69, 0xfd, 0xd5, 0xcc, 0xc4, 0xf3, 0xc0, 0xeb, 0x77, 0xf3, 0x3c, 0xdf, ++ 0x57, 0x6c, 0x81, 0x39, 0xd8, 0xdf, 0x66, 0x33, 0x9f, 0x6f, 0x70, 0x93, ++ 0xc8, 0x6b, 0x16, 0x7e, 0xec, 0xc4, 0xfd, 0xaf, 0xee, 0xfb, 0xe8, 0x39, ++ 0xc7, 0x5b, 0x4d, 0x14, 0x77, 0x56, 0xf9, 0xc2, 0x66, 0x3d, 0x0b, 0xa0, ++ 0x5c, 0x53, 0xf9, 0x49, 0x89, 0xc8, 0x83, 0x03, 0x78, 0xf0, 0x3c, 0xbc, ++ 0x81, 0xf9, 0x3c, 0x9f, 0x43, 0x94, 0xad, 0x2e, 0x6d, 0x3e, 0xe2, 0xa9, ++ 0xf4, 0xd9, 0x25, 0x38, 0x9f, 0x12, 0x37, 0x8f, 0x0b, 0x2c, 0x37, 0x0d, ++ 0x49, 0xe8, 0x57, 0x5f, 0x2e, 0xe2, 0xec, 0xd7, 0x88, 0x7c, 0x09, 0x35, ++ 0x3f, 0xca, 0xa8, 0xf8, 0xbf, 0x8b, 0xed, 0xd9, 0xba, 0x9a, 0x58, 0x7c, ++ 0xbd, 0x00, 0xbf, 0xb7, 0x8b, 0x73, 0xbf, 0x3c, 0x0f, 0xc6, 0x72, 0x81, ++ 0xeb, 0xc7, 0x05, 0x76, 0x03, 0xd1, 0x8d, 0x0d, 0xf6, 0x17, 0xf9, 0x3f, ++ 0x80, 0x6e, 0x10, 0x3f, 0x33, 0x87, 0x06, 0x67, 0xe1, 0x79, 0xa2, 0xc2, ++ 0xde, 0xf0, 0x4c, 0x84, 0xe7, 0x6b, 0x17, 0x74, 0x04, 0x0f, 0x65, 0xfe, ++ 0xdb, 0x14, 0x1f, 0x49, 0x41, 0xb4, 0x41, 0x3f, 0x63, 0x37, 0x46, 0xba, ++ 0xc7, 0xa3, 0x9f, 0xc4, 0xfe, 0xeb, 0x2b, 0x11, 0x2f, 0x9e, 0x1e, 0x7b, ++ 0x15, 0x82, 0x6e, 0x7f, 0xaa, 0xbf, 0xd1, 0x4d, 0xfe, 0xec, 0x96, 0x62, ++ 0xb4, 0x1b, 0xab, 0xfe, 0x59, 0xcf, 0xf3, 0xfc, 0x0e, 0x58, 0xc8, 0xfe, ++ 0xef, 0xcd, 0x6d, 0xa0, 0x3c, 0xbf, 0x33, 0x1f, 0x1a, 0x47, 0x3c, 0x17, ++ 0xa2, 0x3e, 0x83, 0xec, 0x3e, 0xca, 0xeb, 0x2b, 0xe8, 0x7f, 0x8f, 0xfc, ++ 0xf4, 0xb6, 0xfd, 0xd2, 0x88, 0xf9, 0x9a, 0x5d, 0x6e, 0x2b, 0x8f, 0x1f, ++ 0x05, 0x07, 0x29, 0x7f, 0x8c, 0xcd, 0x74, 0xf1, 0xf3, 0x84, 0x07, 0x3e, ++ 0xa2, 0xb8, 0xae, 0xd2, 0xad, 0x90, 0x87, 0xa2, 0x53, 0xef, 0xd3, 0xe1, ++ 0x39, 0xa8, 0x60, 0x3b, 0x23, 0xff, 0xe4, 0xb8, 0x5e, 0xbb, 0x0e, 0xf1, ++ 0x92, 0x27, 0xf2, 0x47, 0xce, 0xbe, 0xf6, 0x9f, 0x53, 0x02, 0x64, 0x87, ++ 0xa8, 0x7e, 0xf9, 0x10, 0xcf, 0xf7, 0xd1, 0x47, 0xd6, 0xa3, 0x5d, 0xa5, ++ 0xb4, 0x47, 0xae, 0x82, 0x1d, 0xcc, 0x1a, 0xf7, 0x3b, 0x74, 0x4d, 0x25, ++ 0xd8, 0xdf, 0x50, 0x13, 0xcf, 0x5b, 0xb7, 0x30, 0xa4, 0x93, 0xbc, 0xfe, ++ 0xb1, 0xf7, 0x7d, 0x0b, 0xca, 0x79, 0x5d, 0x76, 0x26, 0x21, 0xff, 0x79, ++ 0x75, 0x4d, 0x1e, 0xf9, 0x43, 0x61, 0x9d, 0xe3, 0x46, 0x58, 0xe7, 0x1d, ++ 0x6e, 0x9e, 0x9f, 0xa3, 0x1c, 0xb0, 0xe8, 0x50, 0x6e, 0x29, 0x9b, 0x18, ++ 0xe5, 0x17, 0x2a, 0x8e, 0xf4, 0x2a, 0x9a, 0xf7, 0xa3, 0x50, 0x86, 0x7e, ++ 0xd6, 0x08, 0xba, 0x51, 0xe3, 0x8d, 0x30, 0x5d, 0x37, 0xca, 0xa3, 0xdb, ++ 0xdd, 0x81, 0x1d, 0x88, 0xef, 0xe8, 0x39, 0x98, 0xd6, 0x24, 0x7e, 0x0e, ++ 0x46, 0x9c, 0xbb, 0xb4, 0xb5, 0x7e, 0xf8, 0x3c, 0x9e, 0x2f, 0xd9, 0x69, ++ 0xe0, 0xe7, 0x0c, 0x0f, 0xbd, 0x36, 0x69, 0x01, 0xf9, 0xe5, 0xba, 0x15, ++ 0x09, 0xf1, 0x70, 0xde, 0xb1, 0x38, 0xcf, 0x0e, 0xef, 0xf7, 0x8a, 0x7d, ++ 0x6b, 0x53, 0x06, 0x99, 0xdd, 0x1a, 0x0f, 0xff, 0x43, 0x94, 0x4f, 0x59, ++ 0x70, 0x80, 0xe7, 0x9d, 0x29, 0x7a, 0x4e, 0x27, 0x4a, 0xb7, 0x6b, 0x17, ++ 0xfa, 0xfd, 0x2e, 0xa4, 0x04, 0x28, 0x6f, 0xf4, 0xca, 0xce, 0xb0, 0x4c, ++ 0xf1, 0x2a, 0xfb, 0x89, 0x47, 0x6a, 0x3c, 0x71, 0x76, 0xcb, 0x16, 0x2e, ++ 0x47, 0x9a, 0xf6, 0x72, 0x7b, 0x39, 0xd1, 0x4e, 0xf9, 0x26, 0xf9, 0x71, ++ 0xd0, 0xad, 0xd5, 0x4b, 0xa2, 0xe5, 0xbf, 0x91, 0x5e, 0xf2, 0x76, 0x82, ++ 0xdc, 0xf8, 0xab, 0xed, 0x0f, 0xa6, 0xb5, 0xdb, 0x12, 0xf5, 0x93, 0x44, ++ 0x3b, 0x6d, 0x98, 0x5e, 0x9d, 0xd0, 0xdf, 0x68, 0x7a, 0x8a, 0x9a, 0xb7, ++ 0x51, 0x15, 0x1b, 0x87, 0xe8, 0xe1, 0x75, 0x9b, 0xaa, 0x07, 0x05, 0x35, ++ 0x79, 0x2d, 0x55, 0x56, 0x71, 0xae, 0xcd, 0xa4, 0xed, 0x7f, 0xaf, 0x8b, ++ 0xf3, 0x09, 0x35, 0xcf, 0x25, 0xbd, 0xc3, 0xd3, 0x8e, 0x79, 0xe3, 0x43, ++ 0x3f, 0x60, 0xe4, 0x47, 0x53, 0xf3, 0x6d, 0x82, 0x55, 0xdc, 0x2e, 0x08, ++ 0xea, 0x4c, 0x74, 0xde, 0xcd, 0xcd, 0x7a, 0x28, 0xcf, 0x66, 0x0c, 0x0b, ++ 0x4b, 0x12, 0xe9, 0xf7, 0x11, 0x3a, 0xd7, 0x99, 0x81, 0xf9, 0x36, 0xf0, ++ 0xdd, 0x07, 0xee, 0x02, 0x7e, 0x3e, 0x85, 0x79, 0xbb, 0x64, 0xe2, 0x87, ++ 0x1e, 0x09, 0xe7, 0x6d, 0xc6, 0x3c, 0x0d, 0xca, 0xcb, 0x0c, 0x6d, 0x5d, ++ 0x81, 0xe3, 0xdc, 0x60, 0xa5, 0x71, 0xcc, 0x98, 0xa7, 0x31, 0x15, 0x43, ++ 0xed, 0xbe, 0xad, 0xc8, 0x3f, 0x67, 0xd5, 0xf3, 0x38, 0x43, 0x16, 0xc8, ++ 0x5b, 0xa4, 0xdb, 0xac, 0x42, 0x4e, 0x87, 0xe6, 0x3a, 0x9e, 0xaf, 0xa1, ++ 0xe6, 0x63, 0xa8, 0xf9, 0x13, 0x2a, 0x1c, 0xaa, 0x04, 0x7c, 0xb3, 0xc6, ++ 0xaf, 0xc8, 0x47, 0xfd, 0xbf, 0x5b, 0x0a, 0xfc, 0x48, 0x3d, 0x4f, 0x1b, ++ 0x7f, 0x4e, 0x3a, 0x7a, 0x3e, 0x7a, 0x55, 0x01, 0x9d, 0x27, 0x89, 0x9e, ++ 0x8f, 0x2b, 0x64, 0xa2, 0xfe, 0xd2, 0xce, 0x49, 0x27, 0xc2, 0x53, 0xcd, ++ 0xdf, 0xa8, 0xb2, 0x07, 0xec, 0x99, 0x69, 0xc3, 0xcf, 0xcb, 0xaa, 0xf4, ++ 0x11, 0x87, 0x37, 0x9a, 0xd7, 0xb6, 0x03, 0x5c, 0x5f, 0xaf, 0xaa, 0x37, ++ 0xd0, 0xfc, 0xcf, 0xae, 0x9a, 0x47, 0x7e, 0xc2, 0xb3, 0xab, 0x74, 0x0c, ++ 0xf7, 0x4d, 0xd5, 0x80, 0x91, 0xd3, 0x5b, 0xc2, 0x78, 0xdb, 0xa2, 0xf7, ++ 0x60, 0x84, 0xcc, 0x74, 0xdf, 0x85, 0xc0, 0xfb, 0x37, 0xe9, 0xab, 0x80, ++ 0xcf, 0x62, 0xf4, 0xc3, 0x1e, 0x6a, 0xab, 0x99, 0x7a, 0x02, 0x60, 0x7b, ++ 0xb8, 0xcd, 0x4f, 0xcf, 0xb3, 0x66, 0xa9, 0x4f, 0xbe, 0x8c, 0xce, 0x2b, ++ 0x2e, 0x42, 0xce, 0xf4, 0x65, 0xe6, 0xb6, 0x5a, 0xbc, 0xa7, 0xe0, 0xac, ++ 0x6d, 0x28, 0x17, 0xef, 0x39, 0xf8, 0x32, 0xeb, 0xfe, 0x6f, 0x53, 0x39, ++ 0x6d, 0xe8, 0x28, 0x96, 0x93, 0xb3, 0x9e, 0xff, 0x36, 0xde, 0x7b, 0x70, ++ 0x76, 0xdc, 0xd0, 0x4e, 0xbc, 0xf7, 0xa0, 0x70, 0x5b, 0x25, 0xaf, 0x47, ++ 0x1a, 0xcc, 0x62, 0xec, 0xb2, 0xcc, 0x8a, 0x6f, 0x07, 0x69, 0xdd, 0xdc, ++ 0xaf, 0x34, 0x2b, 0x76, 0x3e, 0xbb, 0x1c, 0xe1, 0xd3, 0xc8, 0x22, 0xeb, ++ 0x07, 0xc9, 0x7f, 0xc3, 0xf3, 0xf3, 0x31, 0x9f, 0x0f, 0xf1, 0xe0, 0xb6, ++ 0x1a, 0x48, 0x9f, 0x71, 0x8b, 0x3c, 0x4a, 0x56, 0x2d, 0xf2, 0x2a, 0x31, ++ 0xc2, 0x02, 0xe5, 0x8e, 0xcc, 0x52, 0x8a, 0x47, 0x5b, 0x99, 0x67, 0xff, ++ 0x20, 0xd6, 0x67, 0xf3, 0x73, 0x40, 0x50, 0x4f, 0xf4, 0xdb, 0x31, 0x8e, ++ 0xfb, 0x7d, 0x4d, 0x02, 0xaf, 0x2c, 0x5b, 0xf5, 0x13, 0x45, 0x82, 0xc8, ++ 0x9f, 0x3a, 0xf2, 0x1d, 0xf4, 0x7d, 0x94, 0x8f, 0xee, 0x37, 0x86, 0xb8, ++ 0xbf, 0x8a, 0x8f, 0xff, 0xee, 0x8b, 0x93, 0x29, 0x7e, 0xa4, 0xe6, 0x87, ++ 0x32, 0x66, 0xcf, 0x59, 0x38, 0x99, 0xf2, 0x49, 0x34, 0x65, 0xf5, 0x7e, ++ 0x03, 0xa6, 0xd8, 0x73, 0x50, 0x5f, 0xe8, 0xd0, 0x0b, 0xbd, 0x54, 0x94, ++ 0x53, 0x53, 0x02, 0xf3, 0x33, 0xe3, 0xf4, 0xa2, 0x77, 0x67, 0xff, 0x5d, ++ 0x09, 0xee, 0x83, 0xd3, 0x2f, 0xdd, 0x5b, 0x88, 0x7c, 0xe9, 0x1a, 0x03, ++ 0xe8, 0xed, 0x23, 0xf0, 0xa1, 0x7f, 0xcd, 0xe2, 0x7c, 0xe8, 0xac, 0xde, ++ 0xda, 0x25, 0x81, 0x9e, 0xf6, 0x5e, 0x72, 0xe0, 0x16, 0xec, 0xe7, 0x7d, ++ 0xcb, 0xa2, 0x39, 0x0e, 0x58, 0x57, 0x5d, 0x6a, 0xa5, 0xc1, 0x81, 0xf3, ++ 0x0d, 0xfe, 0x48, 0x46, 0xbe, 0x98, 0x26, 0xf0, 0xed, 0x58, 0xc8, 0xe7, ++ 0xe7, 0xa8, 0xf6, 0x4b, 0xcb, 0xa1, 0xdf, 0x0e, 0x33, 0xec, 0x5f, 0xf8, ++ 0x3e, 0x2d, 0xa0, 0xf8, 0x28, 0x8f, 0x3e, 0xb0, 0x50, 0xba, 0x01, 0xe6, ++ 0xdd, 0x21, 0x71, 0x7e, 0x0b, 0x1f, 0xa5, 0x90, 0x5d, 0x52, 0xec, 0x49, ++ 0xc1, 0xfc, 0xe4, 0x06, 0x71, 0x1e, 0x52, 0x16, 0xfb, 0xfe, 0x8a, 0xbe, ++ 0x4d, 0x32, 0xea, 0xd3, 0xbf, 0x6a, 0xeb, 0x9f, 0xa1, 0x14, 0xc6, 0xe5, ++ 0x3b, 0x88, 0xf8, 0xf1, 0x7b, 0xf9, 0xec, 0xf6, 0xf9, 0x23, 0xf8, 0x2d, ++ 0x5b, 0x33, 0x39, 0xdf, 0x5e, 0x20, 0x7b, 0x26, 0x23, 0x1d, 0xad, 0x97, ++ 0xfa, 0xdf, 0xae, 0xcd, 0xc4, 0xf7, 0x9c, 0x1e, 0x67, 0x27, 0xb7, 0x96, ++ 0x63, 0x5e, 0xf1, 0x35, 0x96, 0x96, 0x72, 0x94, 0x3f, 0xc3, 0xde, 0xa7, ++ 0xc0, 0xfb, 0x92, 0xb8, 0xb2, 0x91, 0xb7, 0x6b, 0x30, 0x0d, 0xe5, 0xe2, ++ 0xf9, 0x64, 0x9f, 0x25, 0xb0, 0x2e, 0x13, 0xe3, 0x3e, 0x8b, 0x3f, 0xa6, ++ 0xb8, 0xe4, 0xf7, 0xb3, 0xde, 0x3d, 0x8a, 0x79, 0x05, 0xef, 0xea, 0x7b, ++ 0x66, 0x25, 0xa3, 0x7c, 0xc9, 0x17, 0xe7, 0xfa, 0x85, 0x5f, 0xf0, 0xcd, ++ 0xf1, 0xaa, 0x5f, 0xd0, 0xc4, 0xcb, 0x93, 0xb8, 0x5f, 0x30, 0x9a, 0xaf, ++ 0x35, 0x99, 0xe7, 0x8b, 0xd5, 0x2e, 0xe4, 0xe7, 0x10, 0x6b, 0x45, 0x3e, ++ 0xc2, 0x1c, 0x3b, 0x3f, 0xb7, 0x33, 0xa7, 0x3c, 0xdf, 0xdb, 0x01, 0x53, ++ 0xbc, 0x8e, 0x0d, 0x29, 0xc8, 0xf7, 0xe6, 0xbc, 0xef, 0x4f, 0x46, 0xbb, ++ 0x9d, 0x2d, 0x0c, 0x94, 0xfb, 0x27, 0x8f, 0xae, 0xcf, 0x30, 0xb7, 0xde, ++ 0x13, 0xbf, 0x5f, 0xe7, 0x7a, 0xe2, 0xca, 0xf0, 0xef, 0xda, 0x62, 0x6d, ++ 0xf9, 0xdb, 0x5e, 0x6d, 0xf9, 0xfa, 0xe9, 0x7f, 0x1e, 0x1f, 0x5f, 0xde, ++ 0x65, 0xf1, 0x6d, 0xc5, 0x75, 0xff, 0x54, 0xe2, 0xf9, 0x8d, 0xc1, 0x2b, ++ 0x98, 0x9d, 0xd6, 0xe9, 0x92, 0x82, 0xa8, 0x77, 0x4c, 0x7a, 0x39, 0x4b, ++ 0x9c, 0xdf, 0xe4, 0x79, 0x78, 0xff, 0x28, 0xec, 0xa2, 0x97, 0xa7, 0x33, ++ 0xaa, 0x4f, 0xdf, 0x6b, 0xda, 0x8d, 0xf9, 0xed, 0xaa, 0x1f, 0x59, 0x16, ++ 0xf5, 0x93, 0xdc, 0xcc, 0x94, 0xe7, 0xe4, 0xf7, 0x05, 0xa0, 0xbc, 0x1a, ++ 0x92, 0x44, 0x3e, 0x9f, 0x8b, 0x62, 0x25, 0xec, 0xa5, 0x3b, 0xec, 0x1c, ++ 0x7e, 0xd0, 0xd6, 0x00, 0xfd, 0xbc, 0xb4, 0xd8, 0x43, 0xfb, 0x23, 0xdd, ++ 0xaa, 0x63, 0x57, 0xe1, 0x1e, 0x2a, 0x37, 0x91, 0x1e, 0x52, 0x31, 0xc6, ++ 0x94, 0x84, 0x74, 0x73, 0x48, 0xd0, 0x9d, 0x7a, 0x1e, 0x57, 0xa5, 0xc3, ++ 0x0a, 0x85, 0xf9, 0x31, 0x3f, 0x01, 0x86, 0x5e, 0x88, 0xcf, 0x77, 0xf5, ++ 0xf6, 0x83, 0xe8, 0x3f, 0x0e, 0x7e, 0xca, 0x18, 0xc7, 0x57, 0xa5, 0x42, ++ 0xf9, 0x85, 0x62, 0x2c, 0xc6, 0xda, 0xa9, 0xfc, 0x98, 0xa0, 0xef, 0x43, ++ 0x62, 0x4e, 0xc1, 0x1f, 0x28, 0xb4, 0x9f, 0xdf, 0xb0, 0x19, 0x08, 0x9f, ++ 0xf2, 0xcf, 0xe5, 0x5d, 0x28, 0x27, 0x30, 0xf6, 0x82, 0x7e, 0xe1, 0x73, ++ 0x1b, 0x27, 0xd2, 0xfc, 0xd4, 0xfd, 0x03, 0xbb, 0xba, 0xd0, 0x95, 0x4e, ++ 0x2e, 0x6b, 0xd1, 0xaf, 0xa2, 0xc3, 0x49, 0x14, 0x0b, 0x7d, 0x42, 0xa5, ++ 0x6f, 0xd4, 0x80, 0xb0, 0xdd, 0x18, 0xfc, 0xcf, 0x7c, 0xa2, 0x73, 0xe2, ++ 0x37, 0x43, 0xd3, 0xf8, 0xfd, 0x09, 0xef, 0xe5, 0x73, 0x7e, 0x32, 0xb4, ++ 0xc9, 0x29, 0xce, 0x7b, 0xf1, 0x78, 0x58, 0x8e, 0x29, 0xda, 0xaf, 0x0f, ++ 0xfb, 0xcd, 0x8c, 0x8e, 0xc3, 0xcf, 0x13, 0xa5, 0x8b, 0x32, 0x54, 0x85, ++ 0x75, 0xb0, 0xee, 0x4f, 0x32, 0xf3, 0x69, 0xd3, 0x4a, 0x03, 0x3f, 0xfb, ++ 0x03, 0xc9, 0x65, 0xab, 0x37, 0x80, 0xe3, 0x18, 0x92, 0x4d, 0x74, 0x0e, ++ 0x46, 0xdd, 0x37, 0xf6, 0xce, 0xdf, 0xbe, 0x5d, 0x7b, 0x05, 0xae, 0xb3, ++ 0xe8, 0x7b, 0xb4, 0xce, 0x79, 0x36, 0x3b, 0xae, 0xb3, 0x18, 0xc8, 0xba, ++ 0xce, 0x49, 0x4f, 0x5f, 0x2a, 0xf5, 0xc7, 0xf7, 0x8f, 0x9c, 0xe4, 0xf5, ++ 0xe0, 0x3e, 0xf9, 0x4e, 0xcd, 0x2b, 0x33, 0x94, 0x38, 0xba, 0x81, 0xef, ++ 0x1b, 0xf9, 0xf7, 0x16, 0xed, 0xf7, 0x6e, 0xf8, 0xde, 0x19, 0xf7, 0x7d, ++ 0x32, 0x7c, 0x5f, 0x32, 0xfc, 0xfb, 0xa7, 0x6c, 0xa6, 0xb0, 0x6e, 0x0a, ++ 0xf6, 0x53, 0xe1, 0x89, 0x10, 0x3f, 0x0f, 0xd3, 0x62, 0xe6, 0x89, 0x75, ++ 0xc9, 0xe9, 0xfc, 0xbb, 0x79, 0x22, 0xdf, 0xb3, 0x30, 0x19, 0xda, 0xa3, ++ 0xbc, 0x29, 0xd6, 0xe6, 0x63, 0xb0, 0xe9, 0x5e, 0x13, 0xbf, 0xaf, 0x43, ++ 0x9b, 0x7f, 0x71, 0x8d, 0xb4, 0x2e, 0x13, 0xf7, 0xd5, 0x5c, 0x53, 0xe3, ++ 0x40, 0x04, 0xfa, 0xfb, 0x99, 0xc0, 0xdb, 0x35, 0xba, 0xc0, 0x57, 0x78, ++ 0x3f, 0xdd, 0xcf, 0x16, 0x15, 0x1d, 0xc6, 0xfd, 0x56, 0x63, 0x0a, 0x29, ++ 0x68, 0x0f, 0x5d, 0xcb, 0xc2, 0xeb, 0x11, 0x99, 0x67, 0x2b, 0x03, 0x4f, ++ 0x38, 0xc6, 0x12, 0x3f, 0xf8, 0x0b, 0xee, 0x8b, 0x26, 0x39, 0x30, 0xde, ++ 0x09, 0xe5, 0xd3, 0xfa, 0x9e, 0xc2, 0x3b, 0xf2, 0x69, 0xbf, 0x5c, 0xcc, ++ 0x9c, 0x36, 0x7c, 0xbe, 0x2a, 0x5d, 0xa8, 0xf3, 0x45, 0xfa, 0x40, 0x3a, ++ 0x8b, 0xd2, 0x47, 0xc2, 0xbc, 0xa3, 0x78, 0xba, 0xae, 0x8f, 0x12, 0xd5, ++ 0x76, 0x80, 0xde, 0x83, 0x4f, 0x55, 0x0f, 0x02, 0x4b, 0x9a, 0xe7, 0x13, ++ 0x7b, 0x72, 0x62, 0xeb, 0x02, 0x22, 0x9a, 0x63, 0x6a, 0x29, 0x44, 0x3d, ++ 0xe4, 0x67, 0xed, 0x41, 0xe2, 0x1b, 0xd7, 0x38, 0x1e, 0xa1, 0xbc, 0xa5, ++ 0x33, 0x63, 0x02, 0xae, 0x2c, 0xc0, 0x7f, 0xdd, 0x65, 0x5f, 0xd0, 0xbd, ++ 0x26, 0xcc, 0xbd, 0x78, 0x3c, 0xea, 0xf7, 0x30, 0xdf, 0xb4, 0xac, 0xb4, ++ 0xff, 0xbd, 0xf9, 0xaa, 0xfa, 0xde, 0xb0, 0x7c, 0xda, 0x4f, 0x0d, 0x9a, ++ 0x7c, 0xda, 0xd1, 0xf6, 0x95, 0x3a, 0x6e, 0x33, 0xe3, 0xf7, 0xd3, 0xcc, ++ 0x1a, 0xd8, 0x45, 0xf9, 0xb1, 0xcd, 0x0b, 0xad, 0x5e, 0x3c, 0xe7, 0xd0, ++ 0x8c, 0xf9, 0x9d, 0xe5, 0x14, 0x3f, 0x22, 0x3d, 0x0e, 0xcf, 0x01, 0xd3, ++ 0x3d, 0x27, 0x92, 0x49, 0xe8, 0x5d, 0x97, 0x9a, 0x77, 0xcb, 0xf7, 0x61, ++ 0x6f, 0xa3, 0x87, 0xf4, 0xb7, 0x28, 0x1f, 0x17, 0x79, 0xe3, 0xbd, 0xa5, ++ 0x7c, 0xde, 0xbd, 0x77, 0x78, 0xd4, 0x7b, 0x4e, 0xb8, 0x7e, 0xb7, 0x98, ++ 0xf1, 0x7b, 0x52, 0xd4, 0x7b, 0x4e, 0x96, 0xdb, 0xa9, 0x5e, 0xcd, 0x2f, ++ 0xef, 0xdd, 0xc5, 0xfd, 0x78, 0xbd, 0x2f, 0x8e, 0xa7, 0xf3, 0x50, 0xa0, ++ 0xbf, 0x91, 0xbe, 0xc0, 0x52, 0x74, 0x7c, 0x7e, 0xf9, 0xda, 0xfb, 0x55, ++ 0xf0, 0x4f, 0x4a, 0x8f, 0xe5, 0x43, 0x6f, 0xd6, 0x73, 0x7d, 0x73, 0x9b, ++ 0xce, 0x5b, 0x81, 0x70, 0xde, 0x86, 0x71, 0x9e, 0xaf, 0x89, 0xef, 0xde, ++ 0x94, 0xa5, 0xf5, 0x9b, 0xa8, 0xe5, 0x44, 0xbf, 0xde, 0x33, 0xce, 0xc0, ++ 0x2d, 0x59, 0xe8, 0x0f, 0x28, 0xf1, 0xe5, 0x4a, 0x40, 0x3f, 0x4b, 0x0d, ++ 0xdc, 0x6f, 0x07, 0xf4, 0xb5, 0x1d, 0xcf, 0x4e, 0xd4, 0xb0, 0x96, 0xa7, ++ 0xf0, 0xfe, 0xc0, 0xb9, 0xac, 0xe5, 0xd7, 0xba, 0xb1, 0x44, 0x5f, 0x01, ++ 0xa2, 0xaf, 0x49, 0x5f, 0xf0, 0x7b, 0x05, 0x63, 0xf4, 0xb5, 0x98, 0xd3, ++ 0x57, 0x90, 0x98, 0x92, 0x4a, 0x5f, 0x51, 0xba, 0x2a, 0x4e, 0xcc, 0x9f, ++ 0x0a, 0xac, 0xc6, 0xf6, 0xbd, 0x8e, 0xbe, 0x8f, 0x9a, 0x50, 0x4f, 0x1d, ++ 0x30, 0x12, 0x5e, 0xd4, 0x3c, 0xb8, 0xc4, 0x7d, 0x1c, 0x37, 0x9f, 0x13, ++ 0x7a, 0x3e, 0x1f, 0x97, 0x2c, 0xd3, 0x7c, 0xd6, 0x8e, 0x34, 0x9f, 0x4b, ++ 0xa1, 0xf3, 0x78, 0xfa, 0xca, 0x60, 0x9c, 0x9e, 0x47, 0xa3, 0xf7, 0x0c, ++ 0x85, 0x05, 0x6d, 0x65, 0x31, 0x7a, 0xdf, 0x65, 0x09, 0xb4, 0xe3, 0xb8, ++ 0x51, 0xba, 0x5f, 0xcf, 0xed, 0x91, 0x61, 0xf3, 0x96, 0xad, 0x44, 0x1f, ++ 0x37, 0xde, 0x2c, 0xf3, 0xfc, 0x70, 0x0b, 0x97, 0x57, 0x18, 0x8f, 0xc8, ++ 0x84, 0xf1, 0xe7, 0x8b, 0xf1, 0x6f, 0xec, 0xe6, 0x74, 0x74, 0xa3, 0xcd, ++ 0x40, 0x74, 0x37, 0x7f, 0xa0, 0x91, 0xf2, 0x85, 0x58, 0x35, 0x8f, 0x2b, ++ 0x78, 0xe1, 0x7f, 0xdc, 0x0e, 0xf4, 0x11, 0x7c, 0xeb, 0xc4, 0x77, 0x0b, ++ 0x5d, 0xa5, 0x7a, 0x24, 0xd9, 0x85, 0xb5, 0xda, 0xf8, 0x43, 0x9d, 0x55, ++ 0x8d, 0x6f, 0xf8, 0xf5, 0xb8, 0x1f, 0x6f, 0x5c, 0xa8, 0x3f, 0x16, 0x2f, ++ 0xef, 0xeb, 0xd8, 0xc6, 0x2f, 0x30, 0xaf, 0xad, 0x0e, 0xe3, 0x14, 0xea, ++ 0x77, 0x30, 0xee, 0xe3, 0x59, 0xd1, 0xf3, 0x7f, 0xe3, 0x31, 0x4e, 0x71, ++ 0x58, 0xd8, 0xe9, 0x67, 0x81, 0xbe, 0x91, 0xfe, 0xdf, 0x48, 0x5b, 0xb9, ++ 0xfd, 0x0e, 0xa0, 0xdb, 0xf1, 0x8f, 0x97, 0x94, 0xa1, 0x3f, 0x67, 0x76, ++ 0xfa, 0xaa, 0xa7, 0x36, 0x41, 0xf9, 0x99, 0x6d, 0x13, 0xa9, 0xfc, 0x46, ++ 0xfa, 0xad, 0x77, 0xbd, 0x8b, 0xf5, 0x3b, 0x8b, 0xa8, 0x5c, 0x8d, 0x97, ++ 0xb8, 0xa0, 0xbd, 0xd1, 0xc8, 0xbf, 0x2f, 0xae, 0xb8, 0x79, 0x5e, 0x3e, ++ 0x8c, 0x7b, 0xd8, 0x2c, 0xfa, 0xc5, 0x7d, 0x85, 0x76, 0x5f, 0x52, 0xa0, ++ 0x77, 0x3e, 0xb4, 0x73, 0x4f, 0x29, 0x28, 0xc3, 0x7c, 0xc3, 0x6a, 0xc1, ++ 0x1f, 0xce, 0xde, 0xc1, 0xf3, 0xdd, 0xaf, 0xbd, 0xcc, 0xc6, 0x53, 0x38, ++ 0x57, 0x7a, 0xc8, 0x6f, 0x54, 0x9d, 0x24, 0xea, 0xbf, 0xcb, 0xfb, 0x7d, ++ 0xbb, 0xf4, 0x5f, 0xca, 0x30, 0xef, 0xb4, 0xba, 0x80, 0xdf, 0xe3, 0xf2, ++ 0x76, 0xd9, 0x4f, 0x27, 0x62, 0xf9, 0xb0, 0xf4, 0xc5, 0xa2, 0x91, 0xe2, ++ 0xdf, 0x93, 0x8a, 0xa5, 0xf0, 0x04, 0x80, 0x4f, 0xb5, 0x93, 0xb7, 0xaf, ++ 0x2d, 0xfb, 0x51, 0x16, 0xda, 0xf1, 0xd5, 0x55, 0xbc, 0x3c, 0xc9, 0x5b, ++ 0xd9, 0x3d, 0x16, 0xeb, 0x75, 0xe7, 0x16, 0x8d, 0x74, 0xee, 0xf3, 0x17, ++ 0x62, 0x3f, 0x45, 0xcf, 0x35, 0x89, 0x7d, 0xfa, 0xb2, 0xef, 0x63, 0x3a, ++ 0xc7, 0xe4, 0x37, 0x49, 0x5e, 0x5c, 0xa2, 0x7f, 0xfa, 0xc7, 0xfc, 0x5e, ++ 0x22, 0xab, 0x64, 0x47, 0xff, 0xa3, 0xdf, 0x97, 0xaf, 0xa0, 0x9f, 0x74, ++ 0x96, 0x8f, 0xe7, 0x25, 0x56, 0x99, 0xda, 0x33, 0xd1, 0xfe, 0xbd, 0x2e, ++ 0x60, 0x28, 0xc7, 0xfc, 0x52, 0xbb, 0xa9, 0xf4, 0x30, 0xea, 0x19, 0x29, ++ 0xd3, 0x2b, 0xa7, 0x21, 0x7e, 0x67, 0x99, 0x98, 0x1e, 0xe5, 0x12, 0xd0, ++ 0xf9, 0xff, 0x21, 0x3a, 0xbf, 0xfc, 0x8b, 0xdc, 0x64, 0x24, 0x2e, 0xab, ++ 0x96, 0xce, 0x55, 0x3a, 0x9a, 0xaf, 0xd2, 0x77, 0xb5, 0x96, 0x8e, 0x61, ++ 0x7f, 0xfe, 0x73, 0x56, 0xda, 0x37, 0xf3, 0xd7, 0xd1, 0xe8, 0x18, 0xc6, ++ 0xff, 0x77, 0xe4, 0x13, 0x75, 0xdf, 0xd2, 0xca, 0x95, 0x68, 0x7f, 0x09, ++ 0xfb, 0x2d, 0xb1, 0xff, 0xd1, 0xf8, 0x00, 0xfe, 0xc5, 0xf3, 0xb9, 0xd8, ++ 0x3c, 0xfa, 0x68, 0x5f, 0x65, 0x63, 0xd6, 0xd7, 0x58, 0xdc, 0x77, 0x3d, ++ 0xea, 0xbe, 0x1b, 0xc2, 0x75, 0x18, 0x74, 0x83, 0x74, 0xae, 0x23, 0x4f, ++ 0xf2, 0x4e, 0xa4, 0x03, 0x8d, 0xa3, 0xc8, 0x7f, 0x75, 0x7e, 0x39, 0xc0, ++ 0xdb, 0x58, 0xd9, 0xf0, 0x79, 0xe1, 0x9f, 0xa2, 0xea, 0x65, 0xfc, 0xcf, ++ 0x85, 0x76, 0x6e, 0xb6, 0xa8, 0x87, 0xef, 0x7c, 0xcc, 0x19, 0x9b, 0x17, ++ 0x8c, 0xcf, 0xc6, 0xa0, 0xdc, 0x5f, 0xcf, 0xe7, 0xb3, 0x43, 0x6a, 0xe1, ++ 0x7c, 0x43, 0xe8, 0xc5, 0xaa, 0x7d, 0xdc, 0xa4, 0xae, 0xb7, 0x5f, 0xbb, ++ 0xde, 0x8a, 0x24, 0x7e, 0x9e, 0xd9, 0x8d, 0xfe, 0x0b, 0xfc, 0xce, 0x55, ++ 0x3a, 0xf1, 0xeb, 0xe6, 0xdd, 0x2c, 0xe4, 0xe6, 0x42, 0x93, 0xff, 0x41, ++ 0x23, 0xac, 0xe1, 0x06, 0xc7, 0x52, 0xa2, 0x87, 0x9b, 0x58, 0xf0, 0x45, ++ 0xd4, 0x4f, 0x8c, 0x29, 0x01, 0xe7, 0x98, 0x34, 0xb4, 0xbb, 0x82, 0x07, ++ 0x22, 0xf9, 0xe4, 0xcf, 0xa5, 0xbc, 0x00, 0xc0, 0x77, 0xea, 0x98, 0x38, ++ 0xfd, 0x44, 0x9d, 0x57, 0x22, 0x3c, 0x9a, 0x46, 0xe1, 0x87, 0x89, 0xf3, ++ 0x4e, 0x84, 0x43, 0x0c, 0x3f, 0x83, 0xa4, 0x5f, 0xa9, 0xe7, 0xa3, 0xa2, ++ 0xeb, 0x4a, 0x58, 0x8f, 0x2a, 0xff, 0x5d, 0x06, 0xad, 0x1f, 0xc8, 0x29, ++ 0xfc, 0x36, 0x4e, 0xe1, 0xa7, 0x41, 0x0a, 0x41, 0x39, 0x58, 0xcb, 0x92, ++ 0x28, 0x6f, 0x61, 0x96, 0x57, 0x22, 0x39, 0x5e, 0xcb, 0x4c, 0xc4, 0x3f, ++ 0x6b, 0x6b, 0xb8, 0xdc, 0x74, 0x5a, 0xb9, 0x9c, 0x57, 0xe5, 0xeb, 0x68, ++ 0x74, 0x7d, 0xf5, 0x55, 0x9c, 0xcf, 0xd4, 0x36, 0x30, 0x71, 0xee, 0x8a, ++ 0xcf, 0x3f, 0x91, 0xae, 0x32, 0x58, 0xe4, 0x7b, 0xf8, 0xac, 0x35, 0x79, ++ 0xb6, 0x2e, 0xc3, 0xfd, 0x8a, 0xfa, 0x80, 0x27, 0xb6, 0xdf, 0x6b, 0xad, ++ 0xdc, 0xaf, 0x3b, 0x77, 0x8c, 0xf0, 0x1b, 0xb2, 0xc8, 0x34, 0xb4, 0x6f, ++ 0xa3, 0xe5, 0x61, 0x7e, 0xc4, 0xc8, 0x34, 0xe4, 0x1b, 0x89, 0xf7, 0x45, ++ 0xd5, 0x5e, 0xe0, 0x7e, 0x44, 0xa7, 0xb8, 0x97, 0xb5, 0xd6, 0xfb, 0xf1, ++ 0x34, 0xb4, 0xd7, 0x9d, 0x35, 0x91, 0x69, 0xc8, 0x7f, 0x1e, 0x74, 0xf8, ++ 0xe6, 0x21, 0xde, 0xd4, 0xfb, 0xdc, 0x12, 0xf9, 0xce, 0x8d, 0x63, 0x74, ++ 0xaa, 0x1f, 0xf1, 0x92, 0xe8, 0x2d, 0x11, 0x0f, 0x6a, 0xdc, 0x28, 0x35, ++ 0xc5, 0x5f, 0x87, 0xe3, 0x9c, 0x96, 0x06, 0x2b, 0xb0, 0xf2, 0x91, 0x34, ++ 0xe1, 0xd7, 0x67, 0x81, 0x7c, 0xa4, 0x47, 0x87, 0x3d, 0xbf, 0x12, 0xfd, ++ 0x01, 0xc0, 0xdf, 0x2e, 0x5e, 0x44, 0xa3, 0x0a, 0xab, 0x00, 0x5e, 0xd3, ++ 0x9d, 0x81, 0x00, 0xd2, 0xdb, 0x4d, 0xcc, 0x3f, 0x1b, 0xcf, 0xe2, 0x39, ++ 0x6b, 0x02, 0x7a, 0xee, 0xe7, 0x66, 0xb4, 0xfe, 0xb5, 0x62, 0xfd, 0xb3, ++ 0x85, 0xdc, 0x3b, 0xb7, 0x5d, 0x26, 0x3f, 0x7d, 0xb5, 0xaf, 0xf8, 0x31, ++ 0x74, 0xa5, 0x37, 0x1f, 0xd1, 0xb3, 0x10, 0xed, 0x3b, 0x1f, 0xc9, 0xb1, ++ 0x35, 0x62, 0xfe, 0xe7, 0x18, 0xc7, 0xd3, 0x39, 0x2b, 0x97, 0x7f, 0x2b, ++ 0xdf, 0xfa, 0xa7, 0x0a, 0xa0, 0x5c, 0x36, 0x7e, 0x8b, 0x2e, 0x76, 0x8f, ++ 0x01, 0xfc, 0x9b, 0x10, 0x4a, 0xd2, 0xdc, 0x63, 0x30, 0x69, 0xaf, 0x53, ++ 0x53, 0x9e, 0xdc, 0x97, 0xa5, 0x69, 0x7f, 0x59, 0x7f, 0x81, 0xa6, 0xbe, ++ 0x34, 0x3c, 0x51, 0x53, 0x3f, 0xf5, 0x48, 0x99, 0xa6, 0x3c, 0x6d, 0x70, ++ 0x86, 0xa6, 0xfd, 0xe5, 0xef, 0x57, 0x69, 0xca, 0x57, 0x44, 0xe6, 0x69, ++ 0xda, 0x7f, 0xeb, 0xd4, 0x02, 0x4d, 0xf9, 0xca, 0xa1, 0x5b, 0x34, 0xed, ++ 0x8f, 0x0b, 0xfb, 0x94, 0x05, 0x7d, 0x83, 0xc5, 0xe9, 0x78, 0xcf, 0xb7, ++ 0xa0, 0xcb, 0x0b, 0x4b, 0x34, 0xdf, 0xfd, 0x36, 0x79, 0xce, 0x11, 0xa4, ++ 0xcb, 0x65, 0x1b, 0x79, 0x9e, 0x70, 0x25, 0x40, 0x46, 0x73, 0x9f, 0x43, ++ 0x0f, 0x97, 0xef, 0x2d, 0xf0, 0x3f, 0x8e, 0x57, 0xbf, 0x82, 0xf0, 0x5a, ++ 0x01, 0x7a, 0x2f, 0xe6, 0x07, 0xaf, 0xdc, 0xa2, 0x95, 0xff, 0xf5, 0x03, ++ 0x9b, 0xd6, 0x23, 0x4f, 0x4b, 0xcc, 0x5f, 0x58, 0xcd, 0x5a, 0xaa, 0xf0, ++ 0x6a, 0xb8, 0xc4, 0xfc, 0x85, 0x6a, 0xfb, 0x62, 0x1d, 0xd2, 0xe1, 0xe3, ++ 0x63, 0x44, 0x9e, 0xc2, 0xe5, 0xec, 0x72, 0x71, 0xff, 0xca, 0xd7, 0xe2, ++ 0xb5, 0x88, 0x15, 0xfe, 0x97, 0xf0, 0x6a, 0x74, 0x6b, 0xf1, 0x6a, 0xf6, ++ 0x68, 0xf1, 0x6a, 0x29, 0xd6, 0xe2, 0xd5, 0xe6, 0xd5, 0xe2, 0x35, 0x65, ++ 0xba, 0x16, 0xaf, 0x0e, 0x9f, 0x16, 0xaf, 0xa9, 0x35, 0x5a, 0xbc, 0xa6, ++ 0xf9, 0xb5, 0x78, 0xcd, 0xa8, 0xd3, 0xe2, 0x35, 0x33, 0xa0, 0xc5, 0xeb, ++ 0x98, 0x7a, 0x2d, 0x5e, 0x73, 0x5a, 0xb4, 0x78, 0xcd, 0x6b, 0xd5, 0xe2, ++ 0x2f, 0x3f, 0xb8, 0x5a, 0x8b, 0xaf, 0x04, 0x7c, 0xab, 0xfc, 0x6f, 0x6c, ++ 0xd7, 0x5a, 0x4d, 0xbb, 0x28, 0xde, 0xfd, 0xf5, 0x94, 0x77, 0x32, 0xae, ++ 0xe7, 0x1e, 0x4d, 0xbf, 0x2a, 0xde, 0x83, 0xf0, 0x3f, 0x8e, 0xf7, 0x16, ++ 0xca, 0x0b, 0xff, 0x6b, 0xf1, 0x0e, 0xdc, 0x86, 0xfc, 0xa0, 0x89, 0x78, ++ 0xff, 0x20, 0x01, 0xdf, 0x20, 0x37, 0x3e, 0x44, 0xbe, 0x00, 0xf2, 0xfe, ++ 0xdf, 0xf0, 0x59, 0x37, 0x5e, 0xe8, 0xd5, 0xfe, 0x91, 0xe5, 0xbd, 0xca, ++ 0x7f, 0xe2, 0xe5, 0x6b, 0xbc, 0xfd, 0x38, 0x1a, 0x5f, 0x1a, 0x26, 0x4f, ++ 0x84, 0x3d, 0x39, 0xaa, 0x3c, 0x49, 0xb0, 0x27, 0x3f, 0xc0, 0xec, 0x18, ++ 0xd2, 0x53, 0x36, 0x92, 0xbf, 0xe5, 0x66, 0x41, 0x9f, 0x5f, 0xe2, 0xab, ++ 0x2b, 0xd0, 0x9f, 0xf9, 0x63, 0x92, 0x93, 0x1f, 0xc0, 0x44, 0xa6, 0xc3, ++ 0xbc, 0x3e, 0xc0, 0x79, 0xc3, 0x38, 0x1f, 0x24, 0x4d, 0x22, 0x7b, 0xff, ++ 0x56, 0x16, 0xd6, 0xd3, 0xfd, 0xbb, 0x98, 0xf1, 0x07, 0x9d, 0xde, 0x8e, ++ 0x09, 0xc0, 0x32, 0xde, 0x9b, 0xe3, 0xa1, 0xe7, 0x52, 0x21, 0x47, 0x97, ++ 0x0b, 0x7f, 0x80, 0xcf, 0x12, 0xb8, 0x38, 0x86, 0xfb, 0x01, 0xf2, 0xd2, ++ 0x71, 0xdc, 0xec, 0x41, 0x7e, 0x0f, 0xf2, 0xdb, 0xa9, 0x97, 0x74, 0x1f, ++ 0xc0, 0x31, 0xf4, 0x87, 0x2b, 0x8c, 0x9d, 0x40, 0x7f, 0x38, 0x3c, 0xcf, ++ 0x98, 0x39, 0x3d, 0x9c, 0x54, 0xf9, 0x83, 0x8f, 0x79, 0x5c, 0x71, 0x70, ++ 0x5b, 0x32, 0x4b, 0x2a, 0x26, 0xbd, 0x51, 0x4e, 0xa2, 0xbc, 0x9c, 0x25, ++ 0x37, 0x49, 0x24, 0x47, 0x96, 0xfc, 0x9e, 0x3f, 0xd3, 0xb3, 0xb9, 0xfe, ++ 0x99, 0xf8, 0xec, 0x68, 0x55, 0xe1, 0xc6, 0xed, 0x92, 0x99, 0xd9, 0x1e, ++ 0xe2, 0xeb, 0xd9, 0xac, 0x4f, 0xc8, 0x3b, 0x16, 0xb0, 0x8e, 0xa5, 0x7e, ++ 0xb8, 0xff, 0xfa, 0x49, 0x7e, 0x0f, 0xe8, 0xf3, 0x12, 0x53, 0xa6, 0x3b, ++ 0xe9, 0x38, 0x12, 0xe1, 0x31, 0xc3, 0xc4, 0xe7, 0xf5, 0xbc, 0x9e, 0x99, ++ 0x10, 0x7e, 0xcf, 0xb2, 0x80, 0x07, 0xe1, 0xf2, 0x43, 0x05, 0x58, 0x13, ++ 0xcf, 0x87, 0x9f, 0x88, 0xf4, 0xb0, 0xe4, 0xf7, 0xef, 0x16, 0xa0, 0x3f, ++ 0x49, 0xee, 0xb0, 0x5f, 0x87, 0xf7, 0x3c, 0x4f, 0xc0, 0xf1, 0x60, 0x1e, ++ 0xb3, 0x6f, 0x6b, 0x91, 0xd0, 0xbf, 0x9a, 0xe1, 0x6e, 0x91, 0xd0, 0x7f, ++ 0x33, 0xec, 0xfd, 0xfe, 0x7b, 0x24, 0x3c, 0xc7, 0x17, 0x2d, 0x33, 0xde, ++ 0x0e, 0xff, 0x10, 0x0e, 0xaa, 0x9f, 0xac, 0x58, 0xc7, 0xe3, 0xc5, 0x43, ++ 0x77, 0x70, 0x3d, 0xff, 0xa9, 0xef, 0x32, 0xf2, 0xff, 0x74, 0xb4, 0x06, ++ 0x2b, 0x83, 0x18, 0x27, 0x92, 0xc1, 0x20, 0xc3, 0x7c, 0x12, 0x3d, 0x3f, ++ 0xf7, 0x3b, 0x33, 0x9b, 0xfb, 0xbf, 0x32, 0xd9, 0x20, 0xdd, 0x2f, 0xca, ++ 0xde, 0x14, 0xfa, 0x99, 0xb8, 0x97, 0xbd, 0x44, 0xe4, 0x97, 0x9f, 0x11, ++ 0xf1, 0x96, 0x15, 0xbb, 0x4c, 0x0c, 0xf3, 0x15, 0x4a, 0xf6, 0x1d, 0x74, ++ 0x62, 0x7c, 0x65, 0x05, 0xe0, 0x72, 0x10, 0xe5, 0x99, 0x12, 0xa0, 0x7b, ++ 0x2c, 0x4a, 0xb6, 0xbe, 0xe1, 0xe4, 0xf7, 0x7d, 0xeb, 0x1d, 0x78, 0x5e, ++ 0x4c, 0x95, 0xa3, 0xa3, 0xe3, 0x5b, 0x61, 0x27, 0xe3, 0xf2, 0xb4, 0x01, ++ 0x8f, 0x23, 0xde, 0x17, 0x79, 0x5b, 0x0e, 0x97, 0xe3, 0x1d, 0x6d, 0x35, ++ 0x33, 0x31, 0x3e, 0xa2, 0xce, 0xe7, 0xfe, 0x36, 0xdf, 0x4c, 0xa4, 0x0f, ++ 0x59, 0xf1, 0x52, 0x9e, 0x17, 0xde, 0x6f, 0xe3, 0x88, 0xfb, 0xde, 0xe0, ++ 0x82, 0xfa, 0xb8, 0xfd, 0xab, 0x58, 0x6b, 0x34, 0x65, 0xbd, 0xd5, 0x4f, ++ 0x97, 0x46, 0xac, 0x6f, 0x6b, 0x21, 0x3a, 0xd3, 0x8b, 0x7b, 0x78, 0x1e, ++ 0xc8, 0x5e, 0x6b, 0x8f, 0xbf, 0xbf, 0xff, 0xd6, 0x6c, 0xa1, 0x47, 0x98, ++ 0x82, 0xcc, 0x9e, 0xce, 0x84, 0x0a, 0x8b, 0x4f, 0xe5, 0x24, 0xf2, 0x87, ++ 0x3f, 0x32, 0x6e, 0x0f, 0x1a, 0xdd, 0xd0, 0x4f, 0x3c, 0x5f, 0xbb, 0x2b, ++ 0x97, 0xc5, 0xfb, 0x77, 0xbb, 0xda, 0xfc, 0x34, 0xdf, 0xf5, 0x52, 0x20, ++ 0x80, 0x9d, 0x18, 0x0b, 0x59, 0xd8, 0x9c, 0x8c, 0xf9, 0x03, 0x78, 0xc6, ++ 0x11, 0xde, 0x6f, 0xbd, 0xe6, 0x08, 0xe6, 0xb3, 0x18, 0x6c, 0x6b, 0xbd, ++ 0x61, 0xcf, 0xe8, 0x70, 0x33, 0xba, 0x95, 0xf3, 0xf1, 0x7c, 0xa9, 0x21, ++ 0x5b, 0xcb, 0x97, 0xfe, 0xa1, 0xed, 0x14, 0xc1, 0xa9, 0xa3, 0xad, 0x8e, ++ 0xc6, 0x3b, 0x83, 0xba, 0x1c, 0xfa, 0x77, 0x32, 0xb9, 0x7f, 0xa7, 0xa3, ++ 0x6d, 0x31, 0xbd, 0xd7, 0xd5, 0x78, 0x88, 0x9e, 0x5e, 0xdf, 0x3a, 0xfe, ++ 0xa0, 0x07, 0xea, 0x8f, 0xc2, 0x3f, 0xbc, 0x8f, 0xc6, 0xe8, 0xe2, 0xf3, ++ 0x62, 0xe5, 0xb9, 0x24, 0x9f, 0x16, 0x09, 0x3a, 0x40, 0xdf, 0x51, 0x0e, ++ 0xd0, 0xcf, 0xd1, 0x56, 0x3d, 0xd1, 0xd9, 0x9d, 0x39, 0xd6, 0x10, 0x6e, ++ 0xc2, 0x3b, 0xdf, 0x19, 0x77, 0x10, 0xef, 0xd3, 0x34, 0x00, 0x8c, 0xe4, ++ 0xbf, 0x62, 0xde, 0xd1, 0x71, 0x04, 0x9c, 0x0c, 0x82, 0x2f, 0x01, 0x3d, ++ 0xf9, 0x71, 0xbf, 0x19, 0xb2, 0x14, 0xf2, 0xc3, 0x3a, 0xed, 0x0b, 0x08, ++ 0x4f, 0xff, 0xd5, 0xfe, 0x54, 0xf8, 0x1a, 0xcc, 0x8c, 0xee, 0x7b, 0x31, ++ 0xe4, 0x58, 0xc9, 0x7f, 0x72, 0xa9, 0xf3, 0xdc, 0x92, 0x2d, 0xec, 0x7c, ++ 0x55, 0xce, 0x97, 0xe7, 0x12, 0x1f, 0xbd, 0x53, 0xc0, 0xe5, 0xf5, 0xad, ++ 0x3c, 0xff, 0xe7, 0xe8, 0x5d, 0x8c, 0xf4, 0xee, 0x3b, 0xef, 0xe6, 0x7e, ++ 0xb0, 0x3b, 0xc1, 0x8e, 0xc7, 0x7d, 0xc9, 0x5a, 0xe1, 0xaf, 0x22, 0x46, ++ 0x37, 0x2a, 0xbf, 0x4e, 0xc3, 0x1b, 0x37, 0xe0, 0x65, 0x4f, 0x1b, 0x30, ++ 0x9a, 0x22, 0xc6, 0x1e, 0x6a, 0x33, 0xe1, 0x09, 0x27, 0x66, 0x41, 0x7f, ++ 0xd5, 0xd8, 0x18, 0x1e, 0x7b, 0x7c, 0x8a, 0x03, 0xdd, 0xe2, 0x9b, 0xaa, ++ 0x5d, 0xf3, 0xf1, 0xf9, 0xd0, 0xf4, 0x13, 0x3d, 0xc8, 0x56, 0x1e, 0x9e, ++ 0xf9, 0xd5, 0x20, 0x3e, 0xd1, 0xd7, 0x8c, 0xe3, 0xdb, 0x5b, 0x58, 0x08, ++ 0xf5, 0x4c, 0x8a, 0x89, 0xc2, 0xf8, 0x8e, 0x7a, 0x28, 0xc3, 0xf8, 0xc9, ++ 0xa2, 0x3e, 0x39, 0xc0, 0xcb, 0x29, 0xa2, 0x3e, 0xa5, 0x8e, 0x97, 0x73, ++ 0x7c, 0x2f, 0x48, 0xd5, 0x38, 0xb1, 0x84, 0x78, 0x44, 0x8e, 0xd5, 0x39, ++ 0xb7, 0x10, 0xf9, 0xde, 0x32, 0xc6, 0xcf, 0xb7, 0x8a, 0xf3, 0xed, 0x3b, ++ 0x04, 0xdf, 0x1d, 0x63, 0x75, 0xce, 0xaf, 0xc6, 0xfa, 0xdb, 0x18, 0xe5, ++ 0xbd, 0xab, 0xf5, 0x8f, 0x8b, 0xfa, 0x4c, 0xeb, 0xb1, 0xae, 0xb1, 0xc8, ++ 0x97, 0x17, 0x6a, 0xbf, 0xdf, 0x2a, 0xe0, 0x90, 0x61, 0x3d, 0xd6, 0x33, ++ 0x8b, 0xe2, 0x16, 0xda, 0x7a, 0x35, 0xce, 0x90, 0x66, 0x3d, 0x77, 0x84, ++ 0xbe, 0x2f, 0xd1, 0xd6, 0x3f, 0x2a, 0xbe, 0xb7, 0x59, 0xcf, 0x0d, 0xce, ++ 0xc2, 0xfa, 0x42, 0xed, 0xf8, 0x0f, 0x8a, 0x7a, 0x8b, 0x95, 0xf3, 0x43, ++ 0xe6, 0xe7, 0xf7, 0x94, 0xaa, 0xf5, 0x3f, 0x14, 0xf5, 0x66, 0x2b, 0x3f, ++ 0xe7, 0x05, 0x3c, 0x59, 0x53, 0xdf, 0x2d, 0xc6, 0xef, 0x90, 0x42, 0x84, ++ 0x1f, 0xba, 0x8b, 0x15, 0xf7, 0x4f, 0x1a, 0xf7, 0x5b, 0xee, 0x6c, 0x63, ++ 0x57, 0xe2, 0xfe, 0xe9, 0x69, 0x1b, 0xa2, 0x7d, 0xf4, 0x50, 0xdb, 0x05, ++ 0xc2, 0xd3, 0x39, 0xcc, 0xf3, 0x99, 0x16, 0xdb, 0x57, 0xf6, 0x56, 0x36, ++ 0xe2, 0xb9, 0xeb, 0x73, 0x82, 0x9f, 0x24, 0x7b, 0x22, 0x3e, 0xdf, 0x08, ++ 0xfc, 0x4e, 0xad, 0x77, 0xda, 0xf9, 0xb9, 0x72, 0xd9, 0x6d, 0x20, 0x3a, ++ 0x32, 0x5a, 0x05, 0xbf, 0x10, 0xfb, 0x30, 0xca, 0x2f, 0xa4, 0x16, 0x2f, ++ 0x27, 0x2e, 0xee, 0x4f, 0xfe, 0x26, 0x7a, 0x86, 0x0d, 0x76, 0x1e, 0xf5, ++ 0x8b, 0x5c, 0xf8, 0x43, 0x7a, 0xce, 0xbe, 0x4b, 0xc7, 0x02, 0x71, 0x7c, ++ 0x2b, 0xab, 0x21, 0x89, 0x05, 0xe2, 0xda, 0xbb, 0x97, 0x39, 0x35, 0xe5, ++ 0xf4, 0xdb, 0xb2, 0x34, 0xed, 0x5d, 0x0b, 0x0b, 0x34, 0xf5, 0xd6, 0xf2, ++ 0x89, 0x9a, 0x7a, 0xe6, 0xcb, 0xa1, 0xfd, 0xb2, 0x56, 0xd0, 0x55, 0x52, ++ 0x49, 0x99, 0xa6, 0x5e, 0x3d, 0xef, 0xce, 0x7a, 0x72, 0x34, 0xfa, 0xb3, ++ 0xbe, 0x70, 0x86, 0xa6, 0xdd, 0xb9, 0x62, 0x0f, 0xfd, 0x8e, 0xc7, 0xc9, ++ 0xb9, 0xea, 0xef, 0x7d, 0x78, 0x4d, 0xc8, 0x17, 0xd6, 0xda, 0x0a, 0x32, ++ 0x50, 0xee, 0x3c, 0xdb, 0x36, 0x1d, 0x95, 0x6c, 0xf6, 0x3c, 0xec, 0x27, ++ 0x3c, 0xa2, 0xf4, 0x9c, 0x83, 0xe7, 0xf9, 0x3e, 0x87, 0xf1, 0x51, 0xa8, ++ 0xff, 0xc7, 0x36, 0x1f, 0xbd, 0xdf, 0x03, 0xf5, 0xa0, 0xb9, 0xb0, 0x27, ++ 0x61, 0xbf, 0x79, 0xa0, 0xfd, 0xae, 0x36, 0x3b, 0x95, 0x9f, 0x68, 0x73, ++ 0xd3, 0x73, 0x47, 0x9b, 0x87, 0x9e, 0x8f, 0xb7, 0x15, 0x53, 0xfd, 0xd6, ++ 0x36, 0x2f, 0x95, 0x1f, 0x83, 0xfe, 0xf1, 0xf9, 0x28, 0xf4, 0x83, 0xef, ++ 0x1f, 0x69, 0xab, 0xa1, 0xf2, 0xa6, 0x36, 0x3f, 0x95, 0x1f, 0x6e, 0xab, ++ 0xa3, 0xf2, 0x83, 0x6d, 0x01, 0x7a, 0xfe, 0xb0, 0xad, 0x9e, 0xde, 0x77, ++ 0xb7, 0xb5, 0x50, 0xf9, 0x81, 0xb6, 0x56, 0x7a, 0xde, 0xdf, 0x16, 0xa4, ++ 0x67, 0x47, 0x5b, 0x17, 0xd5, 0x17, 0x0b, 0xf9, 0xf6, 0x9c, 0x38, 0x2f, ++ 0xf8, 0x5c, 0x25, 0x3f, 0xff, 0x9b, 0x88, 0xc7, 0xc9, 0x39, 0xc2, 0x8f, ++ 0x26, 0xe2, 0xf8, 0xb6, 0x58, 0x1c, 0x7f, 0x72, 0x0e, 0xc6, 0xf1, 0xfb, ++ 0x22, 0x9a, 0x7b, 0xd6, 0x71, 0xdd, 0xd4, 0x9f, 0x99, 0xaf, 0x3f, 0xb1, ++ 0xbf, 0x2a, 0xd1, 0xdf, 0x44, 0x36, 0xd8, 0x6e, 0xe1, 0xfb, 0x98, 0xe2, ++ 0x7f, 0xe3, 0xfa, 0xbd, 0xf7, 0x59, 0x80, 0xde, 0xc7, 0xb4, 0x70, 0x3c, ++ 0xe4, 0xf7, 0x0f, 0x51, 0x7d, 0x66, 0x3d, 0xc7, 0x45, 0x95, 0x98, 0x2f, ++ 0x73, 0x05, 0x59, 0x76, 0x05, 0x3f, 0xee, 0x89, 0xed, 0xce, 0x48, 0x83, ++ 0x55, 0x16, 0x1e, 0x0f, 0x25, 0x7f, 0x00, 0x73, 0xc3, 0x3a, 0x2b, 0xc4, ++ 0x3d, 0x34, 0x44, 0x76, 0x21, 0x1d, 0xce, 0x4b, 0x99, 0xce, 0xe5, 0xa6, ++ 0x8a, 0xd7, 0xe8, 0xba, 0x1d, 0x7c, 0x9e, 0xb8, 0xfe, 0x91, 0xe6, 0xfb, ++ 0x6d, 0x31, 0x5f, 0xb9, 0xbc, 0x8f, 0xdf, 0x33, 0x51, 0xd3, 0x13, 0x46, ++ 0xb2, 0x4f, 0xf2, 0xb5, 0xd0, 0x3d, 0x13, 0xa6, 0x3a, 0x7f, 0x18, 0x7f, ++ 0x47, 0xc2, 0xe5, 0x0f, 0xd0, 0xb9, 0xf7, 0x89, 0x17, 0xe6, 0x80, 0x71, ++ 0x03, 0x7c, 0xe6, 0xc2, 0x55, 0xcc, 0x03, 0xcf, 0xec, 0x06, 0xad, 0xdd, ++ 0x93, 0xb5, 0xac, 0x4c, 0x63, 0x5f, 0xc8, 0x17, 0x1e, 0x62, 0x9e, 0xa9, ++ 0xd0, 0x6f, 0x89, 0xd6, 0x3e, 0x49, 0x2a, 0x5c, 0xab, 0xf9, 0xce, 0x94, ++ 0x7d, 0x8f, 0xa6, 0xde, 0xe0, 0xba, 0x4f, 0x53, 0xbf, 0x64, 0x4d, 0xfe, ++ 0x7a, 0x37, 0xc2, 0x73, 0x0c, 0xa3, 0x38, 0x89, 0x71, 0x63, 0x3b, 0xc3, ++ 0xd0, 0xde, 0xf2, 0xde, 0x4d, 0x34, 0xaf, 0x7b, 0xc5, 0x3a, 0xce, 0x48, ++ 0x1e, 0x3a, 0x37, 0x1b, 0xdc, 0xa7, 0xc6, 0xc9, 0xb9, 0x7e, 0xfe, 0x8c, ++ 0x90, 0x2b, 0xcc, 0xb4, 0x91, 0xf6, 0xc3, 0x78, 0x07, 0x2f, 0x16, 0xa5, ++ 0x04, 0x75, 0x28, 0x17, 0x3e, 0xff, 0xa7, 0x14, 0xe2, 0x47, 0x4f, 0x3f, ++ 0xa1, 0x0b, 0xa1, 0x1f, 0x74, 0x02, 0x0b, 0xe9, 0x70, 0xff, 0x4f, 0x02, ++ 0x75, 0x0f, 0xeb, 0x27, 0xe3, 0x4d, 0xb5, 0x32, 0x5d, 0x5d, 0x22, 0x63, ++ 0xb9, 0x94, 0x79, 0x64, 0x2c, 0x4f, 0x65, 0x43, 0x64, 0x9f, 0x80, 0x7e, ++ 0x7e, 0x27, 0xd2, 0x0b, 0xe8, 0xe7, 0x4f, 0x98, 0x31, 0x4e, 0x97, 0x13, ++ 0x78, 0x86, 0xe7, 0x0f, 0x85, 0x49, 0x6e, 0x16, 0x09, 0x7c, 0x16, 0xa9, ++ 0xf6, 0xc8, 0x16, 0x25, 0xd1, 0x3f, 0x7a, 0x77, 0x0e, 0xf9, 0x3f, 0xb4, ++ 0xe7, 0x86, 0x3a, 0x85, 0x9e, 0xde, 0xee, 0xa8, 0xc8, 0xc0, 0xf8, 0xe4, ++ 0x99, 0x51, 0xf2, 0xbb, 0x6c, 0xee, 0x19, 0x33, 0xf0, 0xf7, 0xac, 0x6c, ++ 0x99, 0xd3, 0xe9, 0xa9, 0xbe, 0x7f, 0xd0, 0xa3, 0x1b, 0xf1, 0x3c, 0xec, ++ 0xc6, 0x1c, 0xd5, 0x8f, 0xc4, 0xe9, 0x7e, 0x02, 0x10, 0xb9, 0xa0, 0xfb, ++ 0x8d, 0x38, 0x8f, 0xd3, 0xe5, 0xbf, 0x4a, 0x47, 0x73, 0xaf, 0xa9, 0x70, ++ 0x88, 0xe8, 0xff, 0x8c, 0xe4, 0x73, 0x2f, 0x46, 0xb8, 0xbe, 0x25, 0x73, ++ 0x3a, 0x1c, 0xc8, 0xa4, 0x75, 0x29, 0x02, 0xae, 0xca, 0xbe, 0x4a, 0xf7, ++ 0x62, 0x80, 0x9f, 0xf2, 0xce, 0x58, 0x6f, 0x90, 0xc5, 0xc6, 0x79, 0xba, ++ 0xcd, 0x37, 0x43, 0x51, 0x62, 0xe5, 0x22, 0x91, 0x9f, 0xb8, 0xb7, 0x6d, ++ 0xfe, 0x8c, 0xea, 0xb8, 0xf7, 0xfd, 0x02, 0x7f, 0xc5, 0x6c, 0xb0, 0x06, ++ 0xe5, 0x53, 0x71, 0x89, 0xce, 0x1b, 0xa2, 0x9e, 0xdd, 0x1a, 0xfe, 0x65, ++ 0x2e, 0xec, 0xf1, 0xe1, 0x79, 0x6e, 0xa5, 0x8c, 0x79, 0x91, 0xbd, 0x4d, ++ 0x60, 0x3d, 0xf7, 0xa1, 0xac, 0x56, 0xfe, 0x22, 0x53, 0xbe, 0x89, 0x72, ++ 0xe8, 0x0a, 0xe6, 0x01, 0xbb, 0xc0, 0x6a, 0x0d, 0x33, 0xcc, 0xcf, 0xe9, ++ 0x8f, 0xee, 0x6f, 0xa6, 0xf9, 0x9d, 0xa3, 0xaf, 0xec, 0xd5, 0x29, 0x74, ++ 0x2f, 0x5f, 0x56, 0x94, 0xef, 0xa1, 0x4c, 0xc4, 0xdf, 0x35, 0x1a, 0x44, ++ 0xfa, 0xf9, 0xaa, 0x57, 0xcf, 0xd7, 0x75, 0x48, 0x5b, 0x5f, 0x6c, 0xe5, ++ 0x79, 0x34, 0x2b, 0x8a, 0x0d, 0x21, 0x8f, 0x84, 0xe1, 0xed, 0x1e, 0xba, ++ 0x7f, 0x4e, 0xd9, 0x29, 0x31, 0x54, 0xfd, 0x95, 0xbf, 0xcc, 0x22, 0x38, ++ 0xb0, 0x97, 0x2c, 0x44, 0x7f, 0x96, 0x2d, 0x53, 0xe8, 0xea, 0xea, 0xeb, ++ 0x94, 0x40, 0x08, 0xe9, 0xe3, 0x74, 0xd8, 0xf3, 0x92, 0x6e, 0xac, 0xa0, ++ 0x45, 0x68, 0xd7, 0x38, 0xc9, 0xb0, 0x1b, 0xf5, 0xb1, 0xf1, 0x08, 0x17, ++ 0x5c, 0x50, 0x61, 0x31, 0xc1, 0x75, 0xb9, 0x58, 0xef, 0xde, 0xb6, 0xc5, ++ 0x04, 0xa7, 0x77, 0x04, 0xbe, 0x3a, 0x73, 0x12, 0xe6, 0xc3, 0xbc, 0x3e, ++ 0xbc, 0x9f, 0x71, 0x45, 0xaf, 0xea, 0xff, 0xd0, 0xae, 0xf3, 0xc1, 0xf2, ++ 0xaa, 0xeb, 0xf1, 0x3e, 0xbb, 0x8e, 0x41, 0x59, 0xe8, 0x4a, 0x5a, 0x78, ++ 0x6e, 0xd0, 0x0f, 0x4e, 0xc1, 0xdf, 0x88, 0x3b, 0x1d, 0x81, 0x79, 0xc9, ++ 0x34, 0xcf, 0x77, 0x10, 0xff, 0xf2, 0x96, 0x0a, 0xfa, 0x9d, 0x23, 0x10, ++ 0x20, 0xb4, 0xbe, 0xc6, 0x27, 0xc0, 0xde, 0xcf, 0x27, 0x7e, 0x54, 0x43, ++ 0x72, 0x7b, 0x9a, 0x8e, 0xf2, 0x44, 0x13, 0xe9, 0xea, 0xd7, 0x82, 0x8f, ++ 0x2d, 0xce, 0xe1, 0xfe, 0x3c, 0x9b, 0xfb, 0xaa, 0x19, 0xf8, 0x7b, 0x6b, ++ 0xb1, 0xf2, 0x4c, 0xa2, 0xcf, 0x67, 0x75, 0xdc, 0xcf, 0x1a, 0xd4, 0x71, ++ 0xfb, 0x52, 0xcd, 0xa3, 0x00, 0xc5, 0xc1, 0x83, 0x76, 0x5d, 0x41, 0xae, ++ 0xea, 0x67, 0xec, 0x64, 0xf3, 0x50, 0x5e, 0x3b, 0x74, 0x94, 0x7f, 0x27, ++ 0xef, 0x4a, 0xa2, 0x73, 0x80, 0xb2, 0x43, 0xa1, 0x7c, 0xdf, 0x4e, 0x6b, ++ 0xb5, 0x7d, 0x35, 0xf6, 0x63, 0x57, 0x28, 0xbe, 0x31, 0x47, 0x9e, 0x39, ++ 0x88, 0x7a, 0xb3, 0xd1, 0xa1, 0x9b, 0x8a, 0x7a, 0xf7, 0xe1, 0xdd, 0xf7, ++ 0x0c, 0x62, 0x9e, 0x87, 0x9c, 0xa3, 0x30, 0xf4, 0x17, 0x75, 0xda, 0x15, ++ 0xae, 0x77, 0x64, 0xeb, 0x28, 0x2f, 0x4a, 0x71, 0x54, 0x9b, 0x30, 0x1e, ++ 0x52, 0x64, 0x3d, 0x51, 0x89, 0xf0, 0x3c, 0xb8, 0xeb, 0xfb, 0xe4, 0xdf, ++ 0x90, 0xbf, 0x27, 0x72, 0x35, 0x84, 0x3f, 0x49, 0x2f, 0x50, 0xd6, 0xc9, ++ 0x5a, 0xa8, 0xff, 0x60, 0xb6, 0x22, 0xee, 0xcd, 0xf0, 0xd5, 0x96, 0xa6, ++ 0x0b, 0x57, 0xbe, 0x07, 0xed, 0x9f, 0x9a, 0x4f, 0xd1, 0x8f, 0x72, 0xd8, ++ 0x7e, 0xce, 0x8c, 0xfa, 0x8a, 0xc7, 0xba, 0x82, 0xfc, 0x69, 0x69, 0xb9, ++ 0xdc, 0x2e, 0xd4, 0x63, 0xdc, 0x0b, 0xca, 0x4f, 0xac, 0x3b, 0xe7, 0x40, ++ 0xbe, 0xf5, 0xd6, 0xae, 0xf5, 0xce, 0x7c, 0xd4, 0x9f, 0x43, 0x0a, 0xe9, ++ 0x20, 0xc5, 0x7f, 0xee, 0xc8, 0xa2, 0xf3, 0xdd, 0xbb, 0x0c, 0x74, 0xfe, ++ 0x5c, 0x85, 0x6b, 0x5e, 0x50, 0xd1, 0xc4, 0xcf, 0x72, 0x5a, 0xb5, 0x65, ++ 0x63, 0x42, 0x1c, 0x4d, 0x9f, 0x70, 0xfe, 0x27, 0x09, 0xc7, 0xa7, 0xfd, ++ 0x5e, 0xc7, 0xc2, 0x71, 0xeb, 0xd1, 0xbb, 0xb9, 0xbd, 0xc6, 0x5c, 0x56, ++ 0xb2, 0x77, 0xd2, 0x72, 0x25, 0xee, 0xe7, 0x11, 0x65, 0x6b, 0x2e, 0xbf, ++ 0x77, 0x70, 0xaf, 0x3e, 0x98, 0xe5, 0x05, 0xf8, 0x1c, 0xda, 0xb5, 0x22, ++ 0x0f, 0xd7, 0x75, 0xfe, 0x95, 0x00, 0xe5, 0xdb, 0x8e, 0xa6, 0xef, 0x7f, ++ 0x94, 0xe3, 0x11, 0xf8, 0x0b, 0x9a, 0x75, 0x74, 0x8f, 0x69, 0xd8, 0x8c, ++ 0xf9, 0xb7, 0x4f, 0xb5, 0xb1, 0x34, 0xd4, 0xef, 0x4c, 0x21, 0x85, 0xf2, ++ 0x9f, 0xf7, 0x08, 0x7e, 0x56, 0x68, 0xe5, 0xf4, 0xff, 0xfb, 0x5c, 0x4e, ++ 0xe7, 0x89, 0xcf, 0xc2, 0x1e, 0xbe, 0xef, 0x94, 0xe7, 0x92, 0x42, 0x16, ++ 0xc4, 0x9b, 0xbd, 0xaf, 0x2c, 0x08, 0x74, 0x32, 0xe9, 0xf5, 0xb9, 0xcc, ++ 0x03, 0xf2, 0xaf, 0xd0, 0xee, 0x23, 0xff, 0x61, 0x61, 0xab, 0x21, 0x0d, ++ 0xe3, 0xf8, 0x73, 0x7e, 0x62, 0x25, 0x3a, 0x39, 0x67, 0x4d, 0x22, 0x3f, ++ 0xa1, 0xd2, 0x9a, 0xe4, 0xc5, 0xf7, 0x1d, 0xbb, 0x2b, 0x8a, 0xe3, 0xcf, ++ 0x35, 0x85, 0xda, 0xec, 0x69, 0x98, 0x1f, 0xb3, 0xbb, 0xcd, 0x94, 0x86, ++ 0x7c, 0x2a, 0x34, 0x0a, 0x7f, 0x1d, 0xeb, 0xd0, 0x51, 0xde, 0xb0, 0x47, ++ 0xc7, 0xf3, 0xda, 0xbe, 0x25, 0xe6, 0xf5, 0xad, 0x5c, 0x0b, 0xbf, 0x47, ++ 0x39, 0x97, 0xf3, 0x99, 0x27, 0x95, 0xe0, 0x02, 0x9c, 0xe7, 0x93, 0x80, ++ 0x4f, 0xcc, 0x57, 0x3e, 0xb8, 0x91, 0xeb, 0xc3, 0x6b, 0xdb, 0x4d, 0x34, ++ 0x8f, 0xb5, 0x6f, 0x8d, 0x25, 0xbd, 0x6a, 0x34, 0xb8, 0x3d, 0xdd, 0xe6, ++ 0x4e, 0xc3, 0x7b, 0xd8, 0x77, 0x6f, 0xd4, 0x65, 0xa1, 0xff, 0xa8, 0xb2, ++ 0xbb, 0x70, 0x03, 0xde, 0x47, 0xb0, 0xd6, 0xc6, 0xef, 0x63, 0x95, 0x53, ++ 0x26, 0x92, 0xbf, 0x93, 0xfd, 0x42, 0xcf, 0x50, 0x7f, 0xef, 0x48, 0x9e, ++ 0xe1, 0x5d, 0x1a, 0xc7, 0xdf, 0xe5, 0x94, 0x99, 0xc5, 0x48, 0x57, 0xb2, ++ 0x1c, 0xcc, 0x42, 0xbf, 0x88, 0x7f, 0x67, 0xd5, 0xf5, 0x98, 0xb7, 0x08, ++ 0xf8, 0xdb, 0x86, 0xe5, 0xba, 0xdc, 0x89, 0xd7, 0x63, 0x5e, 0xe3, 0x5e, ++ 0x5b, 0x30, 0x0b, 0xf3, 0x1c, 0x03, 0xb9, 0x53, 0x78, 0x39, 0x2d, 0xb8, ++ 0x0d, 0xf3, 0x1c, 0xeb, 0x73, 0xcb, 0x78, 0x39, 0x27, 0x98, 0x85, 0xbf, ++ 0xe7, 0xd4, 0x92, 0x5b, 0xc1, 0xbf, 0x1f, 0x17, 0xdc, 0x86, 0xe5, 0xd6, ++ 0xdc, 0x19, 0xbc, 0x1e, 0x7d, 0x4f, 0xc0, 0x3b, 0x83, 0xb9, 0x57, 0x5d, ++ 0x1f, 0x84, 0xf1, 0x3a, 0x0c, 0xde, 0x7a, 0x64, 0xc8, 0x3f, 0x86, 0xf9, ++ 0x97, 0xc0, 0xfc, 0xfb, 0xc4, 0xf3, 0x3e, 0x01, 0x17, 0xb5, 0xfe, 0x05, ++ 0x7c, 0x0f, 0x70, 0xde, 0x2f, 0x9e, 0x89, 0xf5, 0x2f, 0x89, 0xef, 0xfa, ++ 0x47, 0xa9, 0x7f, 0x55, 0xd4, 0x0f, 0x8c, 0xd2, 0xff, 0x6b, 0xe2, 0xbb, ++ 0xf0, 0x28, 0xdf, 0x1f, 0x12, 0xdf, 0x1d, 0x1e, 0xe5, 0xfb, 0x37, 0xc5, ++ 0x77, 0x47, 0x46, 0xa9, 0xff, 0xb9, 0xa8, 0x7f, 0x7b, 0x94, 0xfe, 0x7f, ++ 0x29, 0xbe, 0x1b, 0x1c, 0xe5, 0xfb, 0x5f, 0x89, 0xef, 0x7e, 0x3d, 0xca, ++ 0xf7, 0xbf, 0x11, 0xdf, 0xbd, 0x3f, 0x4a, 0xfd, 0x87, 0xa2, 0xfe, 0x5f, ++ 0x13, 0xfa, 0x3f, 0x2a, 0xda, 0x47, 0xc4, 0xfb, 0x02, 0xdb, 0xc6, 0x0f, ++ 0xc3, 0x40, 0x77, 0x05, 0xc0, 0x47, 0x90, 0x2f, 0x15, 0xdb, 0x36, 0x3a, ++ 0x71, 0x9f, 0xef, 0xee, 0x2a, 0x27, 0xfa, 0xef, 0xa8, 0xe0, 0xf1, 0x1d, ++ 0x95, 0xde, 0x0b, 0xf0, 0x77, 0x94, 0xa0, 0xfe, 0xcb, 0x5c, 0x7e, 0x3f, ++ 0xe8, 0x97, 0x82, 0xff, 0x6e, 0x17, 0xfd, 0x03, 0x1d, 0x3e, 0x8c, 0x74, ++ 0xb7, 0xf6, 0x1d, 0x99, 0xf2, 0x5d, 0x3a, 0x74, 0xde, 0x53, 0x21, 0xe4, ++ 0xa3, 0x1b, 0x74, 0xa4, 0x0f, 0xac, 0x7d, 0x8b, 0xdb, 0xe7, 0x6b, 0xbb, ++ 0x95, 0x50, 0xfc, 0x39, 0x88, 0xed, 0x09, 0xf3, 0x5f, 0x2f, 0xe6, 0xd7, ++ 0x29, 0xe6, 0xdb, 0x9b, 0xcb, 0xf3, 0xa9, 0x8d, 0x6e, 0x77, 0x5a, 0x6d, ++ 0xbc, 0x1f, 0xc9, 0xae, 0x2d, 0x63, 0x7a, 0x14, 0xf2, 0x5d, 0xe0, 0xdf, ++ 0x94, 0x3f, 0x5b, 0xdc, 0x5d, 0xd5, 0x55, 0x0c, 0xe5, 0x31, 0x4e, 0x1d, ++ 0x69, 0x20, 0x4a, 0xa3, 0x29, 0x8c, 0xf7, 0x22, 0x28, 0x36, 0x21, 0x17, ++ 0xec, 0xe5, 0x3d, 0xc5, 0x38, 0x3f, 0xab, 0x42, 0xe7, 0xc1, 0x15, 0x87, ++ 0x12, 0xde, 0x8b, 0xdf, 0xbb, 0xcb, 0x49, 0xbf, 0x53, 0xe7, 0xd7, 0x69, ++ 0x55, 0xe8, 0x5e, 0x2c, 0xd9, 0xc6, 0xe5, 0xc0, 0x9c, 0x9f, 0xcc, 0xb4, ++ 0xa3, 0x9e, 0xd5, 0xc9, 0x02, 0x83, 0x3e, 0xfc, 0xde, 0xad, 0x90, 0xfe, ++ 0x7e, 0xb0, 0xab, 0xcc, 0x8e, 0x7c, 0xcf, 0x60, 0x5b, 0x66, 0xc7, 0xfd, ++ 0xbb, 0xd6, 0xc3, 0xf7, 0x7f, 0x75, 0x53, 0x71, 0x12, 0xf2, 0x6b, 0xf9, ++ 0x41, 0x1d, 0xf1, 0xef, 0xc3, 0x76, 0xbe, 0xdf, 0x77, 0xba, 0x75, 0xe4, ++ 0xb7, 0x00, 0xb9, 0x42, 0xe7, 0x4a, 0x80, 0x5f, 0x7b, 0x51, 0x46, 0x8c, ++ 0x67, 0xe1, 0x76, 0x3a, 0xa7, 0xf0, 0xd0, 0x4b, 0x8b, 0xb9, 0x5f, 0x8f, ++ 0xd9, 0x4a, 0x2b, 0xe8, 0xdc, 0x86, 0x1a, 0x0f, 0x96, 0x94, 0x38, 0xfd, ++ 0xff, 0x04, 0xc2, 0x07, 0xcf, 0x4b, 0x08, 0x39, 0xa2, 0xa0, 0x7c, 0x81, ++ 0xe7, 0x93, 0xe5, 0xe2, 0xbc, 0x41, 0x90, 0xfb, 0x9f, 0xf2, 0x14, 0xe6, ++ 0x1e, 0x13, 0x77, 0x6e, 0xf2, 0x44, 0xae, 0xcc, 0xcf, 0x63, 0x28, 0x08, ++ 0x23, 0xe8, 0x4b, 0xae, 0xa5, 0xfb, 0x81, 0x72, 0xd7, 0x29, 0x1a, 0xff, ++ 0x7b, 0xf6, 0x5d, 0xda, 0xb2, 0x21, 0x41, 0x6e, 0x28, 0x09, 0x72, 0x65, ++ 0x6c, 0x17, 0xf0, 0xc9, 0x38, 0xb9, 0x93, 0x1f, 0xb4, 0x6b, 0xca, 0xef, ++ 0xe5, 0x0a, 0xbf, 0x99, 0x97, 0x79, 0x51, 0x7f, 0x9d, 0xf3, 0x93, 0x8d, ++ 0xc4, 0x0f, 0xcf, 0xa1, 0x7c, 0x93, 0x46, 0xe7, 0x7b, 0x51, 0xfe, 0x2b, ++ 0xf8, 0xf1, 0x93, 0xe2, 0xbe, 0x9b, 0x27, 0x83, 0xfc, 0xbc, 0xee, 0xc1, ++ 0x8d, 0x65, 0x3f, 0x47, 0x7c, 0xaf, 0xed, 0xd6, 0xd1, 0xfd, 0xce, 0x97, ++ 0xca, 0x47, 0xb7, 0xe7, 0x32, 0x82, 0xc3, 0xb8, 0x00, 0xc8, 0x1d, 0xd4, ++ 0x67, 0x14, 0x96, 0x85, 0xf6, 0xd2, 0x37, 0xc1, 0x61, 0x9c, 0xde, 0xef, ++ 0xa4, 0xfb, 0x0b, 0xbe, 0x01, 0x1e, 0xe3, 0x1e, 0x2d, 0x77, 0x22, 0xbf, ++ 0x1d, 0x17, 0x50, 0x48, 0xee, 0x0c, 0x93, 0x1b, 0xdf, 0x00, 0xaf, 0xe7, ++ 0x25, 0xef, 0xfb, 0x01, 0xc4, 0xa3, 0x23, 0x89, 0xeb, 0xd5, 0x76, 0xbe, ++ 0xee, 0xce, 0x74, 0x17, 0xbf, 0xf7, 0x47, 0x9c, 0x03, 0x94, 0x85, 0xbe, ++ 0x76, 0xbf, 0xf0, 0x83, 0x2b, 0x29, 0x73, 0x3c, 0xf8, 0x53, 0x1c, 0x9d, ++ 0x8e, 0x16, 0x2a, 0xaf, 0x97, 0xbc, 0x19, 0xd7, 0x42, 0xfb, 0x07, 0xa4, ++ 0x80, 0x1d, 0xcb, 0x47, 0x9c, 0x49, 0x5c, 0xee, 0xe4, 0x24, 0x11, 0x1d, ++ 0xee, 0x45, 0x5d, 0x86, 0xee, 0x2f, 0xcc, 0xf4, 0xa3, 0x7f, 0xa4, 0x2f, ++ 0x64, 0x50, 0xef, 0x03, 0x0c, 0xe3, 0xff, 0xed, 0xc3, 0x3c, 0x19, 0xf5, ++ 0xbe, 0x41, 0x37, 0xe9, 0x67, 0xa2, 0xfc, 0xe0, 0xf5, 0xd5, 0xd8, 0x5e, ++ 0xb1, 0x4f, 0x42, 0x95, 0xb3, 0x28, 0xaf, 0xe7, 0x61, 0xfd, 0x95, 0xd0, ++ 0xde, 0xc0, 0xa2, 0xed, 0xf1, 0x5c, 0xd3, 0xb3, 0x87, 0x75, 0xa2, 0xbf, ++ 0xcd, 0x0f, 0xa3, 0xbe, 0xba, 0x2f, 0x89, 0x69, 0xee, 0x5b, 0xdc, 0x87, ++ 0x7e, 0x74, 0x2a, 0x6f, 0x7d, 0x18, 0xef, 0x4f, 0x84, 0xf1, 0xae, 0x95, ++ 0xc1, 0x06, 0x9b, 0xfe, 0xc4, 0x13, 0x0f, 0x5b, 0xaf, 0x88, 0xcd, 0x67, ++ 0x6a, 0xe8, 0xa9, 0x87, 0xdb, 0x29, 0x5f, 0x95, 0xdb, 0x25, 0x0e, 0xc6, ++ 0xef, 0xc3, 0x3e, 0xed, 0x89, 0x24, 0xe3, 0x76, 0x01, 0xfb, 0xc4, 0x93, ++ 0x87, 0x76, 0xf9, 0xae, 0x13, 0xe9, 0x9a, 0xdf, 0x3f, 0x13, 0xed, 0x53, ++ 0x44, 0xfb, 0xa6, 0x81, 0xa1, 0xa6, 0xe7, 0x3c, 0xd4, 0xbe, 0x88, 0xda, ++ 0xf7, 0x0f, 0x25, 0x97, 0xd0, 0xfe, 0x1a, 0xaa, 0x88, 0x6f, 0x9f, 0x2c, ++ 0xec, 0xfd, 0xb8, 0xf6, 0x25, 0x5f, 0xd7, 0xbe, 0x58, 0x9d, 0xcf, 0x73, ++ 0xbf, 0xba, 0xb1, 0x84, 0xb7, 0x2f, 0xc3, 0xf6, 0x67, 0x3c, 0x91, 0x74, ++ 0xca, 0x3d, 0x49, 0x98, 0x4f, 0xea, 0xf0, 0xfe, 0xa7, 0x7f, 0x5d, 0xff, ++ 0x13, 0x45, 0xfb, 0xd3, 0xe1, 0x5f, 0x51, 0xfb, 0x33, 0x2c, 0x92, 0x3e, ++ 0x39, 0x9f, 0xbe, 0xbb, 0x3a, 0x0f, 0xe8, 0xf8, 0xec, 0xdb, 0xbf, 0xaa, ++ 0x10, 0xeb, 0x4e, 0x47, 0x3d, 0x19, 0xb8, 0xa2, 0x0f, 0xdf, 0x27, 0x7b, ++ 0x98, 0xb8, 0x77, 0xad, 0x85, 0xf4, 0xe7, 0x3e, 0x53, 0x8f, 0x1d, 0xf5, ++ 0x35, 0xb3, 0xbe, 0xc7, 0x8f, 0x7c, 0xb7, 0x10, 0xef, 0x4f, 0x9a, 0x1e, ++ 0x7b, 0xce, 0xca, 0x2b, 0xe4, 0x7a, 0x55, 0xc2, 0xfb, 0x3e, 0x13, 0x4b, ++ 0xad, 0x45, 0x7a, 0x6c, 0xd5, 0x91, 0xfd, 0xd2, 0x67, 0x1a, 0x2c, 0x2b, ++ 0x41, 0x7d, 0xfa, 0x65, 0x2b, 0x6b, 0x87, 0x31, 0x74, 0x79, 0xeb, 0xbc, ++ 0xc8, 0x07, 0xfb, 0x23, 0x6b, 0xbd, 0x25, 0xd0, 0x6e, 0x67, 0xf6, 0x4c, ++ 0xb2, 0x2b, 0xf6, 0x19, 0x5a, 0xfa, 0xe8, 0x9c, 0xed, 0x62, 0x2b, 0x9d, ++ 0x03, 0xdd, 0x69, 0xef, 0xb1, 0xe3, 0xfe, 0x31, 0x3b, 0x7a, 0xec, 0x18, ++ 0x47, 0x90, 0xef, 0xe6, 0xfa, 0x93, 0xb2, 0xc4, 0x1a, 0x78, 0x0a, 0xe9, ++ 0x29, 0xbc, 0xb6, 0x78, 0x79, 0xdc, 0xfe, 0x9d, 0xea, 0xe1, 0xbf, 0x23, ++ 0xd3, 0xfd, 0x86, 0x75, 0x23, 0xda, 0x01, 0xdd, 0x7a, 0x6f, 0xcf, 0x78, ++ 0xd4, 0xb3, 0x6d, 0x0a, 0xe5, 0x81, 0x2b, 0x4b, 0x06, 0xe6, 0xd1, 0xb9, ++ 0xbd, 0x1f, 0xeb, 0x18, 0xf1, 0x77, 0x58, 0x57, 0x15, 0x94, 0x3b, 0x1b, ++ 0x75, 0x74, 0x2f, 0x7c, 0x9b, 0x67, 0xc9, 0x32, 0x84, 0x2b, 0x53, 0xfc, ++ 0xfe, 0x2a, 0xf8, 0x2e, 0x37, 0x4d, 0x91, 0xf0, 0x1c, 0xc4, 0xfd, 0x8a, ++ 0xdf, 0x84, 0xf1, 0x0b, 0xa3, 0xd0, 0xdb, 0x76, 0x7a, 0xf9, 0xef, 0xae, ++ 0xaa, 0xe3, 0x6e, 0xc8, 0xe3, 0xf2, 0x69, 0x43, 0x1e, 0xbf, 0x1f, 0xaa, ++ 0x7b, 0xf1, 0x73, 0xc5, 0x6f, 0xc2, 0x77, 0x3b, 0x5b, 0xd7, 0xf6, 0xe1, ++ 0x78, 0xe6, 0x09, 0x26, 0x86, 0xf9, 0x5e, 0x3b, 0xb3, 0x4f, 0x76, 0xe3, ++ 0xb9, 0xcd, 0xc7, 0xdd, 0x60, 0xf1, 0x02, 0x1c, 0xac, 0x0d, 0x3a, 0xfa, ++ 0x5d, 0x94, 0xc7, 0x6b, 0xa1, 0x4d, 0x0a, 0xfa, 0x33, 0x0c, 0x1a, 0x7f, ++ 0xc5, 0xf3, 0x52, 0x1f, 0xb5, 0x0f, 0x36, 0xea, 0xc8, 0x4e, 0xb0, 0x96, ++ 0x18, 0x34, 0xfe, 0x8d, 0xd4, 0x06, 0x9d, 0x0f, 0xfd, 0x8e, 0x3b, 0x3c, ++ 0x81, 0x7b, 0x71, 0xde, 0x53, 0xdf, 0x51, 0xae, 0xc5, 0xf1, 0xdc, 0xe3, ++ 0x14, 0x3b, 0xca, 0xa7, 0x07, 0xdd, 0xbf, 0x36, 0xe9, 0x60, 0x9e, 0xc9, ++ 0xe5, 0xda, 0x7e, 0xed, 0x33, 0xb5, 0xfd, 0x38, 0xab, 0xb5, 0xf5, 0xae, ++ 0x5a, 0x6d, 0x7d, 0xfa, 0x42, 0x6d, 0xbd, 0xfb, 0x36, 0x43, 0x82, 0xbf, ++ 0x46, 0x5b, 0xbe, 0x88, 0x82, 0x08, 0xe1, 0x08, 0x3c, 0xc0, 0x0a, 0x72, ++ 0x28, 0x89, 0x57, 0xb1, 0x24, 0xeb, 0x79, 0xfa, 0x5d, 0xae, 0xee, 0xc0, ++ 0xf6, 0x9e, 0xf1, 0xb0, 0x1e, 0xa3, 0x25, 0x58, 0xfa, 0x26, 0xcc, 0x37, ++ 0x69, 0x62, 0x12, 0xd9, 0xfb, 0x0f, 0xbc, 0x91, 0x84, 0x9b, 0x0f, 0xf8, ++ 0x0f, 0x23, 0xbe, 0xf3, 0xc0, 0x64, 0x46, 0xf9, 0xa7, 0x87, 0x72, 0xbe, ++ 0xef, 0x46, 0x79, 0x9a, 0x08, 0x9f, 0x9d, 0xd9, 0x06, 0x5a, 0xaf, 0xb5, ++ 0x10, 0xe0, 0x99, 0x8f, 0xf6, 0xfa, 0x29, 0xfa, 0xfd, 0x2c, 0x2b, 0x8b, ++ 0x6b, 0x97, 0x8f, 0xf0, 0xf1, 0x6d, 0xcf, 0x9b, 0xc6, 0xcb, 0xee, 0x0a, ++ 0xf4, 0xcf, 0x31, 0xe2, 0x83, 0xcf, 0xab, 0xfe, 0xe3, 0x1b, 0xf8, 0xb9, ++ 0xa6, 0x9d, 0xad, 0xdc, 0x2f, 0xfd, 0x60, 0x1d, 0xcf, 0xcf, 0xa3, 0x15, ++ 0x54, 0xe0, 0xfe, 0xe6, 0xed, 0x93, 0xf1, 0xf7, 0xbc, 0xa6, 0xa0, 0xdf, ++ 0xbe, 0xeb, 0x0e, 0xcc, 0x3b, 0x4c, 0x84, 0x6b, 0x06, 0xe6, 0xe3, 0xc8, ++ 0x31, 0xfa, 0x58, 0xaf, 0x9e, 0x23, 0xc1, 0x53, 0x8c, 0x15, 0x9c, 0x2d, ++ 0xe3, 0xbe, 0x3b, 0xee, 0xe1, 0x74, 0xf2, 0x93, 0x3c, 0x2e, 0xff, 0xf7, ++ 0x89, 0x7b, 0x0f, 0xa2, 0xed, 0x71, 0x1f, 0xa6, 0x33, 0x6e, 0xca, 0x42, ++ 0x7f, 0xaf, 0xe6, 0xa9, 0xfe, 0x07, 0x9e, 0x97, 0xbf, 0x59, 0x8d, 0xc7, ++ 0x88, 0x32, 0x5e, 0x17, 0x88, 0xe5, 0x7d, 0x87, 0x9d, 0xd7, 0xe2, 0x7e, ++ 0xda, 0xbc, 0xd0, 0x59, 0x86, 0xfb, 0xe9, 0x01, 0xa1, 0x97, 0xa5, 0x64, ++ 0x1b, 0x7c, 0x13, 0x60, 0xbe, 0x8f, 0x1c, 0x31, 0x04, 0xa5, 0xcb, 0xa0, ++ 0xac, 0xb0, 0xc3, 0x7a, 0x90, 0xe7, 0xfb, 0x9c, 0x7c, 0x5c, 0xc3, 0x5b, ++ 0x49, 0x41, 0x3c, 0xd7, 0xf4, 0x88, 0xbb, 0x9c, 0xce, 0x49, 0x7d, 0x24, ++ 0xe6, 0xf5, 0x42, 0xa5, 0xf7, 0xbd, 0x5a, 0xda, 0x8f, 0x0a, 0xe5, 0x39, ++ 0x3d, 0xe2, 0xf2, 0x9a, 0xcb, 0xb8, 0xbe, 0x81, 0x77, 0x4a, 0x33, 0xfa, ++ 0x49, 0x54, 0x50, 0x2d, 0x0e, 0xd6, 0x96, 0x91, 0x9d, 0xfa, 0x88, 0xcf, ++ 0x6b, 0xc6, 0xfd, 0xfa, 0x48, 0xb6, 0xd7, 0x8c, 0x79, 0xc2, 0xe6, 0x4c, ++ 0xc5, 0x8e, 0xfb, 0xd8, 0xe9, 0x56, 0xe8, 0xbe, 0xaa, 0x47, 0x4c, 0x01, ++ 0x3b, 0xea, 0x2d, 0x4e, 0x10, 0x80, 0xf8, 0x3b, 0x6d, 0x86, 0x9c, 0x9e, ++ 0xb9, 0x74, 0x3e, 0x08, 0x60, 0xa8, 0xab, 0xe0, 0x21, 0x01, 0x26, 0xf2, ++ 0xe9, 0x30, 0x9f, 0x2d, 0x55, 0xc0, 0x6b, 0xa7, 0x7b, 0x99, 0x1d, 0xcf, ++ 0x91, 0xbb, 0x0a, 0xf7, 0xff, 0x1d, 0xfa, 0xd5, 0x53, 0xb1, 0xbf, 0x64, ++ 0xfe, 0x1d, 0xc2, 0xc9, 0x21, 0xe0, 0x74, 0x3c, 0xcf, 0xc3, 0xf3, 0x83, ++ 0x45, 0xff, 0xa9, 0xcb, 0x5e, 0xa0, 0xf6, 0xf8, 0xd7, 0x59, 0x11, 0xd7, ++ 0x9f, 0x97, 0xd3, 0x97, 0x61, 0x2e, 0x0b, 0xd1, 0xef, 0x8d, 0x89, 0xf1, ++ 0xd5, 0x7e, 0xa2, 0xfd, 0x33, 0x1f, 0xf9, 0xed, 0xd7, 0xff, 0x9c, 0xc3, ++ 0xad, 0x3d, 0x87, 0xdf, 0xd3, 0x63, 0x58, 0xc3, 0xc8, 0x0e, 0x7b, 0xa1, ++ 0x32, 0xb0, 0xf7, 0x20, 0xc2, 0x27, 0x33, 0x89, 0xec, 0xec, 0x2c, 0x77, ++ 0x56, 0x15, 0xd2, 0x47, 0xd6, 0x91, 0x6d, 0x0b, 0xf0, 0x3c, 0xc0, 0xfa, ++ 0x9f, 0x73, 0xf9, 0x69, 0x58, 0xce, 0xe3, 0x4d, 0x59, 0x0a, 0x33, 0x5d, ++ 0x85, 0xeb, 0x4e, 0x0b, 0xd8, 0x11, 0x8e, 0x89, 0xfb, 0x30, 0xf3, 0x70, ++ 0xcf, 0x7c, 0x24, 0x36, 0x15, 0x2f, 0x89, 0xfb, 0x32, 0x53, 0x61, 0x5d, ++ 0xb2, 0x73, 0xf8, 0xfe, 0xcc, 0x74, 0xbb, 0xaa, 0x8a, 0xa6, 0x8c, 0xb0, ++ 0x4f, 0x13, 0xf6, 0x41, 0xe6, 0x91, 0xa1, 0xef, 0x61, 0xff, 0x89, 0xfb, ++ 0x75, 0x87, 0xe5, 0x68, 0x29, 0xc2, 0xe5, 0xff, 0x02, 0x9f, 0x8b, 0xfa, ++ 0xf4, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd5, 0x7d, 0x0b, 0x7c, 0x94, 0xc5, ++ 0xd5, 0xf7, 0x3c, 0x7b, 0xcb, 0x26, 0xd9, 0x24, 0x9b, 0x04, 0x42, 0x42, ++ 0x48, 0xd8, 0xcd, 0x8d, 0x40, 0x2e, 0x6c, 0xc2, 0xc5, 0x88, 0xa8, 0x4b, ++ 0x48, 0x10, 0x2d, 0xe2, 0x22, 0x72, 0x35, 0xe2, 0x13, 0x12, 0x20, 0x40, ++ 0x02, 0x01, 0xf4, 0x6b, 0x6c, 0xa9, 0x59, 0x0c, 0x37, 0x2d, 0xd6, 0xf0, ++ 0x36, 0x0a, 0x5a, 0xd4, 0x8d, 0x05, 0x8a, 0x8a, 0x36, 0x28, 0x20, 0x56, ++ 0x6c, 0x97, 0x8b, 0x8a, 0xd5, 0x6a, 0x5a, 0xf5, 0x2d, 0x55, 0x4b, 0x13, ++ 0xa1, 0x8a, 0x72, 0x8b, 0xa1, 0x7d, 0x3f, 0xda, 0xfa, 0xb6, 0xdf, 0xfc, ++ 0xcf, 0xcc, 0x24, 0xfb, 0x2c, 0x89, 0xd2, 0x7e, 0x6f, 0x7f, 0xbf, 0xef, ++ 0x4b, 0x7f, 0x75, 0x98, 0xe7, 0x99, 0x67, 0xe6, 0xcc, 0x39, 0x67, 0xce, ++ 0x9c, 0xdb, 0xcc, 0x32, 0x66, 0x63, 0x2e, 0x3b, 0xa3, 0xbf, 0x7f, 0x98, ++ 0xf1, 0xdf, 0xaf, 0xaf, 0xaf, 0xd5, 0x3a, 0xee, 0x1f, 0x36, 0x9a, 0x31, ++ 0x7f, 0x8a, 0xc5, 0xb3, 0xc3, 0xc5, 0x58, 0x5a, 0xe8, 0x7b, 0x37, 0xfe, ++ 0xfb, 0xf7, 0x08, 0xd4, 0x35, 0x66, 0x72, 0xfd, 0x23, 0x93, 0xb1, 0x51, ++ 0xae, 0x78, 0xc6, 0x06, 0xe2, 0x79, 0xbd, 0xcb, 0x57, 0xc0, 0xd8, 0x1e, ++ 0x9b, 0x73, 0xa2, 0x63, 0x00, 0x63, 0x5d, 0x2b, 0x98, 0xe7, 0x29, 0xfe, ++ 0x7d, 0xe9, 0x4b, 0x9b, 0xe6, 0xbe, 0xc5, 0xeb, 0xff, 0x95, 0xe6, 0x70, ++ 0x46, 0xf0, 0x56, 0xa9, 0xc7, 0x9a, 0xdb, 0xf3, 0xf9, 0x73, 0x76, 0x40, ++ 0x1f, 0x86, 0xf6, 0xdb, 0x2c, 0xfa, 0x93, 0xd1, 0xfc, 0xfd, 0xb6, 0xe3, ++ 0x83, 0x98, 0x5f, 0x63, 0x2c, 0x22, 0x9a, 0xd5, 0xb7, 0x39, 0x38, 0x54, ++ 0x26, 0xa6, 0xa3, 0xfc, 0x07, 0xfe, 0xae, 0xc7, 0x38, 0x56, 0x1a, 0x67, ++ 0x94, 0xcb, 0xc4, 0xd8, 0x18, 0xc6, 0x78, 0x17, 0x01, 0x53, 0xf2, 0xbf, ++ 0x5e, 0xb6, 0x0d, 0x19, 0x92, 0xe7, 0xf4, 0xf0, 0xfe, 0x02, 0x29, 0xed, ++ 0x76, 0xde, 0x6f, 0x9b, 0xc5, 0x99, 0x67, 0xe1, 0xf5, 0x9c, 0xa1, 0xcd, ++ 0x0f, 0x59, 0xaf, 0xc5, 0x3c, 0x38, 0x8c, 0xe3, 0x68, 0xda, 0x5e, 0x56, ++ 0xc2, 0xd8, 0xb3, 0x47, 0xf9, 0xb8, 0x83, 0x51, 0x7d, 0xe4, 0xa1, 0x32, ++ 0x0b, 0x7f, 0x1f, 0xd5, 0xf3, 0xde, 0x8f, 0xf7, 0x7b, 0x4c, 0x26, 0x59, ++ 0x7f, 0xf4, 0xa1, 0xb2, 0x21, 0x8c, 0x0d, 0x39, 0xda, 0xb6, 0xc6, 0xe1, ++ 0xe4, 0xf3, 0x1f, 0xda, 0xfa, 0x90, 0x9d, 0xe3, 0x2d, 0xf2, 0x57, 0xe2, ++ 0xfd, 0x04, 0x5e, 0xf7, 0x67, 0x01, 0x2f, 0xb5, 0x43, 0x3b, 0xf8, 0xfc, ++ 0x0e, 0xa7, 0x2f, 0xa1, 0xf9, 0x37, 0xfd, 0x2e, 0x82, 0x45, 0xf0, 0x76, ++ 0x05, 0x66, 0xcf, 0x56, 0xd4, 0xd9, 0x47, 0x91, 0x6c, 0x07, 0xaf, 0xef, ++ 0xda, 0x37, 0x7e, 0xb6, 0x8b, 0xb7, 0x6b, 0x8a, 0x19, 0xeb, 0xd2, 0xf3, ++ 0x19, 0x2b, 0x73, 0x69, 0x34, 0xff, 0x52, 0x59, 0x86, 0xcf, 0xcb, 0x6c, ++ 0xf3, 0xe8, 0x1e, 0xc7, 0xe5, 0xcf, 0xc7, 0x4b, 0xbc, 0x31, 0xe6, 0x39, ++ 0xde, 0xca, 0xe9, 0x5b, 0xf0, 0x63, 0x1b, 0x7b, 0x80, 0xbf, 0xcc, 0x05, ++ 0xdc, 0xa0, 0x57, 0x6b, 0x64, 0xe0, 0x29, 0xd0, 0xb7, 0x79, 0x0b, 0x63, ++ 0x49, 0x8c, 0x55, 0x3b, 0x05, 0xcd, 0xab, 0xf7, 0x3f, 0x90, 0x7e, 0x88, ++ 0x97, 0x2f, 0xc7, 0x4c, 0xbb, 0xcd, 0xc5, 0xf1, 0x54, 0x1d, 0x53, 0x96, ++ 0x04, 0x78, 0x52, 0x2f, 0x31, 0xa6, 0x27, 0x72, 0xba, 0x35, 0xda, 0x99, ++ 0xce, 0x71, 0x95, 0x3a, 0xe0, 0x05, 0x8d, 0x71, 0xf8, 0x86, 0x0c, 0x38, ++ 0x3a, 0x81, 0x39, 0xc0, 0x37, 0xed, 0x6b, 0x9c, 0x28, 0xeb, 0xa3, 0x98, ++ 0xae, 0xf8, 0x07, 0xf4, 0xbf, 0x64, 0x61, 0xfa, 0x28, 0xf4, 0xe7, 0xa5, ++ 0xfe, 0xf0, 0x67, 0x4f, 0x02, 0x17, 0x8a, 0xbf, 0xb5, 0x09, 0x3a, 0x5b, ++ 0xc3, 0xe1, 0xf1, 0x73, 0x5c, 0xef, 0x00, 0x77, 0x3a, 0xa3, 0x3a, 0xb5, ++ 0x42, 0xfe, 0x8f, 0xe4, 0x32, 0x6f, 0x47, 0xae, 0xec, 0x27, 0x03, 0x7c, ++ 0xca, 0x66, 0xb7, 0xf1, 0xf1, 0x2a, 0x81, 0x07, 0xde, 0x8f, 0x8d, 0xd3, ++ 0xc4, 0x5a, 0xcc, 0x4b, 0x87, 0x25, 0x18, 0xd1, 0x47, 0xfb, 0x85, 0x12, ++ 0x5f, 0x66, 0xbb, 0x23, 0x68, 0x1e, 0xc9, 0x4b, 0xe7, 0xeb, 0xc7, 0xa9, ++ 0x5f, 0x87, 0xe5, 0x6c, 0x87, 0xbd, 0xb7, 0x9d, 0x3d, 0x60, 0x21, 0x7c, ++ 0xb0, 0x5a, 0x16, 0xc8, 0xd6, 0x08, 0x4f, 0xfe, 0x08, 0xd4, 0xe3, 0x12, ++ 0xa8, 0xce, 0xbc, 0x5e, 0xd7, 0x80, 0x24, 0xf0, 0x3f, 0x23, 0xe4, 0xa6, ++ 0x5a, 0xd8, 0xd1, 0x08, 0x3e, 0x2e, 0x71, 0x2f, 0x5f, 0x3f, 0x29, 0x2c, ++ 0x48, 0xe5, 0xe3, 0x1c, 0x3d, 0x8e, 0x4c, 0x34, 0x4a, 0x8b, 0xff, 0x34, ++ 0x9a, 0xe1, 0x11, 0x03, 0x1f, 0x3f, 0xc5, 0xd8, 0xe4, 0x50, 0xbe, 0x56, ++ 0xe5, 0xc5, 0x74, 0x13, 0xcd, 0x23, 0xab, 0xc1, 0x34, 0xf0, 0x14, 0xc7, ++ 0x4f, 0xde, 0x91, 0x48, 0x82, 0xc3, 0xb2, 0x91, 0x05, 0x22, 0xf9, 0x60, ++ 0x59, 0xa0, 0x07, 0xa7, 0x5b, 0xd6, 0x26, 0x16, 0xb0, 0xb8, 0xd1, 0xce, ++ 0x36, 0xf0, 0x54, 0x22, 0xbe, 0x73, 0xd1, 0x77, 0x2e, 0xe6, 0x34, 0x31, ++ 0x1a, 0xaf, 0x6d, 0x04, 0xd6, 0xd5, 0xd6, 0xd7, 0x1d, 0x9b, 0x58, 0x1c, ++ 0xd1, 0xf7, 0x4e, 0x1f, 0x1f, 0x6f, 0x6b, 0x14, 0xab, 0x01, 0xbe, 0xd4, ++ 0x78, 0x8c, 0xad, 0x21, 0x7c, 0x6c, 0x76, 0x89, 0x71, 0xb7, 0x35, 0x3a, ++ 0x89, 0x8e, 0xea, 0xfd, 0x90, 0xda, 0xc3, 0x61, 0x74, 0x4c, 0x30, 0xd0, ++ 0x51, 0xb5, 0x4b, 0xbd, 0x34, 0x98, 0xe8, 0xd9, 0xdb, 0x6f, 0x80, 0xfa, ++ 0x4d, 0x6d, 0xd8, 0x4b, 0xfc, 0x90, 0x7a, 0x29, 0x5d, 0xf2, 0x89, 0xeb, ++ 0x1b, 0xfa, 0xcf, 0xe8, 0xa7, 0xff, 0x64, 0xfa, 0xbe, 0xff, 0xfe, 0x87, ++ 0xd0, 0xf8, 0x8f, 0x07, 0xdf, 0x8f, 0x9f, 0xca, 0x51, 0xf1, 0xa3, 0xae, ++ 0xbd, 0xf1, 0x3e, 0x5e, 0x46, 0x5a, 0x9b, 0x7d, 0x9e, 0x3e, 0xf0, 0x9c, ++ 0x7a, 0x57, 0x88, 0x3c, 0xe3, 0xff, 0x1f, 0x79, 0x80, 0xd7, 0x73, 0x7b, ++ 0xeb, 0x0a, 0x2f, 0x91, 0x56, 0xef, 0x80, 0x69, 0x1c, 0xff, 0x91, 0x77, ++ 0x9b, 0x3c, 0xad, 0xbc, 0xbf, 0xab, 0x8e, 0x1b, 0xdb, 0x4d, 0x76, 0x7f, ++ 0x10, 0x8f, 0xf5, 0xd8, 0xdb, 0x3e, 0x38, 0x60, 0x3a, 0xda, 0xd7, 0x89, ++ 0xf6, 0xd7, 0x9c, 0x36, 0xb6, 0xf7, 0x4d, 0xd8, 0x17, 0xd6, 0x5e, 0xc0, ++ 0x77, 0xfd, 0x25, 0x63, 0xbb, 0x70, 0xfa, 0x84, 0xc3, 0xcb, 0xe1, 0x1a, ++ 0x38, 0x23, 0x04, 0xae, 0x89, 0xf6, 0x08, 0xc3, 0xf7, 0xb3, 0x2b, 0x2f, ++ 0x83, 0x6b, 0xe0, 0xac, 0x10, 0xb8, 0x6e, 0x48, 0x36, 0xb6, 0xd7, 0xd7, ++ 0xf4, 0x0d, 0xd7, 0xb7, 0x72, 0x23, 0xbe, 0x16, 0x2e, 0xd5, 0xee, 0x96, ++ 0x92, 0x2b, 0x6b, 0x17, 0x3e, 0x8f, 0xe9, 0x93, 0x23, 0xfa, 0xc1, 0xbb, ++ 0x68, 0x3f, 0x6b, 0xf6, 0x95, 0xf5, 0x7b, 0x7b, 0xcd, 0xd7, 0xb7, 0xbb, ++ 0xb3, 0x21, 0x7c, 0x1c, 0xbf, 0xdc, 0xaf, 0xf8, 0xda, 0xe2, 0xeb, 0x38, ++ 0x11, 0xff, 0xe0, 0x4b, 0x20, 0xb1, 0xc1, 0xe4, 0x8d, 0x8c, 0x65, 0xcc, ++ 0xc9, 0xba, 0x18, 0xd6, 0xd1, 0xc9, 0xa1, 0x2e, 0x6a, 0x97, 0xc0, 0x9c, ++ 0xb4, 0x9e, 0xf9, 0xc2, 0xd7, 0xb0, 0xae, 0xde, 0xc3, 0x3f, 0x53, 0xf8, ++ 0x56, 0xe0, 0xf6, 0x9d, 0x73, 0x8d, 0x01, 0xfe, 0xbd, 0x15, 0x0f, 0xf3, ++ 0xa6, 0x65, 0x72, 0xbf, 0x62, 0x53, 0x78, 0x8f, 0x57, 0xa3, 0x73, 0x5f, ++ 0xc1, 0xad, 0x05, 0x97, 0xf3, 0x1f, 0x63, 0xf7, 0x11, 0x5c, 0xaf, 0x68, ++ 0xba, 0xce, 0x68, 0x9f, 0xb5, 0x7b, 0x76, 0xf0, 0xf5, 0x9d, 0x97, 0xca, ++ 0xec, 0x29, 0x09, 0xfc, 0x75, 0x72, 0x20, 0xe3, 0xd6, 0x18, 0xc6, 0xbe, ++ 0xea, 0x91, 0xd7, 0x5c, 0xd4, 0x70, 0x38, 0x47, 0x48, 0xdc, 0x3d, 0x37, ++ 0xb8, 0x6d, 0x65, 0x3c, 0xad, 0xf3, 0x40, 0x02, 0xe0, 0xf9, 0x67, 0xc7, ++ 0xb5, 0xbb, 0xbd, 0x66, 0xf7, 0x98, 0xde, 0xf6, 0xe1, 0xed, 0x7a, 0xdb, ++ 0x0b, 0x3c, 0xd9, 0x6c, 0x6d, 0x2b, 0x00, 0x67, 0x57, 0x9d, 0xc3, 0x83, ++ 0xfd, 0xe1, 0x7d, 0xbc, 0xe2, 0xdf, 0xfd, 0x78, 0x66, 0x44, 0xd0, 0xcc, ++ 0xf1, 0x75, 0xc1, 0xea, 0xd8, 0xa8, 0x71, 0x39, 0x73, 0x3c, 0x7a, 0xde, ++ 0xeb, 0x03, 0x39, 0x1e, 0xde, 0x8b, 0xd5, 0xe3, 0xd1, 0xff, 0xec, 0x59, ++ 0x37, 0xae, 0x47, 0x5d, 0x3b, 0x9c, 0xe8, 0x5a, 0xc9, 0xe1, 0xbb, 0x50, ++ 0xd9, 0x31, 0x16, 0x78, 0xf5, 0x46, 0xeb, 0x03, 0xdd, 0xbc, 0xdf, 0x5a, ++ 0xbb, 0x3e, 0x34, 0x89, 0x4f, 0xf1, 0x5c, 0x9a, 0x3e, 0x2c, 0x0e, 0xf8, ++ 0xf5, 0x25, 0x12, 0x5e, 0xf9, 0x3f, 0x0a, 0x7c, 0x7d, 0xc2, 0x2f, 0xe0, ++ 0x29, 0xd3, 0x04, 0xfe, 0x13, 0xe3, 0xf4, 0x74, 0xf4, 0x53, 0x66, 0x6a, ++ 0x7f, 0xc2, 0x87, 0x67, 0x96, 0xf6, 0xb1, 0xf8, 0x8e, 0x39, 0x07, 0x12, ++ 0x7c, 0xe7, 0x6c, 0x5c, 0xde, 0xf5, 0xb1, 0xfe, 0x15, 0x1e, 0x4a, 0x65, ++ 0x3f, 0x87, 0xac, 0x9e, 0xaf, 0xba, 0xf8, 0xfc, 0x0e, 0x6d, 0x8e, 0xf3, ++ 0x34, 0x71, 0x78, 0xab, 0x13, 0x67, 0xcd, 0x5b, 0xce, 0x5f, 0x2d, 0x30, ++ 0xf9, 0x92, 0x82, 0x66, 0x03, 0xdc, 0xf9, 0x04, 0xb7, 0xa3, 0x72, 0x68, ++ 0x0a, 0xe0, 0xb6, 0x4a, 0xb8, 0xed, 0x03, 0x25, 0xde, 0xbd, 0x59, 0x5f, ++ 0x07, 0x77, 0x13, 0xc6, 0xc3, 0xbe, 0xf6, 0x3d, 0x2d, 0xb0, 0xc3, 0x2d, ++ 0x68, 0x89, 0xfa, 0x4b, 0xfe, 0xf8, 0xc0, 0x03, 0xbc, 0x1e, 0x61, 0xba, ++ 0xf8, 0x3e, 0xe4, 0x47, 0x57, 0x81, 0xc9, 0xc3, 0xf7, 0x08, 0xb6, 0x8d, ++ 0xeb, 0x17, 0x76, 0xbe, 0xaf, 0xbc, 0x2b, 0xf1, 0xfd, 0x38, 0x57, 0x7f, ++ 0xec, 0x09, 0xf4, 0x7c, 0x23, 0x9e, 0x27, 0x47, 0x89, 0xef, 0x93, 0x1f, ++ 0x31, 0x05, 0x9a, 0xf8, 0xf7, 0xbe, 0xd2, 0x97, 0x89, 0x4e, 0x3f, 0x5e, ++ 0xe6, 0xf0, 0x98, 0xf9, 0x58, 0x95, 0xcc, 0x65, 0x03, 0xdf, 0x56, 0x31, ++ 0xaf, 0x0d, 0xf0, 0xff, 0x71, 0xc2, 0xdf, 0x5e, 0xed, 0xe0, 0xf3, 0xbb, ++ 0xc9, 0xad, 0x97, 0x83, 0x3e, 0x77, 0x26, 0x9a, 0xd2, 0xdf, 0x27, 0x38, ++ 0xf4, 0xbc, 0x69, 0x9c, 0xdf, 0xd8, 0x78, 0x81, 0xff, 0x6f, 0xe2, 0x07, ++ 0xc6, 0x36, 0x99, 0xd8, 0x58, 0xc6, 0x6e, 0x95, 0xfa, 0xc1, 0x02, 0x89, ++ 0xc7, 0xe9, 0xcc, 0x6b, 0xc5, 0x38, 0x33, 0x98, 0x6e, 0xc5, 0xb8, 0xbf, ++ 0x39, 0x6f, 0xf3, 0x32, 0xce, 0x1f, 0xbf, 0xe1, 0xb8, 0x62, 0x1c, 0xde, ++ 0x59, 0xcc, 0x4f, 0xcf, 0xe7, 0xb0, 0x00, 0x95, 0xb7, 0xb3, 0x20, 0xb5, ++ 0xbf, 0x83, 0x75, 0x50, 0xfd, 0xd7, 0xd1, 0x85, 0x69, 0x0d, 0x1c, 0xbe, ++ 0x69, 0x5b, 0x86, 0x65, 0x63, 0x3d, 0x86, 0xe0, 0xfd, 0x76, 0xc9, 0x2f, ++ 0x77, 0x0e, 0x10, 0xfc, 0xf2, 0xd9, 0x20, 0xe0, 0xbd, 0x65, 0xe0, 0x15, ++ 0xf1, 0xef, 0x34, 0x4d, 0xe0, 0x6f, 0xb0, 0x5b, 0xaf, 0x76, 0xd3, 0x7a, ++ 0x75, 0x0d, 0xf0, 0x00, 0x26, 0xe7, 0xc4, 0x21, 0xbe, 0x98, 0x90, 0xf5, ++ 0x53, 0x36, 0x50, 0xf0, 0x9f, 0xc5, 0x99, 0xfd, 0x75, 0xeb, 0xa7, 0xbd, ++ 0x3b, 0xb6, 0x90, 0x8d, 0x24, 0x79, 0xe0, 0x48, 0xe1, 0x78, 0xb8, 0x41, ++ 0x92, 0xf2, 0x06, 0xef, 0xd2, 0x29, 0x98, 0x2f, 0x24, 0x08, 0xd6, 0xeb, ++ 0x2d, 0x72, 0xbd, 0x96, 0x9b, 0x1d, 0x6c, 0x00, 0xa7, 0x4b, 0xbb, 0xcb, ++ 0x1c, 0x88, 0xe0, 0xb0, 0x4c, 0x9e, 0xb0, 0x22, 0x19, 0xf3, 0x7d, 0x63, ++ 0x0d, 0xfb, 0xd5, 0x28, 0x4e, 0xbf, 0x37, 0x26, 0x98, 0x59, 0x13, 0xb5, ++ 0xf4, 0xd2, 0x77, 0x53, 0x65, 0x7f, 0x53, 0x87, 0x4c, 0xfa, 0x1c, 0xfa, ++ 0xc9, 0xdb, 0x2c, 0x38, 0x60, 0x34, 0xff, 0xae, 0xfc, 0x92, 0x7e, 0x34, ++ 0x8e, 0xe3, 0x67, 0xaa, 0x79, 0xf7, 0x5a, 0xae, 0x71, 0xb3, 0xc9, 0x43, ++ 0xac, 0x9f, 0x74, 0x84, 0xc8, 0xb5, 0x1b, 0x07, 0xec, 0xb1, 0x30, 0xae, ++ 0xbf, 0xdc, 0x94, 0x65, 0x7c, 0x3e, 0x25, 0x9f, 0xd7, 0x43, 0xe4, 0xee, ++ 0x54, 0x66, 0xe9, 0x7d, 0xcf, 0xe9, 0x7f, 0x08, 0xf8, 0x81, 0xdc, 0x61, ++ 0xcd, 0x66, 0xf0, 0xef, 0x46, 0x77, 0xcc, 0x80, 0x4f, 0xf3, 0x78, 0x75, ++ 0x04, 0x1b, 0x21, 0xec, 0x03, 0x4e, 0x8d, 0x90, 0xf9, 0x74, 0xdb, 0xff, ++ 0x6e, 0xbb, 0xc0, 0xbf, 0x7b, 0xc5, 0xad, 0x3f, 0x04, 0xba, 0xac, 0x8c, ++ 0x3f, 0x3f, 0x8f, 0xf4, 0x0e, 0x8b, 0x98, 0xcf, 0xb2, 0x77, 0xcc, 0xa4, ++ 0x57, 0x7e, 0xd2, 0xc8, 0xc0, 0x79, 0xec, 0x14, 0xd7, 0x0f, 0xbd, 0x39, ++ 0x8c, 0x7d, 0xca, 0xf5, 0x0b, 0xd4, 0x4f, 0x37, 0x26, 0x53, 0xf9, 0x05, ++ 0xd7, 0x07, 0x50, 0x9e, 0x6d, 0xcc, 0xa5, 0xf7, 0xe7, 0x1b, 0x3d, 0x54, ++ 0xff, 0xc4, 0xed, 0xdb, 0x8a, 0x7e, 0xe7, 0x6f, 0xfc, 0xd2, 0x82, 0x7d, ++ 0x69, 0x43, 0xa4, 0xc2, 0xb7, 0x80, 0x63, 0x95, 0xe4, 0xbb, 0x0d, 0x69, ++ 0x63, 0xb7, 0xfc, 0x95, 0xe3, 0x75, 0xc3, 0xdb, 0x7c, 0x61, 0x70, 0x78, ++ 0x6a, 0xda, 0x9a, 0x27, 0x71, 0x35, 0x8b, 0xad, 0x4a, 0xfb, 0xe4, 0x3e, ++ 0xe8, 0xcf, 0xab, 0x9e, 0xd6, 0x3c, 0x68, 0xb7, 0xf4, 0xa0, 0xd7, 0xe6, ++ 0xe0, 0xf0, 0x2c, 0x38, 0xaa, 0xaf, 0x07, 0x99, 0x17, 0xbd, 0xdd, 0x31, ++ 0x15, 0x62, 0xa2, 0x0e, 0xfa, 0x2b, 0xd7, 0x1b, 0xee, 0xb7, 0xfa, 0x76, ++ 0x62, 0xbc, 0x31, 0x1f, 0x9c, 0x4a, 0xd2, 0x79, 0x03, 0xef, 0xc1, 0xce, ++ 0xd7, 0x13, 0x79, 0xfb, 0xcf, 0x1a, 0x4b, 0x08, 0xae, 0xcf, 0x1b, 0xbd, ++ 0x04, 0xd7, 0x99, 0xc6, 0xc9, 0x54, 0xfe, 0xcd, 0xed, 0xdb, 0x8d, 0xf6, ++ 0x5e, 0xf6, 0xa5, 0x0d, 0xed, 0x6f, 0xde, 0xdd, 0x69, 0x49, 0xe5, 0xed, ++ 0xcb, 0xbd, 0x9a, 0x17, 0xeb, 0xf1, 0x3a, 0x2f, 0x0b, 0x04, 0x38, 0x3c, ++ 0x5b, 0xad, 0x42, 0xbe, 0x6f, 0xe5, 0xf2, 0x1d, 0xeb, 0x73, 0x42, 0xc1, ++ 0xad, 0x8f, 0xdf, 0x05, 0x71, 0xe1, 0xd6, 0xf7, 0x83, 0x0f, 0x67, 0x24, ++ 0x54, 0x95, 0x27, 0xf2, 0xe7, 0x53, 0x4b, 0x2a, 0x2d, 0x68, 0x37, 0xeb, ++ 0x2b, 0x2e, 0xd3, 0xdc, 0xbd, 0x7c, 0xf8, 0xcd, 0xeb, 0x50, 0xe0, 0xa3, ++ 0x4e, 0xd2, 0xe5, 0xdc, 0xcf, 0x35, 0xc2, 0xd3, 0xb9, 0xfd, 0x79, 0xb7, ++ 0x5c, 0xc3, 0xfb, 0xfb, 0xf9, 0x31, 0x33, 0x33, 0x73, 0xb8, 0xba, 0x2f, ++ 0x99, 0x08, 0xae, 0xee, 0xe3, 0x51, 0x01, 0x28, 0xad, 0xaa, 0xdd, 0xca, ++ 0x7d, 0x66, 0xd2, 0x27, 0x57, 0xa6, 0xd9, 0x02, 0xc0, 0xdf, 0xca, 0x7d, ++ 0x79, 0x83, 0xa0, 0x4f, 0x9d, 0xe1, 0x74, 0x63, 0x39, 0xbd, 0xe3, 0x9d, ++ 0x79, 0xee, 0xdb, 0x2e, 0x3d, 0x44, 0x8e, 0x9e, 0x49, 0x68, 0xfb, 0xaf, ++ 0x0f, 0x21, 0xa7, 0x7e, 0x2f, 0xe4, 0x14, 0xd7, 0x37, 0x3f, 0x7d, 0x0c, ++ 0x72, 0x6c, 0xc8, 0x60, 0x0f, 0xe8, 0x7e, 0xde, 0xca, 0xf5, 0x72, 0x20, ++ 0x9a, 0xd5, 0x47, 0x63, 0x1f, 0x5b, 0x66, 0x93, 0xeb, 0x8b, 0xcb, 0x19, ++ 0xd4, 0xcf, 0x44, 0x31, 0xd2, 0x47, 0xc7, 0x3e, 0x9f, 0x5a, 0x8a, 0xf5, ++ 0x82, 0xf1, 0x5c, 0xb6, 0x5e, 0x39, 0x94, 0xf3, 0xfc, 0x96, 0x8c, 0xef, ++ 0xba, 0x7a, 0xc7, 0xdb, 0xd5, 0xb6, 0xe0, 0xc3, 0xc7, 0x78, 0xfd, 0x5c, ++ 0xc0, 0xe4, 0xb7, 0xf2, 0x7d, 0xe6, 0x1c, 0x6b, 0x3b, 0xff, 0x33, 0xc8, ++ 0xd1, 0xed, 0x0e, 0x0f, 0xec, 0x83, 0x0d, 0x1a, 0x87, 0x07, 0xfb, 0xe8, ++ 0x8e, 0xc1, 0x54, 0xcf, 0xd5, 0x2c, 0x51, 0x0d, 0xc4, 0xcf, 0x01, 0x5a, ++ 0xaf, 0xb9, 0x9a, 0xcb, 0xd2, 0xc0, 0xe5, 0x4f, 0xed, 0x0b, 0x8f, 0x0e, ++ 0x06, 0x3f, 0xbd, 0xc2, 0x71, 0x50, 0xc2, 0xdf, 0xbf, 0xb2, 0x39, 0x9a, ++ 0xe4, 0xd3, 0x2b, 0x56, 0xcf, 0x89, 0x06, 0xf4, 0xf7, 0xb8, 0xe8, 0xef, ++ 0x27, 0x3f, 0xb8, 0xe7, 0x93, 0x03, 0x28, 0x1f, 0xac, 0x2b, 0xbe, 0x87, ++ 0x97, 0x17, 0xdd, 0x09, 0xd4, 0x4f, 0xf5, 0x7f, 0x2c, 0x1e, 0x81, 0xef, ++ 0xf9, 0x3e, 0xcd, 0x52, 0x78, 0x7f, 0xcf, 0xbe, 0xa4, 0x05, 0x23, 0xf9, ++ 0xfa, 0x2c, 0x68, 0x39, 0x74, 0x5f, 0x0a, 0x87, 0x6f, 0xe4, 0xb6, 0x4e, ++ 0xd3, 0x60, 0x5e, 0x16, 0x6d, 0xd7, 0x9a, 0x50, 0xe6, 0xa5, 0xdd, 0x74, ++ 0xcc, 0xcc, 0xdf, 0xff, 0xc5, 0xed, 0x12, 0x76, 0xeb, 0x6e, 0xb7, 0x39, ++ 0x15, 0xcb, 0x6a, 0x70, 0xe0, 0xc3, 0xeb, 0x69, 0xff, 0x36, 0xee, 0xeb, ++ 0xf9, 0x2d, 0x5f, 0x96, 0xc2, 0xbc, 0x54, 0xfb, 0xfb, 0x08, 0xad, 0xed, ++ 0x8b, 0x56, 0xd8, 0xc3, 0xe9, 0xc7, 0x8b, 0x75, 0xc2, 0x5f, 0x33, 0xc1, ++ 0xb1, 0xef, 0xe0, 0xf4, 0xf7, 0x6e, 0x67, 0x98, 0x07, 0xd7, 0x1c, 0x00, ++ 0x77, 0xa5, 0xcd, 0x43, 0xfb, 0x49, 0xc0, 0xdf, 0x0a, 0x3a, 0x9f, 0xd3, ++ 0x73, 0x3d, 0x0f, 0x60, 0x4d, 0xfb, 0xfc, 0x8f, 0x82, 0xbe, 0xe7, 0xf4, ++ 0x24, 0x0f, 0xf6, 0x97, 0xfd, 0x26, 0x7f, 0xec, 0x38, 0xb4, 0x3f, 0x61, ++ 0xa1, 0x79, 0xbe, 0xb4, 0xfd, 0xd7, 0xb1, 0x56, 0x5e, 0x8f, 0xdb, 0x6b, ++ 0x65, 0x91, 0xfc, 0x7d, 0x5d, 0x51, 0xd7, 0x24, 0xb4, 0xaf, 0x4b, 0x73, ++ 0x91, 0x1d, 0x9e, 0xf6, 0xc4, 0x0d, 0x93, 0x81, 0x9f, 0x65, 0x7b, 0xf7, ++ 0xb5, 0x52, 0x3f, 0xb5, 0x76, 0x8f, 0x86, 0x75, 0xb6, 0xef, 0xe2, 0xeb, ++ 0xa9, 0xb0, 0x87, 0x6e, 0x64, 0x9e, 0x6c, 0xf0, 0xdd, 0x5e, 0x51, 0xff, ++ 0x7e, 0x99, 0xd7, 0x03, 0x7e, 0xab, 0x69, 0xfd, 0xb3, 0xa8, 0xb7, 0xfb, ++ 0xa8, 0xee, 0x33, 0xfb, 0xdd, 0x16, 0xb4, 0xaf, 0x12, 0x7a, 0xce, 0x16, ++ 0xb9, 0x8f, 0xb1, 0x8e, 0x42, 0x92, 0x77, 0xc4, 0xca, 0xae, 0x5e, 0x7a, ++ 0x7d, 0x9f, 0xbf, 0xc6, 0xfb, 0xad, 0x6e, 0x7f, 0x4a, 0xbd, 0xa3, 0x77, ++ 0xff, 0xe3, 0xfb, 0xd6, 0x90, 0x0c, 0xfe, 0x3e, 0xc5, 0x26, 0xbf, 0x77, ++ 0x4e, 0x4f, 0xf7, 0xfd, 0x13, 0xfb, 0x96, 0x4d, 0xee, 0x43, 0xaa, 0xbf, ++ 0x2d, 0x36, 0xe6, 0x8f, 0xe4, 0xfd, 0xa4, 0xf1, 0xe7, 0x1a, 0xf6, 0x55, ++ 0x9b, 0xd8, 0x6f, 0x77, 0x70, 0xf9, 0x02, 0x7e, 0x51, 0xfb, 0x2d, 0x1f, ++ 0x37, 0x1f, 0xe3, 0xf2, 0xef, 0xbd, 0x90, 0x93, 0xa9, 0x7c, 0x73, 0x2d, ++ 0xe2, 0xf3, 0x49, 0xdd, 0x12, 0x11, 0xa0, 0x3d, 0xfd, 0x0a, 0xc7, 0x57, ++ 0x7a, 0xd2, 0xf2, 0x28, 0x21, 0xcf, 0x94, 0xfe, 0x31, 0x3b, 0xb1, 0xe9, ++ 0xd5, 0x0e, 0x8e, 0xd7, 0x3f, 0xc5, 0xea, 0x25, 0x19, 0xbc, 0xdd, 0x02, ++ 0xb9, 0x5f, 0x33, 0x8b, 0x27, 0x19, 0xf3, 0x3b, 0x19, 0xeb, 0xbd, 0x3a, ++ 0x83, 0xf6, 0xbf, 0xae, 0x74, 0xcc, 0x81, 0xef, 0x87, 0xd7, 0xa2, 0xbe, ++ 0xcc, 0xcc, 0xf5, 0xa7, 0xcc, 0x10, 0xfd, 0xc9, 0x7e, 0x65, 0xfb, 0x61, ++ 0x44, 0x9c, 0x77, 0x22, 0xbe, 0xbf, 0xd2, 0xf6, 0xe3, 0xa3, 0xfa, 0x96, ++ 0xbf, 0xe3, 0xbb, 0x4b, 0x48, 0xfe, 0xbe, 0x2a, 0xe5, 0xef, 0xaa, 0x3f, ++ 0x9b, 0x58, 0x11, 0xaf, 0xaf, 0x7a, 0x38, 0x82, 0xe4, 0x09, 0xed, 0x69, ++ 0x7d, 0xe0, 0xe5, 0x55, 0xbe, 0xde, 0x75, 0x2e, 0x5f, 0x7e, 0x01, 0xbf, ++ 0x01, 0x2f, 0xaf, 0xfd, 0x53, 0x87, 0x99, 0xec, 0x8f, 0xa3, 0xa6, 0xda, ++ 0xd7, 0xf9, 0x7e, 0x4a, 0x43, 0x67, 0xe0, 0x3f, 0x5d, 0x4d, 0x71, 0xa3, ++ 0xa9, 0xee, 0x05, 0x99, 0xaf, 0xfb, 0x93, 0xa9, 0x4f, 0xfb, 0x50, 0x95, ++ 0x9c, 0x4e, 0x95, 0xa0, 0x93, 0xf7, 0x2b, 0xa3, 0xbf, 0xe1, 0xfa, 0xaf, ++ 0x9c, 0x36, 0xea, 0xdf, 0x91, 0x70, 0x45, 0xf3, 0x35, 0xf7, 0x33, 0x5f, ++ 0x73, 0xac, 0x98, 0xef, 0x41, 0xcc, 0x97, 0xd3, 0x6e, 0xd5, 0x97, 0xc5, ++ 0x24, 0x2f, 0x0f, 0x5e, 0xe1, 0x3c, 0xd3, 0x22, 0xbc, 0x2b, 0x01, 0x5f, ++ 0xf8, 0x3c, 0x38, 0xdc, 0x0d, 0xa0, 0x47, 0x38, 0xdc, 0x3d, 0xfc, 0xdd, ++ 0x75, 0x65, 0x70, 0xdf, 0xad, 0x31, 0xbf, 0x09, 0xeb, 0xec, 0x4b, 0x5b, ++ 0x00, 0xeb, 0xec, 0x20, 0x07, 0x13, 0xeb, 0xf6, 0xe0, 0xe2, 0xfc, 0x00, ++ 0xd6, 0xf3, 0x7e, 0x9b, 0xa8, 0xfb, 0x63, 0x6d, 0xa4, 0x7f, 0x1e, 0x8c, ++ 0x61, 0x7e, 0xc8, 0x8f, 0x83, 0xd3, 0x92, 0x02, 0x7e, 0xec, 0xe7, 0x68, ++ 0x0f, 0xf9, 0x30, 0x90, 0x89, 0xf7, 0x91, 0xf2, 0xfb, 0x39, 0x49, 0xf4, ++ 0xfd, 0xe0, 0x08, 0xce, 0xff, 0xbc, 0xce, 0x6e, 0x8f, 0x92, 0xfd, 0xd7, ++ 0xbf, 0x55, 0x80, 0xf7, 0x6b, 0x52, 0x3d, 0x1c, 0x02, 0xae, 0xdf, 0x06, ++ 0x36, 0x66, 0x90, 0x7e, 0x6b, 0x26, 0xbf, 0xe1, 0x71, 0x29, 0xaf, 0x5b, ++ 0xe2, 0x83, 0xb7, 0x9b, 0xf9, 0xf3, 0x96, 0x2f, 0x73, 0x18, 0xc6, 0x39, ++ 0xce, 0x82, 0xa9, 0xcb, 0xd1, 0xae, 0x26, 0x8a, 0xe4, 0x50, 0x4b, 0xbc, ++ 0x37, 0x25, 0x81, 0xe3, 0x71, 0xff, 0xdf, 0xcd, 0xb4, 0x2f, 0xb4, 0x14, ++ 0xf1, 0xba, 0x83, 0xe4, 0x34, 0xf9, 0x77, 0x5a, 0xa6, 0x79, 0x53, 0xe2, ++ 0x79, 0x7d, 0xae, 0xa4, 0x4b, 0x4b, 0x6b, 0x60, 0xc7, 0x23, 0xe8, 0x6f, ++ 0x5a, 0xae, 0xc7, 0xcf, 0xc7, 0x19, 0x6c, 0x66, 0xf5, 0xd4, 0xce, 0x2d, ++ 0xfa, 0xf9, 0xd0, 0x2a, 0xbe, 0xfb, 0x9d, 0xa4, 0x0b, 0x5f, 0xc7, 0xb4, ++ 0xce, 0x8f, 0x66, 0xcc, 0xdf, 0x03, 0xfc, 0xeb, 0x53, 0xa3, 0x2d, 0xf0, ++ 0x8b, 0x70, 0x8c, 0xa7, 0x68, 0x1c, 0xfe, 0xc7, 0xaa, 0xb3, 0x19, 0xc9, ++ 0x4b, 0xe9, 0xf7, 0x9a, 0x2d, 0x69, 0x30, 0xb7, 0x97, 0x0f, 0xbc, 0xf6, ++ 0xb1, 0xd0, 0x6b, 0xc5, 0xdf, 0x9c, 0x05, 0x3b, 0x22, 0x21, 0x8f, 0x67, ++ 0xd4, 0x44, 0x92, 0x5f, 0xea, 0x78, 0xcd, 0x7d, 0x31, 0x2e, 0x3e, 0xde, ++ 0x0c, 0xdd, 0x1c, 0x8c, 0x80, 0xfe, 0x77, 0x5b, 0xb9, 0xc1, 0xef, 0x74, ++ 0x34, 0xc3, 0x4b, 0xe3, 0x72, 0xc3, 0x42, 0xda, 0x09, 0xc1, 0x2a, 0xe0, ++ 0xf1, 0xe7, 0x5d, 0x76, 0x06, 0xb9, 0xdc, 0x1f, 0x3d, 0xeb, 0xda, 0x26, ++ 0x24, 0x9e, 0x0a, 0xe1, 0x87, 0x1a, 0x9b, 0x90, 0x1f, 0xa7, 0xa5, 0x3e, ++ 0xf4, 0x72, 0x8c, 0xfe, 0x0b, 0xf0, 0xcd, 0xf2, 0x03, 0x37, 0x26, 0x9e, ++ 0x0a, 0xd1, 0xf7, 0xaa, 0x17, 0x94, 0xe7, 0x40, 0x7f, 0x56, 0xe3, 0x7d, ++ 0x13, 0xdf, 0x34, 0x81, 0x4e, 0x23, 0x69, 0xbd, 0xfa, 0x4d, 0xe0, 0x8f, ++ 0xb6, 0x48, 0xa2, 0xff, 0xe4, 0x5b, 0xed, 0x44, 0xef, 0x6e, 0x87, 0xe9, ++ 0x29, 0xf8, 0x25, 0xef, 0x94, 0xf2, 0xaa, 0x09, 0x86, 0x30, 0x7f, 0xde, ++ 0xb4, 0x2f, 0x22, 0x70, 0x1f, 0x7f, 0xb6, 0x3c, 0x22, 0x38, 0x13, 0xf2, ++ 0x8a, 0xd3, 0xff, 0xe9, 0x9d, 0xa0, 0xeb, 0xab, 0x91, 0x44, 0xff, 0x5a, ++ 0x9b, 0xe0, 0xa7, 0xda, 0x9f, 0xe5, 0x11, 0x7f, 0xed, 0xb7, 0x79, 0xdd, ++ 0xeb, 0xd0, 0xff, 0xcf, 0x23, 0x88, 0xee, 0xb5, 0xb1, 0xae, 0x38, 0x7a, ++ 0xff, 0xcb, 0x44, 0x26, 0xf9, 0x8f, 0xf4, 0x86, 0xda, 0xa8, 0x60, 0x4e, ++ 0x3c, 0xc7, 0xe7, 0xc6, 0x68, 0xfd, 0x43, 0xe0, 0x8d, 0xf3, 0x1d, 0xf9, ++ 0x83, 0x6b, 0x6d, 0xe2, 0xf9, 0x09, 0xc9, 0x57, 0x27, 0x78, 0x1f, 0x80, ++ 0xc3, 0x5f, 0x1f, 0x43, 0xfc, 0xc8, 0x64, 0x5d, 0xff, 0x6e, 0x22, 0xd9, ++ 0x53, 0x5c, 0x1f, 0x25, 0xfe, 0xd5, 0x1f, 0xca, 0xa3, 0xba, 0x6e, 0xf3, ++ 0xa6, 0x2c, 0xc0, 0xfa, 0x58, 0x19, 0x4d, 0xf0, 0x9d, 0x90, 0xfe, 0xb4, ++ 0x13, 0xb5, 0xf1, 0xc4, 0xdf, 0x15, 0x0f, 0x2d, 0x7d, 0x9b, 0x71, 0x7a, ++ 0x9e, 0xf0, 0xed, 0xbc, 0x3f, 0x87, 0xb7, 0x3b, 0x71, 0xd0, 0xea, 0xc1, ++ 0xbe, 0xf4, 0x71, 0x83, 0x39, 0x68, 0xe3, 0x74, 0x3d, 0xbf, 0xfa, 0xe4, ++ 0xd8, 0xad, 0xbc, 0xde, 0x71, 0xdf, 0x47, 0xe9, 0x7a, 0x88, 0x1f, 0xad, ++ 0xe2, 0xbe, 0xba, 0x29, 0xf8, 0xae, 0x62, 0xc9, 0xea, 0xa9, 0xd8, 0x2f, ++ 0xfb, 0xc3, 0x77, 0x45, 0x6d, 0x04, 0x97, 0xb9, 0xbd, 0x74, 0xb2, 0x66, ++ 0x7a, 0xff, 0x04, 0xfa, 0xb9, 0x33, 0xf5, 0xff, 0x8d, 0x79, 0x2e, 0xcf, ++ 0xef, 0x58, 0x08, 0xb9, 0x77, 0xde, 0xd6, 0xfe, 0x04, 0xec, 0x83, 0x0f, ++ 0xe3, 0xf4, 0xbf, 0xe2, 0xfd, 0x85, 0x97, 0x3f, 0xdb, 0x49, 0xf2, 0xd0, ++ 0xd2, 0x95, 0x03, 0xfd, 0x7c, 0x99, 0x85, 0xf3, 0x01, 0xf8, 0x52, 0xee, ++ 0x9f, 0xcb, 0x25, 0x5f, 0x06, 0x32, 0x75, 0x96, 0x39, 0x86, 0xf0, 0x47, ++ 0xfa, 0x78, 0x74, 0x7e, 0xbb, 0x90, 0x7b, 0xab, 0xaf, 0x4c, 0xce, 0x7f, ++ 0x71, 0x70, 0xc7, 0x7e, 0x8d, 0x8f, 0xb3, 0x34, 0xea, 0xe0, 0x32, 0x2a, ++ 0xcd, 0x81, 0x42, 0xf4, 0x73, 0x46, 0x0b, 0xc6, 0x6a, 0x99, 0xc0, 0x1f, ++ 0xd7, 0xe3, 0x78, 0x7f, 0x67, 0x9d, 0xc1, 0x58, 0xd0, 0x41, 0x97, 0x76, ++ 0xd3, 0xd2, 0x5d, 0xc6, 0x79, 0xe1, 0x0f, 0x7e, 0x95, 0xa5, 0xf8, 0x07, ++ 0xff, 0x6e, 0x69, 0x9b, 0x99, 0xfc, 0x2a, 0x1c, 0x42, 0x1b, 0xe0, 0x5f, ++ 0x0a, 0x4f, 0xaf, 0x21, 0x9e, 0x20, 0xe4, 0x0a, 0xef, 0xe7, 0x29, 0x5a, ++ 0x87, 0x8e, 0x8f, 0xe7, 0x7d, 0x97, 0xe3, 0x7f, 0xc9, 0xd3, 0xc3, 0x8b, ++ 0xa1, 0x4f, 0x2e, 0x8d, 0x3f, 0xf0, 0x83, 0x6b, 0xa8, 0x1d, 0xff, 0x4e, ++ 0xf1, 0xb9, 0xf9, 0xf2, 0xba, 0x9a, 0xcf, 0xe5, 0xf0, 0x88, 0xf9, 0x9d, ++ 0x95, 0x7c, 0x7e, 0x96, 0x49, 0x39, 0x38, 0xdb, 0xd6, 0x63, 0x87, 0x43, ++ 0x0f, 0x3a, 0xff, 0xdc, 0x20, 0x03, 0xdf, 0x9c, 0x7f, 0x7a, 0x38, 0xd5, ++ 0xbf, 0xd0, 0xba, 0xb4, 0x28, 0x0e, 0xd7, 0x79, 0x29, 0x8f, 0x98, 0xa7, ++ 0x6d, 0xec, 0x34, 0x18, 0x10, 0xde, 0xb6, 0xb1, 0xd0, 0x67, 0x1f, 0x91, ++ 0xcf, 0x97, 0x26, 0xb6, 0x8d, 0x85, 0xfc, 0x51, 0xf2, 0x88, 0xd9, 0xdb, ++ 0x0a, 0xc9, 0xae, 0xce, 0x6d, 0x2b, 0x84, 0x3d, 0xa9, 0xe4, 0x19, 0xf3, ++ 0xb5, 0xe5, 0xd0, 0xf3, 0x40, 0x5b, 0x0e, 0xbe, 0xdf, 0x6f, 0x12, 0x7e, ++ 0x0a, 0xfa, 0xc3, 0xbc, 0x9f, 0x4d, 0x6d, 0x25, 0x3c, 0xd8, 0xc5, 0x7a, ++ 0x5c, 0xf2, 0x6c, 0x1e, 0xe1, 0x45, 0x8d, 0x13, 0x4e, 0xbf, 0xf0, 0xf9, ++ 0x5e, 0x9f, 0x29, 0xfc, 0xdc, 0x1c, 0xde, 0x3b, 0x7d, 0xbc, 0xfd, 0xb0, ++ 0xad, 0x36, 0xc3, 0xfb, 0xe1, 0x01, 0x63, 0xfd, 0x06, 0xd9, 0x7e, 0x68, ++ 0x18, 0x5d, 0x06, 0x9b, 0xbb, 0x0e, 0x45, 0x40, 0xde, 0xff, 0x98, 0xd1, ++ 0x7a, 0x0d, 0x1f, 0x77, 0xaa, 0xfc, 0xee, 0x99, 0x67, 0x7a, 0xe8, 0x60, ++ 0x96, 0xf6, 0x22, 0x73, 0x29, 0xfa, 0xbb, 0x84, 0xbe, 0x6d, 0x05, 0xbe, ++ 0x7f, 0xd7, 0x83, 0xef, 0xbb, 0x52, 0xb9, 0x3c, 0x5d, 0x8a, 0x39, 0x66, ++ 0xf4, 0xce, 0x7f, 0x7f, 0x91, 0x9e, 0x0a, 0xb9, 0x7f, 0xde, 0x24, 0xfc, ++ 0xd4, 0xfb, 0xe3, 0x79, 0x3d, 0x1f, 0x7a, 0x8e, 0xc0, 0xa7, 0xaa, 0x2b, ++ 0x3c, 0x86, 0xf3, 0xd1, 0x7d, 0xbf, 0x5b, 0x98, 0x8a, 0x78, 0xca, 0x3d, ++ 0x99, 0x26, 0xa9, 0x54, 0x7a, 0x06, 0x81, 0xdf, 0x9a, 0x20, 0x2f, 0xb9, ++ 0xbc, 0x68, 0xb2, 0x0a, 0x7c, 0x7c, 0xd1, 0x58, 0x33, 0xea, 0x94, 0x05, ++ 0xf6, 0x68, 0x7d, 0x4a, 0xb5, 0xa5, 0x77, 0x3e, 0x0b, 0xb7, 0x16, 0xd9, ++ 0xb1, 0x5e, 0x16, 0x6d, 0x2b, 0xb2, 0xcf, 0x0f, 0xb1, 0x77, 0x9a, 0x76, ++ 0x8d, 0x3a, 0xe6, 0xe2, 0x74, 0x39, 0xbb, 0xcb, 0x42, 0x6e, 0x83, 0x26, ++ 0x4b, 0xe0, 0x07, 0xd0, 0xa3, 0x9b, 0x76, 0x99, 0xdb, 0xfc, 0x8c, 0xde, ++ 0xdb, 0xbd, 0xbc, 0xfd, 0x59, 0xc7, 0xe1, 0x77, 0xd0, 0x6e, 0xe1, 0xb6, ++ 0xf8, 0x62, 0xe8, 0xbd, 0xea, 0xfb, 0x45, 0x5b, 0xef, 0x4e, 0xa9, 0x0e, ++ 0xc1, 0x77, 0xde, 0x2e, 0x23, 0xfe, 0x0b, 0xda, 0x8c, 0x75, 0xf8, 0xa3, ++ 0x43, 0xeb, 0x4d, 0xd0, 0x05, 0xc7, 0xfc, 0xf3, 0xdf, 0x15, 0x05, 0x8d, ++ 0xf5, 0x51, 0xc7, 0x8c, 0xf5, 0xcf, 0xde, 0xbf, 0x6b, 0x26, 0xd8, 0xf8, ++ 0xa5, 0x12, 0xc1, 0xef, 0xa7, 0x03, 0x31, 0x01, 0xc4, 0xa9, 0x6a, 0x3e, ++ 0x9a, 0x74, 0x0c, 0xfb, 0xda, 0xe9, 0xfd, 0x2f, 0xc5, 0x82, 0x3e, 0x4b, ++ 0x7f, 0x5f, 0xfd, 0x3a, 0xec, 0x96, 0x45, 0x5b, 0x8d, 0x7c, 0xc6, 0xe9, ++ 0xa6, 0x41, 0xaf, 0xf7, 0xef, 0xd4, 0x88, 0x3f, 0x16, 0x07, 0xc2, 0xd7, ++ 0x9d, 0x5c, 0xef, 0x97, 0xad, 0xc7, 0x35, 0xca, 0xaf, 0x99, 0x1b, 0xca, ++ 0x27, 0xe1, 0xf4, 0x3c, 0xc3, 0xda, 0x66, 0x7a, 0x39, 0x3f, 0xd5, 0x36, ++ 0xac, 0x1c, 0x85, 0x78, 0x48, 0xcd, 0x14, 0xce, 0xb8, 0x1c, 0x9e, 0xab, ++ 0xdb, 0x36, 0xdb, 0x10, 0x37, 0x08, 0x1f, 0xaf, 0xbf, 0x75, 0xcf, 0x1c, ++ 0x5e, 0x17, 0xfc, 0x55, 0x95, 0x25, 0xe2, 0xdd, 0xb8, 0x86, 0x52, 0x76, ++ 0x12, 0x4e, 0xdf, 0x4d, 0xbf, 0x9e, 0x84, 0xf5, 0x56, 0xf9, 0x7d, 0x8d, ++ 0xf6, 0xff, 0xca, 0x17, 0x87, 0x1d, 0x85, 0xfc, 0xee, 0xdc, 0x33, 0xe7, ++ 0x26, 0x2a, 0x67, 0x4e, 0x26, 0x3c, 0x28, 0xff, 0xd9, 0xa2, 0x83, 0x5a, ++ 0x30, 0x86, 0xd7, 0x9d, 0x25, 0xae, 0x03, 0x1d, 0xfc, 0xbb, 0x05, 0x01, ++ 0x8d, 0xf6, 0x87, 0xf9, 0x6b, 0x23, 0x7a, 0xe5, 0x10, 0xff, 0x7f, 0xf5, ++ 0xa6, 0x30, 0x38, 0x5a, 0x42, 0xde, 0x73, 0xf8, 0x17, 0x1d, 0x38, 0xf4, ++ 0x17, 0x8d, 0xf7, 0x5f, 0xb3, 0xcd, 0xf8, 0xdd, 0x62, 0x8e, 0x2f, 0xc8, ++ 0xfd, 0x25, 0xdb, 0xff, 0x11, 0x11, 0xfa, 0x5c, 0xd9, 0x7d, 0xe3, 0x0e, ++ 0xb6, 0x9a, 0x31, 0xef, 0x05, 0x0a, 0x7e, 0xff, 0x75, 0x0c, 0xf3, 0x12, ++ 0x21, 0x48, 0x2e, 0x3a, 0xa4, 0xbe, 0x72, 0x0a, 0x15, 0x2e, 0xef, 0xa3, ++ 0x13, 0x7c, 0x87, 0x32, 0xf9, 0xfc, 0xc7, 0xb5, 0x88, 0xef, 0xb8, 0xc0, ++ 0xaa, 0xc4, 0x7c, 0xeb, 0x1c, 0x36, 0x17, 0xe6, 0x5b, 0x67, 0x67, 0xc1, ++ 0x68, 0x0e, 0xc7, 0xb1, 0x18, 0x9b, 0xd7, 0xc9, 0x9f, 0x5f, 0xdc, 0x1a, ++ 0x43, 0xfe, 0xa9, 0x85, 0x11, 0x5c, 0x2f, 0x2c, 0xa6, 0x92, 0x45, 0x16, ++ 0xe3, 0x3b, 0x0f, 0xed, 0xd3, 0x9f, 0xbe, 0x6b, 0x26, 0x7d, 0xa5, 0x0e, ++ 0x63, 0xa3, 0x9f, 0x27, 0x35, 0xb2, 0x7f, 0xea, 0xe0, 0x6c, 0x44, 0xfd, ++ 0xc7, 0xa2, 0xbe, 0x98, 0x05, 0x69, 0x1e, 0xe0, 0x17, 0x6f, 0xe8, 0xfc, ++ 0x02, 0xc6, 0x3a, 0x6b, 0x16, 0x76, 0x53, 0xad, 0x25, 0x78, 0x08, 0xf8, ++ 0x58, 0xc2, 0x3a, 0x84, 0xdd, 0xc3, 0xe9, 0xe8, 0x0d, 0x89, 0xc7, 0xd5, ++ 0xf2, 0x79, 0x1e, 0x4f, 0x80, 0x3e, 0x64, 0xfc, 0x7e, 0x39, 0x6b, 0xa3, ++ 0xf6, 0xcb, 0x0f, 0xfc, 0x23, 0x22, 0xf4, 0x79, 0x88, 0x9f, 0x94, 0xec, ++ 0x39, 0x65, 0x57, 0x9a, 0x6d, 0xcc, 0x0b, 0xfd, 0xd8, 0x7c, 0x6f, 0x14, ++ 0xed, 0xf7, 0x5c, 0x10, 0x47, 0x81, 0x3f, 0xd7, 0x69, 0xde, 0x47, 0xed, ++ 0x66, 0x94, 0x62, 0x5e, 0xfe, 0xcd, 0x42, 0xff, 0x99, 0xdb, 0x2a, 0xf6, ++ 0x0b, 0xae, 0x9f, 0xe6, 0x00, 0x3f, 0x2d, 0x9b, 0x87, 0x7b, 0xa0, 0xa7, ++ 0xcc, 0xe5, 0x7a, 0x76, 0x24, 0xf4, 0x88, 0xc5, 0x51, 0xd4, 0xae, 0x25, ++ 0x9e, 0x91, 0x7f, 0xa5, 0x65, 0x4e, 0x8e, 0xd0, 0xb3, 0xff, 0xfe, 0x62, ++ 0x10, 0xe3, 0x74, 0x3d, 0xac, 0x91, 0x7f, 0xa4, 0xa5, 0x48, 0xf4, 0xdb, ++ 0xf2, 0xe0, 0x70, 0x7a, 0x0f, 0x79, 0xa8, 0xd1, 0x38, 0x11, 0xa4, 0xb7, ++ 0xb4, 0x4c, 0x53, 0xef, 0xd3, 0x48, 0x4f, 0xfa, 0x10, 0xa0, 0xa5, 0x40, ++ 0xcf, 0x95, 0xcf, 0x07, 0xba, 0xe8, 0xf9, 0x60, 0xb3, 0x37, 0x07, 0xfa, ++ 0x3a, 0xfb, 0x61, 0x24, 0xd9, 0xfb, 0x4a, 0xaf, 0xfd, 0x49, 0x82, 0xfe, ++ 0x0f, 0xec, 0xfb, 0x6a, 0xbe, 0x4a, 0x0f, 0x66, 0x35, 0x57, 0xa6, 0xff, ++ 0xed, 0x90, 0xfb, 0x5d, 0xd7, 0x66, 0x11, 0xff, 0x3d, 0xa5, 0xf9, 0x5e, ++ 0x37, 0x85, 0xe8, 0xa5, 0xce, 0x2c, 0x21, 0xe7, 0xc7, 0x96, 0x7a, 0x77, ++ 0xca, 0x76, 0x14, 0x07, 0xa8, 0x36, 0x4d, 0x7b, 0xe0, 0x7a, 0x0e, 0x4f, ++ 0xf5, 0x23, 0x26, 0x57, 0x93, 0xbb, 0x17, 0xef, 0xcc, 0xeb, 0xcd, 0xc1, ++ 0xfc, 0x4f, 0x6d, 0x8e, 0x2c, 0x06, 0x9f, 0x8d, 0x2d, 0x15, 0xfe, 0x9e, ++ 0x13, 0x45, 0x42, 0x6e, 0x47, 0x8f, 0x66, 0xde, 0x00, 0x2f, 0x53, 0x64, ++ 0xbf, 0x29, 0x59, 0x26, 0x43, 0x99, 0x1c, 0xc5, 0xf9, 0x8f, 0xf7, 0x73, ++ 0xaa, 0x5c, 0xf8, 0x87, 0x63, 0x46, 0xfb, 0xc8, 0xcf, 0xc6, 0x75, 0x36, ++ 0x92, 0xdf, 0xe1, 0xf3, 0xc8, 0x96, 0xfd, 0x54, 0xdb, 0x7c, 0xbf, 0xbc, ++ 0xb6, 0x0f, 0x78, 0x7a, 0xf8, 0xa0, 0x4c, 0xe8, 0x19, 0xa7, 0x56, 0x68, ++ 0x4f, 0x09, 0xb8, 0x38, 0x5d, 0x79, 0x7d, 0xec, 0x7f, 0x44, 0x92, 0x7f, ++ 0xee, 0x94, 0xdc, 0x57, 0x14, 0xfe, 0x39, 0xdf, 0x8c, 0xa1, 0x7d, 0x5a, ++ 0xc5, 0x49, 0x25, 0x9f, 0x6c, 0x06, 0xfd, 0xb1, 0x9f, 0x2d, 0x16, 0x76, ++ 0x50, 0x2f, 0x9f, 0x18, 0xf9, 0x60, 0xae, 0x26, 0xf0, 0xca, 0x1e, 0x14, ++ 0xfa, 0x69, 0x4b, 0xbc, 0xa8, 0x2b, 0x3e, 0xe0, 0xf6, 0x0e, 0xfb, 0x2b, ++ 0xf8, 0xa4, 0x9c, 0x11, 0xde, 0xfb, 0xb3, 0x7b, 0xd4, 0x3c, 0x5b, 0x5a, ++ 0xc5, 0x7b, 0x4e, 0xef, 0x6b, 0xb3, 0xc6, 0x5c, 0x6e, 0xf7, 0x28, 0x7a, ++ 0x33, 0x4b, 0x60, 0x0c, 0xec, 0xc6, 0xfe, 0xe8, 0x3d, 0xbf, 0x24, 0x7e, ++ 0xac, 0x66, 0xa2, 0xb8, 0xb5, 0x1f, 0x71, 0x6b, 0xec, 0x75, 0x84, 0x97, ++ 0xfb, 0x2d, 0x81, 0xfb, 0x38, 0x1c, 0x43, 0x2c, 0x02, 0xff, 0x69, 0x16, ++ 0xc1, 0x5f, 0x5c, 0x2a, 0xfb, 0xa3, 0x8a, 0xa9, 0xbd, 0xd7, 0xc6, 0xeb, ++ 0x95, 0x3f, 0x5c, 0xc4, 0xbc, 0xbc, 0x7d, 0x65, 0x2a, 0x23, 0x7f, 0x10, ++ 0x6f, 0xcf, 0xe2, 0xd0, 0x9e, 0x77, 0x63, 0x86, 0x7f, 0x84, 0x97, 0xf8, ++ 0xae, 0x32, 0x4e, 0xf4, 0x5b, 0x39, 0x88, 0x91, 0x9d, 0x40, 0x7f, 0x5c, ++ 0x5e, 0x65, 0xa1, 0xcc, 0xa0, 0x7e, 0xbd, 0xa6, 0x04, 0xf1, 0x7d, 0x6c, ++ 0x31, 0x7d, 0xef, 0x37, 0x89, 0xef, 0xbd, 0x16, 0x5e, 0x0e, 0xcd, 0x14, ++ 0xfa, 0x7c, 0xd7, 0xba, 0x88, 0xc0, 0x53, 0x90, 0xcf, 0x1b, 0xd2, 0x72, ++ 0xc0, 0x07, 0x53, 0x4a, 0x8d, 0x7c, 0xd0, 0x26, 0xf9, 0x46, 0x95, 0xa9, ++ 0xd9, 0x2e, 0x95, 0xe7, 0x90, 0x8c, 0xf5, 0x3d, 0x7f, 0xed, 0x70, 0xda, ++ 0x2f, 0x9a, 0x22, 0x7d, 0x75, 0xfb, 0x40, 0xb7, 0xe7, 0x84, 0xfe, 0x5f, ++ 0xb9, 0xfe, 0x8e, 0x9b, 0xc7, 0x00, 0xbe, 0xe7, 0x13, 0x3d, 0x00, 0xef, ++ 0x8b, 0xa9, 0x7b, 0x28, 0xde, 0x30, 0x7f, 0xed, 0x9c, 0xbb, 0x3f, 0x80, ++ 0xdd, 0xb0, 0x2b, 0x92, 0x9e, 0x97, 0x64, 0xeb, 0x4b, 0xb3, 0xa0, 0x1f, ++ 0x6b, 0xae, 0x79, 0xfb, 0xf8, 0x83, 0xf9, 0x33, 0x8e, 0xd8, 0x92, 0xf9, ++ 0xf7, 0x7a, 0xdb, 0xb4, 0x73, 0x3f, 0xe3, 0xe5, 0x54, 0xff, 0x9e, 0x77, ++ 0xa0, 0x0f, 0x4c, 0xbd, 0xcd, 0x4c, 0xed, 0xa7, 0x32, 0xe1, 0x1f, 0x65, ++ 0x6b, 0xc5, 0x38, 0x37, 0xfb, 0xbf, 0xb4, 0x24, 0xf3, 0xfe, 0x6e, 0x1e, ++ 0xaf, 0x51, 0xce, 0x40, 0x67, 0xa4, 0x33, 0x7d, 0x05, 0xf2, 0x16, 0x24, ++ 0xfd, 0xbe, 0x0d, 0xfe, 0x85, 0x1d, 0x16, 0xc9, 0x66, 0xbf, 0xe0, 0x00, ++ 0x5c, 0x69, 0x39, 0x19, 0xfc, 0xf9, 0xcd, 0xd0, 0x30, 0xfb, 0x88, 0x5f, ++ 0xed, 0x93, 0xfc, 0xde, 0x34, 0x41, 0xdb, 0x06, 0xbd, 0x66, 0xe8, 0x44, ++ 0xb1, 0xbe, 0x54, 0x7b, 0xf4, 0x83, 0x7e, 0x5f, 0xc9, 0x12, 0x7a, 0xd0, ++ 0x7d, 0xb2, 0x54, 0x75, 0x8e, 0x57, 0x6a, 0x5f, 0xbd, 0x31, 0xa2, 0x33, ++ 0x33, 0x16, 0xa5, 0x35, 0x38, 0x0c, 0xfb, 0x5d, 0x4e, 0xe9, 0x7a, 0xf0, ++ 0xd5, 0x94, 0x0c, 0x36, 0x69, 0x2b, 0xf0, 0x7e, 0x8f, 0x19, 0xb9, 0x0a, ++ 0x1c, 0xde, 0xae, 0x4a, 0x5a, 0xf7, 0x31, 0x39, 0x2e, 0xf0, 0xa9, 0xce, ++ 0x58, 0x90, 0xf2, 0x23, 0x02, 0xc3, 0x89, 0xaf, 0x3b, 0x27, 0x74, 0x75, ++ 0x6e, 0xe0, 0xf5, 0xce, 0xd6, 0x61, 0x1e, 0xf2, 0xf9, 0x48, 0x3b, 0x7a, ++ 0x01, 0xec, 0x2b, 0x17, 0xde, 0x0b, 0x39, 0xa6, 0xe4, 0xcb, 0x09, 0x67, ++ 0x47, 0x0c, 0xf1, 0xab, 0xb4, 0xab, 0xab, 0x24, 0x6b, 0xfc, 0xb1, 0x61, ++ 0xe2, 0x23, 0x57, 0xf1, 0xf6, 0x55, 0x0e, 0x5b, 0x27, 0xf6, 0x83, 0x05, ++ 0x0f, 0x4f, 0x8f, 0x45, 0x9e, 0x49, 0x55, 0x8b, 0x59, 0xe4, 0x73, 0x6c, ++ 0x32, 0xda, 0xd5, 0xdc, 0xfe, 0x0d, 0x00, 0xde, 0x70, 0x3b, 0x39, 0xdc, ++ 0x1e, 0x06, 0xcf, 0x80, 0x8f, 0xaa, 0x37, 0x69, 0xc4, 0x87, 0x43, 0x9b, ++ 0x3c, 0xb6, 0x14, 0x92, 0x63, 0x9a, 0x13, 0xf3, 0xab, 0x76, 0x04, 0xb3, ++ 0x20, 0xdf, 0xab, 0x3d, 0x91, 0x1e, 0xbc, 0x3f, 0xdb, 0xe8, 0x4d, 0x3c, ++ 0x95, 0x85, 0x78, 0xc4, 0x64, 0x2a, 0xd9, 0x57, 0x1c, 0xef, 0x63, 0xe1, ++ 0x8f, 0x65, 0x94, 0xc4, 0xf1, 0x62, 0xb6, 0xfe, 0x1c, 0xf8, 0xa1, 0xb2, ++ 0xb9, 0x92, 0xec, 0xc5, 0xe8, 0x7c, 0x9d, 0xe4, 0xd3, 0xd9, 0x2c, 0xc1, ++ 0x77, 0x53, 0xe0, 0x4f, 0x84, 0xbc, 0xb1, 0x74, 0xa4, 0x60, 0x1d, 0xce, ++ 0x53, 0xcf, 0x13, 0x9c, 0x39, 0x0e, 0xe2, 0xe7, 0x48, 0x06, 0x3c, 0x74, ++ 0x5a, 0x9d, 0x39, 0x80, 0xab, 0x73, 0x5d, 0xa4, 0x09, 0xfb, 0xe6, 0x94, ++ 0xfb, 0x04, 0x5f, 0xf3, 0x75, 0x66, 0xb7, 0xf0, 0xef, 0xef, 0xb7, 0xb0, ++ 0x28, 0xac, 0xf7, 0xef, 0xe2, 0x7b, 0x3e, 0x5e, 0xc5, 0x1a, 0x8b, 0xaf, ++ 0x95, 0xd7, 0x87, 0xd8, 0x99, 0x25, 0x26, 0x01, 0x7c, 0x55, 0x44, 0x7c, ++ 0x9d, 0x39, 0x4c, 0xbf, 0x0f, 0xf0, 0x9c, 0xfe, 0x1e, 0x2b, 0xc1, 0xfe, ++ 0x5f, 0xb5, 0x69, 0x33, 0xc1, 0xa3, 0xf8, 0x82, 0x59, 0xda, 0xcb, 0x12, ++ 0xa1, 0xdf, 0xed, 0x70, 0x17, 0x3f, 0xc0, 0x7a, 0xf9, 0x28, 0x73, 0x58, ++ 0xe9, 0x51, 0xe0, 0xaf, 0x87, 0x1f, 0x6e, 0xd3, 0x88, 0x0f, 0x78, 0x79, ++ 0x28, 0x93, 0xf8, 0xe1, 0xd6, 0x37, 0x89, 0x1f, 0x4a, 0x83, 0x59, 0x2b, ++ 0xf3, 0x11, 0xc7, 0xaa, 0x65, 0x5e, 0xc4, 0x11, 0x92, 0x99, 0x07, 0xfe, ++ 0x80, 0x6e, 0xd6, 0x45, 0xfa, 0x44, 0x37, 0xd7, 0x27, 0x20, 0xcf, 0x94, ++ 0x3c, 0x51, 0x72, 0x83, 0xf3, 0x81, 0x17, 0x79, 0x3d, 0x8a, 0xbe, 0x4a, ++ 0x7e, 0xec, 0x6c, 0xe4, 0x20, 0x71, 0xbc, 0xee, 0x6a, 0xb4, 0x53, 0xf9, ++ 0x4c, 0xa3, 0x93, 0x59, 0xb8, 0x0c, 0xd8, 0xdd, 0x98, 0x4c, 0xf5, 0xe7, ++ 0x1b, 0x5d, 0x54, 0xb6, 0x35, 0xe6, 0xd2, 0xf3, 0x17, 0x1a, 0x3d, 0x54, ++ 0xdf, 0xdb, 0x58, 0x42, 0xf5, 0xfd, 0x8d, 0x5e, 0xaa, 0x1f, 0x68, 0x9c, ++ 0x4c, 0xe5, 0xcf, 0x1a, 0x7d, 0xf4, 0x9c, 0xe3, 0x85, 0xe4, 0x90, 0x92, ++ 0x2b, 0x4a, 0x1e, 0x29, 0x7e, 0x52, 0x72, 0x29, 0x9c, 0x8f, 0xe6, 0x71, ++ 0xf4, 0x5e, 0x57, 0x4c, 0xdf, 0x93, 0xdc, 0x53, 0xf2, 0x0e, 0xf3, 0x30, ++ 0x15, 0xf7, 0xca, 0x23, 0x45, 0xdf, 0x0c, 0xcd, 0xe7, 0x4f, 0x76, 0x43, ++ 0x8e, 0x75, 0xcc, 0x81, 0xbc, 0x28, 0x37, 0x9f, 0x7d, 0xee, 0x25, 0xf8, ++ 0x49, 0x6a, 0x1c, 0x9e, 0x08, 0x17, 0xf0, 0x22, 0xe4, 0x5e, 0xb7, 0xc3, ++ 0x4e, 0x72, 0x3e, 0xdd, 0xc6, 0x0e, 0xc0, 0x5e, 0x6f, 0x5a, 0xe1, 0xed, ++ 0xdc, 0x10, 0xb2, 0xaf, 0xde, 0x5e, 0xa3, 0x31, 0x4b, 0x08, 0x9f, 0xde, ++ 0x51, 0x1f, 0xc9, 0x2c, 0x21, 0x7c, 0x7c, 0x67, 0x43, 0xbc, 0xa1, 0x5e, ++ 0xd1, 0xf0, 0xde, 0x6b, 0x83, 0x78, 0xff, 0x5a, 0xbc, 0xfe, 0xdf, 0xa0, ++ 0xcb, 0x89, 0x7b, 0x3f, 0x7d, 0xfc, 0xb7, 0xfc, 0xf9, 0x93, 0xf7, 0x7e, ++ 0x91, 0x0d, 0x7a, 0x73, 0x38, 0x76, 0x6c, 0xc1, 0xb8, 0xab, 0xa3, 0x7a, ++ 0xe0, 0x48, 0x40, 0x7d, 0xad, 0x95, 0xf4, 0x87, 0xa1, 0x51, 0xc2, 0x0e, ++ 0xc2, 0x1f, 0xe8, 0x32, 0x9f, 0x89, 0xf5, 0xf9, 0xe4, 0xbd, 0x7f, 0xa5, ++ 0xf5, 0xdd, 0xd9, 0x10, 0xe1, 0x32, 0xf3, 0x76, 0xf3, 0x1b, 0x22, 0x08, ++ 0x5f, 0x1f, 0x82, 0x4e, 0x1c, 0xaf, 0x1f, 0x4b, 0x3a, 0x55, 0xae, 0x3b, ++ 0xf9, 0xdc, 0x4b, 0x58, 0xe7, 0xab, 0x6d, 0x24, 0xe7, 0xe6, 0xaf, 0x95, ++ 0xeb, 0x72, 0x23, 0xc7, 0x67, 0x88, 0xbe, 0xf6, 0x49, 0x0a, 0x23, 0xbd, ++ 0x4c, 0xf3, 0x32, 0x86, 0x38, 0xcc, 0x27, 0xdf, 0xb3, 0x05, 0xf9, 0x9e, ++ 0xcf, 0x3e, 0xd1, 0xec, 0x01, 0x0d, 0xba, 0x0f, 0x37, 0x92, 0x2a, 0xf8, ++ 0x73, 0x7d, 0xe3, 0x1b, 0x94, 0x7f, 0xa5, 0x35, 0x1c, 0x23, 0x7d, 0x58, ++ 0x47, 0x5e, 0x16, 0xfc, 0x04, 0x7e, 0xab, 0x21, 0x1f, 0x4b, 0x6b, 0x90, ++ 0x79, 0x5a, 0x1d, 0x43, 0x0c, 0x79, 0x54, 0xd1, 0xa3, 0xbd, 0x36, 0xc8, ++ 0x07, 0xf0, 0x34, 0xe8, 0x36, 0x3f, 0xf7, 0x30, 0xc3, 0xba, 0x66, 0xcd, ++ 0x9a, 0x13, 0x5b, 0x40, 0xb5, 0x7c, 0x5e, 0xbd, 0x51, 0x23, 0x7d, 0xa3, ++ 0x47, 0x5f, 0xc8, 0x36, 0x13, 0x1d, 0x2b, 0xb3, 0x2c, 0x54, 0xfe, 0x02, ++ 0x6b, 0x9c, 0xec, 0xc5, 0x66, 0xda, 0x9f, 0x14, 0xbf, 0x72, 0x79, 0xe1, ++ 0x0d, 0x60, 0x5d, 0x34, 0x17, 0xd9, 0x16, 0x86, 0xc8, 0xe1, 0xf9, 0xf2, ++ 0x79, 0x55, 0xae, 0x89, 0x4a, 0xf5, 0xbc, 0x32, 0xcb, 0x46, 0xfd, 0xfc, ++ 0x02, 0x8b, 0x91, 0xf7, 0xfb, 0x40, 0x6e, 0x86, 0x6d, 0x01, 0xc9, 0x39, ++ 0x97, 0x0d, 0x72, 0x40, 0xb5, 0x9f, 0x9f, 0x5b, 0xbc, 0x3e, 0x63, 0x34, ++ 0xfa, 0x99, 0x30, 0x80, 0x85, 0xac, 0xc7, 0xa2, 0x6c, 0x0b, 0x7d, 0x5f, ++ 0x89, 0x44, 0x2f, 0xec, 0x5f, 0x76, 0xe1, 0xff, 0xaf, 0xed, 0x67, 0x1f, ++ 0x50, 0x7a, 0xc9, 0x69, 0xfc, 0xf3, 0x6a, 0x82, 0x9f, 0xec, 0xad, 0x25, ++ 0xcf, 0x3f, 0xfb, 0x3c, 0xe2, 0x63, 0x4b, 0x3e, 0x8a, 0x20, 0x3a, 0x2d, ++ 0x19, 0x29, 0xfd, 0x11, 0xf9, 0x81, 0xb1, 0xd3, 0x49, 0x9f, 0xf1, 0x3a, ++ 0x34, 0x3e, 0xcf, 0x65, 0x92, 0xfe, 0x65, 0xcf, 0xfe, 0x3e, 0xb6, 0x83, ++ 0xbf, 0x5f, 0xbe, 0x57, 0xf8, 0x2f, 0x79, 0xd9, 0x89, 0x72, 0xd9, 0xea, ++ 0x1a, 0xf2, 0x6b, 0x2d, 0xf3, 0xf0, 0xf5, 0x91, 0x00, 0xb9, 0x6a, 0x8c, ++ 0x23, 0x1f, 0x7d, 0xfe, 0xa3, 0xd8, 0x0e, 0xb2, 0x2b, 0xfc, 0xa9, 0xc8, ++ 0x2f, 0xe4, 0xdb, 0x42, 0x2a, 0x4b, 0x46, 0xbc, 0xe8, 0xe4, 0x24, 0xf8, ++ 0xc5, 0x97, 0xb3, 0xae, 0xf5, 0xc8, 0xeb, 0x0a, 0xff, 0x6e, 0xb9, 0xf6, ++ 0x55, 0xac, 0xf0, 0xef, 0x8b, 0x38, 0xb9, 0x8a, 0x5f, 0x96, 0xbf, 0xfa, ++ 0xe7, 0x24, 0x82, 0x63, 0xdf, 0xc5, 0x24, 0xc8, 0xb5, 0xe5, 0xaf, 0xae, ++ 0x4b, 0xd2, 0xfb, 0x98, 0xf7, 0xf2, 0xb0, 0xf8, 0xb5, 0x8a, 0x9b, 0x2b, ++ 0x3f, 0xd8, 0x72, 0xb6, 0xe9, 0x4b, 0xc4, 0xdd, 0xc2, 0xdb, 0x55, 0x65, ++ 0xc7, 0x0c, 0x00, 0xff, 0xb0, 0xab, 0xd8, 0x55, 0xe4, 0xa7, 0xb0, 0x30, ++ 0xca, 0x63, 0x58, 0x69, 0x17, 0x78, 0xe8, 0x0e, 0x64, 0xc7, 0xb1, 0x3e, ++ 0xc6, 0xeb, 0x19, 0x77, 0x2b, 0x17, 0xec, 0xdc, 0x0e, 0xed, 0xb6, 0xb8, ++ 0xe2, 0x3c, 0x1c, 0xce, 0x0b, 0xfd, 0xe4, 0xf1, 0xed, 0xca, 0x16, 0xfb, ++ 0xf9, 0x39, 0x19, 0x47, 0xbd, 0xb0, 0xdb, 0x4c, 0x7a, 0xe1, 0x85, 0xdd, ++ 0x31, 0xc4, 0xff, 0xcb, 0x76, 0xff, 0xf0, 0xf5, 0x6b, 0x78, 0x7d, 0xd9, ++ 0x76, 0x0d, 0xc3, 0xb2, 0x3a, 0xd6, 0x4e, 0x78, 0x5a, 0xb6, 0xd7, 0xcc, ++ 0xec, 0xa1, 0xf6, 0x0d, 0xfc, 0x36, 0x89, 0xfd, 0xc3, 0xb9, 0xf4, 0xd9, ++ 0x98, 0x7a, 0xf0, 0xd3, 0xe2, 0x36, 0xcd, 0xbb, 0x23, 0x1f, 0x71, 0x79, ++ 0x57, 0xdc, 0xc0, 0x10, 0x78, 0xd6, 0x49, 0x7e, 0x5a, 0x1a, 0xd1, 0x36, ++ 0x96, 0xe8, 0x20, 0xe1, 0xff, 0xae, 0xd4, 0x8f, 0x54, 0xbb, 0xc5, 0x07, ++ 0x7f, 0x68, 0x03, 0xbd, 0x78, 0xbb, 0xf3, 0xa4, 0xb7, 0xfc, 0x34, 0x1a, ++ 0xba, 0x36, 0xff, 0xeb, 0x7a, 0x07, 0x70, 0x9e, 0xd9, 0x36, 0x8a, 0xe2, ++ 0xba, 0x8b, 0xdb, 0xf6, 0x2c, 0xa3, 0x7d, 0x7f, 0x77, 0xb4, 0x13, 0x53, ++ 0xfc, 0xc2, 0x6a, 0xf4, 0x47, 0x6d, 0x96, 0xe3, 0x6d, 0xce, 0x16, 0x7a, ++ 0xc6, 0x19, 0xe9, 0xff, 0x3d, 0xf3, 0xbc, 0x99, 0xe4, 0x0f, 0xe0, 0xc4, ++ 0x3a, 0xfc, 0x42, 0x13, 0x7e, 0x5e, 0xf5, 0xdd, 0x16, 0xf9, 0xdd, 0x16, ++ 0x89, 0xb7, 0xeb, 0x10, 0x54, 0x1c, 0xd3, 0xdb, 0x7e, 0x71, 0x5b, 0x67, ++ 0x6c, 0x16, 0x6f, 0xff, 0xd9, 0x81, 0xf7, 0xa8, 0x6c, 0x95, 0xed, 0x17, ++ 0x3b, 0xda, 0x0b, 0xb1, 0x5f, 0x7e, 0xb6, 0x37, 0x7a, 0x72, 0x80, 0xca, ++ 0x1f, 0x4d, 0x7a, 0x85, 0x8f, 0x77, 0xae, 0x6d, 0xc2, 0x00, 0x2d, 0x64, ++ 0x5d, 0x3d, 0x9f, 0x6d, 0xa5, 0xfe, 0xce, 0x6d, 0x33, 0x4f, 0x06, 0xbe, ++ 0x58, 0x40, 0xe5, 0x19, 0xb5, 0xd1, 0x7c, 0xce, 0xec, 0x4e, 0xd5, 0xc8, ++ 0xae, 0x05, 0xbe, 0x39, 0x7e, 0xce, 0xec, 0x7d, 0x31, 0xd6, 0x44, 0xeb, ++ 0xd6, 0x6f, 0xa0, 0xa3, 0xc9, 0x2e, 0xfc, 0xa9, 0x6e, 0x8b, 0x4b, 0xea, ++ 0x97, 0x76, 0x27, 0xf4, 0x8c, 0xb9, 0x5c, 0xab, 0x8b, 0xe3, 0xf2, 0xae, ++ 0x6e, 0xaf, 0xc8, 0x07, 0x08, 0x7f, 0xae, 0xda, 0xd3, 0x7a, 0x4b, 0x01, ++ 0xbf, 0x77, 0xd9, 0x04, 0xff, 0xcb, 0xf8, 0xbd, 0x8c, 0x2f, 0x21, 0x4f, ++ 0x84, 0xe2, 0xf1, 0x31, 0xb6, 0x00, 0xf6, 0xd7, 0x79, 0x23, 0x5d, 0xb3, ++ 0x6e, 0x87, 0x3c, 0x7b, 0xcb, 0x2a, 0xe8, 0x31, 0xc4, 0xb5, 0x05, 0x76, ++ 0xd5, 0xbc, 0x77, 0x13, 0xc9, 0x5f, 0xb1, 0xd2, 0xea, 0x1a, 0x84, 0xfa, ++ 0x9f, 0xde, 0xb6, 0x92, 0xff, 0x7c, 0xde, 0x28, 0xb9, 0xce, 0x93, 0x3b, ++ 0xc6, 0xc0, 0x3f, 0xd9, 0xe9, 0x16, 0xfb, 0x7a, 0xed, 0x46, 0xbe, 0x42, ++ 0xf8, 0x94, 0x07, 0x73, 0xfa, 0xfb, 0xf9, 0xfc, 0x6a, 0x03, 0x26, 0xca, ++ 0xa7, 0x7c, 0x3f, 0x3b, 0x83, 0xe6, 0xf7, 0x58, 0x8d, 0xc9, 0x6b, 0xa3, ++ 0x38, 0x47, 0x30, 0x07, 0x7e, 0xca, 0x13, 0x36, 0xe6, 0x37, 0x43, 0x4f, ++ 0x7e, 0x21, 0x92, 0xf4, 0xbb, 0xda, 0x0c, 0xe1, 0x77, 0x7f, 0x0c, 0xfc, ++ 0xce, 0xcb, 0xda, 0x84, 0x60, 0x4e, 0x22, 0xf4, 0x1d, 0x49, 0xc7, 0xda, ++ 0x5b, 0xf9, 0xfb, 0x10, 0x7a, 0xd6, 0x3e, 0x15, 0xcc, 0x81, 0xde, 0x72, ++ 0xd6, 0x26, 0xfc, 0x78, 0x78, 0xef, 0x44, 0x59, 0x2c, 0xda, 0x35, 0x49, ++ 0xbe, 0x41, 0x3f, 0xe8, 0xb7, 0xd3, 0xed, 0x3c, 0x4f, 0xfa, 0xe5, 0xbe, ++ 0x18, 0x06, 0x3d, 0xdf, 0xf4, 0x52, 0x8c, 0xf0, 0x27, 0xfc, 0x24, 0x92, ++ 0xe2, 0x0e, 0xaa, 0xdf, 0x53, 0xd9, 0x42, 0xbf, 0x6f, 0x92, 0x71, 0x2e, ++ 0xff, 0x0e, 0x01, 0x1f, 0xe0, 0x82, 0xde, 0xbc, 0xd8, 0xd6, 0x9c, 0x03, ++ 0xbd, 0x52, 0x8d, 0xbb, 0x38, 0xb6, 0x99, 0xc6, 0x3b, 0x2b, 0xc7, 0x5b, ++ 0x1c, 0xd5, 0x2c, 0xe2, 0x07, 0x32, 0x2f, 0x0c, 0xed, 0x69, 0x7c, 0x2b, ++ 0xf3, 0xc2, 0x1e, 0xef, 0x7a, 0x3a, 0x82, 0xf4, 0xd3, 0x2f, 0x52, 0xda, ++ 0xf7, 0x63, 0xfc, 0x2f, 0x9e, 0x1e, 0x4e, 0x71, 0xf0, 0x4e, 0x77, 0x60, ++ 0xe1, 0x01, 0x7a, 0xcf, 0xf5, 0x36, 0x4e, 0x87, 0x25, 0xcf, 0x44, 0x04, ++ 0x01, 0xef, 0xe7, 0x4f, 0xc7, 0x50, 0x9c, 0xf3, 0x73, 0xab, 0xd0, 0x83, ++ 0x3e, 0x8f, 0x49, 0x22, 0x3d, 0xe8, 0x58, 0xcc, 0x23, 0xf3, 0xd0, 0x5f, ++ 0xf7, 0xf6, 0x08, 0x0d, 0xfe, 0x94, 0xcf, 0x35, 0x66, 0x4b, 0xc6, 0xfb, ++ 0x1d, 0x03, 0x29, 0x5e, 0xb5, 0xa4, 0xb1, 0x81, 0xe2, 0x04, 0x4b, 0xf8, ++ 0x72, 0x47, 0x3c, 0x9a, 0x97, 0x93, 0x11, 0x57, 0xfe, 0x7c, 0xc7, 0x70, ++ 0xf2, 0xb3, 0x7c, 0xfe, 0xa6, 0x99, 0xe2, 0x8b, 0xfc, 0xf9, 0x46, 0x3c, ++ 0xd7, 0x59, 0xf3, 0xbc, 0xef, 0x60, 0xdd, 0xed, 0x8a, 0x26, 0x3f, 0xdb, ++ 0x17, 0xcf, 0xfc, 0x6d, 0x78, 0x68, 0xfc, 0x41, 0x95, 0x4b, 0xb6, 0x1b, ++ 0xfd, 0x49, 0x8a, 0xfe, 0xea, 0xbd, 0x35, 0x47, 0xd8, 0x0d, 0xd6, 0x1c, ++ 0x81, 0xc7, 0xc8, 0x1c, 0xb1, 0xcf, 0xd4, 0x45, 0xb7, 0x3d, 0x92, 0x41, ++ 0xf3, 0x14, 0xeb, 0x95, 0xd3, 0x81, 0xec, 0x2d, 0xbe, 0x3e, 0x92, 0xe0, ++ 0x9f, 0x3e, 0xd1, 0xf6, 0x72, 0x92, 0xe6, 0x00, 0x9e, 0x83, 0x39, 0x3f, ++ 0x02, 0xde, 0x77, 0x09, 0xbb, 0xe6, 0x8b, 0xdd, 0x56, 0x8a, 0x8b, 0x2c, ++ 0x79, 0x29, 0xc6, 0x4b, 0xfe, 0x9b, 0x0d, 0x57, 0x99, 0xb0, 0x5f, 0x2c, ++ 0x31, 0x0b, 0xfd, 0x77, 0x09, 0x67, 0x37, 0x51, 0x0a, 0xff, 0xd0, 0x92, ++ 0xd8, 0x1c, 0xf2, 0x0f, 0x71, 0x7c, 0x93, 0xfd, 0xd8, 0xb5, 0xc3, 0x2c, ++ 0xc7, 0x11, 0xe3, 0x7e, 0xbe, 0x33, 0x4d, 0xf8, 0xdf, 0x83, 0xb2, 0xbe, ++ 0xbf, 0x20, 0x00, 0x3e, 0x9f, 0x92, 0xc0, 0xee, 0xbc, 0x95, 0xf4, 0x9b, ++ 0x6d, 0x85, 0xc0, 0xeb, 0xc5, 0xed, 0xd1, 0x26, 0xf0, 0x05, 0x1f, 0xc7, ++ 0x8b, 0xb8, 0xfd, 0x92, 0xef, 0x7c, 0x57, 0xe0, 0x33, 0x6e, 0x21, 0xe9, ++ 0xe3, 0x0c, 0x79, 0xd0, 0x63, 0x11, 0x2f, 0x17, 0xf2, 0xb2, 0x6e, 0xc3, ++ 0x35, 0x71, 0xc8, 0x87, 0x61, 0xef, 0x9a, 0x19, 0x44, 0xdf, 0x45, 0x8b, ++ 0x67, 0x10, 0xe4, 0x61, 0x38, 0xbe, 0x66, 0xe7, 0x48, 0x79, 0xb9, 0xff, ++ 0x71, 0x1b, 0xe2, 0x67, 0xb5, 0x7c, 0xbd, 0x20, 0x3f, 0x68, 0xa9, 0x8c, ++ 0x9b, 0x2e, 0x7d, 0x46, 0x23, 0x7d, 0x6e, 0xe9, 0xfa, 0x6b, 0xb6, 0x90, ++ 0x1c, 0x7c, 0xc7, 0xca, 0xb2, 0x39, 0x1c, 0x67, 0xdb, 0x7e, 0x18, 0x1b, ++ 0x4a, 0x8f, 0xd2, 0x1c, 0xa1, 0x57, 0xf4, 0x7e, 0xef, 0xa1, 0xf6, 0x4b, ++ 0x79, 0x7b, 0xf1, 0xfd, 0x5b, 0xb1, 0x04, 0xcf, 0x4e, 0xab, 0x07, 0xf0, ++ 0x84, 0xd3, 0xf1, 0x8a, 0xbf, 0x7f, 0xc6, 0x7c, 0x45, 0xdf, 0xf7, 0xf0, ++ 0x47, 0x1b, 0xdf, 0xd7, 0x0b, 0x2f, 0x9f, 0xf7, 0x45, 0xd6, 0xfe, 0xbf, ++ 0x3e, 0x82, 0x1c, 0xd9, 0x1d, 0xe9, 0xf1, 0xd3, 0xd3, 0x36, 0x8a, 0x3b, ++ 0x9f, 0xb1, 0xb6, 0x2d, 0xc4, 0xbc, 0xcf, 0x3c, 0x17, 0x49, 0xf2, 0xe5, ++ 0x4c, 0xbc, 0x58, 0xef, 0x9f, 0x71, 0x79, 0xe8, 0xb7, 0x01, 0x8e, 0x6f, ++ 0x3d, 0x44, 0xfe, 0x8d, 0xdf, 0x4c, 0x67, 0x10, 0xdd, 0x8b, 0x02, 0xc6, ++ 0x7e, 0xd5, 0xb8, 0x37, 0xe4, 0x88, 0x73, 0x1b, 0x75, 0x89, 0x9e, 0x38, ++ 0xc4, 0x33, 0xea, 0x38, 0x1d, 0xd0, 0x1f, 0xa7, 0xcb, 0x2d, 0xf4, 0xfd, ++ 0xbb, 0x56, 0xfa, 0x3e, 0x7c, 0x1e, 0x39, 0x39, 0x42, 0x6e, 0xf7, 0xac, ++ 0xcf, 0xe7, 0xa2, 0x89, 0x5f, 0xce, 0x0c, 0x16, 0xf4, 0x38, 0xf3, 0xfc, ++ 0x30, 0xda, 0x57, 0x3a, 0xe3, 0x05, 0x9f, 0x73, 0x78, 0xd3, 0x61, 0xa7, ++ 0x9c, 0x89, 0x17, 0x25, 0x83, 0x32, 0xc2, 0xf9, 0x60, 0x89, 0xb4, 0x43, ++ 0xcf, 0x4c, 0x68, 0x23, 0xbb, 0xfb, 0x8c, 0xb6, 0x87, 0xca, 0x4e, 0xab, ++ 0xf8, 0x6e, 0x49, 0x83, 0x8c, 0xdb, 0x72, 0xbe, 0x4b, 0x06, 0xdf, 0x80, ++ 0x27, 0x11, 0xb7, 0xb2, 0x6f, 0x6a, 0x87, 0x1e, 0x01, 0xff, 0xf4, 0xd8, ++ 0x62, 0x2a, 0x83, 0x11, 0x09, 0x97, 0xfb, 0x99, 0xc1, 0x9f, 0xd8, 0x87, ++ 0x9e, 0x94, 0xeb, 0x0b, 0x6a, 0x0d, 0xe4, 0x3a, 0xc5, 0x37, 0x48, 0x3f, ++ 0x69, 0xb3, 0x41, 0x1e, 0xeb, 0x52, 0x8f, 0xab, 0xdd, 0x7d, 0x79, 0xbc, ++ 0x8c, 0xe2, 0xa0, 0xbb, 0x35, 0x8a, 0xfb, 0xdc, 0xab, 0xfa, 0xe1, 0x50, ++ 0x0f, 0x50, 0xfe, 0x71, 0xce, 0x8f, 0x4b, 0xfd, 0x9a, 0x17, 0xf9, 0x46, ++ 0x4b, 0xd7, 0xae, 0x58, 0x0c, 0x7e, 0x5f, 0x5a, 0xbf, 0xf9, 0x76, 0xf0, ++ 0xbb, 0x9a, 0xc7, 0x52, 0x0b, 0x9b, 0x0c, 0xfb, 0xaa, 0x53, 0x33, 0x13, ++ 0x3c, 0x9d, 0x91, 0x7c, 0xdd, 0x00, 0x0f, 0xa1, 0xe3, 0x65, 0xf4, 0xe2, ++ 0xf7, 0xfe, 0x1c, 0xad, 0x27, 0x0f, 0xda, 0x99, 0x44, 0x7a, 0x26, 0x29, ++ 0xd7, 0x0f, 0xe6, 0x88, 0xfd, 0x0a, 0xf5, 0x66, 0xde, 0x5f, 0xed, 0x5a, ++ 0x6d, 0x13, 0x8d, 0xe3, 0x56, 0xf6, 0xa4, 0x98, 0x9f, 0xc2, 0x13, 0x47, ++ 0x8b, 0x0d, 0x7e, 0x32, 0x6e, 0xe7, 0x8b, 0xf7, 0xfd, 0xcc, 0x5f, 0xc1, ++ 0x19, 0x3e, 0x7f, 0x05, 0x4f, 0x6b, 0x8e, 0xd0, 0x1b, 0x3a, 0xdd, 0xae, ++ 0x87, 0xc6, 0x83, 0xde, 0xbf, 0x32, 0x93, 0xff, 0xf4, 0xe2, 0x57, 0xa3, ++ 0xe2, 0x12, 0xbe, 0x46, 0x2f, 0x83, 0xc5, 0xd6, 0xe3, 0x2f, 0xe6, 0xf0, ++ 0x3f, 0xcf, 0xf7, 0x6a, 0xc0, 0xbf, 0x42, 0xca, 0xb7, 0xa5, 0xf0, 0x47, ++ 0x73, 0x38, 0x73, 0xb6, 0x19, 0xe3, 0x1f, 0xb9, 0xdb, 0x8d, 0xf5, 0x11, ++ 0xbb, 0x8d, 0xf5, 0xfc, 0xbd, 0xc6, 0x7a, 0xe1, 0x41, 0x63, 0xdd, 0x73, ++ 0xd4, 0x58, 0x7f, 0x04, 0xe3, 0x0e, 0xec, 0xc5, 0x13, 0xec, 0x5c, 0xe4, ++ 0xb5, 0xc1, 0xce, 0x45, 0x09, 0x3b, 0xd7, 0x95, 0x23, 0xec, 0x5c, 0xd4, ++ 0x61, 0xe7, 0xa2, 0x84, 0x9d, 0x8b, 0xe7, 0xb0, 0x73, 0x51, 0x87, 0x9d, ++ 0x8b, 0x3a, 0xec, 0x5c, 0xd4, 0x61, 0xe7, 0xa2, 0x84, 0x9d, 0x8b, 0xe7, ++ 0x7f, 0x90, 0x78, 0xaa, 0x95, 0x7e, 0x47, 0xd0, 0x81, 0xf2, 0xab, 0x5e, ++ 0x8e, 0x54, 0x71, 0x70, 0x5a, 0x2f, 0x17, 0xe6, 0x24, 0x91, 0xfc, 0x54, ++ 0xf1, 0xcc, 0x0b, 0x8b, 0xf3, 0xa9, 0xde, 0xe3, 0xcf, 0x99, 0x66, 0x27, ++ 0x7f, 0x8e, 0xca, 0xd3, 0xb9, 0x3d, 0x4e, 0x7f, 0x33, 0x87, 0xe2, 0x86, ++ 0xed, 0xeb, 0x53, 0x40, 0x37, 0x4b, 0x07, 0xf9, 0x71, 0x97, 0xff, 0x4c, ++ 0xf8, 0x71, 0x6b, 0x8b, 0x23, 0x1d, 0xf0, 0x2f, 0x74, 0xac, 0xfb, 0x6c, ++ 0x3d, 0xd4, 0xa7, 0xc2, 0x38, 0xfd, 0x1d, 0xb4, 0xbf, 0x60, 0xed, 0xda, ++ 0x29, 0xf2, 0x95, 0x82, 0x24, 0x37, 0x3a, 0xd6, 0xb8, 0xde, 0xbd, 0x5e, ++ 0xd0, 0x8f, 0xfc, 0x1c, 0x2a, 0xef, 0xa6, 0x12, 0xfb, 0x5d, 0x42, 0xff, ++ 0x74, 0x0c, 0x8f, 0xa3, 0xb0, 0x4d, 0xc6, 0xb8, 0x49, 0x78, 0x1c, 0x25, ++ 0x3c, 0x7e, 0x12, 0xce, 0x07, 0x2a, 0x6e, 0xf2, 0xa4, 0xb5, 0x2b, 0x05, ++ 0xf2, 0xfe, 0xe4, 0xd3, 0xf6, 0x4d, 0x80, 0xff, 0xa4, 0xf4, 0x8f, 0xb1, ++ 0xd9, 0x4e, 0xd2, 0xbf, 0x94, 0x5e, 0xdd, 0xa3, 0x7f, 0x3d, 0xa8, 0x3d, ++ 0x85, 0x7d, 0xfb, 0x42, 0x8e, 0xc8, 0xfb, 0xeb, 0x3e, 0xc6, 0xf5, 0xed, ++ 0x3e, 0xf6, 0x5b, 0x55, 0x56, 0x5d, 0x2a, 0x26, 0xbd, 0xb1, 0xa7, 0xbe, ++ 0x49, 0x33, 0x51, 0xde, 0x48, 0x72, 0x2c, 0xed, 0x43, 0xab, 0x24, 0x4c, ++ 0xe9, 0x5a, 0x57, 0xe7, 0x06, 0xc8, 0xbb, 0x18, 0x13, 0xed, 0xe3, 0x17, ++ 0x1d, 0x26, 0xb2, 0x0b, 0x2e, 0xbe, 0x6f, 0x26, 0x3d, 0x62, 0x18, 0xf4, ++ 0xf3, 0x90, 0xf9, 0x0c, 0x0f, 0x44, 0x19, 0xf8, 0x2b, 0x6f, 0x57, 0x42, ++ 0x58, 0xfc, 0x6f, 0xb0, 0xa1, 0xfd, 0xc8, 0x03, 0x19, 0x61, 0xf1, 0xbf, ++ 0x11, 0xc6, 0xb8, 0xd4, 0x6d, 0x6b, 0x0e, 0xc1, 0xbe, 0x9e, 0xbe, 0x69, ++ 0x94, 0xa1, 0x5d, 0xb5, 0xef, 0x9a, 0x30, 0x3c, 0x4a, 0xb8, 0xa5, 0x5e, ++ 0xda, 0xb4, 0x7a, 0x6b, 0x3a, 0xe4, 0xcf, 0xaa, 0x98, 0x6e, 0x82, 0x7f, ++ 0xd5, 0xbe, 0x48, 0xca, 0xab, 0xad, 0xe6, 0xf0, 0x7a, 0x11, 0x97, 0x43, ++ 0x85, 0xa3, 0xa0, 0xc6, 0xee, 0x9d, 0x0a, 0xfc, 0xd5, 0xb4, 0x59, 0xe3, ++ 0xb1, 0xcf, 0x57, 0xc9, 0xfd, 0x87, 0x35, 0x18, 0xf7, 0xe3, 0x1a, 0x0b, ++ 0xf3, 0x3b, 0x13, 0x7a, 0xf9, 0xae, 0xc6, 0xc9, 0xbc, 0xf1, 0xfc, 0xfb, ++ 0x73, 0x45, 0xcd, 0x3b, 0x4d, 0x9c, 0x6e, 0xe7, 0x4c, 0xdb, 0x1e, 0x19, ++ 0xef, 0x42, 0x5c, 0xa9, 0x35, 0xdd, 0xc9, 0xf9, 0xea, 0x2e, 0xad, 0x2d, ++ 0xe9, 0x6a, 0xde, 0xdf, 0xdf, 0x2c, 0x7a, 0xda, 0x30, 0x4e, 0x8f, 0x74, ++ 0x6b, 0xf0, 0x07, 0x15, 0x90, 0x97, 0x7b, 0x32, 0xd9, 0x1a, 0xde, 0xee, ++ 0xe4, 0xa6, 0x17, 0x63, 0x49, 0xef, 0x96, 0x7c, 0x96, 0x6e, 0x75, 0x46, ++ 0x81, 0xde, 0xad, 0xcd, 0x66, 0xb2, 0x0b, 0xe0, 0x97, 0x32, 0x27, 0xf4, ++ 0xf2, 0x43, 0x6b, 0x73, 0x62, 0x54, 0x96, 0xa3, 0x77, 0x9e, 0xbd, 0xf4, ++ 0xff, 0x8a, 0xe6, 0xc7, 0xe9, 0xe2, 0xc1, 0x39, 0xc5, 0x6e, 0xc7, 0xe1, ++ 0x21, 0xab, 0xa0, 0xc7, 0xb5, 0x89, 0xf9, 0xd6, 0x4c, 0xd0, 0xfc, 0xa4, ++ 0x27, 0xcb, 0xf9, 0xac, 0x94, 0xfb, 0x0a, 0xcb, 0x12, 0xfd, 0xdc, 0x25, ++ 0xeb, 0xa7, 0xa4, 0xbd, 0xa0, 0xe6, 0x77, 0x76, 0xf8, 0xa1, 0x42, 0x17, ++ 0xe2, 0x98, 0x8d, 0x07, 0xd2, 0xcd, 0x90, 0xe3, 0xa6, 0xdd, 0x3b, 0x71, ++ 0x7e, 0xe0, 0xde, 0x28, 0xbd, 0x64, 0xd8, 0x40, 0xe4, 0x4b, 0x66, 0xff, ++ 0x76, 0x3c, 0x1f, 0x77, 0xc9, 0x07, 0x22, 0x5f, 0xf7, 0x8f, 0x2d, 0x13, ++ 0x63, 0xaf, 0x86, 0xfe, 0xf9, 0x9c, 0xd5, 0x33, 0x85, 0xd7, 0x37, 0x34, ++ 0xff, 0xd8, 0x06, 0xbb, 0x78, 0x89, 0x25, 0x60, 0x83, 0xdd, 0x59, 0xf3, ++ 0x74, 0xab, 0xcd, 0xcb, 0xcb, 0x1b, 0x76, 0xb5, 0xd2, 0xf3, 0x85, 0xbb, ++ 0x2a, 0xc9, 0xde, 0x5e, 0xc4, 0xea, 0xc9, 0x8e, 0x3c, 0xad, 0xf2, 0x6f, ++ 0x25, 0x3e, 0x6a, 0x4a, 0xb5, 0x6d, 0x4e, 0x0e, 0xf7, 0x93, 0xc3, 0x84, ++ 0xdc, 0xa8, 0x89, 0x12, 0x79, 0x1b, 0xe5, 0xe6, 0xf1, 0xaf, 0x21, 0x2f, ++ 0xfd, 0xe2, 0x2e, 0xad, 0x08, 0xf3, 0xbd, 0xcd, 0xb7, 0xc7, 0x56, 0xc9, ++ 0x9f, 0xdf, 0x3a, 0x4c, 0x9e, 0x3b, 0x09, 0x5b, 0x1f, 0xdd, 0x6f, 0x4f, ++ 0x2f, 0x1f, 0x08, 0x7f, 0x52, 0x9b, 0x88, 0x7b, 0xf6, 0xb7, 0x1e, 0x66, ++ 0x04, 0x73, 0x69, 0x3d, 0x4c, 0xbf, 0xe4, 0xa2, 0xf2, 0xb6, 0x4b, 0x23, ++ 0xc8, 0x8e, 0xfd, 0x80, 0xf9, 0x0a, 0x48, 0x4e, 0xe4, 0x87, 0xd9, 0xb3, ++ 0x6f, 0x8b, 0x3c, 0xe4, 0xee, 0x83, 0x62, 0x1d, 0xd4, 0xd8, 0x82, 0x03, ++ 0xa6, 0x63, 0x9d, 0xfc, 0xdc, 0x4a, 0xeb, 0xa4, 0x8e, 0xcb, 0xaf, 0x92, ++ 0x62, 0xd8, 0xc9, 0x8c, 0x8d, 0xe3, 0xa5, 0x6f, 0xbc, 0xd9, 0xc0, 0xaf, ++ 0xcb, 0xcb, 0xa2, 0x0d, 0xfc, 0x3c, 0x9b, 0x25, 0x18, 0xe2, 0xc8, 0x33, ++ 0x71, 0x68, 0x33, 0xa4, 0x7e, 0xdb, 0x94, 0x4c, 0x43, 0xfb, 0x59, 0xb7, ++ 0xe5, 0x85, 0xf1, 0x7f, 0x71, 0xef, 0x7b, 0x92, 0x23, 0xe3, 0x0c, 0x79, ++ 0x26, 0x75, 0xab, 0xfd, 0x2e, 0x8d, 0xf2, 0x59, 0x4a, 0x8d, 0xcf, 0x79, ++ 0xb9, 0x9a, 0xf8, 0xec, 0x26, 0xc3, 0xf7, 0x75, 0xec, 0xd6, 0xde, 0x76, ++ 0xb0, 0x83, 0xb7, 0xff, 0x9a, 0xf0, 0xcc, 0x58, 0xbb, 0x0d, 0xf6, 0x56, ++ 0x8d, 0x49, 0xe4, 0xd5, 0xcc, 0xd6, 0x3b, 0xe5, 0xf3, 0x0e, 0x7a, 0xce, ++ 0x27, 0x62, 0x58, 0x87, 0x43, 0x33, 0x3d, 0xbf, 0x15, 0xfb, 0xa2, 0x95, ++ 0xfc, 0xf2, 0xca, 0x2f, 0x3d, 0x1b, 0xff, 0xce, 0xec, 0x6b, 0x5f, 0xe4, ++ 0x84, 0x96, 0xe3, 0x22, 0x3f, 0x14, 0xfe, 0x05, 0x43, 0x7e, 0x21, 0x07, ++ 0x80, 0xec, 0x4f, 0x26, 0xe8, 0x50, 0x27, 0xfd, 0x3d, 0x75, 0xb9, 0xc2, ++ 0xdf, 0x53, 0xe7, 0x6f, 0xb7, 0x21, 0xff, 0x96, 0xe3, 0xdf, 0x92, 0xca, ++ 0x51, 0xb2, 0xac, 0x59, 0x23, 0x7f, 0x1e, 0x6f, 0x6f, 0x4f, 0x4d, 0x10, ++ 0xf5, 0xd5, 0x78, 0xbe, 0xd7, 0x78, 0xde, 0x00, 0xfd, 0x5d, 0xc2, 0xfb, ++ 0x63, 0xe6, 0x4a, 0xac, 0x97, 0xf0, 0xf7, 0xcb, 0xf8, 0xbc, 0xa1, 0x67, ++ 0x2c, 0x83, 0x9f, 0x06, 0x7e, 0x26, 0xd5, 0xbf, 0xec, 0x57, 0xf1, 0xe7, ++ 0xa2, 0xad, 0x46, 0xbf, 0xd1, 0x32, 0xf8, 0x73, 0x42, 0xe8, 0xf8, 0xc9, ++ 0x30, 0x17, 0xf1, 0xf3, 0x92, 0x5d, 0x7b, 0x5e, 0x1f, 0xcc, 0xf1, 0x32, ++ 0xdd, 0x17, 0x5f, 0x84, 0xf5, 0x53, 0xdb, 0x36, 0xcd, 0x5a, 0x99, 0x7f, ++ 0x39, 0x9f, 0x29, 0xf9, 0x7e, 0xb1, 0xc6, 0x44, 0x71, 0xee, 0xee, 0xb7, ++ 0x8f, 0x10, 0x9f, 0x75, 0xd7, 0x58, 0x88, 0x9f, 0xbf, 0x09, 0x1f, 0xcb, ++ 0xbc, 0xc2, 0x9f, 0x19, 0xce, 0x7f, 0x0b, 0xf9, 0x7c, 0x10, 0x97, 0x5d, ++ 0xb8, 0x57, 0xf3, 0x04, 0x34, 0xd1, 0x0e, 0x78, 0x19, 0x0c, 0xbe, 0x0c, ++ 0xc3, 0x4b, 0x6a, 0x1f, 0xf8, 0x52, 0x78, 0xea, 0xc1, 0x5b, 0xd8, 0xfb, ++ 0x45, 0xf8, 0xc7, 0x68, 0xe4, 0x0d, 0x68, 0x81, 0xa0, 0xbb, 0x2f, 0xbc, ++ 0x48, 0x3c, 0xaa, 0xfe, 0xc3, 0xf0, 0xc4, 0x4a, 0x8c, 0x78, 0x58, 0xa8, ++ 0xbb, 0xde, 0x85, 0xbc, 0x59, 0x78, 0xcc, 0xcc, 0x02, 0x57, 0x30, 0xef, ++ 0x45, 0x98, 0x1f, 0xc6, 0xe7, 0xf3, 0xc3, 0xf8, 0xb7, 0x5e, 0x12, 0x7e, ++ 0x12, 0x15, 0x37, 0x98, 0x79, 0xc9, 0x42, 0xf5, 0x1e, 0x3e, 0xf1, 0x89, ++ 0xfc, 0xe9, 0xdb, 0xa6, 0x18, 0xd7, 0x65, 0x0f, 0xdf, 0xf8, 0xc4, 0x3a, ++ 0x99, 0x71, 0x29, 0x89, 0xbe, 0xfb, 0x9f, 0xe6, 0x9f, 0x6f, 0xe2, 0x1b, ++ 0x05, 0x77, 0x78, 0x7e, 0xb2, 0x3a, 0xdf, 0x73, 0x7a, 0x98, 0x3c, 0xff, ++ 0x32, 0x86, 0x8d, 0xa1, 0xf5, 0x7f, 0x85, 0x79, 0xc3, 0x6a, 0xbf, 0x57, ++ 0x78, 0x1e, 0x7a, 0x6f, 0x09, 0xe5, 0x13, 0x75, 0x3b, 0x32, 0x48, 0x7f, ++ 0xe8, 0xd9, 0x6f, 0x9c, 0xc6, 0xf7, 0x2b, 0x63, 0x32, 0x28, 0x8f, 0x58, ++ 0x97, 0xfe, 0x39, 0x25, 0x77, 0x75, 0xd9, 0x4e, 0x8d, 0x53, 0xc9, 0xdf, ++ 0xbb, 0x46, 0x81, 0x8f, 0x87, 0x24, 0xc1, 0xef, 0xba, 0x7e, 0x6d, 0x66, ++ 0x7a, 0x47, 0x88, 0x5e, 0xa2, 0xaf, 0xb3, 0x92, 0xdf, 0x34, 0x7d, 0x4d, ++ 0x22, 0x95, 0x95, 0x91, 0xce, 0x24, 0xec, 0x17, 0x95, 0x6b, 0xcc, 0x3e, ++ 0xec, 0x83, 0x9f, 0xdc, 0x3f, 0x28, 0xa9, 0x04, 0x7e, 0xf8, 0x75, 0xd6, ++ 0x01, 0x53, 0x78, 0xd7, 0x9f, 0xdc, 0x33, 0x3a, 0x9d, 0x15, 0xa0, 0x5e, ++ 0x4e, 0xe5, 0xc9, 0xcd, 0x11, 0xb3, 0x43, 0xfd, 0xd9, 0xaa, 0x8c, 0xcf, ++ 0x15, 0xfb, 0x46, 0xdd, 0xbd, 0xc7, 0x69, 0xff, 0x3a, 0x67, 0x7a, 0x3b, ++ 0x76, 0x36, 0xd6, 0xd9, 0xba, 0x7d, 0xb1, 0x48, 0xa9, 0x59, 0xba, 0xee, ++ 0xbd, 0xb1, 0x4e, 0xae, 0x7a, 0xb4, 0x5a, 0x74, 0x67, 0x2e, 0xc5, 0x49, ++ 0x5b, 0x77, 0x3a, 0x81, 0x37, 0x67, 0x6b, 0x21, 0xfc, 0xd1, 0x74, 0xf6, ++ 0x72, 0x60, 0xaf, 0x9e, 0xb0, 0x64, 0x5d, 0xf9, 0x20, 0xf8, 0xbf, 0x6a, ++ 0xff, 0x7e, 0xe4, 0x09, 0xec, 0xef, 0xfa, 0x1a, 0x6b, 0x12, 0xf4, 0xcc, ++ 0xcf, 0xdf, 0xe7, 0xfb, 0x9f, 0x46, 0xfb, 0x17, 0xe9, 0x07, 0xa7, 0x91, ++ 0x7f, 0x3c, 0x00, 0x71, 0xab, 0x68, 0x3a, 0xdf, 0x76, 0x5a, 0x63, 0x5e, ++ 0xc4, 0x6f, 0x16, 0x9b, 0x0f, 0x15, 0x3a, 0x0d, 0xfb, 0xe9, 0xc1, 0x99, ++ 0x80, 0xe3, 0xe5, 0x28, 0xdd, 0x95, 0x3b, 0x06, 0xe3, 0x07, 0x76, 0x26, ++ 0x63, 0x7c, 0x8f, 0x9f, 0xf2, 0x25, 0xf5, 0x35, 0xd9, 0x71, 0x7d, 0xf9, ++ 0x4b, 0x54, 0xb9, 0x7c, 0xab, 0xd0, 0xdf, 0x76, 0x2a, 0x7f, 0xad, 0xf4, ++ 0xeb, 0x42, 0x6f, 0x47, 0x1d, 0x7a, 0x3b, 0x82, 0x42, 0xd0, 0xdb, 0x51, ++ 0x87, 0xde, 0x8e, 0x12, 0x7a, 0x3b, 0x9e, 0x97, 0xc2, 0x5f, 0x8f, 0xb8, ++ 0x6a, 0x53, 0x57, 0x11, 0xec, 0x4e, 0x7f, 0x29, 0xcb, 0xad, 0xa7, 0xfd, ++ 0xd5, 0x91, 0x0b, 0xbd, 0x7c, 0x95, 0x16, 0xe5, 0x81, 0xbc, 0x59, 0xa5, ++ 0x79, 0x06, 0xc1, 0x0f, 0xc6, 0xb6, 0xa7, 0x88, 0x7d, 0x35, 0x8c, 0xbe, ++ 0xaa, 0xbc, 0xb6, 0x8b, 0xeb, 0x56, 0x21, 0xfc, 0x7e, 0xfd, 0x25, 0x3b, ++ 0x0b, 0xcd, 0x1f, 0x9b, 0xc0, 0xe2, 0x0d, 0xf5, 0x89, 0xf6, 0x14, 0x43, ++ 0xfb, 0x72, 0xa7, 0xdb, 0xf0, 0xfe, 0x86, 0xe4, 0xe1, 0x86, 0xf7, 0x37, ++ 0xba, 0x8a, 0x0c, 0xf5, 0x6f, 0xe5, 0x5e, 0x6d, 0x68, 0x7f, 0xb3, 0x67, ++ 0x82, 0xa1, 0x7e, 0x4b, 0xc9, 0x8d, 0x86, 0xf6, 0xd3, 0xbc, 0xd3, 0x0c, ++ 0xf5, 0xe9, 0x93, 0xe7, 0x18, 0xda, 0xcf, 0xf0, 0x55, 0x1a, 0xde, 0xcf, ++ 0x9a, 0xbd, 0xd8, 0xf0, 0x7e, 0x8e, 0xbe, 0xc2, 0x50, 0xbf, 0xbd, 0xe6, ++ 0x1e, 0x43, 0xfb, 0x3b, 0xea, 0xd7, 0x18, 0xde, 0x7b, 0x99, 0xd3, 0x82, ++ 0xfd, 0xed, 0x20, 0xec, 0x29, 0x8e, 0xf7, 0x9f, 0xc3, 0x9e, 0xe2, 0xe5, ++ 0xaa, 0x5f, 0x65, 0x3b, 0x42, 0xe9, 0x3a, 0x7e, 0xa2, 0xa9, 0xbe, 0x2f, ++ 0x7f, 0xfc, 0xa2, 0x5c, 0xa1, 0xcf, 0xdc, 0x3f, 0xdc, 0x3b, 0x1f, 0xfc, ++ 0x91, 0x26, 0xcf, 0x81, 0xa4, 0xc9, 0xf3, 0x1c, 0x77, 0xe7, 0xba, 0x44, ++ 0xde, 0x00, 0xce, 0xed, 0x93, 0x3d, 0xdb, 0x9e, 0x02, 0xbe, 0x09, 0x6f, ++ 0x17, 0xfe, 0x7e, 0x7c, 0xf4, 0xe1, 0x8b, 0x2e, 0x4e, 0xc3, 0xf6, 0xdc, ++ 0x5b, 0x6e, 0xb3, 0x70, 0xf9, 0x30, 0xfe, 0xaa, 0xc3, 0xa3, 0x32, 0x79, ++ 0xdd, 0xfc, 0x74, 0xd3, 0x6d, 0x16, 0x2e, 0x57, 0xc6, 0x5f, 0x73, 0xf8, ++ 0xc5, 0x0c, 0x5e, 0x8f, 0x7e, 0xfa, 0x55, 0x51, 0x1f, 0x79, 0xf8, 0x22, ++ 0xde, 0xaf, 0x7e, 0x7a, 0x83, 0xa8, 0x4f, 0x67, 0xa4, 0x5a, 0x24, 0x3e, ++ 0x3d, 0xee, 0x36, 0x3f, 0x9f, 0xc7, 0xf8, 0xeb, 0x33, 0x36, 0x79, 0x84, ++ 0x3f, 0xa4, 0xcf, 0x7c, 0x4b, 0x55, 0x02, 0x0f, 0xc8, 0x5b, 0x04, 0x1e, ++ 0x50, 0x06, 0x39, 0x7f, 0xa2, 0x3c, 0xcc, 0xf9, 0x13, 0xe5, 0x51, 0xce, ++ 0x9f, 0xd5, 0x59, 0x8c, 0xbd, 0xce, 0xf9, 0x13, 0xe5, 0x31, 0x6e, 0x57, ++ 0xe2, 0xf9, 0x2f, 0xb9, 0x5d, 0x89, 0xf2, 0x6d, 0x6e, 0x57, 0xa2, 0x7c, ++ 0x87, 0xdb, 0x95, 0x28, 0xdb, 0xb9, 0x5d, 0x89, 0xf2, 0x37, 0x8d, 0xb3, ++ 0xa9, 0x7c, 0xbf, 0x51, 0xa7, 0xef, 0xfe, 0xb3, 0xb1, 0x86, 0xca, 0xe3, ++ 0x8d, 0xf5, 0xf4, 0xfc, 0xc3, 0xc6, 0x06, 0x2a, 0x3f, 0x6e, 0xf4, 0xd3, ++ 0xf3, 0xcd, 0xb9, 0xca, 0x4f, 0x11, 0x24, 0x3f, 0x8b, 0x8a, 0x27, 0x2d, ++ 0x43, 0x1c, 0x0f, 0x7e, 0xb8, 0x03, 0xd6, 0xb3, 0xa1, 0x71, 0x56, 0x15, ++ 0x0f, 0x54, 0xf1, 0xbf, 0xa6, 0x7a, 0xd6, 0x11, 0x8d, 0x75, 0xda, 0x61, ++ 0x89, 0xff, 0xd4, 0xde, 0x1b, 0xd7, 0xeb, 0x5f, 0xce, 0x5a, 0xd8, 0xa7, ++ 0x21, 0xfa, 0x56, 0x6b, 0xb4, 0x77, 0x5b, 0x2e, 0xf9, 0x2f, 0x86, 0x38, ++ 0x29, 0xae, 0x23, 0x9f, 0x97, 0x6a, 0xd3, 0xd3, 0x8a, 0x79, 0xf9, 0x85, ++ 0x4b, 0x7f, 0x0a, 0xef, 0x67, 0x14, 0x57, 0xad, 0x8b, 0x73, 0xe3, 0x1c, ++ 0x48, 0xbd, 0x15, 0xfc, 0xf2, 0x81, 0xa9, 0xef, 0x73, 0xc1, 0x77, 0x4b, ++ 0x3e, 0xa9, 0x1a, 0xee, 0xfd, 0x09, 0xbe, 0x53, 0x71, 0x6c, 0x15, 0x47, ++ 0xee, 0xc9, 0x4f, 0x09, 0x89, 0x73, 0x9b, 0x42, 0xf2, 0x62, 0xe8, 0x2f, ++ 0x24, 0xbf, 0x45, 0xc5, 0x9b, 0x55, 0x3e, 0xcd, 0x75, 0x76, 0x91, 0x9f, ++ 0xa7, 0xe2, 0xc9, 0x2a, 0x6f, 0x46, 0xf5, 0x57, 0x7e, 0x89, 0x91, 0xbc, ++ 0xbb, 0x76, 0xa3, 0x85, 0xf4, 0x93, 0x18, 0x0b, 0x0b, 0xa2, 0x7f, 0x95, ++ 0x1f, 0x73, 0xad, 0xbd, 0xad, 0x08, 0xf9, 0x02, 0xd7, 0xd6, 0x3a, 0x28, ++ 0x0f, 0x6d, 0x10, 0x7f, 0x6e, 0x2b, 0xa6, 0x76, 0x5e, 0x33, 0x2f, 0xb7, ++ 0xff, 0x99, 0xb7, 0x2f, 0xec, 0x8d, 0x5f, 0x0f, 0x92, 0xf0, 0xf3, 0xf7, ++ 0x04, 0x7f, 0xf9, 0x25, 0x9d, 0xfc, 0xae, 0xd7, 0xca, 0xf8, 0x3d, 0xbe, ++ 0xb7, 0x8b, 0xf7, 0x7e, 0x7c, 0x8f, 0xdc, 0x29, 0xe8, 0x19, 0xbc, 0x24, ++ 0xbf, 0xda, 0xe3, 0xc8, 0x73, 0x2a, 0xee, 0x8d, 0xa7, 0xa3, 0x7d, 0xb4, ++ 0x68, 0x1f, 0x44, 0x7f, 0x59, 0xff, 0xc5, 0xc7, 0x8b, 0xed, 0x5d, 0x3f, ++ 0x69, 0x09, 0x6d, 0x45, 0xc8, 0xa7, 0x4a, 0x5b, 0xe6, 0xa0, 0x7c, 0xaa, ++ 0x6d, 0x13, 0x82, 0x74, 0x7e, 0x4b, 0x77, 0xeb, 0xef, 0x01, 0x9f, 0xbe, ++ 0x08, 0xe7, 0xef, 0xa3, 0x69, 0xfd, 0x64, 0xa6, 0xc1, 0x4f, 0x30, 0x4d, ++ 0xea, 0xbd, 0x5f, 0x43, 0x87, 0xe3, 0x58, 0xaf, 0x0a, 0x3f, 0x0a, 0xcf, ++ 0x8a, 0x2e, 0x0a, 0xbf, 0x21, 0x79, 0x47, 0x84, 0xd7, 0xfe, 0xe8, 0x14, ++ 0x4e, 0x9f, 0x70, 0xba, 0x28, 0x7a, 0x94, 0x5f, 0xea, 0xc5, 0x33, 0xf0, ++ 0x74, 0x39, 0x1d, 0x7a, 0xe9, 0x04, 0x7f, 0xec, 0xff, 0x2b, 0x74, 0x18, ++ 0x6d, 0x69, 0xa3, 0xf3, 0x7f, 0x11, 0xb5, 0x76, 0x0f, 0xe0, 0xfa, 0x26, ++ 0xba, 0xdc, 0xd9, 0xc5, 0x26, 0xe1, 0x3c, 0x71, 0x72, 0x86, 0x7e, 0x37, ++ 0xe8, 0x53, 0x79, 0xc9, 0xf5, 0x3a, 0xea, 0x55, 0x6c, 0xc2, 0x24, 0x6c, ++ 0x4d, 0xea, 0xbd, 0xfb, 0x1b, 0xde, 0x4f, 0xfe, 0x86, 0xf7, 0x0b, 0xfb, ++ 0x79, 0xff, 0x56, 0xa4, 0xca, 0x47, 0xf0, 0x3a, 0x8a, 0x38, 0x5d, 0x26, ++ 0x4a, 0xf9, 0xb1, 0xaa, 0x5c, 0xe0, 0x77, 0xb2, 0xdb, 0x4c, 0xf8, 0x9d, ++ 0x98, 0xbf, 0x88, 0xf4, 0x51, 0xe6, 0x10, 0x7a, 0x9d, 0x8b, 0xff, 0x0f, ++ 0xf2, 0x64, 0xd2, 0x57, 0xbe, 0xb5, 0xe8, 0x6f, 0xd2, 0x00, 0xa3, 0x7e, ++ 0xa8, 0xe2, 0xc1, 0x37, 0xc9, 0xfe, 0x26, 0x87, 0xc5, 0x81, 0x6f, 0x92, ++ 0x7a, 0xe3, 0x4d, 0x61, 0x7a, 0xe1, 0xb0, 0xe1, 0x32, 0x3e, 0xec, 0x66, ++ 0x6e, 0x61, 0xf7, 0x89, 0x73, 0xee, 0x65, 0x72, 0x9f, 0x4e, 0x95, 0x74, ++ 0xce, 0xe4, 0xc6, 0xfc, 0x78, 0xd0, 0x91, 0xe9, 0x16, 0x08, 0xad, 0xa3, ++ 0x38, 0xe7, 0x5e, 0x88, 0x73, 0xe0, 0x7e, 0xaa, 0xdf, 0xc8, 0x02, 0x54, ++ 0x7e, 0x8b, 0x05, 0x69, 0xdf, 0xba, 0x99, 0x0b, 0x38, 0xd4, 0x6f, 0x61, ++ 0x8c, 0xf2, 0x19, 0x8f, 0x44, 0x4f, 0xad, 0x58, 0xce, 0xfb, 0x9b, 0x38, ++ 0x6a, 0x62, 0x16, 0x9e, 0x87, 0x9c, 0xeb, 0x2b, 0x19, 0x3e, 0x86, 0xce, ++ 0xf5, 0xfd, 0xc1, 0x19, 0x72, 0xae, 0xef, 0x70, 0x99, 0x8b, 0xf4, 0x86, ++ 0xc3, 0xf6, 0x4c, 0xd2, 0x63, 0xb0, 0x0e, 0xac, 0x21, 0x7e, 0xb4, 0x37, ++ 0xb9, 0xdc, 0x47, 0x2a, 0xc3, 0x11, 0xbe, 0x2f, 0xa0, 0x7c, 0x8d, 0xef, ++ 0x0b, 0x59, 0x9c, 0xc9, 0xdf, 0xe0, 0xfb, 0x02, 0xea, 0x37, 0xe5, 0xae, ++ 0x61, 0xf8, 0x6e, 0x92, 0xcb, 0x98, 0x6f, 0xa2, 0xbe, 0xff, 0x96, 0xb3, ++ 0x94, 0x59, 0x46, 0xf5, 0x2f, 0x77, 0xbf, 0x55, 0xf8, 0xf2, 0x10, 0xf8, ++ 0x57, 0xde, 0x8a, 0x1f, 0x56, 0x06, 0xbf, 0xf3, 0x5b, 0xf1, 0x57, 0x95, ++ 0x61, 0xbe, 0x6f, 0xc5, 0x0f, 0x32, 0x89, 0x32, 0xc2, 0x46, 0x65, 0xc1, ++ 0x4b, 0x59, 0x7d, 0xe9, 0x59, 0x8a, 0x0f, 0x7b, 0xc7, 0x9b, 0xc4, 0x2c, ++ 0x89, 0x97, 0xe3, 0x57, 0xe1, 0x33, 0x1c, 0x8f, 0x0a, 0xbf, 0xff, 0x02, ++ 0x3e, 0xe7, 0xf7, 0x85, 0xcf, 0xbb, 0xa5, 0x3e, 0xda, 0x6d, 0x7f, 0x2f, ++ 0x36, 0x39, 0x03, 0xf1, 0x2f, 0xb1, 0xfe, 0xeb, 0x5e, 0x2a, 0x18, 0x04, ++ 0xf8, 0x3f, 0x07, 0x68, 0xc8, 0x4b, 0xb6, 0x0b, 0xbc, 0x84, 0xfb, 0x77, ++ 0x3e, 0x6b, 0x64, 0x43, 0x80, 0x5f, 0xb6, 0x3d, 0x8e, 0x9e, 0xdf, 0x2d, ++ 0x79, 0xe8, 0xda, 0x86, 0x71, 0xd4, 0xfe, 0xba, 0x86, 0x12, 0x9a, 0xdf, ++ 0x35, 0x51, 0xfa, 0xaa, 0xe1, 0x38, 0x77, 0x52, 0x1c, 0xcc, 0xe1, 0x9a, ++ 0x03, 0xfb, 0x6c, 0x5b, 0x13, 0x9d, 0xbf, 0x3d, 0xf7, 0xbc, 0xd9, 0x03, ++ 0xfd, 0xbb, 0xd6, 0xec, 0xda, 0xe4, 0xc1, 0x5a, 0x7f, 0x4b, 0x9c, 0x97, ++ 0x63, 0x5f, 0x1d, 0x49, 0x47, 0xbc, 0x8d, 0x6d, 0xef, 0x3b, 0x6f, 0xb7, ++ 0xd6, 0xae, 0xf0, 0xe6, 0x27, 0xf8, 0x8b, 0x32, 0xbc, 0x77, 0x8b, 0xfd, ++ 0x4f, 0x9c, 0x23, 0x56, 0xfb, 0xef, 0x90, 0x08, 0x91, 0xef, 0xaa, 0xce, ++ 0xb3, 0xf6, 0xb7, 0x1f, 0x8f, 0x8d, 0x12, 0x72, 0x65, 0x48, 0x84, 0x90, ++ 0x83, 0x8a, 0x4e, 0xfc, 0x3b, 0xaa, 0xa7, 0xf2, 0x7e, 0xc6, 0x72, 0xb9, ++ 0x91, 0xfa, 0x50, 0x14, 0xe9, 0xdf, 0x25, 0x09, 0xde, 0x07, 0x80, 0x4f, ++ 0x56, 0xc6, 0x0c, 0xfa, 0xab, 0xb2, 0xab, 0xbb, 0x07, 0x98, 0x29, 0x6e, ++ 0xbd, 0x12, 0xf1, 0xcb, 0x01, 0xb0, 0x6b, 0xec, 0xe4, 0xcf, 0xb9, 0x8e, ++ 0xe5, 0xdc, 0x02, 0x3d, 0xb8, 0x0c, 0xf6, 0x26, 0xc7, 0x43, 0xf9, 0x9b, ++ 0x55, 0x74, 0x4f, 0x81, 0x3a, 0x97, 0x11, 0x91, 0x6c, 0x32, 0xde, 0x6f, ++ 0xe3, 0x8a, 0x32, 0xdc, 0xd7, 0x12, 0x9d, 0x9b, 0x60, 0xa8, 0xc7, 0x78, ++ 0x06, 0x1b, 0xda, 0xc7, 0x95, 0x64, 0x18, 0xde, 0xc7, 0x7b, 0x47, 0x18, ++ 0xde, 0x27, 0x4e, 0x2e, 0x36, 0xd4, 0x07, 0xfa, 0xc6, 0x19, 0xda, 0x0f, ++ 0x9a, 0x5d, 0x6a, 0xa8, 0xa7, 0xe8, 0x37, 0x19, 0xda, 0xa7, 0xd6, 0xdc, ++ 0x6a, 0xa8, 0x2b, 0xf9, 0x92, 0x2a, 0x1e, 0xb1, 0xb4, 0xfa, 0xb9, 0x86, ++ 0xef, 0x87, 0x36, 0xcc, 0x37, 0xb4, 0x77, 0xfb, 0x97, 0x18, 0xef, 0x9f, ++ 0xf1, 0x7b, 0xdb, 0x73, 0x93, 0x20, 0x97, 0xc4, 0x5f, 0xe6, 0xc6, 0x95, ++ 0x86, 0xf7, 0x3f, 0x8a, 0x15, 0xe7, 0x0e, 0x26, 0x3b, 0x16, 0xd2, 0x7d, ++ 0x12, 0xd9, 0xcd, 0xdf, 0x31, 0x8e, 0x6f, 0xfe, 0xca, 0x0c, 0xfc, 0xa6, ++ 0xc6, 0x69, 0xe2, 0xbe, 0x00, 0x97, 0x90, 0x7f, 0x7e, 0xfe, 0x3f, 0xd0, ++ 0xb5, 0x3c, 0xd9, 0x28, 0x0f, 0x27, 0x3a, 0x8d, 0xf6, 0x30, 0xd7, 0xd7, ++ 0x34, 0xec, 0xbf, 0xa9, 0xf5, 0x16, 0xc3, 0xf3, 0x37, 0x86, 0x4b, 0xbb, ++ 0xb7, 0x90, 0x15, 0x92, 0xfc, 0xfb, 0x27, 0xe9, 0x1c, 0x8e, 0x97, 0xee, ++ 0x32, 0xe6, 0x09, 0xa2, 0x3d, 0xf4, 0x15, 0x5e, 0xbf, 0x4e, 0x1f, 0xf1, ++ 0x10, 0xfc, 0x0e, 0x65, 0x03, 0xac, 0x9e, 0x00, 0x13, 0xfe, 0xee, 0xd0, ++ 0x79, 0xc1, 0xdf, 0x1d, 0x8a, 0x07, 0xf8, 0xbb, 0x43, 0xeb, 0xf0, 0x77, ++ 0x1b, 0xef, 0x6d, 0x32, 0xd2, 0x1d, 0xfe, 0xee, 0xd0, 0xf7, 0xa3, 0x8e, ++ 0x19, 0xe9, 0x3e, 0xa6, 0xdd, 0x48, 0xf7, 0xab, 0x8e, 0x1b, 0xe9, 0xae, ++ 0xf8, 0x31, 0x9c, 0x3e, 0x57, 0x77, 0x18, 0xf9, 0x21, 0x9c, 0x3e, 0xd7, ++ 0x9c, 0x0e, 0xe3, 0x0f, 0x49, 0x8f, 0xd9, 0xfc, 0x7f, 0xff, 0x10, 0xe7, ++ 0x98, 0x89, 0x5e, 0x93, 0x1c, 0x1a, 0x7b, 0xcc, 0xfd, 0xaf, 0xd3, 0xe7, ++ 0x6f, 0x61, 0xf4, 0xe9, 0xa1, 0x87, 0xc3, 0x4e, 0xfa, 0xe2, 0x75, 0xc1, ++ 0xbc, 0x38, 0xd4, 0xcb, 0xb1, 0xce, 0xa0, 0x37, 0xc8, 0xf9, 0xdc, 0x90, ++ 0x57, 0xef, 0xc8, 0x80, 0x9c, 0xb4, 0xe9, 0xd6, 0x11, 0x03, 0x7b, 0xf9, ++ 0xa7, 0x29, 0x45, 0xf0, 0x4f, 0xf7, 0xb1, 0x17, 0x23, 0x21, 0xf7, 0x22, ++ 0x46, 0x18, 0xfb, 0x3f, 0x9f, 0xaa, 0x47, 0xa1, 0xfd, 0xec, 0xc4, 0x8b, ++ 0xe9, 0x36, 0xf0, 0x43, 0x97, 0xb8, 0xaf, 0x6f, 0xbe, 0x94, 0x9f, 0x2a, ++ 0x9f, 0x90, 0xdb, 0xbb, 0xe2, 0x3c, 0xdd, 0x77, 0xcc, 0x14, 0xdf, 0x3f, ++ 0x61, 0x6a, 0xa6, 0xfb, 0x92, 0x0e, 0x3b, 0xf5, 0x04, 0x7c, 0x7f, 0x67, ++ 0x7e, 0xbd, 0x86, 0xf8, 0x41, 0x32, 0xf3, 0xed, 0x59, 0xc8, 0xc7, 0x9b, ++ 0xf7, 0x8b, 0x08, 0x8a, 0x27, 0xcc, 0x1b, 0x2a, 0xce, 0x75, 0xb2, 0xfc, ++ 0x0e, 0xca, 0xb3, 0x57, 0x72, 0x6e, 0x5e, 0xaa, 0xc8, 0x63, 0x19, 0x3c, ++ 0x42, 0xc6, 0x27, 0x3d, 0x22, 0x9f, 0x25, 0x6d, 0x84, 0xd0, 0x0b, 0x63, ++ 0x3c, 0x4e, 0xca, 0x7b, 0xad, 0xcc, 0x17, 0xe7, 0x08, 0xb8, 0x59, 0x90, ++ 0x3e, 0xaf, 0x00, 0xf8, 0x78, 0x3b, 0x12, 0xf7, 0x16, 0x76, 0xb7, 0x08, ++ 0xff, 0x7d, 0x87, 0x55, 0x9c, 0x2f, 0xf5, 0x73, 0x3e, 0x45, 0x5c, 0x0c, ++ 0x7a, 0x22, 0xf4, 0xb8, 0x34, 0xa9, 0x47, 0x35, 0xfd, 0xce, 0x6e, 0x07, ++ 0xfc, 0xc3, 0xb6, 0x32, 0xc3, 0xbe, 0x38, 0x3c, 0x60, 0x37, 0xe4, 0x5d, ++ 0xe6, 0xed, 0x72, 0x1a, 0xea, 0x05, 0x6d, 0xc9, 0x86, 0xf6, 0x23, 0x0f, ++ 0xb8, 0x0c, 0xef, 0x8b, 0x82, 0xb9, 0x86, 0xf7, 0xa3, 0x8e, 0x79, 0x0c, ++ 0xf5, 0x31, 0xed, 0x25, 0x86, 0xf6, 0x57, 0x1d, 0xf7, 0x1a, 0xea, 0x57, ++ 0x77, 0x4c, 0x36, 0xb4, 0xbf, 0xe6, 0xb4, 0xcf, 0x50, 0x4f, 0x65, 0x5d, ++ 0x8f, 0x02, 0xbf, 0x43, 0x35, 0x61, 0x8f, 0xce, 0x18, 0x21, 0xf2, 0x78, ++ 0xf8, 0x1a, 0xa5, 0x78, 0xd2, 0xbc, 0x0d, 0xf1, 0xe2, 0xfc, 0xa0, 0xb4, ++ 0x53, 0x95, 0x1e, 0xac, 0xf2, 0x71, 0x75, 0xc9, 0xd7, 0xe1, 0xfa, 0xf4, ++ 0x50, 0x9b, 0x4e, 0xf9, 0xbd, 0x4d, 0x29, 0xcc, 0x43, 0xe7, 0x00, 0xec, ++ 0xd2, 0x3e, 0x61, 0x46, 0x3d, 0x5b, 0x97, 0xf9, 0xb4, 0x4a, 0x1f, 0x65, ++ 0x7e, 0x63, 0x3e, 0xad, 0xca, 0xa3, 0xed, 0xd1, 0xc7, 0xa5, 0xfe, 0xad, ++ 0xf4, 0xe1, 0x90, 0x3c, 0x5a, 0x6f, 0x68, 0x1e, 0xed, 0x3c, 0x79, 0xce, ++ 0x37, 0x7c, 0xdf, 0xab, 0x1c, 0x21, 0xcf, 0xf3, 0x85, 0xc1, 0x3f, 0xd4, ++ 0x26, 0xe6, 0xdb, 0x74, 0x8f, 0x8d, 0xce, 0x2d, 0x28, 0xb8, 0xc2, 0xe1, ++ 0x39, 0x2b, 0xf3, 0x3b, 0x77, 0xd8, 0xfb, 0x3e, 0x3f, 0xb2, 0x7c, 0x84, ++ 0xb0, 0x63, 0x7f, 0x96, 0xe9, 0x5b, 0x34, 0x82, 0x97, 0x4f, 0x40, 0x3c, ++ 0x65, 0xf6, 0x35, 0x9e, 0xa7, 0xc3, 0xcf, 0xf9, 0xab, 0xe9, 0x7b, 0x36, ++ 0xcf, 0x7d, 0xae, 0x6f, 0x1e, 0x6f, 0xde, 0x48, 0x31, 0x9f, 0x0a, 0x93, ++ 0xe9, 0xce, 0x69, 0xf9, 0x94, 0xb7, 0x34, 0xfb, 0x85, 0x90, 0xf1, 0x1b, ++ 0x25, 0x7f, 0x57, 0xe7, 0x6b, 0x7d, 0xce, 0x6f, 0x5e, 0x9c, 0xc8, 0x2b, ++ 0x62, 0x71, 0x36, 0x17, 0xf8, 0xb7, 0xff, 0xf1, 0x04, 0x3e, 0x93, 0x6d, ++ 0x6c, 0x2d, 0x9d, 0x73, 0x91, 0x79, 0xe7, 0x77, 0x6c, 0x6a, 0x7b, 0x10, ++ 0x2e, 0xf2, 0x0a, 0x5b, 0xb3, 0x55, 0xdc, 0x5f, 0x16, 0xb0, 0x82, 0x1f, ++ 0xa6, 0x94, 0x72, 0xfd, 0xa9, 0x88, 0xdb, 0xc9, 0xdb, 0xff, 0xeb, 0x87, ++ 0x0e, 0xae, 0xe7, 0x3c, 0xd1, 0x60, 0x21, 0x3f, 0xc4, 0xfa, 0x67, 0xca, ++ 0x67, 0x70, 0xcd, 0xab, 0xe7, 0x1c, 0xc1, 0x50, 0x6e, 0x5f, 0x80, 0x3f, ++ 0xa0, 0xab, 0xc0, 0x2e, 0xf9, 0x4b, 0x9e, 0xc8, 0x9b, 0xfd, 0xc9, 0x08, ++ 0x46, 0x65, 0xb9, 0xf9, 0xab, 0x9e, 0xfc, 0x6f, 0xf2, 0xa7, 0x33, 0x26, ++ 0xf7, 0x07, 0x61, 0xb7, 0xf4, 0xc1, 0x6f, 0xc4, 0x87, 0x6a, 0x1e, 0xff, ++ 0xee, 0x3c, 0xf0, 0x70, 0x3c, 0x29, 0xbb, 0x90, 0xc9, 0xbc, 0xbb, 0x2c, ++ 0x09, 0x97, 0xc2, 0x5f, 0x8f, 0x1d, 0x2f, 0xf1, 0xa7, 0xf2, 0xf1, 0x5d, ++ 0x2b, 0xac, 0xbe, 0xa7, 0x1c, 0x94, 0xd7, 0x3f, 0x19, 0xf9, 0x4c, 0x8a, ++ 0x7e, 0x31, 0xf9, 0x82, 0x2f, 0x7f, 0x27, 0xf1, 0x81, 0x76, 0x90, 0x47, ++ 0xfd, 0xb5, 0x2b, 0x37, 0xe7, 0xc7, 0xc1, 0x5f, 0xdb, 0xcd, 0x5c, 0x71, ++ 0xce, 0xaf, 0xf1, 0x47, 0xfe, 0xbb, 0xf0, 0xa2, 0xf0, 0xdf, 0xdf, 0xf9, ++ 0x9e, 0xfe, 0xe4, 0xc3, 0x65, 0x72, 0xa1, 0x9f, 0xf3, 0x3e, 0xfd, 0xf1, ++ 0x27, 0xfd, 0xfd, 0x13, 0xe7, 0x7e, 0x42, 0xe4, 0x83, 0xc8, 0x2f, 0x91, ++ 0xf4, 0x08, 0x64, 0x99, 0x28, 0x9e, 0xbb, 0x21, 0xc6, 0xb8, 0x8e, 0xed, ++ 0x79, 0x62, 0x5f, 0x78, 0x4e, 0xed, 0x17, 0x7e, 0x6e, 0x4f, 0x1a, 0xe5, ++ 0x04, 0x83, 0x7f, 0xb9, 0x69, 0x9d, 0x59, 0xca, 0x09, 0xb1, 0x6f, 0x63, ++ 0xff, 0xc4, 0xf3, 0x05, 0xeb, 0xac, 0xa4, 0xcf, 0xb0, 0x06, 0x91, 0x8f, ++ 0x5c, 0x23, 0x65, 0x31, 0x63, 0xbe, 0xa4, 0x71, 0xa3, 0x11, 0x8f, 0xb5, ++ 0xd2, 0x7d, 0x56, 0xd7, 0x79, 0x19, 0xe9, 0x3b, 0xf3, 0x1d, 0xb6, 0x40, ++ 0x2b, 0x6f, 0x5f, 0xe9, 0x0f, 0xdf, 0xb7, 0xbd, 0xf4, 0x3d, 0xc5, 0x6b, ++ 0x5c, 0xb8, 0xb7, 0xc4, 0xb3, 0x1e, 0xfe, 0xf7, 0xaa, 0x8d, 0xc6, 0x76, ++ 0x8b, 0x1c, 0xe2, 0x5e, 0xaf, 0x05, 0x61, 0x76, 0xe9, 0x22, 0x69, 0x97, ++ 0x2e, 0x0a, 0xb3, 0x4b, 0xff, 0x3a, 0x42, 0xda, 0xa5, 0x1e, 0xe6, 0x21, ++ 0xbd, 0x4c, 0xc6, 0x9f, 0x15, 0x9c, 0x3d, 0x7c, 0x15, 0xc8, 0xa4, 0xbc, ++ 0x60, 0xd8, 0xa9, 0x66, 0xe1, 0x2f, 0xa1, 0x7c, 0x25, 0x85, 0x27, 0x17, ++ 0xe2, 0x0b, 0x21, 0xf7, 0x68, 0x72, 0x7c, 0x46, 0xe5, 0x62, 0xdf, 0x5e, ++ 0x6b, 0xe9, 0x33, 0x8f, 0xac, 0x07, 0x9f, 0xfd, 0xc4, 0xc9, 0xcf, 0x22, ++ 0x4e, 0xee, 0xc2, 0xfa, 0xef, 0xa6, 0xf3, 0x3f, 0xdd, 0x7b, 0x23, 0x45, ++ 0x1c, 0x4d, 0xc5, 0x2f, 0x64, 0xfb, 0xb3, 0xfe, 0x8b, 0xf4, 0x1e, 0xed, ++ 0xd1, 0xdb, 0xb9, 0xa2, 0xf6, 0x42, 0xc4, 0x91, 0x7a, 0xe2, 0x1d, 0x61, ++ 0x71, 0x93, 0x6e, 0x87, 0x29, 0xb6, 0x04, 0xfd, 0xed, 0x16, 0xf7, 0x2f, ++ 0xa8, 0x3c, 0x80, 0x25, 0x7f, 0x0d, 0x14, 0x3a, 0x43, 0xe2, 0x9c, 0x7a, ++ 0x87, 0xc9, 0x90, 0x77, 0x11, 0x5e, 0xea, 0x6b, 0xf6, 0x51, 0x5e, 0x40, ++ 0xab, 0x45, 0xcf, 0xcc, 0x43, 0x3e, 0xb2, 0xc5, 0x63, 0xc7, 0x7d, 0x91, ++ 0xf7, 0x3b, 0x0e, 0x27, 0xe1, 0xbc, 0xf6, 0x14, 0xe9, 0xaf, 0x09, 0x87, ++ 0xb7, 0x47, 0xaf, 0x1a, 0xaf, 0x89, 0x38, 0xa1, 0x5f, 0xe8, 0xb9, 0xdd, ++ 0x93, 0x35, 0xd2, 0x73, 0xb9, 0x5c, 0x64, 0x58, 0x47, 0x2a, 0x9e, 0x3d, ++ 0x8d, 0x05, 0x07, 0xa0, 0x54, 0xf1, 0x03, 0x7d, 0x63, 0x09, 0xe1, 0x59, ++ 0xc5, 0x0f, 0x2a, 0x83, 0x25, 0x04, 0xe7, 0x8c, 0xa6, 0x45, 0x56, 0x5c, ++ 0xd9, 0xd7, 0xf1, 0xe8, 0xea, 0xf2, 0x28, 0x57, 0x6f, 0x5c, 0xa1, 0x23, ++ 0x4d, 0xe4, 0xa3, 0xf4, 0x17, 0x5f, 0x98, 0x7e, 0xc9, 0x43, 0xfd, 0xdd, ++ 0x76, 0x69, 0x1c, 0xf5, 0x53, 0x9a, 0xe7, 0x16, 0xe7, 0xf5, 0xd7, 0x3e, ++ 0xb8, 0x02, 0x7c, 0x34, 0x62, 0x17, 0xb3, 0x62, 0x9e, 0x1d, 0x61, 0xf9, ++ 0xd8, 0xaa, 0x7c, 0x21, 0x4f, 0xc8, 0x9f, 0x77, 0xf3, 0x94, 0xdc, 0x96, ++ 0x79, 0x2e, 0x6b, 0x34, 0xa1, 0xc7, 0x6b, 0x4c, 0xe5, 0xbd, 0x90, 0xdc, ++ 0x56, 0xf5, 0x8b, 0xcd, 0xb2, 0x5e, 0x2e, 0xea, 0xab, 0xd6, 0x89, 0x7a, ++ 0x87, 0xbc, 0xc7, 0x68, 0xa7, 0xf4, 0x37, 0x60, 0x9e, 0x28, 0x31, 0x1f, ++ 0xd8, 0xc5, 0xbb, 0xa5, 0x3f, 0x02, 0xf3, 0x40, 0x89, 0x79, 0xe0, 0x39, ++ 0xe4, 0x14, 0xea, 0x90, 0x53, 0xa8, 0x43, 0x4e, 0xa1, 0x0e, 0x39, 0x85, ++ 0x12, 0x72, 0x0a, 0xcf, 0xe7, 0x33, 0x5f, 0x7a, 0x91, 0x59, 0xc4, 0x41, ++ 0xca, 0x42, 0xd6, 0x0d, 0xe2, 0x20, 0x65, 0x21, 0x7a, 0x10, 0xe2, 0x20, ++ 0xa1, 0x75, 0xc4, 0x41, 0x42, 0xdb, 0x23, 0x0e, 0x12, 0xfa, 0x1e, 0x71, ++ 0x90, 0xd0, 0xf7, 0x88, 0x83, 0x84, 0xd6, 0x11, 0x07, 0x09, 0x6d, 0x8f, ++ 0x38, 0x48, 0x68, 0x9d, 0x95, 0xdc, 0xd8, 0x5b, 0x87, 0x5c, 0xf3, 0x4e, ++ 0x33, 0xd4, 0xa7, 0x73, 0x7d, 0xbf, 0x2c, 0x64, 0xdd, 0x22, 0x0e, 0x12, ++ 0xda, 0x3f, 0xe2, 0x20, 0x86, 0xfe, 0xf4, 0x15, 0x86, 0xef, 0x6f, 0x67, ++ 0x0d, 0x86, 0xef, 0x11, 0x07, 0x09, 0x6d, 0x7f, 0x67, 0x83, 0x66, 0x88, ++ 0x93, 0xdc, 0x29, 0xcf, 0xa5, 0x57, 0x6d, 0x4d, 0x20, 0xfe, 0xb8, 0xc9, ++ 0xed, 0x6b, 0xcc, 0xe3, 0xf4, 0xfd, 0x43, 0xf4, 0xdf, 0xef, 0xb6, 0xc2, ++ 0x0e, 0x34, 0x1f, 0x5c, 0x4c, 0xf6, 0x59, 0x5d, 0x94, 0x47, 0xd0, 0xb9, ++ 0x79, 0xb2, 0xa0, 0xbb, 0x89, 0x09, 0x3a, 0x77, 0xcd, 0x21, 0x3a, 0xaf, ++ 0xb6, 0x89, 0x7a, 0xb9, 0xc8, 0x8b, 0xed, 0x2b, 0xde, 0x50, 0x96, 0x25, ++ 0xe2, 0x0d, 0x28, 0x11, 0x6f, 0x40, 0x89, 0x78, 0x03, 0x4a, 0xc4, 0x1b, ++ 0x70, 0x1f, 0x36, 0xe2, 0x0d, 0x28, 0x11, 0x6f, 0xc0, 0x73, 0xc4, 0x1b, ++ 0x50, 0x22, 0xde, 0x80, 0x12, 0xf1, 0x06, 0x94, 0x88, 0x37, 0xa0, 0x44, ++ 0xbc, 0x01, 0x25, 0xe2, 0x0d, 0xf8, 0x0e, 0xf1, 0x06, 0x94, 0x88, 0x37, ++ 0xe0, 0x39, 0xe2, 0x0d, 0x28, 0x11, 0x6f, 0xc0, 0xf3, 0x13, 0x88, 0x7b, ++ 0x64, 0xf5, 0xc2, 0x05, 0xbd, 0x3d, 0xcb, 0x60, 0x3f, 0x72, 0x3e, 0x34, ++ 0xd8, 0x8f, 0x4e, 0x43, 0x1d, 0x7a, 0x7b, 0x68, 0x7b, 0xe8, 0xed, 0xa1, ++ 0xef, 0xa1, 0xb7, 0x87, 0xbe, 0x87, 0xde, 0x1e, 0x5a, 0x87, 0xde, 0x1e, ++ 0xda, 0x1e, 0x7a, 0x7b, 0x68, 0xfd, 0xd0, 0x08, 0x17, 0xad, 0x33, 0xe8, ++ 0xef, 0xa1, 0xdf, 0x41, 0x7f, 0x0f, 0xad, 0x17, 0x34, 0xfb, 0x5f, 0x83, ++ 0x8f, 0xe9, 0xe6, 0x6d, 0xe7, 0x8f, 0xa2, 0xec, 0x88, 0xd1, 0x9e, 0xd0, ++ 0xb8, 0x28, 0x08, 0xe6, 0x7d, 0x3c, 0x03, 0x71, 0xa4, 0x8e, 0x48, 0x2d, ++ 0x3d, 0x9e, 0x2f, 0x79, 0xeb, 0x9a, 0xce, 0x19, 0x65, 0xbc, 0xae, 0xcb, ++ 0xfc, 0xb2, 0x42, 0xd6, 0x45, 0xf7, 0x3b, 0xeb, 0xf2, 0xde, 0x1a, 0x3d, ++ 0xc8, 0x28, 0x1f, 0xb6, 0xe0, 0x2f, 0xc9, 0x42, 0x2e, 0xc8, 0x38, 0x24, ++ 0xfd, 0x71, 0xba, 0x17, 0xed, 0x65, 0x64, 0x07, 0x94, 0xca, 0xf3, 0x83, ++ 0xea, 0x7b, 0x0f, 0x73, 0x9a, 0x51, 0xaa, 0xf6, 0xbd, 0xf5, 0xbe, 0xdb, ++ 0x85, 0x8f, 0xaf, 0xda, 0x91, 0xbc, 0x0c, 0x81, 0x83, 0x1b, 0x88, 0x45, ++ 0xc8, 0x83, 0x28, 0x5a, 0xed, 0x28, 0x46, 0x1e, 0xf7, 0x4e, 0x93, 0x26, ++ 0xf2, 0x20, 0xef, 0x13, 0x79, 0xa8, 0xe1, 0x7c, 0xf5, 0x27, 0xb9, 0x6f, ++ 0xef, 0x34, 0xed, 0x39, 0x1c, 0x85, 0xbc, 0x96, 0x4a, 0x8d, 0xee, 0x8b, ++ 0xcf, 0xb1, 0xb0, 0x63, 0xb8, 0xc7, 0xbb, 0xa0, 0xb9, 0xbe, 0x18, 0xfa, ++ 0xc2, 0xc7, 0x79, 0x3d, 0xf7, 0xcb, 0x8f, 0x43, 0x5e, 0x8c, 0x82, 0x5b, ++ 0xf9, 0x01, 0xb9, 0x9c, 0xa0, 0x73, 0x55, 0xe3, 0xbb, 0x98, 0xad, 0x3a, ++ 0x1f, 0xf7, 0x89, 0x31, 0xdb, 0x02, 0xc8, 0x77, 0x9b, 0xd0, 0x13, 0xf0, ++ 0x1d, 0xec, 0xc7, 0x3c, 0xbf, 0xe6, 0x7d, 0x2a, 0x84, 0xbf, 0x3f, 0xcd, ++ 0x13, 0x7a, 0xbf, 0xee, 0x5f, 0x31, 0xae, 0x9a, 0x3f, 0xcf, 0xdb, 0x5d, ++ 0x3f, 0x0e, 0xe7, 0xb5, 0xa6, 0x44, 0x89, 0xef, 0x7e, 0xf2, 0x64, 0x2c, ++ 0xe1, 0x71, 0xea, 0x5a, 0xed, 0x29, 0x9c, 0x8b, 0x1b, 0xbf, 0x9b, 0x79, ++ 0x71, 0xfe, 0xf2, 0x82, 0x84, 0x3b, 0x6f, 0xb7, 0xd3, 0x56, 0x4d, 0xe3, ++ 0x3a, 0xe9, 0x9c, 0x57, 0x8f, 0xbd, 0xb2, 0x2d, 0x9d, 0xce, 0xa5, 0x55, ++ 0xb2, 0x8e, 0xb2, 0x64, 0xf2, 0xe5, 0x6b, 0x74, 0x8f, 0xb9, 0xc2, 0x1b, ++ 0x9f, 0xdf, 0x51, 0xcc, 0x8f, 0x8b, 0xf8, 0x63, 0x56, 0xd2, 0x47, 0xc5, ++ 0x79, 0x91, 0x28, 0x79, 0x5e, 0x44, 0x9d, 0x13, 0x71, 0x5b, 0x7c, 0x7b, ++ 0x60, 0x8f, 0xa8, 0xf3, 0x22, 0xd7, 0x8e, 0x8e, 0x2f, 0x47, 0xbe, 0x16, ++ 0x3b, 0x28, 0xee, 0xdd, 0xbb, 0x79, 0x74, 0xe5, 0xba, 0x81, 0xbc, 0x7f, ++ 0x3d, 0x20, 0xee, 0xdd, 0xbb, 0xf6, 0x4f, 0xf5, 0xaf, 0x51, 0x7d, 0xbb, ++ 0xb8, 0x77, 0x8f, 0xd8, 0x60, 0x2c, 0x8d, 0x43, 0xfb, 0xda, 0x30, 0xbf, ++ 0x46, 0xf7, 0x3d, 0x4c, 0xf5, 0xb7, 0x9a, 0x06, 0xb8, 0x70, 0x7e, 0x74, ++ 0x8d, 0x35, 0x09, 0xed, 0x77, 0x33, 0x0f, 0xd4, 0x9f, 0x61, 0x4c, 0x9c, ++ 0x83, 0x54, 0xf0, 0xe5, 0xb3, 0x76, 0x13, 0xee, 0x1d, 0xe7, 0x5b, 0xcc, ++ 0x91, 0xc4, 0x10, 0x3e, 0xe2, 0x9c, 0x7a, 0x1b, 0xe8, 0x5e, 0xe4, 0xb1, ++ 0xd2, 0x7d, 0x10, 0xd3, 0x2c, 0x4e, 0x2b, 0xe4, 0x46, 0xf8, 0x3e, 0x7e, ++ 0x79, 0x3e, 0x5d, 0x98, 0x9e, 0x10, 0x96, 0x0f, 0xd1, 0xb4, 0xfa, 0x78, ++ 0xba, 0x39, 0x03, 0xfe, 0x24, 0x93, 0x27, 0x08, 0xb9, 0xb5, 0x2f, 0x9a, ++ 0xf4, 0x05, 0xa5, 0xef, 0x54, 0xca, 0x3c, 0xa8, 0x8b, 0x6b, 0x5f, 0xa3, ++ 0xfb, 0xac, 0x2b, 0xf7, 0x08, 0xfd, 0x40, 0xe7, 0x72, 0x00, 0xf2, 0x4f, ++ 0xe5, 0x47, 0xd4, 0x65, 0x06, 0xd2, 0x4d, 0xd0, 0x17, 0x06, 0xb7, 0x16, ++ 0x26, 0x98, 0xc5, 0xfe, 0x9f, 0xcf, 0xf1, 0x78, 0xc6, 0xff, 0xe2, 0xcc, ++ 0x12, 0x17, 0xce, 0x31, 0xbe, 0x46, 0xf9, 0xfa, 0x95, 0xeb, 0xc6, 0xc4, ++ 0x89, 0xf3, 0x3a, 0x22, 0xfe, 0x50, 0x2d, 0xf1, 0x54, 0x2d, 0xf3, 0x5f, ++ 0x58, 0xbe, 0x33, 0x09, 0x7a, 0xa7, 0xba, 0xc7, 0xb4, 0xdc, 0x3c, 0x3e, ++ 0x8e, 0xce, 0xbb, 0x35, 0x0b, 0x7d, 0x4e, 0xf9, 0x77, 0x2a, 0x7f, 0x35, ++ 0xea, 0x75, 0xd0, 0xb9, 0xf2, 0x71, 0x79, 0x1f, 0xc8, 0xc6, 0x4a, 0x3a, ++ 0x07, 0x14, 0x9e, 0x87, 0xa2, 0xf4, 0x43, 0x75, 0xdf, 0xc9, 0xe2, 0xb5, ++ 0x56, 0xca, 0x6f, 0x59, 0x1c, 0xa6, 0x07, 0x2e, 0x95, 0x7a, 0xe0, 0xd2, ++ 0x30, 0x3d, 0xf0, 0x9a, 0x7c, 0xe9, 0x9f, 0x51, 0x7a, 0xa0, 0xba, 0x9f, ++ 0x4e, 0xb6, 0xa9, 0xfc, 0xd5, 0x91, 0x19, 0xa4, 0xa7, 0xd4, 0x8b, 0xfb, ++ 0xf8, 0x2a, 0xd6, 0x08, 0xbd, 0x85, 0xed, 0x11, 0xf7, 0xd8, 0x57, 0xac, ++ 0x99, 0x68, 0xc2, 0xbd, 0x15, 0x15, 0xfb, 0xbc, 0x1e, 0xad, 0x0f, 0xfe, ++ 0x78, 0x57, 0xea, 0x2f, 0x53, 0x30, 0x68, 0x22, 0xf2, 0x7c, 0x06, 0x53, ++ 0x39, 0xf3, 0x52, 0x32, 0x95, 0xb3, 0x2e, 0xe5, 0x92, 0x1c, 0xc0, 0x59, ++ 0x0c, 0xd0, 0xbf, 0xe3, 0x65, 0x46, 0xfa, 0xf4, 0x7b, 0x52, 0x5f, 0x99, ++ 0x81, 0x3c, 0x3f, 0x9c, 0x8f, 0xf3, 0x47, 0xc8, 0x7c, 0x3e, 0x46, 0xfa, ++ 0x52, 0x11, 0x73, 0x96, 0x43, 0x6e, 0x8c, 0xf0, 0x6a, 0x47, 0xe0, 0xbe, ++ 0x9e, 0x62, 0xd5, 0xd7, 0x21, 0x8f, 0x70, 0x4a, 0x2b, 0xa3, 0xf3, 0x30, ++ 0x37, 0x43, 0xaf, 0xe1, 0x2f, 0x66, 0x43, 0xcf, 0x19, 0x05, 0x3e, 0x77, ++ 0x97, 0xd3, 0xb9, 0x80, 0xc9, 0x1a, 0x9d, 0xaf, 0xb8, 0x79, 0xf4, 0x0a, ++ 0xc9, 0xd7, 0x9c, 0xcf, 0x19, 0xf8, 0xdc, 0x2f, 0xf9, 0xd6, 0x47, 0xf5, ++ 0x9e, 0xfd, 0x40, 0xf2, 0xb7, 0xee, 0xef, 0xb4, 0xd0, 0xbd, 0xac, 0x7e, ++ 0xcd, 0x86, 0x7b, 0xd9, 0x74, 0x69, 0xcf, 0x2a, 0xfe, 0x0d, 0xe7, 0xf3, ++ 0x79, 0xf2, 0xf7, 0x26, 0x98, 0x43, 0xf8, 0x99, 0x7a, 0xfc, 0x50, 0x00, ++ 0x16, 0x97, 0xab, 0xf8, 0xc7, 0xce, 0x84, 0xbe, 0x38, 0x0f, 0xbe, 0xc1, ++ 0xc1, 0x92, 0x90, 0x76, 0xd8, 0x75, 0xe2, 0xfd, 0xdd, 0xbb, 0xc7, 0xce, ++ 0x5c, 0x8b, 0x1c, 0xeb, 0xff, 0x4b, 0xff, 0x44, 0x85, 0xfa, 0x1d, 0x06, ++ 0xae, 0x67, 0x41, 0x9e, 0xde, 0x71, 0x57, 0x91, 0x6d, 0x7e, 0x88, 0x5c, ++ 0x29, 0x2d, 0x2c, 0x6d, 0x29, 0x18, 0xd8, 0x4b, 0xf7, 0xf9, 0x3d, 0xe7, ++ 0xc6, 0xf2, 0x07, 0x41, 0xff, 0x5f, 0x79, 0x7f, 0xf6, 0xa0, 0xaf, 0x3b, ++ 0xbf, 0x58, 0xc5, 0xf1, 0x8c, 0xf5, 0x31, 0x2f, 0xae, 0xe3, 0x6e, 0xdc, ++ 0x8c, 0xfb, 0x70, 0x3e, 0xf3, 0x96, 0x25, 0xe3, 0x3e, 0x66, 0xa6, 0x2e, ++ 0x91, 0x09, 0x22, 0x5f, 0x6d, 0xae, 0xac, 0x1f, 0xde, 0x7d, 0xe7, 0x7f, ++ 0x6e, 0x74, 0x10, 0x7e, 0xa8, 0xbe, 0x39, 0xbf, 0x7c, 0xa6, 0x9f, 0xd6, ++ 0x8b, 0x90, 0x57, 0xb7, 0x43, 0x5e, 0x99, 0x21, 0xa7, 0xf4, 0x87, 0xf2, ++ 0x91, 0x1f, 0x64, 0xef, 0x98, 0x04, 0x7a, 0x44, 0xe7, 0x77, 0xc9, 0xf3, ++ 0xf0, 0xf2, 0x1c, 0x6b, 0x98, 0x3f, 0xe2, 0x70, 0xbe, 0xa0, 0x43, 0xb8, ++ 0x5f, 0xa2, 0x2a, 0x5f, 0xc8, 0x71, 0x66, 0x71, 0xa5, 0xdf, 0x4e, 0xe7, ++ 0x54, 0x5d, 0xe4, 0xd7, 0x53, 0xf0, 0x7f, 0x62, 0x35, 0x9e, 0x1b, 0x54, ++ 0xe5, 0xcf, 0xa4, 0x7d, 0xfd, 0xef, 0xca, 0xb7, 0xff, 0x73, 0x92, 0xfe, ++ 0x2c, 0xe6, 0xf7, 0x88, 0x49, 0x9c, 0xdf, 0x1e, 0x6c, 0x6e, 0x66, 0xd2, ++ 0x3f, 0x24, 0x7e, 0x27, 0x43, 0xae, 0x1f, 0x26, 0xef, 0x33, 0xe8, 0xa5, ++ 0x3f, 0x97, 0x1a, 0xa0, 0xff, 0xfd, 0x9a, 0x33, 0x94, 0xfe, 0xfa, 0x46, ++ 0x4d, 0x9c, 0x9b, 0xee, 0xc7, 0x8f, 0xc3, 0x72, 0xbb, 0x1e, 0xdd, 0x01, ++ 0x3f, 0x5e, 0xa3, 0xf8, 0x7d, 0x8e, 0x27, 0x73, 0x04, 0x1f, 0x3d, 0xf9, ++ 0x1d, 0x1b, 0xe9, 0xdf, 0x15, 0xb6, 0xf6, 0xd7, 0x70, 0x4f, 0x93, 0xc2, ++ 0xe3, 0x47, 0x0d, 0xff, 0x61, 0xa5, 0xfb, 0xfe, 0x58, 0x30, 0x1b, 0xf7, ++ 0x4f, 0xcd, 0xad, 0x8f, 0xa4, 0xfb, 0x5e, 0x4b, 0x0b, 0x7d, 0x87, 0x20, ++ 0xf7, 0xa2, 0xf3, 0x3d, 0x44, 0x8f, 0x96, 0x02, 0xc1, 0x67, 0x1d, 0x4e, ++ 0xdf, 0x51, 0x3c, 0xaf, 0xdb, 0x74, 0xe8, 0x09, 0x9c, 0x1f, 0x5f, 0x7e, ++ 0xd0, 0x4d, 0xe7, 0x1a, 0x2b, 0x0f, 0x14, 0xad, 0xc7, 0xbd, 0x16, 0xa5, ++ 0x85, 0xfa, 0x9b, 0x98, 0x6f, 0xa5, 0xc3, 0x69, 0xc3, 0xfe, 0xbd, 0x6c, ++ 0x6d, 0x3c, 0xed, 0x67, 0xf3, 0x06, 0xc9, 0xf3, 0x85, 0xac, 0x8b, 0xe2, ++ 0x54, 0x0a, 0xff, 0x9d, 0xf9, 0x62, 0x1f, 0xdd, 0x52, 0xc8, 0xe4, 0x3d, ++ 0xa7, 0x32, 0xbf, 0x9e, 0x0b, 0xca, 0x69, 0x86, 0x76, 0x32, 0xaf, 0x38, ++ 0x6c, 0x9d, 0x28, 0xff, 0x60, 0xb8, 0x9f, 0x21, 0xfc, 0x3e, 0x81, 0xfe, ++ 0xd6, 0x8f, 0xf2, 0x27, 0xc0, 0x7f, 0x60, 0x0b, 0xf1, 0x2f, 0x2a, 0xff, ++ 0x84, 0x35, 0xf7, 0x93, 0x39, 0xd8, 0x3f, 0x2b, 0x6c, 0xc6, 0xf3, 0x70, ++ 0xaa, 0x4c, 0x28, 0x90, 0x76, 0xae, 0xb4, 0x03, 0x17, 0xf4, 0xec, 0x5f, ++ 0xf9, 0x93, 0x06, 0x41, 0x5f, 0xde, 0xac, 0xd1, 0xef, 0xd6, 0x54, 0x3b, ++ 0x5c, 0xb3, 0xae, 0xe6, 0xf5, 0xea, 0x63, 0x56, 0x64, 0x0a, 0xb2, 0x29, ++ 0x09, 0x2e, 0x71, 0x8f, 0xc4, 0xfd, 0xe2, 0x1e, 0x89, 0xf9, 0x7c, 0xbd, ++ 0x42, 0xde, 0x54, 0xc8, 0xbc, 0xa1, 0xea, 0xad, 0x25, 0xb4, 0xde, 0xaa, ++ 0x03, 0xbc, 0x4c, 0xec, 0x7f, 0x5d, 0xde, 0xbe, 0xf9, 0x48, 0xda, 0xcb, ++ 0xe0, 0x9f, 0xa0, 0x97, 0xce, 0x89, 0x57, 0x3b, 0xbd, 0xb6, 0x84, 0x90, ++ 0x75, 0x5f, 0xd5, 0xac, 0x19, 0xce, 0x99, 0xab, 0xba, 0xa9, 0xc0, 0x2c, ++ 0xd6, 0x11, 0xae, 0x30, 0x2f, 0x86, 0xbc, 0x70, 0xdb, 0x70, 0x97, 0x4b, ++ 0x05, 0x57, 0x2b, 0x90, 0x87, 0x96, 0x50, 0x20, 0xf8, 0x43, 0x7d, 0xc7, ++ 0xdb, 0x51, 0x1e, 0xc3, 0x94, 0x0c, 0xf6, 0xba, 0xb8, 0xc7, 0x87, 0xc3, ++ 0xed, 0x16, 0xe3, 0x15, 0x87, 0xf4, 0x3f, 0xbf, 0xd9, 0x78, 0x5e, 0x9e, ++ 0xb7, 0x27, 0x7d, 0xc8, 0x51, 0x10, 0x23, 0xce, 0xa7, 0x3b, 0xf9, 0xbc, ++ 0xe1, 0xff, 0x70, 0x3a, 0x09, 0x4e, 0x8e, 0x07, 0xc2, 0x53, 0xd7, 0x83, ++ 0xbc, 0x3f, 0x17, 0x8d, 0x43, 0xf4, 0xa8, 0x0a, 0x06, 0xac, 0xb0, 0xb7, ++ 0x2b, 0x90, 0x3f, 0xc1, 0xeb, 0x73, 0x9d, 0x01, 0x2b, 0xc6, 0x99, 0xbf, ++ 0x56, 0xdc, 0x5b, 0xa1, 0x6f, 0x12, 0xe3, 0xe8, 0x1b, 0xe3, 0x6d, 0x05, ++ 0xd0, 0x97, 0x2c, 0x4e, 0x5b, 0x1a, 0xf0, 0x27, 0xef, 0xb5, 0xe7, 0xf0, ++ 0x91, 0x1c, 0xac, 0xe6, 0x78, 0xc1, 0xf9, 0x1f, 0x75, 0x0e, 0x30, 0x1c, ++ 0x3f, 0x95, 0x12, 0xde, 0xea, 0xe6, 0x78, 0xa3, 0x1e, 0xd6, 0xbc, 0xd9, ++ 0x0a, 0x7a, 0xcc, 0xe9, 0xe7, 0xfc, 0xfc, 0x75, 0x05, 0x82, 0x6f, 0xe7, ++ 0xaf, 0x9d, 0x40, 0xe7, 0x9f, 0xab, 0x2d, 0x5e, 0xca, 0xaf, 0xd7, 0x25, ++ 0x7e, 0xff, 0xb8, 0x22, 0xf2, 0x01, 0xc4, 0x07, 0xe6, 0xb4, 0x6c, 0xb1, ++ 0xba, 0x79, 0xbd, 0xb0, 0x40, 0xc8, 0x99, 0xeb, 0x0a, 0x04, 0x7f, 0x4d, ++ 0xc9, 0x08, 0x66, 0xd3, 0xfd, 0x34, 0x2b, 0x22, 0x3d, 0x80, 0x73, 0x8e, ++ 0xb3, 0x99, 0xe6, 0xd7, 0x83, 0xdf, 0x87, 0x39, 0x3e, 0x34, 0xdc, 0x83, ++ 0xe2, 0x23, 0xfc, 0x72, 0xbe, 0xf0, 0x23, 0x8f, 0xac, 0xba, 0xc5, 0x48, ++ 0xcf, 0x5e, 0x78, 0x62, 0xc4, 0x3d, 0x46, 0x2d, 0x95, 0xb4, 0xde, 0x16, ++ 0x5a, 0x74, 0x9b, 0x33, 0x14, 0x8e, 0xad, 0x87, 0xb2, 0x71, 0xae, 0x67, ++ 0x0e, 0x5f, 0xdf, 0xb8, 0x77, 0x87, 0x39, 0x75, 0x3a, 0x6f, 0xf3, 0xe9, ++ 0xc3, 0xb3, 0xd2, 0x69, 0x9e, 0x1c, 0x4e, 0xe0, 0x35, 0xc6, 0xe3, 0x9a, ++ 0x84, 0xfb, 0x66, 0x38, 0x9f, 0x10, 0x1f, 0x2b, 0x7e, 0x51, 0xe7, 0x83, ++ 0xd5, 0x78, 0x33, 0x0b, 0xc4, 0x79, 0xc7, 0x99, 0x05, 0x7d, 0xfb, 0xd7, ++ 0x7b, 0xd7, 0xa5, 0x97, 0xf4, 0x9b, 0x26, 0x4e, 0x5f, 0xf8, 0xbd, 0xfb, ++ 0x5b, 0x97, 0x36, 0x1c, 0x34, 0xe2, 0xe3, 0xda, 0xaa, 0xc5, 0x3d, 0x60, ++ 0xe1, 0xeb, 0x54, 0xad, 0x4f, 0xb5, 0x2e, 0xd5, 0x3a, 0x55, 0xeb, 0xf7, ++ 0x09, 0xab, 0x2f, 0x98, 0xac, 0xf5, 0xca, 0x19, 0xbe, 0xdf, 0xd6, 0xbf, ++ 0xd0, 0x07, 0x9e, 0x5a, 0x0a, 0x84, 0x1c, 0x99, 0x2b, 0xe9, 0xca, 0xf1, ++ 0x7a, 0x34, 0xf4, 0x5c, 0xd1, 0xf7, 0xe4, 0x7a, 0xae, 0xc8, 0x30, 0xae, ++ 0x77, 0xf4, 0x47, 0xf7, 0x06, 0x4a, 0xba, 0x57, 0x94, 0x06, 0xb3, 0x71, ++ 0x0e, 0x50, 0xb5, 0x57, 0xe3, 0x56, 0x24, 0x88, 0xef, 0xc0, 0xf7, 0xe0, ++ 0xb7, 0xa5, 0x72, 0x3c, 0xb4, 0x5f, 0x49, 0xed, 0x4d, 0x06, 0x79, 0x51, ++ 0xd5, 0x23, 0x2f, 0x76, 0xaf, 0x4b, 0x82, 0xbc, 0xd8, 0xa3, 0x91, 0xbe, ++ 0xbb, 0xf2, 0xc1, 0x23, 0x69, 0xdf, 0x86, 0x1e, 0xfb, 0x9c, 0xd0, 0x63, ++ 0xcf, 0xd4, 0xee, 0x58, 0x96, 0x02, 0xbf, 0x81, 0x25, 0x90, 0x1e, 0x7a, ++ 0x3f, 0x53, 0x75, 0x50, 0xc8, 0x87, 0x05, 0x5c, 0xff, 0x81, 0xbc, 0x58, ++ 0x28, 0xf7, 0xe9, 0x92, 0x6c, 0xfd, 0x3b, 0x05, 0x21, 0xeb, 0xb7, 0xfa, ++ 0x87, 0xcf, 0xe5, 0xe8, 0x42, 0xbe, 0x04, 0x21, 0x5f, 0x3e, 0x7e, 0xee, ++ 0x95, 0x0f, 0xc6, 0xb9, 0x7a, 0xf7, 0x4f, 0x05, 0xff, 0xfc, 0x8d, 0xbf, ++ 0xb6, 0x56, 0x3a, 0x42, 0xf1, 0xa5, 0xc9, 0xfb, 0x28, 0xba, 0xe9, 0xdc, ++ 0x57, 0x95, 0xc3, 0xe6, 0x42, 0x9e, 0x6d, 0xd5, 0xda, 0x4a, 0x92, 0xb7, ++ 0x2c, 0x99, 0xdb, 0x13, 0x5a, 0x48, 0x9e, 0x54, 0x18, 0x1f, 0x54, 0xae, ++ 0xd5, 0xe8, 0xde, 0xac, 0xaa, 0x86, 0xb1, 0x01, 0xf3, 0xff, 0xa0, 0x5c, ++ 0xae, 0xda, 0x34, 0x8d, 0xee, 0xe6, 0x51, 0x74, 0x52, 0xf7, 0x6f, 0xa8, ++ 0xfd, 0x54, 0xc1, 0xff, 0xb8, 0x84, 0x7f, 0xae, 0xe4, 0xe3, 0x80, 0x94, ++ 0x6b, 0x73, 0x6b, 0xdc, 0xb6, 0x85, 0xb4, 0xee, 0xdd, 0xb6, 0x2a, 0xf0, ++ 0xbf, 0x7c, 0x3f, 0xa7, 0xda, 0xf8, 0xbc, 0x87, 0x4e, 0x3d, 0x71, 0xec, ++ 0xfc, 0xf5, 0xc9, 0xf2, 0x1c, 0x0b, 0xd9, 0x25, 0x9b, 0xac, 0xc2, 0xbf, ++ 0xb7, 0x3b, 0x86, 0xf4, 0xd5, 0x33, 0x2b, 0x5f, 0x7a, 0x67, 0x26, 0x6f, ++ 0xf7, 0xc5, 0x23, 0xad, 0xe9, 0xd0, 0x4f, 0x14, 0x1c, 0x8b, 0xa4, 0x1f, ++ 0x6f, 0x81, 0xf4, 0xc7, 0x2d, 0x94, 0x7a, 0x2b, 0xa7, 0xd3, 0x4f, 0x0b, ++ 0x42, 0xf2, 0x5b, 0x16, 0x3d, 0x29, 0xe8, 0x54, 0xf5, 0xfc, 0xaf, 0x7e, ++ 0x8f, 0xfb, 0xa1, 0x2a, 0x32, 0xa4, 0x3c, 0x7b, 0x50, 0x9c, 0x2f, 0x9f, ++ 0xdf, 0xb6, 0x87, 0xe8, 0x36, 0x67, 0xe3, 0x66, 0xab, 0x9b, 0xb7, 0xfb, ++ 0x45, 0x81, 0xdb, 0x20, 0xa7, 0xab, 0xea, 0x8b, 0x9c, 0xf0, 0x4f, 0xcf, ++ 0xdd, 0xd8, 0x6a, 0x85, 0x1c, 0xf8, 0x85, 0x94, 0x37, 0xe1, 0xfc, 0x5e, ++ 0x21, 0xf3, 0x52, 0x15, 0x5e, 0xb1, 0xef, 0x68, 0x21, 0xf1, 0x0b, 0xd5, ++ 0x1e, 0xf2, 0x6f, 0x0f, 0x1f, 0xe7, 0xae, 0x15, 0x91, 0xb1, 0xc8, 0x73, ++ 0x51, 0xe3, 0x9c, 0x96, 0x7c, 0x5c, 0x55, 0x1f, 0x9f, 0x80, 0xf1, 0xaa, ++ 0xea, 0x2b, 0x7f, 0x00, 0xbb, 0x47, 0xc9, 0xfb, 0xf0, 0x75, 0x77, 0x32, ++ 0x52, 0xac, 0x87, 0xf9, 0xbc, 0x3f, 0xac, 0xcb, 0x93, 0x13, 0x3c, 0x74, ++ 0xce, 0xb6, 0x42, 0xfe, 0xbe, 0x54, 0x78, 0xfb, 0x3f, 0x48, 0xba, 0xfd, ++ 0xc8, 0x2a, 0xee, 0x11, 0x4c, 0x8d, 0x6e, 0x7b, 0x9a, 0xf2, 0x16, 0x96, ++ 0x47, 0x79, 0x20, 0x1f, 0xb2, 0xb2, 0x3a, 0x02, 0x18, 0x17, 0xfc, 0x0c, ++ 0xb8, 0x6d, 0x26, 0x71, 0xef, 0x60, 0x56, 0x6d, 0xc7, 0x97, 0x80, 0x83, ++ 0xab, 0xc5, 0x94, 0x9f, 0x82, 0x12, 0xf7, 0x1d, 0x41, 0x4d, 0x4e, 0xe2, ++ 0xf5, 0xa7, 0x4c, 0xe2, 0x3c, 0x50, 0x86, 0x59, 0x94, 0xd6, 0x42, 0xc1, ++ 0x0f, 0x70, 0x4d, 0xe1, 0x3d, 0x1b, 0xd0, 0x41, 0xf7, 0x9f, 0x85, 0xe4, ++ 0x67, 0x1a, 0xf8, 0xd5, 0xc6, 0xb6, 0x6f, 0xc4, 0xfd, 0x2b, 0xb6, 0x01, ++ 0x8c, 0x7e, 0xef, 0x45, 0xf1, 0xa7, 0xea, 0x47, 0xf1, 0xa7, 0xe2, 0xdf, ++ 0xfe, 0xe6, 0xf7, 0xdf, 0x57, 0x38, 0xbf, 0x93, 0x6e, 0xe9, 0x87, 0xc8, ++ 0xf5, 0xa4, 0xe3, 0x1c, 0xc5, 0xbc, 0x87, 0x86, 0xd1, 0xfd, 0xfc, 0xdf, ++ 0x34, 0x4f, 0x9b, 0xbc, 0x07, 0xaf, 0x67, 0xbe, 0x11, 0xe2, 0x77, 0x0b, ++ 0x2e, 0x9b, 0x6f, 0x96, 0x8c, 0x8f, 0xf7, 0x3b, 0xdf, 0x96, 0xf2, 0xa4, ++ 0x3e, 0xe6, 0x1b, 0x3e, 0x4f, 0xb5, 0x4e, 0x54, 0xee, 0x75, 0x4f, 0x5c, ++ 0xa1, 0x59, 0xc4, 0x15, 0x4e, 0x6a, 0x7c, 0xff, 0xe2, 0xdf, 0x9d, 0x5c, ++ 0x11, 0x49, 0x79, 0x5f, 0x6a, 0x5e, 0xca, 0xef, 0x7d, 0xa5, 0xf9, 0xf2, ++ 0xee, 0xc2, 0x04, 0x99, 0x37, 0xdc, 0x11, 0x03, 0x3d, 0xb2, 0x42, 0xfe, ++ 0x1e, 0x04, 0x0b, 0x8a, 0x3a, 0x9e, 0x4f, 0x0b, 0x79, 0xae, 0xf6, 0x7d, ++ 0x75, 0x6f, 0x98, 0x92, 0xcf, 0xa7, 0xea, 0xe5, 0xbe, 0xc8, 0x3a, 0x1e, ++ 0xc4, 0x7a, 0x66, 0x0d, 0x99, 0x74, 0x4f, 0xc6, 0x89, 0xe6, 0x93, 0x31, ++ 0xb8, 0xbf, 0xe3, 0xe4, 0x04, 0x01, 0x9f, 0xfa, 0xee, 0x2e, 0xab, 0x38, ++ 0xf7, 0xca, 0x62, 0x6c, 0x2e, 0xdc, 0x9f, 0xc8, 0xed, 0x2b, 0xfa, 0xdd, ++ 0x87, 0x05, 0x6b, 0x07, 0x91, 0x1d, 0x79, 0x47, 0x43, 0x26, 0xc9, 0x85, ++ 0x3b, 0xfc, 0xf1, 0xc2, 0xef, 0x20, 0xf5, 0xfb, 0x85, 0x52, 0x0e, 0x46, ++ 0xdf, 0x55, 0xb9, 0xfe, 0x2a, 0xb4, 0xdf, 0xea, 0x76, 0x6a, 0x7c, 0x9c, ++ 0x05, 0x0e, 0xcf, 0xa7, 0x5b, 0xe9, 0xfb, 0x3c, 0x0f, 0xf4, 0xc1, 0xe8, ++ 0x96, 0x69, 0xb6, 0x0c, 0xd2, 0x7b, 0x85, 0x1d, 0xa0, 0xe2, 0x40, 0x77, ++ 0x69, 0xcc, 0x47, 0xe7, 0x99, 0x20, 0x27, 0xb1, 0xbe, 0x4c, 0x87, 0xb2, ++ 0xb0, 0xef, 0x2c, 0xda, 0x2a, 0xec, 0x80, 0x29, 0x26, 0xb6, 0x11, 0xf1, ++ 0xc2, 0xa1, 0x4d, 0xbe, 0x49, 0x29, 0x90, 0x13, 0x8f, 0x8a, 0x7b, 0x23, ++ 0xd9, 0x36, 0xe3, 0xbd, 0x4a, 0x2f, 0x66, 0xfb, 0xc6, 0x17, 0x02, 0x6f, ++ 0x61, 0xf7, 0x91, 0xdd, 0x65, 0x6d, 0xf3, 0x0e, 0x82, 0x1c, 0xe7, 0xfa, ++ 0x06, 0xfc, 0x4c, 0x0b, 0x1c, 0x3e, 0xd2, 0xdb, 0x5f, 0x91, 0x72, 0xf2, ++ 0x44, 0x4b, 0x27, 0xdd, 0x4f, 0xae, 0xf0, 0x7a, 0xd9, 0x39, 0x15, 0x9b, ++ 0x38, 0x97, 0xda, 0x15, 0x63, 0x22, 0xff, 0xdb, 0x95, 0x9e, 0x57, 0xa9, ++ 0x96, 0xf1, 0x24, 0xc5, 0x37, 0x2a, 0x1e, 0xf5, 0x18, 0xfe, 0x73, 0x35, ++ 0xf0, 0x64, 0xa2, 0x7d, 0xad, 0xdc, 0x5c, 0x41, 0xf7, 0xfa, 0xac, 0x6f, ++ 0x99, 0x48, 0x65, 0xf5, 0xe6, 0xf2, 0x47, 0xfc, 0x05, 0x38, 0x0f, 0xeb, ++ 0x4b, 0x1a, 0x47, 0x70, 0x5b, 0xc9, 0x3f, 0x56, 0x5d, 0x37, 0x51, 0x9c, ++ 0x1f, 0x7d, 0x2a, 0x22, 0x1e, 0xf6, 0x4d, 0xba, 0xd5, 0x9f, 0x1e, 0xaa, ++ 0x97, 0x56, 0xb7, 0x6e, 0xa0, 0x73, 0x2a, 0xa7, 0x5b, 0x23, 0xe9, 0x9c, ++ 0x4a, 0x99, 0x73, 0x5a, 0x59, 0xfc, 0x00, 0xba, 0x6f, 0x97, 0xce, 0x7d, ++ 0xa9, 0x76, 0xb5, 0x85, 0x62, 0x3f, 0x5f, 0x52, 0x37, 0xd1, 0x70, 0xce, ++ 0x64, 0x01, 0xef, 0x13, 0x79, 0xb0, 0x7f, 0x6e, 0x8b, 0xa6, 0xbc, 0x52, ++ 0x75, 0x7e, 0xe4, 0xde, 0x28, 0x7d, 0x51, 0xe1, 0x40, 0x71, 0x8e, 0xe4, ++ 0x6a, 0x97, 0x38, 0x3f, 0x92, 0x42, 0xed, 0x5d, 0x7d, 0xfa, 0xc3, 0x55, ++ 0xf9, 0x69, 0xa3, 0x38, 0x8f, 0x10, 0x72, 0x2e, 0x66, 0xea, 0x1c, 0xfe, ++ 0x7d, 0x6d, 0xdd, 0x8b, 0xb1, 0xe8, 0x67, 0xe9, 0xc3, 0xef, 0x8d, 0xe5, ++ 0x98, 0x81, 0xff, 0x69, 0x15, 0xfa, 0xef, 0x39, 0x17, 0xb3, 0x55, 0x9c, ++ 0x8b, 0xb9, 0x0b, 0xf6, 0x12, 0xf4, 0xc8, 0x04, 0xdf, 0xcc, 0x39, 0xc0, ++ 0xff, 0x9b, 0x66, 0xc2, 0x7f, 0x7f, 0xe3, 0xd5, 0xe0, 0x47, 0x49, 0x42, ++ 0xec, 0x88, 0x3b, 0x02, 0x71, 0xa4, 0xb7, 0xea, 0x41, 0x66, 0x43, 0x3c, ++ 0x59, 0x77, 0x32, 0xd2, 0x8b, 0x4f, 0x9b, 0x59, 0x03, 0xf4, 0x00, 0xa5, ++ 0xbf, 0xa8, 0xe7, 0x1b, 0x24, 0x5e, 0x4e, 0xc7, 0x35, 0xa7, 0x83, 0x3f, ++ 0x16, 0xef, 0xdc, 0x92, 0x8e, 0xfd, 0xe5, 0xf3, 0x18, 0x51, 0xaf, 0xd8, ++ 0x39, 0xeb, 0x97, 0x90, 0x57, 0xfa, 0xf6, 0x08, 0xa1, 0x9f, 0x5b, 0x18, ++ 0xe9, 0xc3, 0x55, 0x7e, 0xa1, 0x5f, 0xb3, 0x9a, 0x04, 0x75, 0x2f, 0x66, ++ 0xe4, 0x3c, 0xce, 0x47, 0x9b, 0x0b, 0xa3, 0xc5, 0x3d, 0x3d, 0xf2, 0xfc, ++ 0x8c, 0x82, 0x4b, 0xdd, 0xb7, 0xfa, 0xb9, 0x45, 0xdc, 0x17, 0x83, 0x73, ++ 0x31, 0xe0, 0xf7, 0x8f, 0x2c, 0xc1, 0x05, 0xa0, 0xef, 0x47, 0x5c, 0x7f, ++ 0x85, 0x1d, 0x5b, 0x2b, 0xe5, 0xd8, 0x47, 0xcd, 0x66, 0xfa, 0xdd, 0x11, ++ 0x3f, 0x5f, 0x28, 0xd0, 0x43, 0x3e, 0x6a, 0x7e, 0x31, 0x06, 0xe7, 0x73, ++ 0x95, 0xbe, 0x56, 0x6e, 0xfe, 0xd8, 0x8b, 0xfb, 0x68, 0x56, 0xee, 0x13, ++ 0xe7, 0x54, 0x71, 0xaf, 0x39, 0xdd, 0x59, 0x29, 0xfd, 0x20, 0xcb, 0xa4, ++ 0x1f, 0x64, 0xe5, 0xcb, 0xd6, 0x49, 0xf8, 0xdd, 0x11, 0xae, 0x7f, 0xd1, ++ 0x93, 0x5a, 0x4b, 0xd0, 0xd6, 0x17, 0xfd, 0x96, 0x48, 0xfd, 0xaa, 0xa7, ++ 0xbe, 0x77, 0x0f, 0xd9, 0x6d, 0xb5, 0xbb, 0x85, 0xfe, 0x50, 0xdb, 0xd6, ++ 0x49, 0xfa, 0x83, 0xd2, 0x47, 0xd4, 0xb9, 0xb8, 0xa5, 0xbb, 0x3b, 0x49, ++ 0x9f, 0x50, 0xdf, 0x2d, 0xdb, 0x2b, 0xf0, 0x52, 0xb7, 0x57, 0x3c, 0xaf, ++ 0x44, 0xde, 0xba, 0xfc, 0xbd, 0x50, 0x2d, 0x0b, 0xf6, 0xb4, 0x46, 0xf5, ++ 0x77, 0x76, 0xcf, 0x9d, 0xb5, 0xc6, 0x50, 0x9f, 0x43, 0xf5, 0x77, 0xf2, ++ 0xa5, 0xbf, 0xde, 0xd2, 0x45, 0xfa, 0xe0, 0x03, 0xb9, 0xbf, 0x21, 0x3b, ++ 0xbc, 0x6e, 0xad, 0xec, 0x97, 0xd7, 0xad, 0x21, 0xe3, 0xed, 0x07, 0x13, ++ 0x8d, 0x11, 0xcf, 0x33, 0x1d, 0xf8, 0xde, 0x65, 0xd0, 0x1b, 0xea, 0xf6, ++ 0xc6, 0xd3, 0xf7, 0xc1, 0xba, 0xa8, 0x8d, 0xd8, 0xe7, 0xbd, 0xcb, 0x1c, ++ 0x16, 0x94, 0x4d, 0x75, 0x0e, 0xda, 0xf7, 0xb7, 0xd5, 0x9b, 0x72, 0x2d, ++ 0xa3, 0x01, 0x5c, 0x94, 0x07, 0x7a, 0xdc, 0x41, 0x99, 0xbf, 0x35, 0x70, ++ 0xe9, 0x7f, 0x46, 0xc2, 0x7f, 0x90, 0xc2, 0xba, 0x8e, 0xe0, 0xde, 0xd7, ++ 0xc3, 0x4e, 0xfd, 0x4d, 0xc8, 0x19, 0xf5, 0x7b, 0x96, 0xea, 0xdc, 0xcb, ++ 0x85, 0x57, 0x3f, 0x1b, 0x85, 0xfe, 0xaf, 0x1b, 0xda, 0x71, 0x11, 0x77, ++ 0x3c, 0x58, 0xb5, 0x85, 0xb3, 0x10, 0x9f, 0xf8, 0x75, 0xa1, 0x9c, 0x47, ++ 0x7e, 0xc7, 0x28, 0xf0, 0xf5, 0xc0, 0xc3, 0x42, 0x3e, 0x3f, 0x6e, 0x65, ++ 0x1b, 0xe9, 0xfe, 0x60, 0x8b, 0x8f, 0xc1, 0x6f, 0x1f, 0x94, 0x71, 0x45, ++ 0xff, 0x5f, 0x4c, 0xe2, 0xf7, 0x25, 0xb4, 0xe0, 0x8f, 0x43, 0xf5, 0x2b, ++ 0xeb, 0x48, 0xb1, 0x9f, 0xfa, 0x22, 0x44, 0x7c, 0xb1, 0xc8, 0xad, 0x7f, ++ 0x08, 0x38, 0x6e, 0xd1, 0xac, 0x05, 0x45, 0xb0, 0xa9, 0x5d, 0xe6, 0x6c, ++ 0xf4, 0xaf, 0x7e, 0x47, 0x45, 0xe9, 0xa9, 0xa5, 0x52, 0x3e, 0xa7, 0x49, ++ 0xfb, 0xca, 0x36, 0x38, 0xd9, 0x01, 0x3e, 0xd6, 0xbc, 0x5e, 0x3a, 0x87, ++ 0x78, 0x5f, 0xfe, 0xe1, 0x2a, 0xec, 0xcb, 0xdf, 0xef, 0xb2, 0xd3, 0xef, ++ 0xab, 0xaa, 0x3c, 0xbf, 0xd2, 0xae, 0x28, 0xd2, 0x5b, 0xd3, 0x06, 0x4f, ++ 0xa6, 0xfd, 0x4c, 0x73, 0x59, 0x58, 0x45, 0x31, 0xfc, 0x2a, 0xa6, 0x20, ++ 0xf2, 0x55, 0xbf, 0xcf, 0xec, 0x22, 0x2f, 0xc0, 0x1e, 0xa6, 0xd7, 0x9a, ++ 0x22, 0x29, 0x1f, 0x59, 0x3b, 0xf8, 0xc6, 0x5f, 0x20, 0xcf, 0x53, 0xcd, ++ 0x5f, 0x1e, 0xc1, 0xef, 0x94, 0xa4, 0x7e, 0x5b, 0xa3, 0xfb, 0x2f, 0xe7, ++ 0x75, 0x7f, 0xfa, 0x38, 0x7e, 0x63, 0xa6, 0x82, 0x05, 0x8a, 0xe8, 0x1e, ++ 0xbc, 0x78, 0xfd, 0x22, 0x48, 0x77, 0xa2, 0x7b, 0x72, 0xa7, 0xce, 0x49, ++ 0xf6, 0x7d, 0x67, 0x9b, 0xdd, 0x23, 0xf6, 0x09, 0x16, 0x0a, 0xff, 0xc1, ++ 0x7b, 0xfe, 0x12, 0x9b, 0x60, 0xea, 0x85, 0xeb, 0x42, 0xd7, 0xa7, 0x74, ++ 0xaf, 0xe0, 0x85, 0x2e, 0x3b, 0xf9, 0x6b, 0x4b, 0x0f, 0xca, 0xfb, 0xf6, ++ 0xc2, 0xe0, 0xb9, 0x90, 0xec, 0xa2, 0xbc, 0x68, 0xde, 0x8e, 0xf4, 0xcc, ++ 0x0b, 0x0e, 0x13, 0xdd, 0x33, 0x56, 0x7a, 0xf0, 0x08, 0xdd, 0x9b, 0x57, ++ 0xaa, 0xee, 0xd5, 0xb3, 0x1b, 0xef, 0xd5, 0x63, 0xae, 0xb4, 0x78, 0xf8, ++ 0x93, 0xc9, 0x87, 0xca, 0x95, 0x82, 0xa4, 0x26, 0x41, 0xb7, 0xeb, 0xe2, ++ 0x8c, 0x76, 0x62, 0xd2, 0x48, 0xa1, 0x27, 0x26, 0x8d, 0xd4, 0xe4, 0x3d, ++ 0xa5, 0x02, 0x7f, 0xdd, 0xf6, 0xf3, 0x6f, 0xe9, 0x5a, 0xef, 0x3a, 0x5c, ++ 0xae, 0xe2, 0xf7, 0xea, 0xf7, 0xa6, 0x6a, 0x22, 0xe8, 0xf7, 0xa6, 0xba, ++ 0x0f, 0x66, 0x7e, 0xed, 0xfd, 0x09, 0xef, 0x41, 0x7f, 0xe0, 0x7a, 0xc1, ++ 0xf7, 0x32, 0xbc, 0xe9, 0x23, 0xc7, 0xf4, 0xee, 0x9f, 0x33, 0x24, 0x5e, ++ 0xd4, 0x3e, 0x6c, 0x96, 0xfd, 0xcf, 0x90, 0xf8, 0x99, 0xe1, 0x30, 0x09, ++ 0x7c, 0x84, 0xfd, 0xde, 0x86, 0xe2, 0x0f, 0x45, 0x7f, 0x05, 0xaf, 0x3a, ++ 0x77, 0xa4, 0xe8, 0xc6, 0xbe, 0xd3, 0xfe, 0x1a, 0xce, 0x05, 0x71, 0x7a, ++ 0x15, 0x3c, 0xc4, 0x88, 0x4e, 0xb9, 0x18, 0xff, 0xc4, 0x5f, 0xde, 0x5e, ++ 0x87, 0x63, 0xfe, 0x83, 0xcd, 0xde, 0x4e, 0xdd, 0xfd, 0x6f, 0xa1, 0x53, ++ 0x10, 0xf7, 0xe0, 0x5c, 0x31, 0x9d, 0xda, 0xc3, 0xe9, 0x14, 0x8c, 0x1c, ++ 0x06, 0x3d, 0xe1, 0x61, 0xf1, 0xfb, 0x5b, 0xe1, 0x79, 0x8d, 0x2c, 0x97, ++ 0xd1, 0x3a, 0x9f, 0x67, 0x8e, 0x22, 0x3f, 0xa0, 0x2e, 0xef, 0x05, 0xe7, ++ 0xeb, 0xfb, 0x35, 0xac, 0x6f, 0xb5, 0xae, 0x87, 0x4e, 0xee, 0x28, 0xc0, ++ 0xfe, 0x78, 0x82, 0x9b, 0xde, 0x80, 0xab, 0xc3, 0xd4, 0x46, 0xcf, 0x17, ++ 0x8d, 0xcc, 0xa0, 0x75, 0x38, 0x84, 0xb5, 0xa7, 0xc8, 0xfc, 0x9b, 0x31, ++ 0xd0, 0xcb, 0x9a, 0xe4, 0xfd, 0xc7, 0x3d, 0xbf, 0x63, 0xb8, 0xd8, 0x41, ++ 0xf7, 0x8d, 0x5c, 0x08, 0xa8, 0xfb, 0x8f, 0x03, 0x8f, 0x2e, 0xe4, 0xe3, ++ 0xb6, 0xcc, 0xc8, 0x27, 0xbf, 0xfe, 0x05, 0x26, 0xd7, 0x7b, 0x4d, 0xcf, ++ 0x3d, 0xd9, 0xe2, 0xfe, 0xe3, 0x9e, 0x7b, 0xb2, 0xcd, 0x7e, 0xf2, 0x93, ++ 0xcc, 0x89, 0x22, 0x3f, 0x4f, 0xcf, 0x3d, 0xd9, 0xd9, 0xe2, 0xbe, 0xeb, ++ 0x57, 0x34, 0x96, 0x83, 0x7b, 0x68, 0xfd, 0xd3, 0xec, 0x94, 0x1f, 0x1f, ++ 0x7e, 0x4f, 0x36, 0xdf, 0x67, 0x9e, 0x46, 0x3c, 0xe3, 0xb1, 0x9a, 0x28, ++ 0x8a, 0x43, 0xa9, 0xfb, 0x91, 0x4b, 0x9d, 0x7a, 0xe5, 0xc8, 0x81, 0x97, ++ 0xdf, 0x8f, 0xfc, 0x88, 0xe6, 0x9b, 0xb3, 0x00, 0xfd, 0x15, 0x38, 0xa8, ++ 0xbf, 0x8e, 0x39, 0x51, 0xcf, 0xef, 0x14, 0x68, 0x0e, 0xc2, 0x8f, 0x73, ++ 0xa2, 0x21, 0x86, 0xee, 0x85, 0x56, 0x7c, 0xa9, 0xfc, 0xd7, 0x43, 0xfd, ++ 0x9d, 0x8f, 0x02, 0x4f, 0xea, 0x5c, 0xe7, 0x1f, 0x24, 0x7f, 0x29, 0xbc, ++ 0xab, 0x73, 0x6d, 0x0a, 0xff, 0x8a, 0xcf, 0xd4, 0x7d, 0xec, 0xda, 0x6a, ++ 0xc1, 0x6f, 0x3d, 0x79, 0xb2, 0xcb, 0x18, 0xf9, 0x47, 0x86, 0x70, 0x10, ++ 0xa2, 0x29, 0xef, 0xd1, 0xe3, 0x02, 0x9e, 0x1f, 0x8c, 0xd7, 0x1b, 0x00, ++ 0x77, 0xd3, 0x0a, 0x2e, 0x37, 0xc8, 0x2f, 0x2e, 0xf2, 0x37, 0x4f, 0x98, ++ 0x8c, 0xbf, 0xdb, 0xab, 0xca, 0x26, 0xb9, 0x2e, 0x99, 0xcc, 0xff, 0x9f, ++ 0x27, 0xf7, 0xa9, 0x79, 0x2a, 0xdf, 0xbf, 0xc1, 0x98, 0xef, 0x1f, 0x7e, ++ 0x7f, 0x66, 0x62, 0x9c, 0x6f, 0x1d, 0xc6, 0x3b, 0xa7, 0xbd, 0x37, 0x16, ++ 0x0f, 0xdf, 0xfe, 0x6f, 0x73, 0x9f, 0xf9, 0x23, 0x3f, 0x90, 0x72, 0x79, ++ 0x74, 0xb4, 0xfe, 0x20, 0xda, 0xab, 0x73, 0x0f, 0x4a, 0x2f, 0x7c, 0xbb, ++ 0xe8, 0xb3, 0x34, 0xfa, 0x9d, 0x91, 0xaf, 0x8e, 0xd0, 0xef, 0x29, 0xce, ++ 0x75, 0xfa, 0x9a, 0xb1, 0x8e, 0x22, 0xb3, 0x44, 0x1c, 0xe0, 0x0f, 0x29, ++ 0x1d, 0x74, 0x4e, 0xe3, 0x0f, 0x73, 0xfe, 0x9a, 0x46, 0x7e, 0xe4, 0xd5, ++ 0xe2, 0xde, 0xcf, 0x2b, 0x85, 0xf3, 0xf2, 0x73, 0xb4, 0x82, 0x0f, 0x56, ++ 0x2d, 0x10, 0x79, 0x86, 0xa9, 0xac, 0x9e, 0xf8, 0x36, 0xb9, 0xf7, 0x7c, ++ 0x66, 0x24, 0xe0, 0xf8, 0xff, 0xed, 0x1c, 0x6d, 0xef, 0x39, 0xd7, 0xc9, ++ 0xa3, 0x4e, 0x51, 0xbe, 0x85, 0x8f, 0x7e, 0xa7, 0x22, 0x9c, 0x1e, 0xe3, ++ 0x23, 0x0e, 0xbf, 0xe8, 0xe2, 0x16, 0xca, 0x1b, 0x23, 0x3f, 0x99, 0x45, ++ 0xe7, 0x4e, 0xe3, 0x0e, 0xaf, 0x72, 0xf3, 0xfa, 0x3b, 0x3f, 0xfd, 0x54, ++ 0xd4, 0x53, 0x0f, 0x5f, 0x74, 0xe3, 0x5c, 0xea, 0x4f, 0x3f, 0x9b, 0x45, ++ 0xe7, 0x4c, 0xf3, 0x0e, 0x5f, 0xc4, 0x39, 0xd4, 0xdf, 0xfc, 0xf4, 0xb4, ++ 0x78, 0x7f, 0x0d, 0xa3, 0x38, 0xd6, 0xfb, 0x3f, 0xfd, 0x7c, 0x16, 0xce, ++ 0x9d, 0xda, 0xdd, 0xfa, 0x07, 0xa0, 0xeb, 0xcc, 0x4b, 0xf5, 0xaf, 0x61, ++ 0x5b, 0xfd, 0x60, 0xcd, 0xad, 0x0b, 0xdc, 0x74, 0x8e, 0x72, 0x5a, 0x5a, ++ 0xae, 0x38, 0x47, 0xf9, 0x16, 0xe8, 0x39, 0x23, 0x69, 0xfe, 0xba, 0x38, ++ 0xad, 0xf7, 0x1c, 0x65, 0xf7, 0x48, 0xdf, 0x07, 0x78, 0x7e, 0xe1, 0x4b, ++ 0xc1, 0xe7, 0x6e, 0xc4, 0xc0, 0x06, 0xfe, 0xeb, 0xa5, 0x3a, 0x47, 0xaa, ++ 0xe4, 0x6c, 0x7f, 0xf2, 0x50, 0xad, 0xb7, 0x7f, 0xd7, 0x39, 0x58, 0xb5, ++ 0x7e, 0xd9, 0x4e, 0xcf, 0x46, 0x2b, 0x98, 0xd0, 0xff, 0x2f, 0x9f, 0x4f, ++ 0xed, 0x12, 0xfb, 0x99, 0xf1, 0x7c, 0xea, 0x6b, 0xaf, 0xfe, 0xd6, 0x85, ++ 0xbc, 0xc3, 0xf1, 0xa3, 0xed, 0xc4, 0xcf, 0xe3, 0x1d, 0xed, 0x2e, 0xf8, ++ 0x05, 0x50, 0x87, 0x5c, 0xdc, 0xfe, 0xa5, 0x38, 0xcf, 0x87, 0x76, 0x96, ++ 0xd0, 0x76, 0x03, 0xc4, 0x39, 0xbe, 0xf1, 0x38, 0x4f, 0x01, 0xff, 0x41, ++ 0xb7, 0x38, 0x67, 0xf8, 0xda, 0xab, 0x6f, 0xa4, 0x40, 0xde, 0x8f, 0xaf, ++ 0xb7, 0x51, 0x9e, 0xcf, 0x16, 0xf9, 0xbb, 0x00, 0x31, 0xa6, 0x43, 0x66, ++ 0x8c, 0xf3, 0x7f, 0x00, 0xb1, 0x49, 0x2f, 0x16, 0x00, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0b, 0xb5, 0x3c, 0x0b, 0x58, 0x94, 0xd7, 0x95, 0xf7, 0x9f, 0x7f, ++ 0x9e, 0x30, 0xc0, 0x80, 0x08, 0x28, 0x8a, 0x3f, 0x82, 0x04, 0x13, 0xa4, ++ 0x33, 0xbc, 0x34, 0x5b, 0xdb, 0x8e, 0x0a, 0x14, 0xa5, 0x4d, 0x31, 0xdd, ++ 0xa4, 0x1a, 0x09, 0x8e, 0x91, 0x20, 0xaf, 0x01, 0xd4, 0xb6, 0x71, 0xb7, ++ 0xc9, 0xc7, 0x18, 0x8c, 0x51, 0x9b, 0x74, 0x75, 0x63, 0x12, 0x63, 0x8c, ++ 0x19, 0x50, 0xd4, 0x34, 0xb8, 0x3b, 0x46, 0x30, 0xa0, 0xd8, 0x4c, 0x4c, ++ 0xa4, 0xc6, 0x3c, 0x96, 0xb0, 0x5b, 0xe2, 0xb7, 0xdb, 0xf8, 0x61, 0x62, ++ 0x8c, 0xaf, 0x0c, 0x48, 0x92, 0x6e, 0xfc, 0xd6, 0xd6, 0x3d, 0xe7, 0xdc, ++ 0xfb, 0x33, 0x0f, 0x20, 0x26, 0xed, 0x2e, 0x7e, 0xed, 0xcd, 0xb9, 0xef, ++ 0x7b, 0xde, 0xe7, 0xdc, 0xfb, 0x4f, 0xc4, 0x30, 0x63, 0x4d, 0x12, 0x63, ++ 0x53, 0x0c, 0x8c, 0x19, 0xb3, 0x18, 0x8b, 0xd7, 0x33, 0x66, 0x8a, 0x61, ++ 0xec, 0x59, 0x1d, 0xc0, 0x50, 0xee, 0x1d, 0x66, 0x5e, 0x4d, 0x24, 0x63, ++ 0x53, 0x63, 0x1a, 0x56, 0xb3, 0x1c, 0x28, 0xcb, 0xcc, 0xd6, 0xa6, 0x64, ++ 0x06, 0x7f, 0x6e, 0xc6, 0x72, 0x19, 0x4b, 0x9c, 0xe0, 0x9d, 0x64, 0x84, ++ 0xfa, 0xc4, 0xb5, 0x7a, 0xaa, 0x8f, 0xd0, 0xf4, 0x29, 0x0d, 0x66, 0xc6, ++ 0x7c, 0x8d, 0xde, 0x45, 0xe7, 0x53, 0x19, 0xcb, 0x0f, 0x8b, 0xcc, 0x64, ++ 0xdf, 0x81, 0x52, 0xcf, 0xd2, 0xb5, 0xd0, 0x8f, 0x69, 0xc2, 0xac, 0xad, ++ 0xb0, 0x5e, 0x81, 0x7c, 0xa3, 0x27, 0x11, 0xe0, 0x35, 0x5d, 0x92, 0x0d, ++ 0x96, 0x66, 0xf9, 0x86, 0x92, 0x5d, 0x2c, 0x85, 0xb1, 0x3a, 0x2d, 0x00, ++ 0xb1, 0xf8, 0x3f, 0x93, 0xbb, 0x15, 0xd7, 0xd1, 0xf6, 0x56, 0xed, 0x87, ++ 0x7e, 0x7d, 0x71, 0x89, 0xd6, 0x2d, 0x00, 0x4e, 0x49, 0x38, 0xc2, 0x52, ++ 0xb3, 0x61, 0x7c, 0x7d, 0x51, 0x06, 0x9b, 0xce, 0xd8, 0x09, 0x8b, 0x63, ++ 0x8a, 0x75, 0x22, 0xb4, 0xb3, 0xad, 0x12, 0x8e, 0x0f, 0xcf, 0xe0, 0xe3, ++ 0x7f, 0x5a, 0x14, 0xde, 0x22, 0xc3, 0xf8, 0xc1, 0xe3, 0xb7, 0xe5, 0x3a, ++ 0xa0, 0xee, 0x6e, 0x83, 0xd2, 0xc1, 0xac, 0x8c, 0xa5, 0x78, 0xa2, 0x97, ++ 0x68, 0xef, 0x04, 0x38, 0x4a, 0xc9, 0x95, 0x2c, 0x00, 0x5b, 0x63, 0x97, ++ 0x68, 0x27, 0x01, 0x1c, 0xaf, 0x74, 0x48, 0xd0, 0x6e, 0x74, 0x45, 0x2f, ++ 0xc9, 0x9f, 0x84, 0xe7, 0x33, 0x5a, 0xce, 0xa7, 0x33, 0xf6, 0x33, 0x26, ++ 0xb1, 0x28, 0x99, 0xb1, 0x64, 0xad, 0x23, 0x1d, 0xd7, 0x71, 0x16, 0x7d, ++ 0xa6, 0x67, 0x1a, 0x6c, 0x1f, 0xd2, 0x97, 0xcc, 0x62, 0x2c, 0xc3, 0x6a, ++ 0x21, 0x3c, 0x4c, 0x3c, 0x01, 0x78, 0x82, 0x7d, 0x0e, 0x2d, 0x8c, 0x70, ++ 0xb7, 0xc0, 0xf9, 0x58, 0x86, 0x92, 0x8b, 0xed, 0x49, 0xba, 0xa1, 0x48, ++ 0x0b, 0xe0, 0x63, 0xf0, 0x86, 0xb6, 0xc8, 0x6d, 0xa6, 0x71, 0x91, 0x7f, ++ 0x0f, 0xf5, 0x37, 0xf1, 0xef, 0x07, 0x8c, 0xed, 0xee, 0x96, 0xa9, 0x5e, ++ 0x85, 0xd5, 0xd2, 0x67, 0x85, 0x49, 0x60, 0xbd, 0xfa, 0x54, 0xf3, 0x13, ++ 0x88, 0xbf, 0xba, 0x04, 0xa3, 0x91, 0xca, 0xee, 0x6b, 0x85, 0x0c, 0xe7, ++ 0xd1, 0x96, 0xa4, 0xde, 0x0d, 0xf3, 0xd8, 0xf5, 0x6c, 0x79, 0x49, 0xc6, ++ 0xe8, 0xf1, 0x03, 0x56, 0x0d, 0xed, 0x2b, 0x79, 0x23, 0x10, 0x74, 0x32, ++ 0xae, 0xcb, 0xec, 0x4c, 0x81, 0xff, 0x0b, 0x63, 0x2a, 0xec, 0x62, 0x73, ++ 0x18, 0x6b, 0xfe, 0x25, 0x54, 0xfc, 0x1d, 0x6f, 0x87, 0x93, 0x30, 0xfd, ++ 0x0c, 0x8d, 0x80, 0x6d, 0x3b, 0xf2, 0x53, 0x83, 0xfa, 0xdb, 0xb1, 0xbf, ++ 0xbf, 0x9d, 0xd9, 0x8d, 0xcc, 0x3f, 0xfe, 0x7e, 0xeb, 0x8c, 0x1d, 0x1b, ++ 0xb4, 0x62, 0x3d, 0xa4, 0x73, 0x05, 0x73, 0xcf, 0x80, 0x23, 0x24, 0xb2, ++ 0x06, 0x89, 0x01, 0xfe, 0x12, 0x98, 0x97, 0xe8, 0xb3, 0xdb, 0x16, 0x43, ++ 0xfb, 0xa2, 0x3f, 0xa0, 0xd3, 0x0b, 0xb1, 0xa6, 0xe6, 0x2d, 0xd0, 0x2f, ++ 0x55, 0x66, 0x2e, 0x53, 0x16, 0x95, 0xcc, 0x02, 0x65, 0x62, 0x38, 0xac, ++ 0x07, 0xed, 0x89, 0xaf, 0x99, 0xdc, 0xc8, 0x57, 0x7b, 0x4d, 0xd0, 0x0e, ++ 0x43, 0x53, 0x35, 0xbc, 0xdc, 0xab, 0xe1, 0xfd, 0xf5, 0x61, 0xcc, 0x85, ++ 0x7c, 0x3a, 0x15, 0x60, 0x06, 0xe5, 0x31, 0x9b, 0xa3, 0xce, 0x36, 0x91, ++ 0xe6, 0xf1, 0xd2, 0x3c, 0xf2, 0x21, 0x1b, 0xf2, 0xe3, 0x24, 0xe6, 0xa1, ++ 0xf5, 0xe3, 0x99, 0x8b, 0xf6, 0xa3, 0xf6, 0x9b, 0xc2, 0x7a, 0x4d, 0x08, ++ 0x33, 0xed, 0x50, 0x1a, 0xd2, 0x6b, 0xae, 0xac, 0x19, 0x13, 0x9f, 0x3a, ++ 0xdb, 0xbc, 0xf5, 0x48, 0x7f, 0x5f, 0xa3, 0x9d, 0x7d, 0xa2, 0x0d, 0xa0, ++ 0x53, 0x78, 0xe4, 0xba, 0x40, 0xfa, 0xd5, 0xe1, 0x78, 0x73, 0xe0, 0xb8, ++ 0xf9, 0x34, 0x4e, 0x1d, 0xef, 0x5c, 0xa7, 0x61, 0x9f, 0x4c, 0xc0, 0xc3, ++ 0x7b, 0x89, 0x7f, 0x9c, 0xa9, 0x1a, 0xbb, 0x3b, 0x03, 0xc7, 0xb1, 0x37, ++ 0xa5, 0x2c, 0xac, 0xef, 0xd5, 0x97, 0x44, 0xf8, 0xc7, 0xf5, 0x37, 0x1a, ++ 0xd9, 0x27, 0x40, 0x87, 0xff, 0x68, 0x64, 0x54, 0x9e, 0x69, 0xb4, 0xd0, ++ 0xfa, 0xff, 0xd9, 0x98, 0x40, 0xe5, 0x1f, 0x1b, 0x15, 0xaa, 0x3f, 0xdb, ++ 0x98, 0x4e, 0xe5, 0x40, 0xa3, 0x95, 0xea, 0x3f, 0x6a, 0x9c, 0x43, 0xe5, ++ 0xbd, 0xcb, 0x22, 0x72, 0x90, 0xff, 0xeb, 0x3b, 0xe7, 0xb1, 0x4f, 0x8c, ++ 0x1c, 0xed, 0x37, 0xe1, 0x7f, 0x4e, 0x8f, 0xce, 0x31, 0x10, 0x00, 0xf7, ++ 0xcf, 0x1b, 0x9b, 0x8f, 0xf6, 0x0b, 0x3e, 0xea, 0x4f, 0x1e, 0xbb, 0xdd, ++ 0x8b, 0xed, 0xb8, 0xcf, 0xef, 0x73, 0x7a, 0x0e, 0x3e, 0xc8, 0xdc, 0x2d, ++ 0xc9, 0xc4, 0x97, 0x1b, 0x2c, 0x31, 0xa3, 0xe9, 0x0f, 0xe7, 0x33, 0xe1, ++ 0xf9, 0x06, 0x23, 0xd8, 0x12, 0x0f, 0xe0, 0xe9, 0x58, 0x8e, 0x44, 0xf3, ++ 0x0f, 0x4e, 0xe2, 0x70, 0xb3, 0x55, 0x47, 0xf3, 0xd9, 0x35, 0x6c, 0x07, ++ 0x8e, 0x3f, 0x96, 0xa3, 0xe7, 0xf3, 0x4f, 0xd7, 0x54, 0x62, 0xbb, 0x3d, ++ 0x86, 0xcf, 0xdb, 0x9f, 0x06, 0x30, 0xec, 0xa7, 0x68, 0xce, 0xbc, 0x17, ++ 0x11, 0x4f, 0xf6, 0x38, 0xa8, 0xcf, 0xf2, 0xc3, 0xfd, 0xb7, 0xf3, 0x76, ++ 0xfb, 0x64, 0x5e, 0xaf, 0xee, 0x57, 0x6d, 0xaf, 0xb3, 0x59, 0x68, 0x5e, ++ 0x95, 0xee, 0x83, 0x3a, 0x58, 0x3f, 0x83, 0xf8, 0x9d, 0xe6, 0x57, 0xfb, ++ 0x7f, 0x96, 0xc7, 0xe5, 0x30, 0xb4, 0xbf, 0x3b, 0x55, 0x53, 0xe4, 0x1e, ++ 0x03, 0x1f, 0x1a, 0x1b, 0xef, 0x4f, 0x72, 0x01, 0xf8, 0x70, 0xa1, 0x1c, ++ 0x24, 0x07, 0xc8, 0x45, 0x9d, 0x42, 0x72, 0xa1, 0xf2, 0xa1, 0xca, 0x7f, ++ 0xbb, 0x6d, 0x1c, 0x8f, 0xa9, 0x06, 0xc1, 0xe7, 0xe1, 0x20, 0x07, 0x31, ++ 0x24, 0x07, 0x34, 0x2e, 0x31, 0x1e, 0xe4, 0x40, 0x22, 0xbc, 0xd8, 0x19, ++ 0x9c, 0x67, 0xaf, 0x24, 0xe4, 0x25, 0x54, 0x1e, 0xa0, 0x44, 0x3d, 0xae, ++ 0xca, 0x83, 0x2a, 0x07, 0x2a, 0xbf, 0x27, 0x82, 0x9c, 0x49, 0x31, 0xfe, ++ 0x73, 0x7c, 0x2f, 0x84, 0x5f, 0xd5, 0xf2, 0x94, 0x95, 0xd3, 0xa5, 0x37, ++ 0x2e, 0xe2, 0x17, 0x44, 0xd7, 0x6e, 0x9d, 0x05, 0x54, 0x21, 0xf4, 0x07, ++ 0x42, 0xc6, 0x20, 0x7c, 0x4f, 0x8e, 0x1d, 0xc6, 0x15, 0x3c, 0x6e, 0x6e, ++ 0x18, 0x4b, 0x7f, 0xdd, 0xb4, 0xfe, 0x8d, 0x78, 0x50, 0xf5, 0xc1, 0x38, ++ 0x78, 0x18, 0x75, 0x7e, 0x3d, 0x2f, 0xbf, 0xed, 0xf9, 0x49, 0xbf, 0xa1, ++ 0xde, 0x46, 0xbe, 0x1d, 0x43, 0x5f, 0x7d, 0x66, 0x55, 0xf5, 0x15, 0xe7, ++ 0x5b, 0x9d, 0xcd, 0xfe, 0xa9, 0x15, 0xf9, 0x55, 0x32, 0x69, 0xa5, 0x28, ++ 0x28, 0x4d, 0x9c, 0x6f, 0x42, 0xcf, 0x7f, 0x2c, 0x87, 0xcb, 0x8d, 0xca, ++ 0x3f, 0xbb, 0x6d, 0x8c, 0xdb, 0x4b, 0x3c, 0x67, 0xca, 0x68, 0x7d, 0xa7, ++ 0x9e, 0x67, 0xe4, 0x9c, 0xab, 0x18, 0xe9, 0xbd, 0xd4, 0x30, 0x5e, 0x1f, ++ 0x4a, 0x5f, 0xf5, 0x5c, 0x01, 0x7a, 0xef, 0xcf, 0xb8, 0x2f, 0x15, 0x9f, ++ 0x8c, 0x79, 0x6c, 0x16, 0x98, 0x67, 0x4a, 0xad, 0xd9, 0xba, 0x25, 0xd9, ++ 0xcf, 0xbf, 0xbe, 0x89, 0xd7, 0x2b, 0xd0, 0x7e, 0x6d, 0xb6, 0x2a, 0xb4, ++ 0x9f, 0xe7, 0x35, 0x32, 0xd1, 0x5f, 0xb5, 0x27, 0x23, 0xf5, 0x92, 0xbc, ++ 0x7c, 0x71, 0x46, 0x90, 0x9d, 0x61, 0x16, 0xa0, 0xe3, 0xd0, 0x71, 0x03, ++ 0xc9, 0xb7, 0x57, 0xc3, 0x2a, 0x5f, 0x81, 0x71, 0xad, 0xb8, 0xd4, 0x9d, ++ 0xfe, 0x73, 0xcf, 0x16, 0xf4, 0x1b, 0x5e, 0x32, 0x43, 0xb3, 0x0e, 0xf6, ++ 0xe5, 0xfb, 0x93, 0xd9, 0x85, 0x76, 0xcb, 0x37, 0x79, 0xe8, 0xac, 0x04, ++ 0xe3, 0x7d, 0x3b, 0x74, 0xcc, 0x45, 0xfe, 0x83, 0xfd, 0x47, 0x52, 0x1c, ++ 0x63, 0x0f, 0x82, 0x4d, 0x41, 0xbb, 0x74, 0x15, 0xf4, 0x1c, 0x4b, 0x63, ++ 0x4c, 0x7e, 0xee, 0xcb, 0xb3, 0x12, 0xec, 0xbb, 0xe2, 0x39, 0x99, 0x19, ++ 0x00, 0x75, 0x3e, 0x50, 0xdb, 0x32, 0x8c, 0xab, 0x7f, 0x3a, 0xc2, 0x6d, ++ 0xe4, 0xe3, 0x18, 0x83, 0x71, 0xb5, 0x62, 0x5c, 0xd3, 0x8e, 0xcf, 0xef, ++ 0x45, 0xfe, 0xba, 0x00, 0xfc, 0x69, 0x80, 0xf6, 0x4f, 0x4c, 0x75, 0xd3, ++ 0x59, 0x26, 0x63, 0x0b, 0x9e, 0xd3, 0x11, 0x1e, 0x2b, 0x22, 0xf4, 0x6e, ++ 0xac, 0x7f, 0x63, 0xc7, 0x53, 0xa7, 0x96, 0x01, 0x7c, 0xa1, 0x5d, 0x52, ++ 0xd0, 0xdf, 0x28, 0x94, 0xcd, 0xd4, 0x5e, 0xfd, 0x92, 0xec, 0xc6, 0x75, ++ 0x6a, 0xcd, 0x85, 0x97, 0x24, 0xf0, 0x73, 0x7c, 0xed, 0xcd, 0xcf, 0x84, ++ 0x41, 0xbd, 0xf3, 0x80, 0x8e, 0x99, 0x60, 0x5c, 0x61, 0xbb, 0x64, 0xf5, ++ 0xc2, 0xfc, 0xab, 0x3c, 0x11, 0x88, 0x19, 0x56, 0xb1, 0x5d, 0xf7, 0xd1, ++ 0x40, 0xba, 0x5f, 0x6f, 0xfe, 0x50, 0xd8, 0xb1, 0xca, 0xbd, 0x92, 0x1b, ++ 0x38, 0x86, 0x55, 0xee, 0x0a, 0x6e, 0xaf, 0xde, 0x1b, 0x0c, 0xd7, 0x32, ++ 0xad, 0x1f, 0x86, 0xf9, 0xb3, 0x6c, 0x11, 0xb1, 0x17, 0xee, 0x00, 0x60, ++ 0x26, 0xb3, 0xdd, 0x44, 0xba, 0x6d, 0x8f, 0x41, 0x63, 0x35, 0xa2, 0xb7, ++ 0x43, 0xf9, 0x0a, 0xcd, 0x36, 0xe9, 0xc7, 0x35, 0x5c, 0x1f, 0x33, 0xf6, ++ 0x45, 0xdc, 0xdd, 0xc0, 0x97, 0xf2, 0xf1, 0x2f, 0x93, 0x3e, 0x32, 0x73, ++ 0x78, 0xb1, 0x80, 0xcf, 0x01, 0xfc, 0xd9, 0x97, 0x1c, 0xff, 0x2a, 0xde, ++ 0xea, 0x84, 0xce, 0xff, 0x6c, 0x12, 0xcb, 0xf1, 0xc0, 0x39, 0xeb, 0x8e, ++ 0x9b, 0x2c, 0x2e, 0x38, 0x58, 0x5d, 0x97, 0x4c, 0xe7, 0xf0, 0x79, 0xa2, ++ 0x08, 0xcf, 0xf5, 0x61, 0x03, 0x77, 0x91, 0x9c, 0x1e, 0x95, 0x2d, 0xe8, ++ 0x87, 0x6d, 0xee, 0x94, 0x5d, 0xd8, 0xee, 0xec, 0x36, 0xed, 0xd1, 0xc0, ++ 0x39, 0xeb, 0x3a, 0x24, 0xa6, 0x45, 0xb8, 0xd3, 0xe0, 0xe6, 0x78, 0xba, ++ 0x56, 0x81, 0xed, 0xab, 0x3a, 0x4d, 0x16, 0x05, 0xdb, 0x8f, 0x1a, 0x98, ++ 0x0c, 0xe3, 0x7d, 0x40, 0x37, 0x13, 0xd2, 0x71, 0xea, 0x00, 0xd1, 0x1f, ++ 0xe9, 0xea, 0x92, 0x68, 0x0b, 0x3f, 0x92, 0xf2, 0xfc, 0xf4, 0x97, 0x91, ++ 0x5e, 0xb1, 0x7e, 0x7a, 0x35, 0xed, 0xe0, 0xfb, 0xb9, 0x70, 0x80, 0xd3, ++ 0xa7, 0x50, 0x7e, 0x58, 0x4b, 0xf4, 0x6a, 0x96, 0x58, 0x7c, 0x00, 0x9d, ++ 0x7f, 0xaf, 0x79, 0x79, 0x84, 0x5e, 0xd8, 0x6f, 0xc1, 0x73, 0x7f, 0xe8, ++ 0x41, 0x3a, 0x57, 0xc0, 0xfe, 0x0c, 0x0a, 0xd2, 0x5d, 0x26, 0x3a, 0x5f, ++ 0x00, 0xfa, 0xe0, 0xbc, 0xfa, 0xe3, 0x9f, 0x24, 0x0d, 0x98, 0xfd, 0xf4, ++ 0x96, 0x81, 0xde, 0xbf, 0x52, 0xc7, 0x43, 0xff, 0x55, 0xb7, 0xa0, 0x77, ++ 0x25, 0x73, 0x6d, 0x44, 0x7f, 0xee, 0xdb, 0xd2, 0x39, 0x5c, 0xc8, 0x3f, ++ 0xf8, 0xbd, 0x17, 0x9e, 0x47, 0xbf, 0x37, 0x42, 0x6f, 0x45, 0x3e, 0x8c, ++ 0x15, 0xfe, 0xf1, 0xc4, 0x9a, 0xfe, 0x93, 0xb1, 0xb0, 0x60, 0x59, 0xcc, ++ 0x15, 0xe7, 0x6a, 0xa8, 0x9f, 0x91, 0xf0, 0x0a, 0x4b, 0x05, 0x3f, 0x41, ++ 0x8a, 0x76, 0x3c, 0x64, 0x83, 0x71, 0x67, 0x17, 0xbe, 0xfb, 0x18, 0x92, ++ 0xa3, 0x6f, 0xd1, 0xcb, 0x36, 0xe4, 0x8b, 0x26, 0xdd, 0x40, 0xeb, 0xb3, ++ 0x50, 0xe1, 0x8a, 0x0e, 0xb7, 0xa2, 0x0c, 0x0e, 0x26, 0x2f, 0xde, 0xf5, ++ 0x2a, 0xac, 0x93, 0x1f, 0x73, 0x3d, 0xe9, 0x10, 0xca, 0xcb, 0xef, 0x0c, ++ 0x16, 0x64, 0xa7, 0x26, 0x21, 0x8f, 0xf8, 0x67, 0x04, 0xfa, 0x3b, 0x19, ++ 0xc7, 0x37, 0xd0, 0xf1, 0x1c, 0x9e, 0xdf, 0xd9, 0x6d, 0xf0, 0x1a, 0x00, ++ 0x8f, 0xac, 0xbd, 0xc0, 0x3e, 0xe2, 0x0f, 0x4c, 0x47, 0x7b, 0xec, 0xd1, ++ 0xa3, 0x9e, 0x2a, 0xd0, 0x0f, 0x95, 0xad, 0x46, 0x7f, 0x1c, 0xe6, 0xc3, ++ 0x75, 0x24, 0x60, 0x23, 0x94, 0xeb, 0x9a, 0xee, 0xdf, 0x9f, 0x91, 0x60, ++ 0x9c, 0xa4, 0xc4, 0xb2, 0x52, 0x84, 0x8d, 0x66, 0xaf, 0x8c, 0xf3, 0xb4, ++ 0xe9, 0xae, 0x8e, 0x9c, 0x1b, 0xe6, 0x91, 0x2c, 0xef, 0x52, 0xbf, 0x5d, ++ 0xb6, 0xe9, 0xb4, 0x8f, 0x94, 0xf8, 0xef, 0x29, 0xa8, 0x7f, 0x9a, 0x96, ++ 0x32, 0x47, 0x58, 0xca, 0xd7, 0xe9, 0x79, 0x46, 0x7a, 0xfe, 0x05, 0x9d, ++ 0xd0, 0xef, 0xe3, 0xf9, 0x7f, 0xe3, 0xe8, 0x7b, 0xd5, 0xef, 0x63, 0xae, ++ 0x29, 0xd1, 0x17, 0x60, 0x4e, 0xc4, 0x05, 0x97, 0x1f, 0xae, 0x77, 0x56, ++ 0xcd, 0x61, 0xe2, 0x4f, 0xc8, 0x85, 0x80, 0x2b, 0xd7, 0xbb, 0x22, 0x8d, ++ 0xd0, 0x79, 0xd5, 0x1d, 0xd6, 0x04, 0x3c, 0xff, 0xa7, 0xc8, 0x67, 0x91, ++ 0xc8, 0x7f, 0xef, 0x68, 0x27, 0xc0, 0xbe, 0x6a, 0x5b, 0x25, 0xa2, 0x5b, ++ 0x1d, 0xf2, 0x0f, 0x9c, 0xeb, 0x24, 0xda, 0x37, 0xa8, 0x1f, 0xf4, 0x08, ++ 0x3d, 0xf2, 0x52, 0x6f, 0xfe, 0x84, 0x58, 0x2c, 0x25, 0x2b, 0x48, 0x2a, ++ 0xab, 0xea, 0x96, 0xad, 0x5e, 0x68, 0xaf, 0xea, 0xe4, 0xfc, 0x34, 0x8a, ++ 0x6f, 0x84, 0xfe, 0xa8, 0x6e, 0xe3, 0xfa, 0x63, 0x14, 0x1f, 0xb5, 0x01, ++ 0x1c, 0xe0, 0xa7, 0xd5, 0x21, 0x5f, 0xa9, 0x30, 0xd0, 0xfb, 0xa8, 0x5f, ++ 0x7f, 0xcc, 0xba, 0x09, 0xfb, 0x7d, 0x71, 0x36, 0x13, 0xf4, 0xe6, 0x7a, ++ 0xa2, 0x40, 0xce, 0x88, 0x1a, 0x00, 0x7e, 0x19, 0x66, 0x4a, 0x94, 0x25, ++ 0x23, 0xc0, 0x6e, 0x49, 0xdc, 0xdf, 0x52, 0xf5, 0xca, 0x6d, 0x3b, 0x40, ++ 0xd5, 0x07, 0xac, 0x3b, 0xd3, 0x6d, 0x64, 0xda, 0x80, 0x75, 0xef, 0x38, ++ 0x60, 0x09, 0x82, 0x67, 0x79, 0x12, 0x82, 0xfa, 0x7f, 0xa7, 0x53, 0x09, ++ 0x6a, 0xb7, 0x79, 0xd3, 0x83, 0xda, 0xb3, 0x4f, 0x59, 0x83, 0xe0, 0xdc, ++ 0xde, 0x39, 0x41, 0xfd, 0x67, 0x9f, 0xb1, 0x07, 0xc1, 0x77, 0x0e, 0x14, ++ 0x05, 0xf5, 0xff, 0xee, 0xc5, 0x92, 0x20, 0x78, 0x38, 0x03, 0xce, 0x33, ++ 0x96, 0xdf, 0x21, 0xca, 0x1f, 0x26, 0x48, 0x41, 0xfd, 0x17, 0x2a, 0xa6, ++ 0xa0, 0xf9, 0x8b, 0xd3, 0xa3, 0x83, 0xe0, 0x61, 0xb3, 0xc0, 0x8f, 0xf0, ++ 0x03, 0x55, 0xff, 0xf4, 0xa2, 0x8d, 0xfb, 0x41, 0xa1, 0xa5, 0x8a, 0xdf, ++ 0x1f, 0x5b, 0x83, 0xd7, 0x51, 0xe3, 0xe2, 0x9f, 0xcc, 0x09, 0x5e, 0x6f, ++ 0xb1, 0x3d, 0x78, 0xbd, 0x6f, 0x4a, 0x97, 0x7d, 0xe0, 0xf7, 0x6b, 0xc1, ++ 0xaf, 0x3f, 0x00, 0xf6, 0x11, 0xcb, 0xdf, 0x82, 0xff, 0xaf, 0x05, 0xbf, ++ 0xbe, 0x0d, 0xfc, 0x7f, 0x84, 0xff, 0x05, 0xfc, 0x7f, 0x2c, 0x3d, 0xe0, ++ 0xff, 0x63, 0xfd, 0x2b, 0xe0, 0xff, 0x23, 0xdc, 0x0e, 0xfe, 0x3f, 0xc2, ++ 0x47, 0x20, 0x5e, 0x41, 0xb8, 0xb3, 0xb1, 0x88, 0xca, 0xa3, 0x8d, 0x25, ++ 0x54, 0x7f, 0x2b, 0xfc, 0xf5, 0x88, 0x75, 0x4f, 0x89, 0x75, 0x4f, 0x8b, ++ 0x75, 0xff, 0x5a, 0x3c, 0xa9, 0xa5, 0xb3, 0x68, 0x86, 0xe6, 0x2b, 0x90, ++ 0xd3, 0x79, 0x31, 0x97, 0xf4, 0xa8, 0x87, 0xed, 0x6b, 0x06, 0x0a, 0x31, ++ 0x0f, 0x30, 0xf4, 0x96, 0xcc, 0x5a, 0x50, 0x40, 0x1c, 0xee, 0x53, 0x8d, ++ 0xb1, 0x68, 0x8f, 0x26, 0x30, 0xf4, 0x5b, 0x58, 0xc9, 0xd0, 0xdb, 0x1a, ++ 0x84, 0x3b, 0x52, 0x2c, 0x5b, 0x14, 0xb4, 0x43, 0xff, 0xfe, 0x1e, 0xb6, ++ 0xfb, 0xda, 0x65, 0x05, 0xf5, 0xf9, 0x89, 0xce, 0x8f, 0x23, 0x71, 0x9e, ++ 0xab, 0x5f, 0x81, 0x1c, 0x66, 0xe3, 0xb8, 0x8f, 0x23, 0x31, 0x3e, 0xae, ++ 0xbd, 0xce, 0x08, 0xde, 0x02, 0xed, 0x0a, 0xc0, 0x0b, 0x0f, 0x81, 0x62, ++ 0x20, 0x7f, 0x06, 0xf4, 0x1a, 0xf6, 0x4f, 0x55, 0x61, 0xb7, 0x9e, 0x41, ++ 0x59, 0xd2, 0x76, 0x48, 0x8f, 0xf4, 0xa8, 0x39, 0x70, 0x88, 0xda, 0xdf, ++ 0xf2, 0xe8, 0x82, 0xdb, 0x0f, 0x34, 0x07, 0xb5, 0x5b, 0xb0, 0x3f, 0x94, ++ 0x35, 0x5a, 0x37, 0xc5, 0xf7, 0x97, 0x3b, 0xd5, 0xf9, 0xbc, 0xd4, 0xbf, ++ 0x36, 0x55, 0xb2, 0xa3, 0x5f, 0x7c, 0xf9, 0xc0, 0xbf, 0xc7, 0x55, 0x60, ++ 0xbf, 0xb6, 0xf7, 0xe3, 0x56, 0x7e, 0x0d, 0xbe, 0x3f, 0x3b, 0xf2, 0x72, ++ 0x06, 0xea, 0x75, 0x27, 0xd8, 0x61, 0xaf, 0xd9, 0x3f, 0x8f, 0xb3, 0x4b, ++ 0x27, 0x60, 0xbe, 0xef, 0xda, 0xd4, 0x43, 0x85, 0x31, 0x68, 0x08, 0xda, ++ 0x24, 0x36, 0x03, 0x8a, 0xab, 0x6c, 0x2b, 0x5b, 0x07, 0xfa, 0xae, 0xa6, ++ 0xb3, 0xb5, 0x16, 0xf5, 0x50, 0x4d, 0xfa, 0x32, 0x1d, 0x4b, 0x26, 0x7d, ++ 0x24, 0xf2, 0x0d, 0xa0, 0x6d, 0xd1, 0x5f, 0xc2, 0xe0, 0x1e, 0xf0, 0x77, ++ 0xd5, 0xf3, 0x79, 0xe4, 0x4a, 0x98, 0xf7, 0x35, 0xcf, 0xc9, 0xbb, 0xec, ++ 0x48, 0xbf, 0xee, 0x37, 0x22, 0x71, 0xdd, 0xc1, 0x76, 0x39, 0x28, 0x9e, ++ 0x59, 0x94, 0xc5, 0xfd, 0xd6, 0x45, 0x59, 0x7a, 0xa2, 0xe3, 0xd5, 0xf6, ++ 0x37, 0x22, 0x15, 0x68, 0xdf, 0xec, 0x79, 0x83, 0xe3, 0x5b, 0xeb, 0xa5, ++ 0x73, 0x9f, 0x10, 0xf0, 0x20, 0x94, 0x84, 0xe7, 0x4e, 0x99, 0xce, 0x5d, ++ 0xf5, 0x95, 0x86, 0xf0, 0xaf, 0xce, 0x77, 0x4f, 0x96, 0x4c, 0xf3, 0x2d, ++ 0xec, 0x9c, 0x11, 0x81, 0xe7, 0xea, 0xf3, 0xf0, 0xf5, 0x96, 0x67, 0x29, ++ 0x34, 0xff, 0xc2, 0xd4, 0x15, 0xe5, 0xb8, 0xff, 0xd3, 0x09, 0x4b, 0x73, ++ 0x65, 0xf2, 0xf3, 0x40, 0x31, 0xa3, 0x5e, 0xbd, 0xbd, 0xb8, 0x15, 0xf3, ++ 0x03, 0x35, 0x1e, 0xd9, 0x3e, 0x56, 0xbc, 0xb5, 0x5a, 0xcc, 0xdb, 0xa3, ++ 0xe3, 0x7c, 0xf8, 0x56, 0xea, 0xe1, 0x9e, 0xc9, 0xc0, 0x1f, 0xa7, 0x8b, ++ 0x26, 0xd8, 0x48, 0xe7, 0x8b, 0x7e, 0x55, 0x59, 0xdc, 0x1f, 0x2f, 0xd4, ++ 0x3b, 0x52, 0xd1, 0x2e, 0xf4, 0x99, 0x95, 0x08, 0xe4, 0xe3, 0x47, 0x8b, ++ 0x52, 0x22, 0x90, 0xae, 0x27, 0xb0, 0xc4, 0xfa, 0xa2, 0x3d, 0x7a, 0x07, ++ 0x94, 0xd5, 0xed, 0x7c, 0xbd, 0x3e, 0x4b, 0x6f, 0x24, 0xf2, 0x5b, 0x5f, ++ 0x7b, 0xb6, 0x8c, 0x7e, 0x8b, 0x3a, 0xdf, 0x4a, 0xb1, 0xee, 0x08, 0x5f, ++ 0x8f, 0xd0, 0xcd, 0x45, 0x74, 0xaa, 0x74, 0x37, 0x9b, 0x71, 0x1e, 0x3f, ++ 0xfd, 0x78, 0xfd, 0xf2, 0x2c, 0x9e, 0x2f, 0x3a, 0xed, 0x7e, 0xff, 0x5e, ++ 0xf4, 0x53, 0xfa, 0xd2, 0xc3, 0xad, 0x48, 0x97, 0x1e, 0x3d, 0xa3, 0xf8, ++ 0xb6, 0x06, 0xe8, 0x8a, 0xf6, 0xa0, 0xaf, 0x3b, 0xb1, 0x19, 0xf1, 0xa0, ++ 0xae, 0xb7, 0x3c, 0x4b, 0xc4, 0xc9, 0xe9, 0x1a, 0xa2, 0xab, 0xaf, 0x53, ++ 0x27, 0xfa, 0x2d, 0x6b, 0x65, 0x41, 0xfd, 0x78, 0xfc, 0x7c, 0x75, 0x6f, ++ 0xf0, 0x7e, 0x2c, 0xee, 0x73, 0xbf, 0x59, 0x86, 0x76, 0xe9, 0x05, 0xf0, ++ 0xab, 0xa1, 0xba, 0x56, 0xd7, 0x10, 0x87, 0xe7, 0xff, 0x74, 0x57, 0xf0, ++ 0xfe, 0x2a, 0x05, 0x9e, 0x6b, 0x75, 0xde, 0xb8, 0xb8, 0x00, 0x7e, 0xad, ++ 0xed, 0x1a, 0x91, 0x17, 0x33, 0xf1, 0x77, 0x97, 0x2a, 0x1f, 0x0a, 0xd1, ++ 0x53, 0xa5, 0x63, 0x5f, 0x3a, 0xf7, 0xdb, 0xfa, 0x12, 0x0c, 0x6e, 0x8c, ++ 0x17, 0x6b, 0x0f, 0xb5, 0x12, 0x5f, 0x8f, 0xce, 0xef, 0xf4, 0x26, 0xa3, ++ 0x9f, 0x9f, 0xf8, 0x90, 0x91, 0xf2, 0x86, 0xb7, 0x8a, 0x67, 0x55, 0x3f, ++ 0x20, 0x20, 0xee, 0x61, 0x18, 0xc7, 0xe9, 0x8a, 0x52, 0x72, 0x35, 0xd3, ++ 0xfd, 0xf6, 0x7e, 0xd0, 0x66, 0x7f, 0x3e, 0x6b, 0x22, 0xc6, 0x43, 0x25, ++ 0x14, 0xef, 0xf5, 0xb1, 0xa1, 0x0a, 0x34, 0xfe, 0x4e, 0xf4, 0x83, 0xa3, ++ 0x50, 0xef, 0xfe, 0xf1, 0x19, 0x5c, 0x77, 0xb8, 0x1d, 0xfc, 0x3d, 0x58, ++ 0xd7, 0x69, 0xec, 0x5c, 0x74, 0x1e, 0xfc, 0xac, 0x61, 0x2b, 0x08, 0x0a, ++ 0xec, 0x7b, 0x78, 0x97, 0xce, 0x2d, 0xe2, 0x13, 0x33, 0xfa, 0xa7, 0x15, ++ 0xc2, 0x3f, 0xfd, 0x54, 0x71, 0xe4, 0xc9, 0x60, 0x5f, 0x9d, 0xeb, 0x35, ++ 0x74, 0xbe, 0xda, 0x8c, 0x30, 0xee, 0xd7, 0x0a, 0x3d, 0xf9, 0xd9, 0xa1, ++ 0xe4, 0x9f, 0x20, 0xbf, 0xd6, 0x9e, 0x92, 0x2d, 0x46, 0xf4, 0x43, 0x21, ++ 0x6e, 0x21, 0xb8, 0x8d, 0xfb, 0x05, 0x75, 0x9e, 0xe4, 0x7f, 0x9a, 0x8b, ++ 0xfe, 0x76, 0x9b, 0x8e, 0xfc, 0x00, 0xd5, 0xef, 0x70, 0x0a, 0xbf, 0xe3, ++ 0x82, 0xf0, 0x67, 0x2f, 0xac, 0x1f, 0xd2, 0x93, 0xbf, 0x7a, 0x5c, 0x62, ++ 0x4f, 0xc1, 0x3e, 0x2a, 0x3b, 0xb7, 0xf5, 0x24, 0x42, 0xbb, 0x33, 0x63, ++ 0x11, 0xf9, 0xab, 0x4e, 0xb9, 0x8d, 0xf2, 0x8f, 0xab, 0x76, 0x04, 0xfb, ++ 0x05, 0x55, 0xee, 0x60, 0xb8, 0xe6, 0x40, 0x30, 0xec, 0x0c, 0xf1, 0x1b, ++ 0xd4, 0xb8, 0xed, 0x44, 0xd6, 0x88, 0xff, 0x30, 0x13, 0xe3, 0x8f, 0x02, ++ 0x79, 0x6e, 0x3c, 0xca, 0xc1, 0x07, 0x82, 0x9e, 0x6a, 0x3c, 0xb2, 0x76, ++ 0x96, 0x35, 0x1e, 0xe5, 0x7d, 0xb3, 0x56, 0x59, 0xa4, 0xe6, 0x03, 0x10, ++ 0x4f, 0xf5, 0xc7, 0x0f, 0x57, 0xe1, 0x7e, 0xdd, 0xb5, 0x61, 0x56, 0x8a, ++ 0x0b, 0xd6, 0x1d, 0x25, 0x7c, 0x0e, 0x7e, 0xc1, 0xe3, 0x8e, 0xc1, 0x04, ++ 0xc6, 0xfd, 0x23, 0xc6, 0xf1, 0x3a, 0xd8, 0xc9, 0xf9, 0xbb, 0x5e, 0x27, ++ 0xf1, 0x38, 0x03, 0xd8, 0x95, 0xe6, 0x33, 0x4a, 0xee, 0xf5, 0xd0, 0x34, ++ 0xe8, 0x1a, 0x8e, 0x24, 0xbd, 0xc4, 0x58, 0x11, 0xca, 0xc3, 0x9a, 0xa5, ++ 0x3c, 0x8e, 0xb4, 0x63, 0xce, 0x15, 0xca, 0x17, 0x84, 0x5e, 0x0a, 0xb5, ++ 0x97, 0xdf, 0xd7, 0x0e, 0xc8, 0xd1, 0x01, 0xfa, 0xe1, 0x7c, 0x16, 0xf7, ++ 0x37, 0xf3, 0xf5, 0xcc, 0x81, 0x76, 0x6a, 0x6d, 0x84, 0x95, 0xec, 0xd6, ++ 0x34, 0x23, 0xf7, 0xb7, 0x0b, 0x1e, 0xf6, 0xd8, 0x90, 0x0f, 0xa6, 0x41, ++ 0x7c, 0x6c, 0x08, 0xc8, 0x67, 0x4f, 0x33, 0x0f, 0x49, 0xd8, 0x6f, 0xef, ++ 0x23, 0x10, 0xe2, 0x66, 0xfa, 0xe3, 0xfb, 0xc5, 0x5a, 0x8b, 0x2e, 0x3a, ++ 0xc0, 0xee, 0x31, 0xb6, 0x9e, 0xfa, 0xab, 0xf3, 0x83, 0x26, 0xe1, 0xe3, ++ 0x6f, 0x35, 0xbf, 0x05, 0xe6, 0x37, 0xfb, 0xe7, 0x07, 0x7c, 0x47, 0x21, ++ 0xbe, 0x3f, 0xcf, 0xb1, 0x92, 0x3d, 0x4e, 0x5a, 0xcc, 0x58, 0x2f, 0xc9, ++ 0x63, 0x03, 0xc9, 0xa3, 0x7a, 0x9e, 0xab, 0xc0, 0x67, 0x98, 0x8f, 0xc5, ++ 0x9c, 0x09, 0xd2, 0xad, 0x76, 0xd7, 0xeb, 0x94, 0x07, 0x76, 0xb2, 0x5e, ++ 0x8a, 0x47, 0x0a, 0x23, 0xf9, 0x3e, 0x0a, 0x71, 0x3f, 0x08, 0x87, 0xf1, ++ 0x92, 0x65, 0x73, 0x7c, 0xd9, 0xb3, 0xb9, 0xfe, 0x58, 0x9b, 0x1d, 0x6c, ++ 0x97, 0xbb, 0xb2, 0xed, 0x52, 0x36, 0x94, 0x3b, 0xb2, 0x1d, 0xba, 0x6c, ++ 0xd2, 0x67, 0x16, 0xe2, 0xcb, 0xb5, 0x82, 0x57, 0xc0, 0x4f, 0x89, 0x1f, ++ 0x18, 0x43, 0xef, 0xae, 0x79, 0x97, 0xc7, 0x55, 0x9f, 0x83, 0x1c, 0xa0, ++ 0x9c, 0xdf, 0xdf, 0x20, 0x29, 0xa9, 0x41, 0x7e, 0x10, 0xe7, 0xef, 0x7a, ++ 0x5e, 0xc5, 0xae, 0x30, 0x4f, 0xff, 0x5c, 0xc4, 0x83, 0xcb, 0xde, 0x9b, ++ 0x1e, 0x87, 0x71, 0x14, 0x97, 0xab, 0xe5, 0xeb, 0x4c, 0x4a, 0x6a, 0x00, ++ 0x9f, 0xd6, 0x23, 0x9f, 0x03, 0x5e, 0x2a, 0x2d, 0x55, 0x3f, 0x42, 0xbf, ++ 0xdb, 0xb1, 0x2e, 0x4e, 0xc1, 0x7c, 0x7f, 0x3d, 0xf2, 0xfd, 0x74, 0x44, ++ 0x23, 0xe7, 0xeb, 0x58, 0xf8, 0x87, 0xf1, 0xc5, 0x28, 0x3e, 0xf7, 0x04, ++ 0xc3, 0xf0, 0xb7, 0x0b, 0xf9, 0xab, 0x8e, 0x19, 0xac, 0x68, 0x47, 0xea, ++ 0x3b, 0x43, 0xdb, 0xad, 0x5a, 0xcc, 0xeb, 0xa4, 0x64, 0x83, 0x1c, 0x84, ++ 0xfb, 0xe5, 0x20, 0x49, 0xf0, 0x65, 0xb3, 0x43, 0x72, 0xa3, 0xde, 0x6f, ++ 0xbe, 0xa1, 0xe5, 0x79, 0xac, 0x52, 0x89, 0xf2, 0x56, 0xf7, 0x40, 0x25, ++ 0xf2, 0x25, 0xfd, 0x61, 0xbf, 0xca, 0x79, 0x6e, 0x9c, 0xff, 0x1e, 0x00, ++ 0x31, 0x1e, 0x62, 0xdb, 0x63, 0x49, 0x6e, 0xa8, 0x11, 0xf4, 0xc8, 0xdf, ++ 0x8b, 0xf3, 0xde, 0xa3, 0xf5, 0xbe, 0x8e, 0x72, 0x7c, 0x52, 0xe7, 0x49, ++ 0xc6, 0x7c, 0xca, 0x49, 0xa7, 0xd1, 0x8a, 0xf3, 0x2f, 0x65, 0xe0, 0x70, ++ 0x80, 0x7e, 0x29, 0x65, 0xbd, 0x54, 0xf6, 0x87, 0xd7, 0x75, 0x78, 0x69, ++ 0x72, 0xd7, 0x54, 0x8c, 0x9b, 0x3f, 0x70, 0x18, 0x28, 0x8f, 0xd3, 0xbc, ++ 0xa1, 0x25, 0x02, 0xf5, 0x69, 0x26, 0xdb, 0x60, 0xb9, 0x90, 0x8e, 0xc6, ++ 0x9d, 0x1d, 0xb8, 0x99, 0x3d, 0xbe, 0x5f, 0x01, 0x8c, 0xc4, 0x2e, 0xa8, ++ 0x74, 0xa1, 0xbc, 0xd0, 0x56, 0x11, 0x87, 0x72, 0xba, 0xee, 0xc8, 0xb6, ++ 0xcf, 0xcb, 0xce, 0x1d, 0x7f, 0x7c, 0xcd, 0x1f, 0x3a, 0xee, 0xc2, 0x90, ++ 0xa2, 0xe6, 0x17, 0xad, 0xfa, 0x78, 0xce, 0x36, 0xbd, 0xe9, 0x79, 0x7e, ++ 0xfa, 0xd5, 0x33, 0x4f, 0x3a, 0xee, 0x57, 0xa5, 0xd7, 0x08, 0xfd, 0x60, ++ 0xcf, 0x53, 0x00, 0x0f, 0x4b, 0xd8, 0x50, 0x1e, 0xc6, 0x35, 0x2a, 0xdd, ++ 0x8c, 0xf0, 0x6f, 0x2c, 0xba, 0xa9, 0xf8, 0x4c, 0xd2, 0x0d, 0xfd, 0x14, ++ 0x51, 0x06, 0x76, 0x89, 0xf4, 0x4b, 0x28, 0x3d, 0x55, 0xfc, 0xd6, 0xb1, ++ 0x06, 0x1d, 0xcf, 0x73, 0x35, 0xbc, 0xb7, 0x14, 0xfa, 0xdf, 0xb7, 0x41, ++ 0xa3, 0xa0, 0x7f, 0x38, 0x8a, 0xbe, 0xb7, 0xa0, 0x83, 0xd7, 0xc4, 0x9b, ++ 0xbc, 0x11, 0x12, 0xc5, 0x9b, 0xe3, 0xd1, 0x45, 0xa5, 0x87, 0x4a, 0x9f, ++ 0x33, 0xd1, 0x7c, 0xdc, 0x99, 0xfb, 0x65, 0xca, 0xd3, 0xfd, 0x5f, 0xd3, ++ 0xa5, 0x2b, 0xdb, 0xf1, 0xd0, 0xd7, 0xc9, 0x63, 0xa8, 0xfc, 0x8d, 0x27, ++ 0x6f, 0xcb, 0xd7, 0x85, 0xc8, 0x65, 0x88, 0xfc, 0xa9, 0xf4, 0x72, 0xac, ++ 0x8b, 0x24, 0x39, 0x53, 0xe9, 0x58, 0xab, 0x30, 0x8a, 0x5b, 0x6b, 0xbb, ++ 0x23, 0xac, 0x6e, 0xe6, 0xa7, 0x9f, 0x19, 0xfe, 0x21, 0xfd, 0xf0, 0x9e, ++ 0x82, 0xf2, 0x31, 0xed, 0x12, 0xdb, 0x29, 0x7d, 0x13, 0x39, 0x1c, 0xa0, ++ 0x7b, 0x8d, 0x50, 0xfa, 0x00, 0x6f, 0xd8, 0x51, 0xaf, 0x3f, 0x95, 0x1d, ++ 0x6c, 0x87, 0x54, 0xba, 0x8d, 0xa7, 0x7f, 0x54, 0xfd, 0xf5, 0x21, 0xf3, ++ 0x9e, 0xb4, 0x48, 0x74, 0x3f, 0xc0, 0xe5, 0xf3, 0x97, 0x06, 0x37, 0xde, ++ 0x2f, 0xaa, 0xf7, 0x03, 0xea, 0x3d, 0xc0, 0x61, 0xa1, 0xf7, 0x42, 0xcb, ++ 0x0f, 0xc1, 0xef, 0xc0, 0x7b, 0x97, 0x2d, 0xe9, 0x7d, 0x13, 0xd1, 0x5f, ++ 0xeb, 0xd7, 0xab, 0xf3, 0xf0, 0xfb, 0xc7, 0x0f, 0xd7, 0xf7, 0x4e, 0x5d, ++ 0x0d, 0xe3, 0x3f, 0x9c, 0xc7, 0xcb, 0x7e, 0xf4, 0xd3, 0x02, 0x60, 0x7b, ++ 0x18, 0xcf, 0xc3, 0x7d, 0x38, 0xc9, 0xe0, 0x42, 0xbc, 0x7d, 0x28, 0xcd, ++ 0x9c, 0x8f, 0x76, 0xfc, 0x43, 0xe9, 0xa1, 0xbb, 0x38, 0x1c, 0xaf, 0x57, ++ 0x10, 0x5e, 0x1a, 0x3f, 0xdf, 0x02, 0x70, 0xbf, 0x4e, 0xcd, 0xdb, 0x3d, ++ 0x2a, 0xf4, 0xb0, 0x9b, 0xef, 0x63, 0xe9, 0xec, 0x7c, 0xea, 0x27, 0xb1, ++ 0x37, 0x11, 0x1f, 0x8a, 0xc4, 0x4a, 0x68, 0x1d, 0x49, 0x8a, 0x29, 0x82, ++ 0xfd, 0x7c, 0xf8, 0x8b, 0x19, 0x59, 0x4d, 0xcc, 0x7f, 0xfe, 0x96, 0x6c, ++ 0xee, 0xcf, 0xba, 0x55, 0xfd, 0xae, 0xe6, 0xb1, 0xff, 0x41, 0xa2, 0x3c, ++ 0xf6, 0x72, 0x30, 0x01, 0x16, 0xcc, 0xb7, 0xcf, 0x7f, 0xb6, 0x68, 0x3a, ++ 0xd4, 0x9f, 0xfd, 0xc7, 0x14, 0x1b, 0xdd, 0xff, 0xad, 0x09, 0x5e, 0x1f, ++ 0xed, 0x68, 0x32, 0xe5, 0x07, 0xb7, 0xd1, 0x3c, 0xdf, 0xff, 0x6a, 0x48, ++ 0xb7, 0x22, 0xc3, 0xbf, 0xaf, 0x11, 0xfb, 0x97, 0x7f, 0x8d, 0xd7, 0x97, ++ 0xcf, 0xa0, 0x78, 0xa2, 0x52, 0xd0, 0xd0, 0x1e, 0x33, 0x93, 0xc7, 0xb1, ++ 0xee, 0x94, 0x28, 0xb4, 0x47, 0xaa, 0x7d, 0x1a, 0x3e, 0x75, 0xd8, 0x1c, ++ 0x98, 0xbf, 0xbc, 0x04, 0xf6, 0x8b, 0xe9, 0x03, 0xe0, 0x99, 0x4f, 0x26, ++ 0x05, 0xda, 0xb7, 0xd7, 0xf7, 0xfd, 0x3a, 0x0d, 0xe7, 0xa9, 0xd4, 0xbb, ++ 0x32, 0xad, 0x18, 0x4f, 0x36, 0x3f, 0x9f, 0x84, 0x7e, 0x40, 0xe5, 0xbe, ++ 0xc7, 0xd3, 0xc8, 0x2f, 0xdd, 0xb7, 0x39, 0x0d, 0xe3, 0x8b, 0xca, 0x96, ++ 0x5f, 0xa7, 0xd9, 0x09, 0x0e, 0x77, 0x50, 0x7c, 0xa3, 0xe5, 0xe7, 0xbe, ++ 0x72, 0xf0, 0xce, 0x3d, 0x5b, 0x02, 0xfc, 0xe0, 0xea, 0x5c, 0x99, 0xf6, ++ 0x5f, 0x6a, 0x7c, 0xbd, 0x00, 0xfd, 0xd3, 0x45, 0x77, 0x7c, 0xf6, 0x18, ++ 0xe6, 0xc3, 0x67, 0xfc, 0xa3, 0x44, 0x79, 0xb1, 0xfb, 0x59, 0xef, 0x63, ++ 0x68, 0x37, 0xcb, 0xd2, 0xb9, 0x1c, 0xb1, 0xed, 0x46, 0xd2, 0xeb, 0x30, ++ 0x1f, 0xdd, 0x3b, 0xb6, 0xce, 0xfc, 0xf1, 0x5e, 0xd4, 0xe7, 0xa7, 0xd3, ++ 0x3f, 0xd6, 0x95, 0x43, 0xbf, 0xeb, 0xd9, 0x5a, 0xc2, 0x4f, 0x19, 0x73, ++ 0x3f, 0x11, 0x8f, 0xf9, 0xb0, 0x4d, 0x12, 0xe5, 0xc3, 0xfc, 0xfd, 0xa7, ++ 0xd2, 0x3d, 0xe6, 0x8a, 0x0d, 0x92, 0x3e, 0x21, 0x16, 0xed, 0x61, 0xb4, ++ 0x4d, 0x56, 0x70, 0x5c, 0x34, 0xed, 0xe3, 0x81, 0x4d, 0xb6, 0x1e, 0xac, ++ 0x2f, 0x7b, 0x98, 0xd7, 0x2f, 0x32, 0xb8, 0xdb, 0xfb, 0x70, 0x9e, 0x67, ++ 0xf5, 0xd6, 0x56, 0x05, 0x27, 0x2a, 0x99, 0x5e, 0x12, 0x70, 0x2f, 0x7c, ++ 0x3d, 0x9b, 0xc7, 0x5d, 0xcb, 0x9f, 0x90, 0xc8, 0x1f, 0x57, 0xd7, 0x99, ++ 0xf1, 0x4c, 0x5c, 0x73, 0xe0, 0x39, 0xaf, 0x0b, 0xfa, 0xb3, 0x1b, 0xff, ++ 0x46, 0xfa, 0xed, 0x27, 0x82, 0x2e, 0x3f, 0x7a, 0xf8, 0xfd, 0x37, 0x13, ++ 0x14, 0xbc, 0x4f, 0x72, 0xdc, 0x44, 0x3d, 0xf2, 0xde, 0xd3, 0x17, 0x52, ++ 0x51, 0x7f, 0xe5, 0xc7, 0x5c, 0xca, 0x40, 0x3e, 0x9f, 0xa1, 0x77, 0xec, ++ 0xac, 0xc2, 0x73, 0xb7, 0x18, 0x28, 0x7f, 0x98, 0x93, 0x99, 0x28, 0xc7, ++ 0x43, 0xff, 0xac, 0x9f, 0xcf, 0x7b, 0x0a, 0xcb, 0xe5, 0x0f, 0xaf, 0xd8, ++ 0x59, 0x85, 0x79, 0xd0, 0x1d, 0x46, 0x8a, 0xa3, 0xd4, 0xfd, 0xad, 0x91, ++ 0x14, 0x0d, 0xc6, 0x9b, 0x6f, 0x34, 0xff, 0xec, 0x01, 0xc4, 0xdb, 0xc5, ++ 0xa7, 0x8d, 0xe4, 0x47, 0xaf, 0x69, 0xbe, 0x2d, 0x9e, 0x8d, 0x21, 0xa7, ++ 0x6a, 0xb9, 0x1f, 0xe8, 0xaf, 0xa4, 0x31, 0xf6, 0x52, 0xa3, 0x91, 0xca, ++ 0x97, 0x1b, 0x2d, 0x4c, 0x81, 0x23, 0x1e, 0x6c, 0x4c, 0x20, 0xf8, 0x5f, ++ 0x1b, 0x15, 0x2a, 0xd9, 0x12, 0xce, 0x5f, 0x6b, 0x44, 0xbc, 0x3a, 0xde, ++ 0x7c, 0xd9, 0x10, 0xef, 0x2b, 0xa0, 0xaf, 0x72, 0x36, 0xc1, 0x7c, 0xe0, ++ 0x6f, 0xda, 0x4c, 0xf6, 0xc9, 0x39, 0x80, 0xaf, 0x19, 0xb7, 0x3b, 0x5b, ++ 0x36, 0x8b, 0x73, 0xcd, 0x80, 0xf1, 0x36, 0x57, 0xf2, 0x02, 0xc4, 0x43, ++ 0xce, 0xe6, 0xd5, 0x3d, 0xe8, 0x8a, 0xea, 0x73, 0x78, 0x7c, 0xf4, 0x76, ++ 0xdf, 0xa6, 0x24, 0xf2, 0xa3, 0x1f, 0x3e, 0xb7, 0xbb, 0x0a, 0xda, 0x17, ++ 0xe7, 0x94, 0xa4, 0xe0, 0x78, 0xe3, 0xae, 0x6b, 0x14, 0xe7, 0xbf, 0xd1, ++ 0xf5, 0x78, 0x19, 0xe5, 0xf5, 0x5b, 0x0c, 0xfc, 0x7c, 0xe2, 0xdc, 0x17, ++ 0x9f, 0x4e, 0x8b, 0xdf, 0x89, 0x79, 0xd7, 0xb7, 0x74, 0x14, 0x7f, 0xd7, ++ 0xef, 0x3a, 0xb7, 0x7b, 0x33, 0x94, 0x2b, 0x9f, 0x58, 0xad, 0x0f, 0xe4, ++ 0xf7, 0x6f, 0x7a, 0xde, 0x64, 0xb1, 0x9f, 0x5b, 0xc9, 0xd5, 0x78, 0x78, ++ 0xf8, 0xf6, 0x72, 0xf5, 0xeb, 0x24, 0x92, 0x9f, 0x16, 0x90, 0xab, 0x8c, ++ 0xbf, 0x5e, 0xae, 0xea, 0x1f, 0x5e, 0x4f, 0xf8, 0x7b, 0x28, 0xa7, 0x64, ++ 0x51, 0x0e, 0xec, 0xff, 0xa2, 0xce, 0x95, 0x84, 0xf2, 0x74, 0x71, 0xe6, ++ 0xf7, 0x88, 0xcf, 0x5d, 0xc7, 0x25, 0xc2, 0xbf, 0xaa, 0xc7, 0xd5, 0xf1, ++ 0x45, 0xe2, 0xbc, 0x35, 0x1a, 0xcf, 0x13, 0xe4, 0x0f, 0x0a, 0x3d, 0xfe, ++ 0x25, 0x44, 0x7e, 0x88, 0xdf, 0xd7, 0xbb, 0x3e, 0x4d, 0x43, 0x7f, 0xf8, ++ 0xcb, 0xce, 0xa5, 0x5f, 0x7b, 0xee, 0x23, 0x8d, 0x78, 0x83, 0x8e, 0x79, ++ 0x2d, 0x23, 0x95, 0xa1, 0xed, 0x79, 0x7a, 0x47, 0x8a, 0x15, 0xce, 0x97, ++ 0xa7, 0xe1, 0x7e, 0xf0, 0x28, 0xff, 0x55, 0xdc, 0xcf, 0xa9, 0xf7, 0xed, ++ 0xf8, 0x87, 0x79, 0xe1, 0x5a, 0x61, 0x3f, 0x9d, 0xb0, 0xb1, 0xa8, 0x18, ++ 0xb4, 0x7f, 0x92, 0x37, 0x2c, 0x13, 0xef, 0x39, 0x7e, 0x78, 0x49, 0x8b, ++ 0xf1, 0x17, 0xc4, 0x75, 0x1f, 0x05, 0xfb, 0x97, 0xec, 0xa3, 0x00, 0x3b, ++ 0x3e, 0xde, 0x7e, 0x6f, 0x55, 0xd6, 0xe1, 0x3c, 0x5a, 0xbf, 0xde, 0x9d, ++ 0x7d, 0x46, 0xc3, 0xbc, 0x01, 0x76, 0xfb, 0xce, 0x81, 0x30, 0xe6, 0x0d, ++ 0x58, 0x77, 0x24, 0xee, 0x30, 0x22, 0x4f, 0x43, 0x1c, 0xda, 0x35, 0x89, ++ 0xf4, 0x02, 0xd2, 0x0d, 0xef, 0x65, 0x7c, 0x5d, 0x33, 0x5b, 0x10, 0xbe, ++ 0xa4, 0xe7, 0x74, 0xf4, 0x1d, 0x81, 0xf8, 0x8a, 0xe7, 0x55, 0x98, 0x9c, ++ 0xe7, 0x3f, 0xe7, 0xa5, 0xae, 0x2b, 0x99, 0xa8, 0x67, 0x43, 0xcf, 0x5b, ++ 0x77, 0xf4, 0x0a, 0xf1, 0x47, 0x6d, 0xe7, 0xe3, 0xd7, 0x24, 0x3a, 0xff, ++ 0xc2, 0x4b, 0xda, 0xcc, 0x5b, 0x9f, 0xff, 0xf5, 0x7d, 0x57, 0x32, 0x91, ++ 0x7e, 0x97, 0x74, 0x03, 0x79, 0x18, 0x47, 0xf9, 0xf4, 0x03, 0x99, 0x48, ++ 0x87, 0xba, 0x63, 0x5c, 0x9f, 0x7f, 0x5b, 0x3c, 0xa8, 0xf5, 0x55, 0x9b, ++ 0xf4, 0x3c, 0xbf, 0x27, 0x59, 0x28, 0x1e, 0x2c, 0x90, 0xaf, 0x52, 0x1c, ++ 0xef, 0x3b, 0xc5, 0xe3, 0xf8, 0xba, 0xae, 0x3d, 0xa4, 0x4f, 0x87, 0xbb, ++ 0x79, 0x3e, 0xa5, 0x5e, 0xd3, 0x5b, 0x18, 0x8f, 0xf9, 0x87, 0x86, 0x73, ++ 0x3d, 0xa8, 0xcf, 0x86, 0x13, 0x78, 0x7c, 0x05, 0xf3, 0xdb, 0x11, 0x6f, ++ 0x73, 0x53, 0x84, 0x1d, 0xd4, 0x0e, 0x25, 0x2d, 0x06, 0xbd, 0xf6, 0xca, ++ 0x08, 0x3f, 0xf0, 0xb8, 0xee, 0x22, 0xca, 0xaf, 0x1e, 0xe7, 0xf1, 0xd4, ++ 0xd2, 0x7b, 0xa4, 0xcc, 0x70, 0x86, 0x7e, 0xc5, 0x65, 0x94, 0x67, 0xa8, ++ 0x2f, 0x5b, 0x97, 0xbc, 0x11, 0xf9, 0xfc, 0xa2, 0x7b, 0x22, 0x66, 0x82, ++ 0xd8, 0xdb, 0x99, 0xff, 0x53, 0x47, 0xf9, 0xb7, 0xd7, 0xc2, 0x2d, 0x32, ++ 0xf9, 0xad, 0x50, 0x1b, 0x40, 0xbf, 0x91, 0x73, 0xb8, 0x65, 0xfe, 0x70, ++ 0x86, 0xa9, 0x71, 0x7a, 0x38, 0xb3, 0x07, 0xf4, 0xab, 0xd7, 0x2b, 0x3f, ++ 0xa1, 0xf8, 0xf8, 0x34, 0xbf, 0x27, 0xab, 0xbf, 0x9d, 0xcb, 0x13, 0x3b, ++ 0xca, 0xe5, 0xc9, 0xb9, 0xe1, 0x75, 0x7d, 0x42, 0xc0, 0x7c, 0xbb, 0x51, ++ 0x9e, 0x68, 0xdf, 0xdc, 0x7f, 0x5c, 0xf4, 0xda, 0xff, 0x90, 0x5c, 0x76, ++ 0xdb, 0xec, 0xdd, 0x28, 0x97, 0xe1, 0xa8, 0x0b, 0x71, 0xbe, 0x84, 0x28, ++ 0xb7, 0x24, 0x89, 0x7e, 0x79, 0xfe, 0x7b, 0x40, 0x73, 0xb7, 0x88, 0xc7, ++ 0x8b, 0x64, 0x6a, 0xaf, 0xef, 0x94, 0xd9, 0x24, 0x1c, 0x93, 0x10, 0x41, ++ 0xf7, 0xf5, 0x45, 0x6c, 0xab, 0x16, 0xfd, 0xdd, 0x45, 0xcc, 0x33, 0x97, ++ 0xbf, 0x93, 0x19, 0xf8, 0xcd, 0x77, 0xa1, 0xbd, 0xf8, 0x35, 0x39, 0x1b, ++ 0xdf, 0x63, 0x81, 0xff, 0x4c, 0xf7, 0xc7, 0x85, 0x61, 0x8e, 0xd4, 0x35, ++ 0xe8, 0x1f, 0x69, 0x24, 0x81, 0x57, 0x4f, 0xce, 0xe2, 0x40, 0x7b, 0x26, ++ 0xde, 0x79, 0xcc, 0x95, 0x25, 0xb2, 0x63, 0x43, 0x93, 0xc2, 0xc9, 0x4f, ++ 0x59, 0xb8, 0xc4, 0x59, 0x8a, 0xfb, 0x1d, 0xd1, 0x0f, 0x5a, 0xde, 0x0f, ++ 0xe6, 0x21, 0x3f, 0x8b, 0xb9, 0x87, 0x32, 0xf1, 0x3e, 0x93, 0x79, 0x87, ++ 0x32, 0xf1, 0x9e, 0x53, 0xed, 0x77, 0xef, 0x6b, 0xe1, 0x0d, 0x64, 0x17, ++ 0x99, 0x27, 0xe7, 0xde, 0x80, 0x75, 0xc2, 0x72, 0xb9, 0xdd, 0xfc, 0x1c, ++ 0xef, 0x9f, 0x41, 0x9f, 0xd4, 0x8b, 0xfb, 0xcf, 0x02, 0xf9, 0xc6, 0x33, ++ 0x18, 0x47, 0xad, 0x39, 0xce, 0xef, 0x09, 0xfb, 0x35, 0xc9, 0x1f, 0xe0, ++ 0x7b, 0x2d, 0x17, 0xe0, 0x19, 0xe9, 0x7a, 0x05, 0xe8, 0x6a, 0x47, 0xfb, ++ 0xe3, 0x60, 0x76, 0x3b, 0xca, 0xcf, 0xac, 0x89, 0x6e, 0x94, 0x9f, 0xfa, ++ 0x83, 0x12, 0xc3, 0x77, 0x6b, 0x75, 0x5d, 0x86, 0x16, 0xcc, 0xeb, 0xd4, ++ 0xe9, 0x06, 0xe2, 0x90, 0x9f, 0x37, 0x77, 0xfe, 0x41, 0x8f, 0xfc, 0x5c, ++ 0xdf, 0xf1, 0xbe, 0x5e, 0x99, 0x85, 0xe3, 0x79, 0x1e, 0x08, 0xfc, 0x75, ++ 0x0d, 0xe2, 0xb7, 0x5e, 0xd8, 0x2f, 0x67, 0xe7, 0x6d, 0x1f, 0x60, 0xde, ++ 0xcd, 0x79, 0x8a, 0x5b, 0x51, 0xa7, 0xf6, 0x7d, 0x8a, 0xeb, 0x6b, 0xda, ++ 0x0f, 0x51, 0xfc, 0x5e, 0xcb, 0xbc, 0x14, 0xbf, 0xd7, 0xb6, 0x05, 0xf3, ++ 0xcb, 0x70, 0x02, 0xcf, 0xb3, 0x87, 0xca, 0x47, 0x58, 0xae, 0x42, 0xfa, ++ 0x52, 0x85, 0x17, 0xee, 0xe0, 0x72, 0x71, 0xaf, 0xcc, 0x1a, 0x28, 0xde, ++ 0x17, 0x79, 0xd3, 0x85, 0x09, 0xf1, 0xe4, 0x8f, 0xf8, 0xc7, 0x09, 0x3f, ++ 0x51, 0xbe, 0xf2, 0x18, 0xfa, 0x2f, 0x83, 0xd3, 0x25, 0xab, 0x04, 0x53, ++ 0x0d, 0x86, 0xb9, 0x36, 0xa0, 0x5f, 0xe4, 0x4a, 0xe3, 0xfe, 0xcc, 0xe0, ++ 0xef, 0x5e, 0xce, 0xa9, 0x20, 0xbd, 0xe2, 0xce, 0xf9, 0x29, 0xbe, 0x8b, ++ 0x11, 0xfe, 0xee, 0xc2, 0x4d, 0xdb, 0xb4, 0x72, 0xc0, 0x7e, 0x16, 0x76, ++ 0xf3, 0x3c, 0xe1, 0x60, 0x18, 0xab, 0x3c, 0x42, 0xf4, 0x76, 0x4c, 0x41, ++ 0x3a, 0x44, 0x66, 0x95, 0x98, 0x73, 0x73, 0x49, 0xae, 0x32, 0xe9, 0x9d, ++ 0x8f, 0x86, 0xe7, 0x35, 0x43, 0xcf, 0xf1, 0xa4, 0xc8, 0x67, 0x9e, 0xc6, ++ 0x3c, 0x4f, 0x86, 0x7f, 0xdf, 0xc5, 0x89, 0x89, 0x5c, 0x8f, 0x31, 0x37, ++ 0xf1, 0x4f, 0x8f, 0x86, 0xaf, 0xaf, 0xbe, 0x7b, 0x51, 0xc7, 0xaf, 0xc8, ++ 0x95, 0x82, 0xe2, 0xa5, 0x35, 0x12, 0xcf, 0x4f, 0x8d, 0xa7, 0x57, 0xf0, ++ 0x1e, 0xa5, 0x5c, 0xdc, 0xa3, 0x94, 0x8b, 0x7b, 0x94, 0x72, 0x71, 0x8f, ++ 0x52, 0x2e, 0xee, 0x51, 0xca, 0xc5, 0x3d, 0x4a, 0xb9, 0xb8, 0x47, 0x29, ++ 0x17, 0xf7, 0x28, 0xe5, 0xe2, 0x1e, 0xa5, 0x5c, 0xdc, 0xa3, 0x94, 0x8b, ++ 0x7b, 0x14, 0xac, 0x3f, 0x8d, 0x5b, 0xa5, 0xf7, 0x70, 0xcf, 0xef, 0x44, ++ 0xfb, 0xd9, 0x83, 0x32, 0x36, 0xd9, 0x0f, 0xf7, 0xc7, 0x84, 0xc0, 0x93, ++ 0x83, 0xfb, 0xf7, 0xc7, 0x48, 0xc1, 0xf0, 0x64, 0x89, 0xfa, 0xe7, 0xe4, ++ 0x3e, 0xbf, 0xd3, 0x95, 0x81, 0x79, 0x4c, 0x8b, 0x90, 0x6f, 0x25, 0x02, ++ 0xfd, 0xaf, 0x8b, 0x26, 0x9e, 0x5f, 0xea, 0x8a, 0x70, 0xfc, 0x1d, 0xe2, ++ 0xb9, 0x7c, 0x61, 0xd3, 0x3e, 0xfe, 0x1e, 0xd1, 0x4e, 0xef, 0x59, 0xf2, ++ 0x63, 0x96, 0x96, 0xa2, 0x7c, 0x0d, 0xc7, 0x1a, 0x18, 0xea, 0xa1, 0x86, ++ 0x5c, 0xc7, 0xbc, 0x5c, 0xa0, 0xfb, 0xa9, 0x53, 0x0b, 0x52, 0xb7, 0x91, ++ 0x7e, 0x34, 0x59, 0xf1, 0x9e, 0xbb, 0xff, 0xbe, 0x3b, 0xa2, 0x28, 0x2f, ++ 0xf7, 0x96, 0xcc, 0x64, 0x58, 0x72, 0x5e, 0x7a, 0xf6, 0x86, 0x1c, 0x80, ++ 0xe7, 0x99, 0x25, 0xe2, 0x5b, 0xd0, 0x13, 0xdf, 0x29, 0x51, 0xe3, 0x49, ++ 0x98, 0x67, 0x41, 0x37, 0xbf, 0xcf, 0x28, 0x90, 0x6b, 0xcb, 0x71, 0xfe, ++ 0x35, 0x93, 0x4c, 0xd9, 0xa8, 0x77, 0x87, 0xb2, 0x1c, 0xc5, 0xb9, 0x01, ++ 0xfc, 0x58, 0x38, 0x79, 0x55, 0x2a, 0xfa, 0x41, 0x3d, 0x3a, 0xe5, 0x03, ++ 0xcc, 0xa7, 0xba, 0xde, 0xd5, 0x31, 0x8c, 0xa3, 0xd4, 0xfc, 0x9b, 0xda, ++ 0xaf, 0x27, 0x6b, 0xde, 0x52, 0x1c, 0xb7, 0x30, 0x3d, 0x65, 0x43, 0x16, ++ 0xea, 0x1b, 0x10, 0x2e, 0xd4, 0x6f, 0x76, 0x3d, 0x6b, 0xc3, 0x7d, 0xd9, ++ 0x35, 0xe1, 0x52, 0x13, 0xe9, 0x2b, 0x45, 0x8b, 0xf2, 0xbf, 0x54, 0xf0, ++ 0xef, 0x7c, 0x85, 0xfb, 0xc3, 0x5e, 0xbd, 0xa2, 0x8d, 0xc1, 0xb8, 0x3d, ++ 0x6c, 0x5e, 0xac, 0x4b, 0xe1, 0xf7, 0x55, 0xe5, 0xe2, 0xbe, 0xaa, 0x5c, ++ 0xdc, 0x57, 0x21, 0x7d, 0xde, 0xc1, 0xbc, 0x19, 0x94, 0xef, 0x41, 0x3d, ++ 0x96, 0xbd, 0x50, 0x8f, 0x65, 0xe8, 0x7b, 0xae, 0x67, 0x72, 0x4a, 0x56, ++ 0xe6, 0x52, 0xbc, 0x3d, 0x94, 0x14, 0xf8, 0x1e, 0x6c, 0x11, 0xca, 0x15, ++ 0xd7, 0x33, 0x49, 0xc8, 0xcf, 0x3b, 0x05, 0xdf, 0x26, 0x08, 0x3d, 0xd3, ++ 0x93, 0x5d, 0x52, 0x4d, 0xfc, 0xce, 0x3c, 0x34, 0x4f, 0x8d, 0xc8, 0xbf, ++ 0x5d, 0xd1, 0x05, 0xdf, 0xe3, 0xa9, 0xe3, 0xfc, 0xe3, 0x19, 0x95, 0x77, ++ 0x7f, 0x87, 0xeb, 0x67, 0x16, 0xa5, 0xe7, 0xef, 0x5d, 0xa7, 0x30, 0x17, ++ 0xbe, 0xa7, 0xbd, 0xfb, 0xd5, 0x49, 0x94, 0x4f, 0xf2, 0xb9, 0x35, 0x2e, ++ 0x5d, 0x14, 0xc0, 0x20, 0xe3, 0xa8, 0xbf, 0xd8, 0xab, 0x3c, 0xbe, 0x65, ++ 0x09, 0x5c, 0x5e, 0xee, 0x3e, 0x1c, 0x4f, 0xfd, 0x9a, 0x44, 0x1e, 0xd4, ++ 0x19, 0xd3, 0x9b, 0x16, 0x83, 0x76, 0x57, 0xc8, 0x95, 0x0a, 0x1f, 0xf9, ++ 0x0b, 0x7f, 0xe7, 0xe3, 0xcc, 0x02, 0x18, 0xca, 0x63, 0x12, 0x3f, 0x9f, ++ 0xf3, 0xee, 0xde, 0xb4, 0x68, 0x80, 0x7d, 0x92, 0x49, 0x83, 0xf9, 0x71, ++ 0x67, 0x0b, 0x6f, 0xef, 0x13, 0x72, 0xe7, 0x9c, 0x2e, 0xe6, 0x13, 0xe7, ++ 0x61, 0x46, 0x4f, 0x12, 0xd2, 0x63, 0xf0, 0xf8, 0xab, 0x49, 0x0f, 0x00, ++ 0xbc, 0xc5, 0xec, 0xad, 0xe0, 0xfa, 0xde, 0x9b, 0x46, 0x7a, 0x9a, 0x79, ++ 0xd3, 0xf0, 0xbd, 0xd0, 0x15, 0xc9, 0x73, 0x16, 0xdf, 0xdb, 0xae, 0x3a, ++ 0x92, 0xb5, 0x0c, 0xdf, 0xd7, 0x5e, 0xd1, 0x79, 0x76, 0x23, 0x5c, 0x73, ++ 0x24, 0x87, 0xc3, 0xd2, 0xa1, 0xb3, 0x96, 0xc0, 0xf6, 0x89, 0x9e, 0x24, ++ 0x7c, 0x8f, 0xbb, 0xea, 0x48, 0xf6, 0x32, 0x7c, 0x9f, 0x7b, 0x65, 0xe2, ++ 0xa1, 0xdd, 0xd1, 0xd6, 0x00, 0x58, 0xf7, 0xca, 0x59, 0x6c, 0xd7, 0x3f, ++ 0x9a, 0xb3, 0x2c, 0x1f, 0xe0, 0x62, 0x83, 0xfb, 0x54, 0x23, 0xf2, 0xcd, ++ 0xbf, 0x72, 0xfe, 0x32, 0x1d, 0xec, 0xb8, 0x80, 0xf8, 0xa9, 0xe9, 0xe2, ++ 0xfe, 0xfa, 0xfc, 0x83, 0x1d, 0x57, 0x5f, 0x41, 0x7b, 0xdc, 0x11, 0x41, ++ 0xf7, 0xf5, 0x07, 0x72, 0x93, 0x89, 0xde, 0x4d, 0x5d, 0xfb, 0x9f, 0x40, ++ 0x7e, 0xf3, 0x1d, 0xd2, 0x91, 0x1c, 0x6c, 0x69, 0xfb, 0xc3, 0xee, 0x5f, ++ 0x51, 0x3f, 0x03, 0xa5, 0x51, 0x8a, 0x0d, 0x9e, 0x1c, 0x4c, 0xb9, 0x34, ++ 0xe4, 0xfd, 0xc7, 0x7d, 0xb8, 0x6e, 0x71, 0xb8, 0xe7, 0x0b, 0x84, 0xd7, ++ 0xe7, 0xfd, 0x80, 0xf6, 0x51, 0x3c, 0x81, 0xcb, 0xf3, 0xc6, 0xbc, 0xf9, ++ 0xcb, 0x50, 0x3e, 0x7d, 0x1d, 0x07, 0x7f, 0x89, 0xf2, 0x57, 0x1c, 0x05, ++ 0x8e, 0x2c, 0xee, 0xe7, 0x65, 0x13, 0xd1, 0xa7, 0xfa, 0xf0, 0xcc, 0x7c, ++ 0xcc, 0x03, 0xf8, 0x22, 0x7a, 0xcb, 0x70, 0xfe, 0xba, 0xdf, 0x1a, 0xac, ++ 0xc8, 0xa7, 0xd5, 0x87, 0xe3, 0xe7, 0x63, 0x5e, 0xa0, 0x23, 0x97, 0xe7, ++ 0xa7, 0xab, 0x6e, 0xdf, 0x9a, 0x84, 0xf6, 0x55, 0x73, 0xf4, 0xa5, 0x7d, ++ 0xbf, 0xc2, 0x3c, 0xe5, 0x6f, 0x4d, 0x74, 0x3f, 0x53, 0x1f, 0xc3, 0xfd, ++ 0xbb, 0x6a, 0xb9, 0x39, 0x6f, 0x35, 0xd1, 0x6f, 0xcf, 0x3e, 0x7c, 0x37, ++ 0xe2, 0x7b, 0xc9, 0x44, 0xf7, 0xa4, 0x55, 0x30, 0x07, 0xae, 0x57, 0xb5, ++ 0x6f, 0x06, 0xe5, 0xd5, 0x8f, 0xfd, 0xf9, 0xe3, 0x32, 0xa4, 0x43, 0x81, ++ 0xbc, 0x6b, 0x1f, 0xd6, 0x7f, 0xb1, 0xd7, 0xa4, 0x41, 0x3c, 0xf4, 0xe9, ++ 0xed, 0x51, 0xdf, 0x43, 0x39, 0xec, 0xd3, 0x51, 0x9c, 0x59, 0x25, 0xe0, ++ 0xaa, 0xfe, 0x09, 0x7c, 0x3f, 0xe1, 0x03, 0x85, 0x44, 0xbf, 0xd8, 0xad, ++ 0x49, 0x68, 0x5f, 0xab, 0x27, 0xfc, 0xc3, 0x5d, 0xb8, 0xef, 0x62, 0x79, ++ 0xeb, 0x6e, 0x8c, 0x73, 0xd8, 0x7e, 0x03, 0xdd, 0x15, 0x5c, 0x7a, 0x09, ++ 0xf0, 0x06, 0xe3, 0x2e, 0xb5, 0xea, 0xe8, 0x95, 0xaa, 0xef, 0xa5, 0x08, ++ 0x2d, 0xf2, 0xcb, 0x15, 0x69, 0x6b, 0xd9, 0x4e, 0x9c, 0xbf, 0x95, 0xf7, ++ 0xbb, 0x62, 0xda, 0x4a, 0xf8, 0x74, 0xb5, 0xde, 0xc6, 0x70, 0x3d, 0xe8, ++ 0xc7, 0x50, 0x5f, 0x5d, 0x91, 0xb6, 0x05, 0xd5, 0x5f, 0x6a, 0xdd, 0x9f, ++ 0x89, 0x71, 0xe8, 0xe5, 0xdf, 0x16, 0x53, 0x3c, 0xaa, 0xf2, 0xf9, 0x48, ++ 0x9c, 0xb1, 0xd7, 0x10, 0x64, 0x0f, 0x49, 0x13, 0xc4, 0x89, 0xf7, 0x12, ++ 0x64, 0x66, 0x5d, 0xcc, 0x0c, 0x76, 0xb6, 0x4a, 0x80, 0x97, 0x8f, 0x3c, ++ 0xe7, 0xdb, 0xc9, 0xfc, 0xe3, 0x2f, 0xb7, 0xe9, 0xbc, 0x7a, 0xc0, 0x51, ++ 0x95, 0x81, 0x6d, 0xc0, 0xf7, 0xc1, 0xaa, 0x3c, 0x54, 0x27, 0xfe, 0xb0, ++ 0x08, 0xcf, 0x57, 0xad, 0x69, 0x4e, 0x43, 0x7f, 0xa5, 0x2a, 0x7b, 0xa0, ++ 0x0c, 0xe5, 0xe2, 0x92, 0x89, 0x19, 0x13, 0xa0, 0xdf, 0xdb, 0xc2, 0x5e, ++ 0x55, 0xb7, 0xaf, 0x5f, 0x8c, 0x7e, 0xef, 0x78, 0xfb, 0xf9, 0x8b, 0xb0, ++ 0x3f, 0x5f, 0x0a, 0x39, 0xfc, 0xb2, 0xd3, 0xe4, 0x0e, 0xbc, 0x1f, 0x0c, ++ 0x2d, 0xff, 0xd8, 0xc8, 0x94, 0x77, 0x02, 0xde, 0x0d, 0xdf, 0xdf, 0x60, ++ 0x20, 0xdf, 0x5d, 0x9d, 0xef, 0x6d, 0xbd, 0xa7, 0x16, 0xe3, 0xb3, 0xba, ++ 0x18, 0xae, 0x3f, 0xce, 0x42, 0xff, 0x36, 0xd0, 0x63, 0x37, 0x84, 0xde, ++ 0x5b, 0xbe, 0x2e, 0xb8, 0xff, 0xb5, 0xdc, 0x18, 0xfe, 0x2e, 0x55, 0x3f, ++ 0x90, 0x86, 0x76, 0x4f, 0x9d, 0xdf, 0x97, 0xab, 0xea, 0xb5, 0x81, 0x34, ++ 0xd4, 0x57, 0xa1, 0xe3, 0x8a, 0x65, 0xa1, 0x6f, 0x5e, 0x96, 0x48, 0xdf, ++ 0x54, 0xb7, 0x4b, 0xe7, 0x64, 0xc0, 0x53, 0xb5, 0xd1, 0xe5, 0xc6, 0xf7, ++ 0x3b, 0xd5, 0x18, 0x4c, 0xf2, 0x73, 0x6a, 0x6f, 0x4a, 0x7c, 0x5c, 0x42, ++ 0x9e, 0xc0, 0x3b, 0x8c, 0x7d, 0x3c, 0x2f, 0x99, 0xce, 0x5d, 0xdd, 0x66, ++ 0xb2, 0x9b, 0x60, 0x5c, 0x4d, 0xd8, 0x40, 0x24, 0xfa, 0x43, 0xb5, 0x11, ++ 0x03, 0x91, 0xe8, 0xe7, 0xf8, 0x8e, 0xca, 0xac, 0x45, 0x90, 0x2b, 0x36, ++ 0x4e, 0xd0, 0x67, 0xba, 0x20, 0x59, 0x40, 0xde, 0xb1, 0xca, 0xa3, 0xb3, ++ 0x9b, 0x32, 0xc7, 0xa0, 0x33, 0xfa, 0x4d, 0xf8, 0x3e, 0x07, 0xff, 0x1b, ++ 0xd6, 0xdf, 0x95, 0x37, 0x9d, 0xd6, 0xab, 0xec, 0x0c, 0xa7, 0xf5, 0x98, ++ 0x65, 0x20, 0x0f, 0xf9, 0xb4, 0x72, 0x57, 0xf0, 0x38, 0x3c, 0x97, 0x25, ++ 0x40, 0xfe, 0x7c, 0x9d, 0x7b, 0xe2, 0x02, 0xe3, 0xf1, 0x64, 0xb1, 0xef, ++ 0x41, 0xe9, 0x1c, 0xc9, 0xc9, 0xe0, 0x9f, 0x3f, 0x4a, 0x42, 0xba, 0x57, ++ 0x6b, 0xd8, 0x06, 0xbc, 0x47, 0xbc, 0x2c, 0xf1, 0xef, 0x1e, 0x00, 0xa6, ++ 0xef, 0x1e, 0x2e, 0x8b, 0xfb, 0xc8, 0xea, 0x3f, 0x99, 0xc3, 0x90, 0x5f, ++ 0x2e, 0x7f, 0x59, 0x4b, 0x72, 0xeb, 0x93, 0x06, 0x48, 0xaf, 0xbd, 0x7b, ++ 0xa4, 0x84, 0xf4, 0x81, 0x4f, 0x37, 0x40, 0x7a, 0xed, 0x44, 0xde, 0xbd, ++ 0xa4, 0xc7, 0x7c, 0xd1, 0x03, 0x65, 0xa8, 0xa7, 0xde, 0x3d, 0x52, 0xc1, ++ 0xdb, 0x27, 0x0d, 0x94, 0x29, 0xd0, 0xde, 0x86, 0x30, 0xb6, 0x4f, 0x65, ++ 0x64, 0xef, 0xff, 0x2b, 0xcf, 0x49, 0xfa, 0xa3, 0x58, 0xe6, 0xef, 0x1b, ++ 0xd8, 0x1e, 0x9d, 0x85, 0xe7, 0x81, 0x36, 0xf5, 0x37, 0x52, 0x5c, 0xa1, ++ 0x53, 0x02, 0xe3, 0xee, 0x3f, 0xe6, 0xa9, 0xf7, 0x36, 0x7a, 0xff, 0xb9, ++ 0x65, 0xbf, 0xdc, 0xf8, 0x98, 0x72, 0xb0, 0x1d, 0xe5, 0xb0, 0xd2, 0x4c, ++ 0xf9, 0x1c, 0xf0, 0x9f, 0xda, 0x5e, 0x41, 0x3f, 0x6f, 0x69, 0x9c, 0x15, ++ 0xf3, 0xe2, 0x95, 0x38, 0x8e, 0xf3, 0x81, 0x3e, 0xf0, 0xfe, 0x2f, 0x36, ++ 0xe6, 0x7a, 0x05, 0xd2, 0x67, 0x59, 0x94, 0xa3, 0x20, 0x2f, 0x17, 0xef, ++ 0x19, 0x07, 0x28, 0x7e, 0x00, 0xae, 0x26, 0x3f, 0xbd, 0xee, 0x77, 0x06, ++ 0x8a, 0x23, 0x07, 0x75, 0x43, 0xfb, 0x50, 0x4f, 0x65, 0x46, 0x39, 0x16, ++ 0xe6, 0x01, 0x7f, 0xd5, 0xea, 0x7b, 0x37, 0xa2, 0x4b, 0x7f, 0x55, 0x37, ++ 0xd0, 0x83, 0xf7, 0x7e, 0x8b, 0x64, 0xae, 0x8f, 0xd8, 0x7e, 0xce, 0x57, ++ 0xbe, 0x8c, 0x3d, 0xfc, 0x3b, 0x09, 0x71, 0x7f, 0xb8, 0x54, 0xe0, 0x1f, ++ 0xec, 0x16, 0x6b, 0x46, 0xbe, 0x90, 0x38, 0x7d, 0xdf, 0xe8, 0x3c, 0xfc, ++ 0x0e, 0xea, 0x15, 0x5f, 0x6f, 0x0a, 0xe9, 0xe3, 0x50, 0xb9, 0xb9, 0xd4, ++ 0xf9, 0x54, 0x24, 0xea, 0x87, 0x33, 0x60, 0xc7, 0x5d, 0x01, 0x71, 0xfe, ++ 0x99, 0x15, 0xfb, 0xe9, 0x9e, 0x7e, 0x09, 0xbe, 0xcb, 0x80, 0xf2, 0x81, ++ 0x0d, 0xc1, 0xfc, 0x30, 0x7c, 0xe3, 0xa7, 0x14, 0xef, 0xb1, 0x27, 0x02, ++ 0xea, 0x91, 0x0f, 0xb7, 0x07, 0xc3, 0xa1, 0x7c, 0x84, 0xfc, 0xe8, 0x0d, ++ 0xd2, 0x3b, 0x2e, 0x92, 0xa7, 0x67, 0x73, 0xb9, 0x1f, 0x56, 0x33, 0xbf, ++ 0xb7, 0x0e, 0xf1, 0x30, 0x02, 0xdf, 0x0d, 0xb0, 0x1c, 0x00, 0x9f, 0x08, ++ 0x81, 0x43, 0xfa, 0xb3, 0x12, 0xee, 0x27, 0x3c, 0x8b, 0xff, 0x8d, 0x78, ++ 0x9c, 0xea, 0xed, 0xa7, 0xf8, 0xfc, 0x20, 0x7f, 0x17, 0xdb, 0x04, 0xf6, ++ 0x8b, 0xe0, 0x8e, 0x70, 0xba, 0x37, 0xd6, 0x1c, 0x04, 0xfb, 0x14, 0xcb, ++ 0xed, 0x13, 0xda, 0x85, 0x9a, 0xc8, 0x5e, 0xca, 0x4b, 0xf9, 0x3a, 0x0c, ++ 0x74, 0x3f, 0xf2, 0x68, 0xd7, 0xa7, 0xf4, 0x9e, 0x11, 0xf8, 0x90, 0xf2, ++ 0x2f, 0x35, 0x5d, 0xaf, 0xc6, 0x61, 0xdc, 0x7e, 0x00, 0xe3, 0x84, 0x5c, ++ 0xb2, 0x83, 0x71, 0xf4, 0x4e, 0xa5, 0xa3, 0x2b, 0x0e, 0xe3, 0x0d, 0xb5, ++ 0xbe, 0x56, 0xe3, 0x49, 0x13, 0xef, 0xf1, 0xc9, 0x4f, 0x57, 0xeb, 0x9d, ++ 0xb2, 0x37, 0x0d, 0xf7, 0x5f, 0x23, 0xf5, 0x66, 0x62, 0xfb, 0x01, 0xb1, ++ 0xef, 0x5a, 0x0d, 0xc0, 0x32, 0xc2, 0x62, 0xdf, 0x12, 0x97, 0x77, 0xd6, ++ 0x25, 0x93, 0x3e, 0x0f, 0xa5, 0xdb, 0x0e, 0xc1, 0xaf, 0xa0, 0x17, 0x32, ++ 0xe9, 0x9d, 0xc5, 0x51, 0x9e, 0x17, 0x50, 0xf5, 0x40, 0x95, 0xd0, 0x27, ++ 0x27, 0xb0, 0x3e, 0x83, 0xcb, 0xbd, 0x45, 0xbd, 0x57, 0x92, 0xf0, 0xbd, ++ 0x5c, 0xf8, 0x98, 0xfa, 0x21, 0x3e, 0x4f, 0xe8, 0x37, 0xd6, 0x40, 0x79, ++ 0x9b, 0xed, 0x79, 0x7c, 0xdf, 0xea, 0x78, 0x9a, 0x97, 0xe7, 0x95, 0xa8, ++ 0xbd, 0xee, 0xd8, 0x95, 0xcc, 0xe9, 0x19, 0x38, 0x4e, 0x19, 0x79, 0x07, ++ 0x39, 0xa2, 0x87, 0x52, 0xfc, 0x7a, 0x05, 0xe5, 0x3f, 0x81, 0xe4, 0xff, ++ 0x51, 0x5d, 0x1c, 0x9c, 0xab, 0x7a, 0xb7, 0x64, 0x6d, 0x42, 0x3d, 0x55, ++ 0xba, 0xbe, 0x10, 0xba, 0xb3, 0x55, 0xda, 0xd5, 0x85, 0x94, 0x2f, 0x13, ++ 0xef, 0x3f, 0x43, 0xf7, 0x15, 0xca, 0x47, 0x56, 0xd8, 0x0b, 0xe9, 0x49, ++ 0x4d, 0x74, 0x41, 0x6c, 0xc0, 0x7c, 0x97, 0x21, 0x5c, 0x4f, 0xc8, 0x22, ++ 0x3d, 0x43, 0xef, 0xe8, 0x1f, 0x8c, 0x7d, 0xb2, 0x10, 0xf3, 0x13, 0x3f, ++ 0x2b, 0xdd, 0x46, 0xfc, 0x3c, 0x62, 0x6f, 0x02, 0xe5, 0x1c, 0xcf, 0xb3, ++ 0x8b, 0xeb, 0x71, 0x14, 0x9b, 0x9b, 0x9a, 0xd1, 0x7c, 0xbc, 0xaa, 0xa1, ++ 0x79, 0x63, 0xfc, 0x18, 0xfb, 0x08, 0xdd, 0x67, 0x95, 0xa3, 0xb9, 0x30, ++ 0x4e, 0x19, 0x5d, 0xaf, 0xee, 0xf7, 0xb2, 0x49, 0xdd, 0xdf, 0x7c, 0xdd, ++ 0xc4, 0x40, 0x3c, 0x2c, 0x59, 0x5f, 0x38, 0x11, 0xca, 0x55, 0xc6, 0xbf, ++ 0x16, 0x0f, 0xfc, 0xbc, 0x97, 0xbb, 0x0c, 0x5e, 0xb4, 0xab, 0x55, 0xa5, ++ 0xab, 0x37, 0x46, 0x8d, 0xc1, 0x37, 0xa3, 0xec, 0xc1, 0xae, 0x00, 0xfb, ++ 0x35, 0x1d, 0xe9, 0xeb, 0xa6, 0x7b, 0x8d, 0xf1, 0xf6, 0x1f, 0x5a, 0xd6, ++ 0x4a, 0xde, 0x7e, 0xcc, 0x13, 0x31, 0x90, 0xab, 0x56, 0x92, 0x2f, 0x90, ++ 0x97, 0x00, 0xbb, 0x30, 0x27, 0x2f, 0x24, 0xdf, 0x50, 0xb9, 0x62, 0x1a, ++ 0xc6, 0x9d, 0xcc, 0xb1, 0x62, 0x1a, 0xda, 0x19, 0x90, 0xab, 0x32, 0xeb, ++ 0x18, 0x71, 0x25, 0x7e, 0x59, 0xa2, 0xa1, 0xb7, 0x1b, 0x2e, 0x2a, 0x43, ++ 0xf7, 0x73, 0x3e, 0x8f, 0xe7, 0x49, 0xe7, 0xe4, 0x71, 0x79, 0xe9, 0xb6, ++ 0xd9, 0x7d, 0xa8, 0x37, 0xc7, 0xfb, 0xde, 0xe2, 0xbf, 0xc5, 0x3e, 0xc6, ++ 0xfb, 0xde, 0x22, 0x51, 0x33, 0xfc, 0x1e, 0xca, 0x5b, 0x62, 0x5c, 0x84, ++ 0x82, 0xf7, 0x40, 0x05, 0x0b, 0xc2, 0x79, 0xbf, 0xe3, 0x26, 0x0b, 0xe6, ++ 0x6d, 0x06, 0x8f, 0x5f, 0xa7, 0xbc, 0xee, 0xe0, 0x63, 0xe6, 0x25, 0xfc, ++ 0xbe, 0xc0, 0xcc, 0x26, 0x41, 0x7b, 0x4f, 0xc2, 0xac, 0x96, 0x40, 0x3b, ++ 0xb2, 0x75, 0x36, 0x5f, 0x27, 0x3c, 0x87, 0xfb, 0x2d, 0xf5, 0xe9, 0xba, ++ 0xaf, 0xcf, 0x0b, 0x65, 0x44, 0x8c, 0xe4, 0x85, 0xc8, 0x6f, 0xc8, 0x08, ++ 0xa7, 0x7b, 0x12, 0x5f, 0xe7, 0xe7, 0x64, 0xb7, 0x06, 0xbb, 0x73, 0x2d, ++ 0x78, 0x9f, 0xe1, 0xeb, 0x85, 0xe8, 0x10, 0xe4, 0xa9, 0xfe, 0xcf, 0xff, ++ 0x1d, 0x87, 0xf6, 0xd5, 0xd7, 0xfd, 0x09, 0xbd, 0x07, 0xf3, 0xdd, 0xf8, ++ 0x94, 0xde, 0x89, 0x6d, 0x16, 0xef, 0xf4, 0x4e, 0x74, 0x8a, 0x77, 0x56, ++ 0xbd, 0x4a, 0x04, 0x7d, 0x17, 0x57, 0xf4, 0x71, 0x21, 0xf6, 0xdb, 0x22, ++ 0x4a, 0x7f, 0x7e, 0x80, 0xe7, 0x89, 0xd5, 0x52, 0x8d, 0xff, 0x03, 0xe2, ++ 0xdf, 0xc9, 0xb3, 0xc7, 0x8e, 0x7f, 0x63, 0x1c, 0xe6, 0xc0, 0xbc, 0x80, ++ 0x12, 0x3f, 0x56, 0x1e, 0x25, 0x30, 0x2f, 0x90, 0xaa, 0xe5, 0x79, 0x01, ++ 0x2c, 0x31, 0x2f, 0x90, 0x9a, 0xca, 0xf3, 0x02, 0x08, 0x63, 0x5e, 0x00, ++ 0x4b, 0xcc, 0x0b, 0x60, 0x3d, 0xe6, 0x05, 0x10, 0xc6, 0xbc, 0x00, 0xc2, ++ 0x98, 0x17, 0x40, 0x18, 0xf3, 0x02, 0x58, 0x62, 0x5e, 0x00, 0xeb, 0xbf, ++ 0x10, 0xdf, 0x3f, 0x0c, 0x82, 0x62, 0xe2, 0xf9, 0x4a, 0x33, 0xe9, 0xf5, ++ 0xb5, 0xf8, 0xbe, 0x1d, 0xf0, 0xb7, 0xf6, 0x38, 0xbf, 0x77, 0x5a, 0xdb, ++ 0x2a, 0xd3, 0xfd, 0x2d, 0x7e, 0xff, 0x80, 0xf6, 0x6d, 0xd4, 0xbb, 0x99, ++ 0x76, 0xf1, 0x6e, 0xc6, 0xb3, 0x8d, 0xee, 0xf1, 0xea, 0x3b, 0x64, 0x2b, ++ 0x92, 0xa8, 0x5e, 0x37, 0x74, 0x12, 0xf3, 0x38, 0xf5, 0x87, 0x24, 0xeb, ++ 0x7a, 0xd4, 0x2b, 0x8d, 0x4b, 0x68, 0xfd, 0xcd, 0xdd, 0xb9, 0x1f, 0x94, ++ 0x62, 0x7d, 0xab, 0xce, 0xaa, 0x51, 0x88, 0x8f, 0x38, 0x1d, 0x9b, 0x25, ++ 0x7a, 0xa7, 0x5f, 0xdd, 0xdd, 0x4a, 0x79, 0xa7, 0xfc, 0xf8, 0xe3, 0x7a, ++ 0xaa, 0x6f, 0x93, 0x18, 0xe6, 0x49, 0xef, 0x35, 0xf0, 0x38, 0xd7, 0x29, ++ 0x43, 0x6d, 0x16, 0xdd, 0x83, 0x92, 0x1f, 0xec, 0x34, 0xf4, 0x52, 0xfc, ++ 0x51, 0x73, 0x40, 0x52, 0xca, 0x03, 0xdf, 0x69, 0xcc, 0xb9, 0x46, 0x7a, ++ 0x40, 0xbd, 0x4f, 0xae, 0xe0, 0x4d, 0xcc, 0xe9, 0x31, 0x29, 0xe5, 0x63, ++ 0xbc, 0x03, 0x19, 0x79, 0x77, 0x2e, 0xde, 0x4d, 0x57, 0xe0, 0x3d, 0x33, ++ 0xbe, 0x17, 0x97, 0x6f, 0xd0, 0xbb, 0x7e, 0x27, 0x04, 0xa4, 0x13, 0x90, ++ 0x0f, 0x77, 0xf0, 0xf7, 0xcf, 0x16, 0xf8, 0x47, 0xf2, 0x1e, 0xf2, 0xae, ++ 0xa9, 0xba, 0xfb, 0xd0, 0x46, 0x7c, 0x0f, 0x15, 0x7a, 0xdf, 0x3c, 0xf2, ++ 0x3d, 0x5d, 0xc8, 0xbd, 0x73, 0xd9, 0x6c, 0x71, 0xaf, 0x6c, 0xe3, 0xdf, ++ 0x57, 0x14, 0x3d, 0x5d, 0x7e, 0xb0, 0x03, 0xd6, 0x1b, 0xde, 0x6a, 0x20, ++ 0x7f, 0xa3, 0x21, 0xd7, 0xf1, 0x20, 0xf2, 0xd1, 0x49, 0x9d, 0x9d, 0xf2, ++ 0x23, 0x27, 0x8f, 0x9b, 0x28, 0x2e, 0x3a, 0xbf, 0xed, 0xb6, 0xa0, 0xfc, ++ 0xc8, 0x50, 0x96, 0xa3, 0x7a, 0x36, 0xe5, 0x9b, 0xa6, 0x50, 0xbe, 0x62, ++ 0x8d, 0x4e, 0x22, 0x7b, 0xbc, 0xa0, 0x28, 0x25, 0x1e, 0xf1, 0xb8, 0xe0, ++ 0x94, 0x8e, 0xec, 0x4e, 0x4f, 0x56, 0x49, 0x2d, 0xf6, 0x5b, 0x33, 0x4b, ++ 0xa1, 0x7c, 0x54, 0x81, 0x81, 0xfd, 0x82, 0xe6, 0x11, 0xef, 0xa5, 0x54, ++ 0x7a, 0x14, 0x34, 0x49, 0x6e, 0x0d, 0xc0, 0x2b, 0x98, 0x95, 0xde, 0xd9, ++ 0x2f, 0x07, 0x34, 0x61, 0xbe, 0x72, 0x50, 0x67, 0xde, 0x84, 0xef, 0x9a, ++ 0x96, 0x33, 0xfe, 0xce, 0x41, 0xe5, 0x9b, 0x35, 0xdb, 0x24, 0xe2, 0x1b, ++ 0x4c, 0x10, 0x20, 0x3e, 0xcb, 0x04, 0x3e, 0x97, 0x77, 0xff, 0xfe, 0x3a, ++ 0xbe, 0x63, 0x58, 0x69, 0xe0, 0x7e, 0x6b, 0xa2, 0x86, 0xdf, 0x5f, 0x27, ++ 0x6e, 0xe1, 0xef, 0x19, 0x1e, 0x64, 0x0e, 0x3d, 0xda, 0xd9, 0x55, 0xc8, ++ 0x5d, 0x32, 0xd9, 0xc7, 0xdf, 0x0d, 0x40, 0xbd, 0x23, 0x7c, 0x4a, 0x12, ++ 0xf7, 0xcb, 0x95, 0x78, 0x9c, 0x7f, 0xc5, 0x69, 0x1d, 0xbd, 0xb7, 0x2d, ++ 0x88, 0xff, 0x71, 0x9a, 0x83, 0xec, 0x74, 0x3e, 0xbd, 0x63, 0x90, 0xbc, ++ 0xcb, 0xe4, 0x9b, 0x77, 0x8c, 0x2f, 0x3f, 0xa1, 0xef, 0x18, 0x4e, 0xea, ++ 0xb8, 0x5e, 0x01, 0x3c, 0x52, 0x3c, 0xd4, 0x83, 0x7c, 0x49, 0x79, 0x19, ++ 0x07, 0x95, 0xa7, 0x1b, 0x2b, 0xa9, 0xac, 0x13, 0xdf, 0x43, 0x8c, 0x7e, ++ 0xff, 0x3f, 0x74, 0x16, 0xe3, 0xc4, 0xc4, 0xf8, 0x08, 0x2b, 0xea, 0xb9, ++ 0x71, 0xbf, 0x77, 0x0b, 0xfb, 0xfa, 0xef, 0xbd, 0x76, 0x8a, 0xf7, 0x6b, ++ 0x89, 0x9a, 0xbe, 0x6c, 0x05, 0xf1, 0xf1, 0x27, 0xb3, 0x15, 0xf1, 0xa1, ++ 0xbe, 0x13, 0xec, 0xb6, 0x95, 0x34, 0x23, 0x9d, 0xec, 0x91, 0xcc, 0x65, ++ 0xa1, 0xef, 0xc1, 0x40, 0x03, 0x02, 0x5e, 0x0b, 0xf1, 0x20, 0x12, 0xe6, ++ 0xb5, 0x3d, 0x76, 0xfc, 0xee, 0x68, 0xe8, 0xb8, 0x64, 0xa1, 0x77, 0xc9, ++ 0xa3, 0xf4, 0xe3, 0xb6, 0xc7, 0xf0, 0x9d, 0x48, 0x7d, 0xaa, 0x64, 0x91, ++ 0x14, 0xcc, 0x7f, 0x6f, 0x2d, 0x88, 0x83, 0x7d, 0x17, 0x4e, 0x4f, 0xa6, ++ 0x7d, 0xd7, 0x77, 0xf2, 0xfc, 0x28, 0x61, 0x28, 0x0e, 0xf3, 0xe7, 0x9c, ++ 0x5e, 0x91, 0x59, 0x8e, 0xc3, 0xb3, 0x73, 0xfd, 0xf5, 0xc5, 0x42, 0x6e, ++ 0x7c, 0xd0, 0x9f, 0xf3, 0xc9, 0x77, 0xdd, 0xc8, 0x6f, 0xdf, 0x20, 0x6f, ++ 0xba, 0x17, 0xfb, 0xbb, 0x98, 0x89, 0xbe, 0xa7, 0xa6, 0x3f, 0xd8, 0x4f, ++ 0xf1, 0x1d, 0x53, 0x29, 0x7f, 0xaa, 0xf2, 0xcd, 0x70, 0x5b, 0x7c, 0x0b, ++ 0xf2, 0xcd, 0xef, 0x67, 0xf3, 0x38, 0xb2, 0xb4, 0xf4, 0x7d, 0x1d, 0xda, ++ 0xff, 0x9e, 0x6c, 0xc7, 0x09, 0xdc, 0x47, 0x59, 0xf9, 0xb5, 0xc7, 0xe2, ++ 0xe8, 0x7c, 0x63, 0xe7, 0xaf, 0xd4, 0x77, 0xea, 0xa1, 0xf9, 0xab, 0x40, ++ 0xfd, 0xf9, 0xff, 0xf1, 0x3e, 0xfd, 0x9d, 0xc6, 0x06, 0x2a, 0xdf, 0x6b, ++ 0x5c, 0x47, 0x65, 0x6f, 0xa3, 0x8b, 0xda, 0x03, 0xf4, 0xff, 0x7f, 0x8e, ++ 0xa3, 0xff, 0x43, 0xf3, 0x9f, 0xe7, 0xb0, 0x5f, 0x68, 0xfe, 0x93, 0x19, ++ 0x95, 0x28, 0xb2, 0x9f, 0x20, 0xdf, 0x3c, 0xdf, 0x1c, 0x92, 0xef, 0x2c, ++ 0x9a, 0xf0, 0xc0, 0x26, 0xc0, 0xdf, 0x82, 0xed, 0x7a, 0x2b, 0x56, 0xa9, ++ 0xf9, 0x4f, 0x7c, 0x3f, 0xbc, 0xd6, 0x4c, 0xfa, 0xe0, 0xf2, 0xec, 0x31, ++ 0xf3, 0x9e, 0x2a, 0xde, 0xcc, 0x94, 0x27, 0x1d, 0x66, 0xa6, 0x2c, 0xc4, ++ 0xff, 0xfc, 0xf4, 0x14, 0xad, 0x06, 0xda, 0xbf, 0x10, 0x74, 0x50, 0xf3, ++ 0x8e, 0x28, 0x1f, 0x78, 0x3e, 0x94, 0x0f, 0x2c, 0x51, 0x3e, 0xb4, 0x5a, ++ 0xbf, 0x7c, 0xbc, 0xa0, 0x07, 0x11, 0xce, 0xe1, 0x76, 0xde, 0x45, 0x76, ++ 0xde, 0x44, 0x74, 0xdd, 0xb8, 0x1e, 0xf4, 0x07, 0xc0, 0x2b, 0x99, 0x25, ++ 0x48, 0x7f, 0x5c, 0x0d, 0xd1, 0x1f, 0x10, 0x70, 0xdc, 0x47, 0xdf, 0x55, ++ 0x75, 0x1b, 0x18, 0xe6, 0x09, 0xd5, 0x77, 0x94, 0xf3, 0xa1, 0xf8, 0x2a, ++ 0x6b, 0x0c, 0x7d, 0xe2, 0xe1, 0xfa, 0x64, 0x6a, 0x98, 0xe7, 0x25, 0xfa, ++ 0xde, 0xbf, 0x2e, 0x8c, 0xde, 0xe7, 0x9e, 0x14, 0xef, 0xe1, 0x4e, 0x6e, ++ 0xe6, 0xef, 0xe1, 0xca, 0x59, 0x09, 0xad, 0x3b, 0x86, 0x5e, 0x89, 0x44, ++ 0x7a, 0xac, 0x9c, 0x30, 0x74, 0xf6, 0x79, 0xe8, 0xbf, 0xf2, 0xd7, 0x66, ++ 0xf2, 0x57, 0x36, 0x4e, 0xaa, 0xc8, 0xfb, 0x5b, 0xf4, 0xca, 0xe0, 0x6c, ++ 0x8e, 0x8f, 0x67, 0xf1, 0x77, 0x05, 0xb4, 0x5f, 0xf7, 0xbb, 0x02, 0x4f, ++ 0x48, 0x78, 0x1f, 0xba, 0xe6, 0x7e, 0x66, 0x43, 0x3a, 0xab, 0xbf, 0x2b, ++ 0x10, 0x2f, 0xee, 0xb3, 0xbf, 0xc5, 0xef, 0x0a, 0xdc, 0x36, 0x67, 0xe2, ++ 0x37, 0xff, 0x5d, 0x81, 0xcc, 0x39, 0xf1, 0xa5, 0x81, 0xbf, 0x2b, 0x90, ++ 0xd9, 0x39, 0x89, 0xc3, 0xea, 0xef, 0x0a, 0xb0, 0xf8, 0xd2, 0x71, 0x7e, ++ 0x57, 0x20, 0x7b, 0x4e, 0xee, 0xe8, 0xdf, 0x15, 0x98, 0x3d, 0x87, 0xc7, ++ 0x39, 0xe3, 0xfd, 0xae, 0x00, 0xf8, 0x93, 0x73, 0x70, 0x7f, 0x3a, 0x9b, ++ 0xfd, 0x4e, 0x2c, 0x13, 0xc5, 0x3e, 0x43, 0xbf, 0xa7, 0x3d, 0x2d, 0xee, ++ 0xef, 0x7a, 0x34, 0x8e, 0x52, 0x2c, 0x0b, 0x23, 0x5d, 0x5a, 0xaa, 0xd7, ++ 0xb8, 0x73, 0xb0, 0x7c, 0x5b, 0xe3, 0xf9, 0x39, 0xd6, 0x03, 0x3f, 0xe7, ++ 0xe3, 0x3e, 0x0a, 0x9f, 0xb2, 0xdd, 0x9e, 0x0e, 0x70, 0xa2, 0xc1, 0x43, ++ 0x7a, 0xb2, 0x27, 0xcb, 0x5e, 0x80, 0xf5, 0x83, 0x36, 0x7b, 0x21, 0xae, ++ 0x13, 0x9a, 0x37, 0x47, 0xda, 0x62, 0x7c, 0x0f, 0xfb, 0x59, 0x84, 0xed, ++ 0xa1, 0xef, 0xae, 0x54, 0x7a, 0xae, 0x98, 0xc3, 0xf9, 0xfe, 0x01, 0x51, ++ 0xce, 0x6d, 0x1a, 0xfb, 0x7b, 0xf2, 0x07, 0xe6, 0xf0, 0xef, 0xd5, 0x6e, ++ 0xb5, 0x6f, 0xd8, 0xef, 0x7d, 0xb8, 0x2f, 0x75, 0xff, 0x6c, 0xeb, 0x8a, ++ 0x1c, 0x92, 0xa7, 0x2c, 0xfb, 0x32, 0xb1, 0xdf, 0x52, 0x2c, 0x99, 0x39, ++ 0x26, 0xe8, 0xfb, 0xd4, 0xd1, 0x7c, 0xe6, 0x12, 0xfb, 0xe2, 0xfc, 0x05, ++ 0xfa, 0xac, 0xf8, 0x3c, 0xf7, 0x07, 0xa9, 0x4c, 0xd3, 0xba, 0xa3, 0xd1, ++ 0x7f, 0x9c, 0xfc, 0x88, 0x3b, 0x1a, 0xf7, 0x3b, 0xb9, 0x79, 0xc8, 0x84, ++ 0xdf, 0x41, 0xbc, 0xe8, 0x1a, 0x32, 0xa1, 0x7d, 0x7f, 0xf1, 0xe1, 0x21, ++ 0x13, 0xd6, 0xbf, 0x68, 0xe7, 0xef, 0x95, 0x43, 0xe7, 0x7f, 0x71, 0x0e, ++ 0xff, 0x4e, 0x20, 0x6d, 0xee, 0x10, 0x8d, 0x9f, 0x06, 0xff, 0xdd, 0x4b, ++ 0xfe, 0xf9, 0x50, 0x34, 0xfa, 0x4f, 0x69, 0x95, 0xe7, 0x37, 0xd2, 0x7d, ++ 0xcb, 0x81, 0x99, 0x64, 0x5f, 0xa6, 0x09, 0xfb, 0x32, 0xed, 0x91, 0xe9, ++ 0x9d, 0x03, 0xc0, 0x6f, 0xd3, 0x9e, 0x8b, 0xa2, 0xfb, 0x6c, 0x96, 0x1f, ++ 0x4b, 0xed, 0xd5, 0x46, 0x2e, 0xa7, 0xd5, 0x8f, 0x94, 0x1f, 0xe9, 0x50, ++ 0xe8, 0xbb, 0xad, 0xe2, 0xf3, 0x01, 0xfe, 0xce, 0x4c, 0x37, 0xec, 0x3b, ++ 0xc8, 0xff, 0xd2, 0x0e, 0xf3, 0x77, 0x97, 0x00, 0x23, 0x9e, 0x0e, 0xe8, ++ 0x08, 0x46, 0x9e, 0x45, 0xff, 0xca, 0xc9, 0xf8, 0xbb, 0xcb, 0xc9, 0x42, ++ 0x6f, 0xa0, 0x9f, 0x56, 0x0a, 0x7a, 0xc1, 0x59, 0xf9, 0xe6, 0x75, 0xba, ++ 0xf7, 0xc7, 0xf1, 0x38, 0x1f, 0xde, 0xd1, 0x22, 0xff, 0x75, 0xea, 0x86, ++ 0xc5, 0xf7, 0x69, 0x16, 0x8c, 0x43, 0x57, 0x2d, 0x59, 0xdf, 0x43, 0x71, ++ 0xe1, 0x8e, 0x91, 0x7a, 0x11, 0x67, 0x1e, 0xda, 0x88, 0x71, 0x33, 0xf8, ++ 0x6f, 0x41, 0xf5, 0xd5, 0xe5, 0xaf, 0xf7, 0xa0, 0xbd, 0xa9, 0x39, 0x10, ++ 0x5c, 0xef, 0x6c, 0xb8, 0x46, 0xf1, 0x2b, 0xf8, 0x6f, 0x41, 0xf5, 0xf7, ++ 0xff, 0xfc, 0x9c, 0x9e, 0xff, 0x7e, 0x41, 0x70, 0x3d, 0xd0, 0x77, 0x07, ++ 0xf2, 0x9b, 0x4a, 0xdf, 0x93, 0x3a, 0xcf, 0x4c, 0x8c, 0xf3, 0x4e, 0x3a, ++ 0xc3, 0xac, 0xfc, 0xfd, 0xbe, 0x87, 0x7e, 0xaf, 0xa4, 0x45, 0x7c, 0xff, ++ 0xbc, 0xe7, 0x9f, 0xe7, 0xe7, 0xf0, 0xf7, 0xa2, 0x9c, 0xde, 0x30, 0xde, ++ 0xfd, 0xcd, 0xf8, 0xa3, 0x89, 0xfa, 0xbb, 0xe6, 0xb3, 0x74, 0x94, 0x87, ++ 0x5b, 0x95, 0xaa, 0x5e, 0x1a, 0xf9, 0xfd, 0x13, 0x3d, 0x73, 0x51, 0x7e, ++ 0x6f, 0x51, 0x04, 0xe9, 0x9d, 0x7a, 0x11, 0x57, 0xd5, 0x95, 0x5b, 0xc8, ++ 0xce, 0x27, 0xd6, 0x19, 0x49, 0x7f, 0x15, 0xc8, 0x61, 0x56, 0x84, 0x47, ++ 0x7e, 0xff, 0xa4, 0x48, 0x16, 0x7a, 0xca, 0x43, 0xf2, 0xdf, 0x77, 0x57, ++ 0x34, 0xe5, 0xf1, 0xe8, 0x00, 0x08, 0xc7, 0xcc, 0xa2, 0x7b, 0x9f, 0xb8, ++ 0x26, 0x0e, 0x0f, 0x4d, 0x34, 0x90, 0x7e, 0x28, 0xd0, 0x94, 0xd4, 0xee, ++ 0x87, 0xf2, 0x4d, 0x4d, 0xf0, 0x77, 0xec, 0x2f, 0xa0, 0x7e, 0x90, 0x51, ++ 0x7e, 0x79, 0x3e, 0xb5, 0x5e, 0xef, 0xe1, 0xdf, 0x89, 0x6b, 0x95, 0x5c, ++ 0x8c, 0x73, 0x9b, 0x24, 0xfb, 0x73, 0xf8, 0xdd, 0x63, 0x93, 0x24, 0xf2, ++ 0x88, 0x55, 0x66, 0xba, 0x2f, 0x18, 0xc4, 0xfc, 0x22, 0x9c, 0x67, 0x7b, ++ 0xb4, 0xfb, 0xb9, 0x0a, 0x58, 0x67, 0xfb, 0x3d, 0x19, 0xe4, 0x1f, 0x0f, ++ 0x32, 0xae, 0x4f, 0x5d, 0x4b, 0xf8, 0xbd, 0xd5, 0xf6, 0xe8, 0x92, 0xd2, ++ 0xd5, 0xd8, 0xbe, 0xf4, 0x76, 0x6a, 0x3f, 0xf2, 0x97, 0x94, 0x27, 0x73, ++ 0xd0, 0x7f, 0xaa, 0x0a, 0xb3, 0xa2, 0xff, 0xb4, 0xdd, 0xc6, 0xfd, 0xeb, ++ 0xed, 0x8b, 0xd3, 0xa9, 0xfd, 0x98, 0xa4, 0xac, 0xc7, 0x73, 0xbb, 0x1e, ++ 0x61, 0xb4, 0xce, 0xf6, 0xc5, 0xfc, 0xdc, 0xdb, 0x9f, 0x9c, 0x2a, 0xbe, ++ 0xbf, 0x70, 0x9b, 0x50, 0x9e, 0xb7, 0x37, 0xdb, 0x27, 0xe1, 0x7d, 0xd4, ++ 0x7c, 0x8b, 0xe3, 0x0c, 0xd2, 0x6b, 0xb2, 0xb8, 0x8f, 0xdb, 0x9e, 0x0c, ++ 0xf5, 0x50, 0x3e, 0x23, 0x95, 0x2c, 0x7d, 0x10, 0xe7, 0x99, 0xc5, 0xf7, ++ 0x5b, 0x67, 0x53, 0x88, 0x5e, 0x27, 0x97, 0xde, 0xfe, 0xe4, 0x3e, 0x85, ++ 0xcc, 0x88, 0x17, 0xef, 0x85, 0xea, 0x17, 0x45, 0x50, 0x1c, 0xfc, 0xbf, ++ 0x93, 0x01, 0x13, 0x53, 0xf0, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++void bnx2x_init_e1_firmware(struct bnx2x *bp) ++{ ++ INIT_OPS(bp) = (struct raw_op *)init_ops_e1; ++ INIT_DATA(bp) = (u32 *)init_data_e1; ++ INIT_OPS_OFFSETS(bp) = (u16 *)init_ops_offsets_e1; ++ INIT_TSEM_INT_TABLE_DATA(bp) = tsem_int_table_data_e1; ++ INIT_TSEM_PRAM_DATA(bp) = tsem_pram_data_e1; ++ INIT_USEM_INT_TABLE_DATA(bp) = usem_int_table_data_e1; ++ INIT_USEM_PRAM_DATA(bp) = usem_pram_data_e1; ++ INIT_XSEM_INT_TABLE_DATA(bp) = xsem_int_table_data_e1; ++ INIT_XSEM_PRAM_DATA(bp) = xsem_pram_data_e1; ++ INIT_CSEM_INT_TABLE_DATA(bp) = csem_int_table_data_e1; ++ INIT_CSEM_PRAM_DATA(bp) = csem_pram_data_e1; ++} ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init_values_e1h.c linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init_values_e1h.c +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_init_values_e1h.c 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_init_values_e1h.c 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,17784 @@ ++/* init_ops array contains the list of operations needed to initialize the chip. ++ * ++ * For each block in the chip there are three init stages: ++ * common - HW used by both ports, ++ * port1 and port2 - initialization for a specific Ethernet port. ++ * When a port is opened or closed, the management CPU tells the driver ++ * whether to init/disable common HW in addition to the port HW. ++ * This way the first port going up will first initializes the common HW, ++ * and the last port going down also resets the common HW ++ * ++ * For each init stage/block there is a list of actions needed in a format: ++ * {operation, register, data} ++ * where: ++ * OP_WR - write a value to the chip. ++ * OP_RD - read a register (usually a clear on read register). ++ * OP_SW - string write, write a section of consecutive addresses to the chip. ++ * OP_SI - copy a string using indirect writes. ++ * OP_ZR - clear a range of memory. ++ * OP_ZP - unzip and copy using DMAE. ++ * OP_WB - string copy using DMAE. ++ * ++ * The #defines mark the stages. ++ * ++ */ ++#include ++#include ++#include ++#include ++#include ++#include "bnx2x_compat.h" ++#include "bnx2x_init.h" ++#include "bnx2x.h" ++ ++ ++static const struct raw_op init_ops_e1h[] = { ++/* #define PRS_COMMON_START 0 */ ++ {OP_WR, PRS_REG_INC_VALUE, 0xf}, ++ {OP_WR, PRS_REG_EVENT_ID_1, 0x45}, ++ {OP_WR, PRS_REG_EVENT_ID_2, 0x84}, ++ {OP_WR, PRS_REG_EVENT_ID_3, 0x6}, ++ {OP_WR, PRS_REG_NO_MATCH_EVENT_ID, 0x4}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_0, 0x0}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_1, 0x12170000}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_2, 0x22170000}, ++ {OP_WR, PRS_REG_CM_HDR_TYPE_3, 0x32170000}, ++ {OP_ZR, PRS_REG_CM_HDR_TYPE_4, 0x5}, ++ {OP_WR, PRS_REG_CM_HDR_LOOPBACK_TYPE_1, 0x12150000}, ++ {OP_WR, PRS_REG_CM_HDR_LOOPBACK_TYPE_2, 0x22150000}, ++ {OP_WR, PRS_REG_CM_HDR_LOOPBACK_TYPE_3, 0x32150000}, ++ {OP_ZR, PRS_REG_CM_HDR_LOOPBACK_TYPE_4, 0x4}, ++ {OP_WR, PRS_REG_CM_NO_MATCH_HDR, 0x2100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_0, 0x100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_1, 0x10100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_2, 0x20100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_3, 0x30100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_4, 0x40100000}, ++ {OP_ZR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_5, 0x3}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_0, 0x100000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_1, 0x12140000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_2, 0x22140000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_3, 0x32140000}, ++ {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_4, 0x42140000}, ++ {OP_ZR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_5, 0x3}, ++ {OP_RD, PRS_REG_NUM_OF_PACKETS, 0x0}, ++ {OP_RD, PRS_REG_NUM_OF_CFC_FLUSH_MESSAGES, 0x0}, ++ {OP_RD, PRS_REG_NUM_OF_TRANSPARENT_FLUSH_MESSAGES, 0x0}, ++ {OP_RD, PRS_REG_NUM_OF_DEAD_CYCLES, 0x0}, ++ {OP_WR, PRS_REG_FCOE_TYPE, 0x8906}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_0, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_1, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_2, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_3, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_4, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_5, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_6, 0xff}, ++ {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_7, 0xff}, ++ {OP_WR, PRS_REG_PURE_REGIONS, 0x3e}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_0, 0x0}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_1, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_2, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_3, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_4, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_5, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_6, 0x3f}, ++ {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_7, 0x3f}, ++/* #define PRS_COMMON_END 1 */ ++/* #define SRCH_COMMON_START 22 */ ++ {OP_WR, SRC_REG_E1HMF_ENABLE, 0x1}, ++/* #define SRCH_COMMON_END 23 */ ++/* #define TSDM_COMMON_START 44 */ ++ {OP_WR, TSDM_REG_CFC_RSP_START_ADDR, 0x211}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_START_ADDR, 0x200}, ++ {OP_WR, TSDM_REG_Q_COUNTER_START_ADDR, 0x204}, ++ {OP_WR, TSDM_REG_PCK_END_MSG_START_ADDR, 0x219}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, TSDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_WR, TSDM_REG_AGG_INT_EVENT_0, 0x20}, ++ {OP_WR, TSDM_REG_AGG_INT_EVENT_1, 0x0}, ++ {OP_WR, TSDM_REG_AGG_INT_EVENT_2, 0x34}, ++ {OP_WR, TSDM_REG_AGG_INT_EVENT_3, 0x35}, ++ {OP_ZR, TSDM_REG_AGG_INT_EVENT_4, 0x1c}, ++ {OP_WR, TSDM_REG_AGG_INT_T_0, 0x1}, ++ {OP_ZR, TSDM_REG_AGG_INT_T_1, 0x5f}, ++ {OP_WR, TSDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, TSDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, TSDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, TSDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, TSDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, TSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR_ASIC, TSDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, TSDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, TSDM_REG_TIMER_TICK, 0xa}, ++/* #define TSDM_COMMON_END 45 */ ++/* #define TCM_COMMON_START 66 */ ++ {OP_WR, TCM_REG_XX_MAX_LL_SZ, 0x20}, ++ {OP_WR, TCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, TCM_REG_TQM_TCM_HDR_P, 0x2150020}, ++ {OP_WR, TCM_REG_TQM_TCM_HDR_S, 0x2150020}, ++ {OP_WR, TCM_REG_TM_TCM_HDR, 0x30}, ++ {OP_WR, TCM_REG_ERR_TCM_HDR, 0x8100000}, ++ {OP_WR, TCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, TCM_REG_EXPR_EVNT_ID, 0x30}, ++ {OP_WR, TCM_REG_STOP_EVNT_ID, 0x31}, ++ {OP_WR, TCM_REG_STORM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_PRS_WEIGHT, 0x5}, ++ {OP_WR, TCM_REG_PBF_WEIGHT, 0x6}, ++ {OP_WR, TCM_REG_USEM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_CSEM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_CP_WEIGHT, 0x0}, ++ {OP_WR, TCM_REG_TSDM_WEIGHT, 0x5}, ++ {OP_WR, TCM_REG_TQM_P_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_TQM_S_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_TM_WEIGHT, 0x2}, ++ {OP_WR, TCM_REG_TCM_TQM_USE_Q, 0x1}, ++ {OP_WR, TCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, TCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, TCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, TCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, TCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, TCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, TCM_REG_TQM_INIT_CRD, 0x20}, ++ {OP_WR, TCM_REG_XX_INIT_CRD, 0x13}, ++ {OP_WR, TCM_REG_XX_MSG_NUM, 0x20}, ++ {OP_ZR, TCM_REG_XX_TABLE, 0xa}, ++ {OP_SW, TCM_REG_XX_DESCR_TABLE, 0x200000}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_0, 0x7}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_1, 0x7}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_2, 0x8}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_3, 0x8}, ++ {OP_WR, TCM_REG_N_SM_CTX_LD_4, 0x1}, ++ {OP_ZR, TCM_REG_N_SM_CTX_LD_5, 0x3}, ++ {OP_WR, TCM_REG_TCM_REG0_SZ, 0x6}, ++ {OP_WR, TCM_REG_TCM_STORM0_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TCM_STORM1_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TCM_TQM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_STORM_TCM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TQM_TCM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TSDM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TM_TCM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_PRS_IFEN, 0x1}, ++ {OP_WR, TCM_REG_PBF_IFEN, 0x1}, ++ {OP_WR, TCM_REG_USEM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CSEM_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, TCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, TCM_REG_TCM_CFC_IFEN, 0x1}, ++/* #define TCM_COMMON_END 67 */ ++/* #define TCM_FUNC0_START 72 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_0, 0xd}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_0, 0x7}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_0, 0x7}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_0, 0x7}, ++/* #define TCM_FUNC0_END 73 */ ++/* #define TCM_FUNC1_START 74 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_1, 0x2d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_1, 0x27}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_1, 0x27}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_1, 0x27}, ++/* #define TCM_FUNC1_END 75 */ ++/* #define TCM_FUNC2_START 76 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_0, 0x1d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_0, 0x17}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_0, 0x17}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_0, 0x17}, ++/* #define TCM_FUNC2_END 77 */ ++/* #define TCM_FUNC3_START 78 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_1, 0x3d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_1, 0x37}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_1, 0x37}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_1, 0x37}, ++/* #define TCM_FUNC3_END 79 */ ++/* #define TCM_FUNC4_START 80 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_0, 0x4d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_0, 0x47}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_0, 0x47}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_0, 0x47}, ++/* #define TCM_FUNC4_END 81 */ ++/* #define TCM_FUNC5_START 82 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_1, 0x6d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_1, 0x67}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_1, 0x67}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_1, 0x67}, ++/* #define TCM_FUNC5_END 83 */ ++/* #define TCM_FUNC6_START 84 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_0, 0x5d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_0, 0x57}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_0, 0x57}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_0, 0x57}, ++/* #define TCM_FUNC6_END 85 */ ++/* #define TCM_FUNC7_START 86 */ ++ {OP_WR, TCM_REG_PHYS_QNUM0_1, 0x7d}, ++ {OP_WR, TCM_REG_PHYS_QNUM1_1, 0x77}, ++ {OP_WR, TCM_REG_PHYS_QNUM2_1, 0x77}, ++ {OP_WR, TCM_REG_PHYS_QNUM3_1, 0x77}, ++/* #define TCM_FUNC7_END 87 */ ++/* #define BRB1_COMMON_START 88 */ ++ {OP_SW, BRB1_REG_LL_RAM, 0x2000020}, ++ {OP_WR, BRB1_REG_SOFT_RESET, 0x1}, ++ {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_4, 0x0}, ++ {OP_SW, BRB1_REG_FREE_LIST_PRS_CRDT, 0x30220}, ++ {OP_WR, BRB1_REG_SOFT_RESET, 0x0}, ++/* #define BRB1_COMMON_END 89 */ ++/* #define BRB1_PORT0_START 90 */ ++ {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_0, 0x0}, ++ {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_0, 0x0}, ++/* #define BRB1_PORT0_END 91 */ ++/* #define BRB1_PORT1_START 92 */ ++ {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_1, 0x0}, ++ {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_1, 0x0}, ++/* #define BRB1_PORT1_END 93 */ ++/* #define TSEM_COMMON_START 110 */ ++ {OP_ZP, TSEM_REG_INT_TABLE, 0xa90000}, ++ {OP_WR_64, TSEM_REG_INT_TABLE + 0x3c8, 0x70223}, ++ {OP_ZP, TSEM_REG_PRAM, 0x2c2d0000}, ++ {OP_ZP, TSEM_REG_PRAM + 0x8000, 0x38a20b0c}, ++ {OP_ZP, TSEM_REG_PRAM + 0x10000, 0x28ef1935}, ++ {OP_WR_64, TSEM_REG_PRAM + 0x16810, 0x52fe0225}, ++ {OP_RD, TSEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, TSEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, TSEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, TSEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, TSEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, TSEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, TSEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, TSEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, TSEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, TSEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, TSEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, TSEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, TSEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, TSEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, TSEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, TSEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, TSEM_REG_THREADS_LIST, 0xff}, ++ {OP_ZR, TSEM_REG_PASSIVE_BUFFER, 0x400}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18000, 0x34}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18040, 0x18}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x18080, 0xc}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x180c0, 0x20}, ++ {OP_WR_ASIC, TSEM_REG_FAST_MEMORY + 0x18300, 0x7a120}, ++ {OP_WR_EMUL, TSEM_REG_FAST_MEMORY + 0x18300, 0x138}, ++ {OP_WR_FPGA, TSEM_REG_FAST_MEMORY + 0x18300, 0x1388}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x11480, 0x1}, ++ {OP_WR_EMUL, TSEM_REG_FAST_MEMORY + 0x11480, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1000, 0x3b3}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x1000 + 0xecc, 0x10227}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xa020, 0xc8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xa000, 0x2}, ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x1ed0, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1ed8, 0x6}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x36e8, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x36e0, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5000, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5008, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5018, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5028, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5038, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5048, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5058, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5068, 0x4}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5078, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4040, 0x20228}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x4000, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x4008, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x62c0, 0x20022a}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd100, 0x2}, ++/* #define TSEM_COMMON_END 111 */ ++/* #define TSEM_PORT0_START 112 */ ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2000, 0x124}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xb000, 0x28}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xb140, 0xc}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3300, 0x14}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x33a0, 0x68}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x8108, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd1c8, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd1d8, 0x20}, ++/* #define TSEM_PORT0_END 113 */ ++/* #define TSEM_PORT1_START 114 */ ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2490, 0x124}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xb0a0, 0x28}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xb170, 0xc}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3350, 0x14}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3540, 0x68}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x8110, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd1d0, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd258, 0x20}, ++/* #define TSEM_PORT1_END 115 */ ++/* #define TSEM_FUNC0_START 116 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x2920, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3000, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x3000 + 0x8, 0x5024a}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3000 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3200, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5000, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5080, 0x12}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x4000, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0c0, 0x2}, ++/* #define TSEM_FUNC0_END 117 */ ++/* #define TSEM_FUNC1_START 118 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x2924, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3040, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x3040 + 0x8, 0x5024f}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3040 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3220, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5010, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x50c8, 0x12}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x4008, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0c8, 0x2}, ++/* #define TSEM_FUNC1_END 119 */ ++/* #define TSEM_FUNC2_START 120 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x2928, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3080, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x3080 + 0x8, 0x50254}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3080 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3240, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5020, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5110, 0x12}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4010, 0x20259}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0d0, 0x2}, ++/* #define TSEM_FUNC2_END 121 */ ++/* #define TSEM_FUNC3_START 122 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x292c, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x30c0, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x30c0 + 0x8, 0x5025b}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x30c0 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3260, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5030, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5158, 0x12}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4018, 0x20260}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0d8, 0x2}, ++/* #define TSEM_FUNC3_END 123 */ ++/* #define TSEM_FUNC4_START 124 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x2930, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3100, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x3100 + 0x8, 0x50262}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3100 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3280, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5040, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x51a0, 0x12}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4020, 0x20267}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0e0, 0x2}, ++/* #define TSEM_FUNC4_END 125 */ ++/* #define TSEM_FUNC5_START 126 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x2934, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3140, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x3140 + 0x8, 0x50269}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3140 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x32a0, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5050, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x51e8, 0x12}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4028, 0x2026e}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0e8, 0x2}, ++/* #define TSEM_FUNC5_END 127 */ ++/* #define TSEM_FUNC6_START 128 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x2938, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3180, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x3180 + 0x8, 0x50270}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x3180 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x32c0, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5060, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5230, 0x12}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4030, 0x20275}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0f0, 0x2}, ++/* #define TSEM_FUNC6_END 129 */ ++/* #define TSEM_FUNC7_START 130 */ ++ {OP_WR, TSEM_REG_FAST_MEMORY + 0x293c, 0x0}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x31c0, 0x2}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x31c0 + 0x8, 0x50277}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x31c0 + 0x1c, 0x9}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x32e0, 0x8}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5070, 0x2}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0x5278, 0x12}, ++ {OP_SW, TSEM_REG_FAST_MEMORY + 0x4038, 0x2027c}, ++ {OP_ZR, TSEM_REG_FAST_MEMORY + 0xd0f8, 0x2}, ++/* #define TSEM_FUNC7_END 131 */ ++/* #define MISC_COMMON_START 220 */ ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_1, 0x71d2911}, ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_2, 0x0}, ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_3, 0x9c0424}, ++ {OP_WR, MISC_REG_PLL_STORM_CTRL_4, 0x0}, ++ {OP_WR, MISC_REG_LCPLL_CTRL_1, 0x209}, ++/* #define MISC_COMMON_END 221 */ ++/* #define MISC_FUNC0_START 226 */ ++ {OP_WR, MISC_REG_NIG_WOL_P0, 0x0}, ++/* #define MISC_FUNC0_END 227 */ ++/* #define MISC_FUNC1_START 228 */ ++ {OP_WR, MISC_REG_NIG_WOL_P1, 0x0}, ++/* #define MISC_FUNC1_END 229 */ ++/* #define MISC_FUNC2_START 230 */ ++ {OP_WR, MISC_REG_NIG_WOL_P0, 0x0}, ++/* #define MISC_FUNC2_END 231 */ ++/* #define MISC_FUNC3_START 232 */ ++ {OP_WR, MISC_REG_NIG_WOL_P1, 0x0}, ++/* #define MISC_FUNC3_END 233 */ ++/* #define MISC_FUNC4_START 234 */ ++ {OP_WR, MISC_REG_NIG_WOL_P0, 0x0}, ++/* #define MISC_FUNC4_END 235 */ ++/* #define MISC_FUNC5_START 236 */ ++ {OP_WR, MISC_REG_NIG_WOL_P1, 0x0}, ++/* #define MISC_FUNC5_END 237 */ ++/* #define MISC_FUNC6_START 238 */ ++ {OP_WR, MISC_REG_NIG_WOL_P0, 0x0}, ++/* #define MISC_FUNC6_END 239 */ ++/* #define MISC_FUNC7_START 240 */ ++ {OP_WR, MISC_REG_NIG_WOL_P1, 0x0}, ++/* #define MISC_FUNC7_END 241 */ ++/* #define NIG_COMMON_START 264 */ ++ {OP_WR, NIG_REG_PBF_LB_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_PRS_REQ_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_EGRESS_DEBUG_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_BRB_LB_OUT_EN, 0x1}, ++ {OP_WR, NIG_REG_PRS_EOP_OUT_EN, 0x1}, ++/* #define NIG_COMMON_END 265 */ ++/* #define NIG_PORT0_START 266 */ ++ {OP_WR, NIG_REG_LLH0_CM_HEADER, 0x300000}, ++ {OP_WR, NIG_REG_LLH0_EVENT_ID, 0x28}, ++ {OP_WR, NIG_REG_LLH0_ERROR_MASK, 0x0}, ++ {OP_WR, NIG_REG_LLH0_XCM_MASK, 0x4}, ++ {OP_WR, NIG_REG_LLH0_BRB1_NOT_MCP, 0x1}, ++ {OP_WR, NIG_REG_STATUS_INTERRUPT_PORT0, 0x0}, ++ {OP_WR, NIG_REG_LLFC_EGRESS_SRC_ENABLE_0, 0x7}, ++ {OP_WR, NIG_REG_LLH0_CLS_TYPE, 0x1}, ++ {OP_WR, NIG_REG_LLH0_XCM_INIT_CREDIT, 0x30}, ++ {OP_WR, NIG_REG_BRB0_PAUSE_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_EGRESS_PBF0_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_BRB0_OUT_EN, 0x1}, ++ {OP_WR, NIG_REG_XCM0_OUT_EN, 0x1}, ++/* #define NIG_PORT0_END 267 */ ++/* #define NIG_PORT1_START 268 */ ++ {OP_WR, NIG_REG_LLH1_CM_HEADER, 0x300000}, ++ {OP_WR, NIG_REG_LLH1_EVENT_ID, 0x28}, ++ {OP_WR, NIG_REG_LLH1_ERROR_MASK, 0x0}, ++ {OP_WR, NIG_REG_LLH1_XCM_MASK, 0x4}, ++ {OP_WR, NIG_REG_LLH1_BRB1_NOT_MCP, 0x1}, ++ {OP_WR, NIG_REG_STATUS_INTERRUPT_PORT1, 0x0}, ++ {OP_WR, NIG_REG_LLFC_EGRESS_SRC_ENABLE_1, 0x7}, ++ {OP_WR, NIG_REG_LLH1_CLS_TYPE, 0x1}, ++ {OP_WR, NIG_REG_LLH1_XCM_INIT_CREDIT, 0x30}, ++ {OP_WR, NIG_REG_BRB1_PAUSE_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_EGRESS_PBF1_IN_EN, 0x1}, ++ {OP_WR, NIG_REG_BRB1_OUT_EN, 0x1}, ++ {OP_WR, NIG_REG_XCM1_OUT_EN, 0x1}, ++/* #define NIG_PORT1_END 269 */ ++/* #define UPB_COMMON_START 308 */ ++ {OP_WR, GRCBASE_UPB + PB_REG_CONTROL, 0x20}, ++/* #define UPB_COMMON_END 309 */ ++/* #define CSDM_COMMON_START 330 */ ++ {OP_WR, CSDM_REG_CFC_RSP_START_ADDR, 0x211}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_START_ADDR, 0x200}, ++ {OP_WR, CSDM_REG_Q_COUNTER_START_ADDR, 0x204}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, CSDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_ZR, CSDM_REG_AGG_INT_EVENT_0, 0x2}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_2, 0x34}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_3, 0x35}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_4, 0x20}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_5, 0x21}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_6, 0x22}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_7, 0x23}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_8, 0x24}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_9, 0x25}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_10, 0x26}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_11, 0x27}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_12, 0x28}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_13, 0x29}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_14, 0x2a}, ++ {OP_WR, CSDM_REG_AGG_INT_EVENT_15, 0x2b}, ++ {OP_ZR, CSDM_REG_AGG_INT_EVENT_16, 0x56}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_6, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_7, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_8, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_9, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_10, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_11, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_12, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_13, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_14, 0x1}, ++ {OP_WR, CSDM_REG_AGG_INT_MODE_15, 0x1}, ++ {OP_ZR, CSDM_REG_AGG_INT_MODE_16, 0x10}, ++ {OP_WR, CSDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, CSDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, CSDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, CSDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, CSDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, CSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR_ASIC, CSDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, CSDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, CSDM_REG_TIMER_TICK, 0xa}, ++/* #define CSDM_COMMON_END 331 */ ++/* #define USDM_COMMON_START 352 */ ++ {OP_WR, USDM_REG_CFC_RSP_START_ADDR, 0x411}, ++ {OP_WR, USDM_REG_CMP_COUNTER_START_ADDR, 0x400}, ++ {OP_WR, USDM_REG_Q_COUNTER_START_ADDR, 0x404}, ++ {OP_WR, USDM_REG_PCK_END_MSG_START_ADDR, 0x421}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, USDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_WR, USDM_REG_AGG_INT_EVENT_0, 0x46}, ++ {OP_WR, USDM_REG_AGG_INT_EVENT_1, 0x5}, ++ {OP_ZR, USDM_REG_AGG_INT_EVENT_2, 0x2}, ++ {OP_WR, USDM_REG_AGG_INT_EVENT_4, 0xa}, ++ {OP_WR, USDM_REG_AGG_INT_EVENT_5, 0xf0}, ++ {OP_ZR, USDM_REG_AGG_INT_EVENT_6, 0x1f}, ++ {OP_WR, USDM_REG_AGG_INT_T_5, 0x1}, ++ {OP_ZR, USDM_REG_AGG_INT_T_6, 0x3a}, ++ {OP_WR, USDM_REG_AGG_INT_MODE_0, 0x1}, ++ {OP_ZR, USDM_REG_AGG_INT_MODE_1, 0x3}, ++ {OP_WR, USDM_REG_AGG_INT_MODE_4, 0x1}, ++ {OP_WR, USDM_REG_AGG_INT_MODE_5, 0x1}, ++ {OP_ZR, USDM_REG_AGG_INT_MODE_6, 0x1a}, ++ {OP_WR, USDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, USDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, USDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, USDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, USDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q2_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, USDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR_ASIC, USDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, USDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, USDM_REG_TIMER_TICK, 0xa}, ++/* #define USDM_COMMON_END 353 */ ++/* #define CCM_COMMON_START 374 */ ++ {OP_WR, CCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, CCM_REG_CQM_CCM_HDR_P, 0x2150020}, ++ {OP_WR, CCM_REG_CQM_CCM_HDR_S, 0x2150020}, ++ {OP_WR, CCM_REG_ERR_CCM_HDR, 0x8100000}, ++ {OP_WR, CCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, CCM_REG_STORM_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_TSEM_WEIGHT, 0x0}, ++ {OP_WR, CCM_REG_XSEM_WEIGHT, 0x5}, ++ {OP_WR, CCM_REG_USEM_WEIGHT, 0x5}, ++ {OP_ZR, CCM_REG_PBF_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_CSDM_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_CQM_P_WEIGHT, 0x3}, ++ {OP_WR, CCM_REG_CQM_S_WEIGHT, 0x2}, ++ {OP_WR, CCM_REG_CCM_CQM_USE_Q, 0x1}, ++ {OP_WR, CCM_REG_CNT_AUX1_Q, 0x2}, ++ {OP_WR, CCM_REG_CNT_AUX2_Q, 0x2}, ++ {OP_WR, CCM_REG_INV_DONE_Q, 0x1}, ++ {OP_WR, CCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, CCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, CCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, CCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, CCM_REG_CQM_INIT_CRD, 0x20}, ++ {OP_WR, CCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, CCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, CCM_REG_XX_INIT_CRD, 0x3}, ++ {OP_WR, CCM_REG_XX_MSG_NUM, 0x18}, ++ {OP_ZR, CCM_REG_XX_TABLE, 0x12}, ++ {OP_SW, CCM_REG_XX_DESCR_TABLE, 0x24027e}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_0, 0x1}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_1, 0x2}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_2, 0x8}, ++ {OP_WR, CCM_REG_N_SM_CTX_LD_3, 0x8}, ++ {OP_ZR, CCM_REG_N_SM_CTX_LD_4, 0x4}, ++ {OP_WR, CCM_REG_CCM_REG0_SZ, 0x4}, ++ {OP_WR, CCM_REG_CCM_STORM0_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CCM_STORM1_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CCM_CQM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_STORM_CCM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CQM_CCM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CSDM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_TSEM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_XSEM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_USEM_IFEN, 0x1}, ++ {OP_WR, CCM_REG_PBF_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, CCM_REG_CCM_CFC_IFEN, 0x1}, ++/* #define CCM_COMMON_END 375 */ ++/* #define CCM_FUNC0_START 380 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_0, 0x9}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_0, 0xa}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_0, 0x7}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_0, 0x7}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_0, 0xc}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_0, 0xb}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_0, 0x7}, ++/* #define CCM_FUNC0_END 381 */ ++/* #define CCM_FUNC1_START 382 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_1, 0x29}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_1, 0x2a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_1, 0x27}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_1, 0x27}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_1, 0x2c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_1, 0x2b}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_1, 0x27}, ++/* #define CCM_FUNC1_END 383 */ ++/* #define CCM_FUNC2_START 384 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_0, 0x19}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_0, 0x1a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_0, 0x17}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_0, 0x17}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_0, 0x1c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_0, 0x1b}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_0, 0x17}, ++/* #define CCM_FUNC2_END 385 */ ++/* #define CCM_FUNC3_START 386 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_1, 0x39}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_1, 0x3a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_1, 0x37}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_1, 0x37}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_1, 0x3c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_1, 0x3b}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_1, 0x37}, ++/* #define CCM_FUNC3_END 387 */ ++/* #define CCM_FUNC4_START 388 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_0, 0x49}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_0, 0x4a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_0, 0x47}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_0, 0x47}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_0, 0x4c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_0, 0x4b}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_0, 0x47}, ++/* #define CCM_FUNC4_END 389 */ ++/* #define CCM_FUNC5_START 390 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_1, 0x69}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_1, 0x6a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_1, 0x67}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_1, 0x67}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_1, 0x6c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_1, 0x6b}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_1, 0x67}, ++/* #define CCM_FUNC5_END 391 */ ++/* #define CCM_FUNC6_START 392 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_0, 0x59}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_0, 0x5a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_0, 0x57}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_0, 0x57}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_0, 0x5c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_0, 0x5b}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_0, 0x57}, ++/* #define CCM_FUNC6_END 393 */ ++/* #define CCM_FUNC7_START 394 */ ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM0_1, 0x79}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM1_1, 0x7a}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM2_1, 0x77}, ++ {OP_WR, CCM_REG_QOS_PHYS_QNUM3_1, 0x77}, ++ {OP_WR, CCM_REG_PHYS_QNUM1_1, 0x7c}, ++ {OP_WR, CCM_REG_PHYS_QNUM2_1, 0x7b}, ++ {OP_WR, CCM_REG_PHYS_QNUM3_1, 0x77}, ++/* #define CCM_FUNC7_END 395 */ ++/* #define UCM_COMMON_START 396 */ ++ {OP_WR, UCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, UCM_REG_UQM_UCM_HDR_P, 0x2150020}, ++ {OP_WR, UCM_REG_UQM_UCM_HDR_S, 0x2150020}, ++ {OP_WR, UCM_REG_TM_UCM_HDR, 0x30}, ++ {OP_WR, UCM_REG_ERR_UCM_HDR, 0x8100000}, ++ {OP_WR, UCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, UCM_REG_EXPR_EVNT_ID, 0x30}, ++ {OP_WR, UCM_REG_STOP_EVNT_ID, 0x31}, ++ {OP_WR, UCM_REG_STORM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_TSEM_WEIGHT, 0x4}, ++ {OP_WR, UCM_REG_CSEM_WEIGHT, 0x0}, ++ {OP_WR, UCM_REG_XSEM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_DORQ_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_CP_WEIGHT, 0x0}, ++ {OP_WR, UCM_REG_USDM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_UQM_P_WEIGHT, 0x7}, ++ {OP_WR, UCM_REG_UQM_S_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_TM_WEIGHT, 0x2}, ++ {OP_WR, UCM_REG_UCM_UQM_USE_Q, 0x1}, ++ {OP_WR, UCM_REG_INV_CFLG_Q, 0x1}, ++ {OP_WR, UCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, UCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, UCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, UCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, UCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, UCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, UCM_REG_TM_INIT_CRD, 0x4}, ++ {OP_WR, UCM_REG_UQM_INIT_CRD, 0x20}, ++ {OP_WR, UCM_REG_XX_INIT_CRD, 0xe}, ++ {OP_WR, UCM_REG_XX_MSG_NUM, 0x1b}, ++ {OP_ZR, UCM_REG_XX_TABLE, 0x12}, ++ {OP_SW, UCM_REG_XX_DESCR_TABLE, 0x1b02a2}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_0, 0xc}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_1, 0x7}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_2, 0xf}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_3, 0x10}, ++ {OP_WR, UCM_REG_N_SM_CTX_LD_4, 0xb}, ++ {OP_ZR, UCM_REG_N_SM_CTX_LD_5, 0x3}, ++ {OP_WR, UCM_REG_UCM_REG0_SZ, 0x3}, ++ {OP_WR, UCM_REG_UCM_STORM0_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_STORM1_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_UQM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_STORM_UCM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UQM_UCM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_USDM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_TM_UCM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_TM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_TSEM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CSEM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_XSEM_IFEN, 0x1}, ++ {OP_WR, UCM_REG_DORQ_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, UCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, UCM_REG_UCM_CFC_IFEN, 0x1}, ++/* #define UCM_COMMON_END 397 */ ++/* #define UCM_FUNC0_START 402 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_0, 0xf}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_0, 0xe}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_0, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define UCM_FUNC0_END 403 */ ++/* #define UCM_FUNC1_START 404 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_1, 0x2f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_1, 0x2e}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_1, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define UCM_FUNC1_END 405 */ ++/* #define UCM_FUNC2_START 406 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_0, 0x1f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_0, 0x1e}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_0, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define UCM_FUNC2_END 407 */ ++/* #define UCM_FUNC3_START 408 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_1, 0x3f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_1, 0x3e}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_1, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define UCM_FUNC3_END 409 */ ++/* #define UCM_FUNC4_START 410 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_0, 0x4f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_0, 0x4e}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_0, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define UCM_FUNC4_END 411 */ ++/* #define UCM_FUNC5_START 412 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_1, 0x6f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_1, 0x6e}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_1, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define UCM_FUNC5_END 413 */ ++/* #define UCM_FUNC6_START 414 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_0, 0x5f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_0, 0x5e}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_0, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define UCM_FUNC6_END 415 */ ++/* #define UCM_FUNC7_START 416 */ ++ {OP_WR, UCM_REG_PHYS_QNUM0_1, 0x7f}, ++ {OP_WR, UCM_REG_PHYS_QNUM1_1, 0x7e}, ++ {OP_WR, UCM_REG_PHYS_QNUM2_1, 0x0}, ++ {OP_WR, UCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define UCM_FUNC7_END 417 */ ++/* #define USEM_COMMON_START 418 */ ++ {OP_ZP, USEM_REG_INT_TABLE, 0xe10000}, ++ {OP_WR_64, USEM_REG_INT_TABLE + 0x3d8, 0x502bd}, ++ {OP_ZP, USEM_REG_PRAM, 0x2eca0000}, ++ {OP_ZP, USEM_REG_PRAM + 0x8000, 0x311a0bb3}, ++ {OP_ZP, USEM_REG_PRAM + 0x10000, 0x368b17fa}, ++ {OP_ZP, USEM_REG_PRAM + 0x18000, 0x39c6259d}, ++ {OP_ZP, USEM_REG_PRAM + 0x20000, 0x13d5340f}, ++ {OP_WR_64, USEM_REG_PRAM + 0x23070, 0x39f202bf}, ++ {OP_RD, USEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, USEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, USEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, USEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, USEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, USEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, USEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, USEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, USEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, USEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, USEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, USEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, USEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, USEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, USEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, USEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, USEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, USEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, USEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, USEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, USEM_REG_THREADS_LIST, 0xffff}, ++ {OP_ZR, USEM_REG_PASSIVE_BUFFER, 0x800}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18000, 0x1a}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18040, 0x4e}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x18080, 0x10}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x180c0, 0x20}, ++ {OP_WR_ASIC, USEM_REG_FAST_MEMORY + 0x18300, 0x7a120}, ++ {OP_WR_EMUL, USEM_REG_FAST_MEMORY + 0x18300, 0x138}, ++ {OP_WR_FPGA, USEM_REG_FAST_MEMORY + 0x18300, 0x1388}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_WR_ASIC, USEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500}, ++ {OP_WR_EMUL, USEM_REG_FAST_MEMORY + 0x18380, 0x4c4b4}, ++ {OP_WR_FPGA, USEM_REG_FAST_MEMORY + 0x18380, 0x4c4b40}, ++ {OP_WR_EMUL, USEM_REG_FAST_MEMORY + 0x11480, 0x0}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x11480, 0x1}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x2000, 0x102}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x8020, 0xc8}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x8000, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x3da8, 0x4}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x3d80, 0x9}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x3d80 + 0x24, 0x102c1}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x3d00, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5000, 0x400}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4000, 0x2}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x4000 + 0x8, 0x102c2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4000 + 0xc, 0x3}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x40d8, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x6b68, 0x2}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x6b68 + 0x8, 0x202c3}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x6b10, 0x2}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x74c0, 0x202c5}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xda40, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xe000, 0x800}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x10800, 0x1000000}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x10c00, 0x1002c7}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x10800, 0x0}, ++ {OP_SW, USEM_REG_FAST_MEMORY + 0x10c40, 0x1002d7}, ++/* #define USEM_COMMON_END 419 */ ++/* #define USEM_PORT0_START 420 */ ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x2450, 0xb4}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x2ad0, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x1000, 0x1a0}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x3db8, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5000, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5100, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5200, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5300, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5400, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5500, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5600, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5700, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5800, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5900, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5a00, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5b00, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5c00, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5d00, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5e00, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5f00, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x6b78, 0x52}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x6e08, 0xc}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xda88, 0x2}, ++/* #define USEM_PORT0_END 421 */ ++/* #define USEM_PORT1_START 422 */ ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x2720, 0xb4}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x2ad8, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x1680, 0x1a0}, ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x3dbc, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5080, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5180, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5280, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5380, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5480, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5580, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5680, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5780, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5880, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5980, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5a80, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5b80, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5c80, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5d80, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5e80, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x5f80, 0x20}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x6cc0, 0x52}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x6e38, 0xc}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xda90, 0x2}, ++/* #define USEM_PORT1_END 423 */ ++/* #define USEM_FUNC0_START 424 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a30, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4018, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd000, 0x6}, ++/* #define USEM_FUNC0_END 425 */ ++/* #define USEM_FUNC1_START 426 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a34, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4028, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd018, 0x6}, ++/* #define USEM_FUNC1_END 427 */ ++/* #define USEM_FUNC2_START 428 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a38, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4038, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd030, 0x6}, ++/* #define USEM_FUNC2_END 429 */ ++/* #define USEM_FUNC3_START 430 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a3c, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4048, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd048, 0x6}, ++/* #define USEM_FUNC3_END 431 */ ++/* #define USEM_FUNC4_START 432 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a40, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4058, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd060, 0x6}, ++/* #define USEM_FUNC4_END 433 */ ++/* #define USEM_FUNC5_START 434 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a44, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4068, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd078, 0x6}, ++/* #define USEM_FUNC5_END 435 */ ++/* #define USEM_FUNC6_START 436 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a48, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4078, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd090, 0x6}, ++/* #define USEM_FUNC6_END 437 */ ++/* #define USEM_FUNC7_START 438 */ ++ {OP_WR, USEM_REG_FAST_MEMORY + 0x2a4c, 0x0}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0x4088, 0x2}, ++ {OP_ZR, USEM_REG_FAST_MEMORY + 0xd0a8, 0x6}, ++/* #define USEM_FUNC7_END 439 */ ++/* #define CSEM_COMMON_START 440 */ ++ {OP_ZP, CSEM_REG_INT_TABLE, 0x930000}, ++ {OP_WR_64, CSEM_REG_INT_TABLE + 0x380, 0x1002e7}, ++ {OP_ZP, CSEM_REG_PRAM, 0x2adf0000}, ++ {OP_ZP, CSEM_REG_PRAM + 0x8000, 0x2e050ab8}, ++ {OP_WR_64, CSEM_REG_PRAM + 0xe4a0, 0x61d202e9}, ++ {OP_RD, CSEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, CSEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, CSEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, CSEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, CSEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, CSEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, CSEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, CSEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, CSEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, CSEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, CSEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, CSEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, CSEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, CSEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, CSEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, CSEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, CSEM_REG_THREADS_LIST, 0xffff}, ++ {OP_ZR, CSEM_REG_PASSIVE_BUFFER, 0x800}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18000, 0x10}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18040, 0x12}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x18080, 0x30}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x180c0, 0xe}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x11480, 0x1}, ++ {OP_WR_EMUL, CSEM_REG_FAST_MEMORY + 0x11480, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1000, 0x42}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x7020, 0xc8}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x7000, 0x2}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x11e8, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3000, 0xc0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x4070, 0x80}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x5280, 0x4}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x6700, 0x100}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x9000, 0x400}, ++ {OP_SW, CSEM_REG_FAST_MEMORY + 0x6b08, 0x2002eb}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x10800, 0x13fffff}, ++ {OP_SW, CSEM_REG_FAST_MEMORY + 0x10c00, 0x10030b}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x10800, 0x0}, ++ {OP_SW, CSEM_REG_FAST_MEMORY + 0x10c40, 0x10031b}, ++/* #define CSEM_COMMON_END 441 */ ++/* #define CSEM_PORT0_START 442 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8100, 0xa0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8600, 0x40}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8c00, 0x3c}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0xb000, 0x200}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8800, 0x80}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8de0, 0x3c}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x4040, 0x6}, ++/* #define CSEM_PORT0_END 443 */ ++/* #define CSEM_PORT1_START 444 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8380, 0xa0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8700, 0x40}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8cf0, 0x3c}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0xb800, 0x200}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8a00, 0x80}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8ed0, 0x3c}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x4058, 0x6}, ++/* #define CSEM_PORT1_END 445 */ ++/* #define CSEM_FUNC0_START 446 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8000, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x1148, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3300, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x6040, 0x30}, ++/* #define CSEM_FUNC0_END 447 */ ++/* #define CSEM_FUNC1_START 448 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8020, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x114c, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3308, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x6100, 0x30}, ++/* #define CSEM_FUNC1_END 449 */ ++/* #define CSEM_FUNC2_START 450 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8040, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x1150, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3310, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x61c0, 0x30}, ++/* #define CSEM_FUNC2_END 451 */ ++/* #define CSEM_FUNC3_START 452 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8060, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x1154, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3318, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x6280, 0x30}, ++/* #define CSEM_FUNC3_END 453 */ ++/* #define CSEM_FUNC4_START 454 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x8080, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x1158, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3320, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x6340, 0x30}, ++/* #define CSEM_FUNC4_END 455 */ ++/* #define CSEM_FUNC5_START 456 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x80a0, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x115c, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3328, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x6400, 0x30}, ++/* #define CSEM_FUNC5_END 457 */ ++/* #define CSEM_FUNC6_START 458 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x80c0, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x1160, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3330, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x64c0, 0x30}, ++/* #define CSEM_FUNC6_END 459 */ ++/* #define CSEM_FUNC7_START 460 */ ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x80e0, 0x8}, ++ {OP_WR, CSEM_REG_FAST_MEMORY + 0x1164, 0x0}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3338, 0x2}, ++ {OP_ZR, CSEM_REG_FAST_MEMORY + 0x6580, 0x30}, ++/* #define CSEM_FUNC7_END 461 */ ++/* #define XPB_COMMON_START 462 */ ++ {OP_WR, GRCBASE_XPB + PB_REG_CONTROL, 0x28}, ++/* #define XPB_COMMON_END 463 */ ++/* #define DQ_COMMON_START 484 */ ++ {OP_WR, DORQ_REG_MODE_ACT, 0x2}, ++ {OP_WR, DORQ_REG_NORM_CID_OFST, 0x3}, ++ {OP_WR, DORQ_REG_OUTST_REQ, 0x4}, ++ {OP_WR, DORQ_REG_DPM_CID_ADDR, 0x8}, ++ {OP_WR, DORQ_REG_RSP_INIT_CRD, 0x2}, ++ {OP_WR, DORQ_REG_NORM_CMHEAD_TX, 0x90}, ++ {OP_WR, DORQ_REG_CMHEAD_RX, 0x90}, ++ {OP_WR, DORQ_REG_SHRT_CMHEAD, 0x800090}, ++ {OP_WR, DORQ_REG_ERR_CMHEAD, 0x8140000}, ++ {OP_WR, DORQ_REG_AGG_CMD0, 0x8a}, ++ {OP_WR, DORQ_REG_AGG_CMD1, 0x80}, ++ {OP_WR, DORQ_REG_AGG_CMD2, 0x81}, ++ {OP_WR, DORQ_REG_AGG_CMD3, 0x80}, ++ {OP_WR, DORQ_REG_SHRT_ACT_CNT, 0x6}, ++ {OP_WR, DORQ_REG_DQ_FIFO_FULL_TH, 0x7d0}, ++ {OP_WR, DORQ_REG_DQ_FIFO_AFULL_TH, 0x76c}, ++ {OP_WR, DORQ_REG_REGN, 0x7c1004}, ++ {OP_WR, DORQ_REG_IF_EN, 0xf}, ++/* #define DQ_COMMON_END 485 */ ++/* #define TIMERS_COMMON_START 506 */ ++ {OP_ZR, TM_REG_CLIN_PRIOR0_CLIENT, 0x2}, ++ {OP_WR, TM_REG_LIN_SETCLR_FIFO_ALFULL_THR, 0x1c}, ++ {OP_WR, TM_REG_CFC_AC_CRDCNT_VAL, 0x1}, ++ {OP_WR, TM_REG_CFC_CLD_CRDCNT_VAL, 0x1}, ++ {OP_WR, TM_REG_CLOUT_CRDCNT0_VAL, 0x1}, ++ {OP_WR, TM_REG_CLOUT_CRDCNT1_VAL, 0x1}, ++ {OP_WR, TM_REG_CLOUT_CRDCNT2_VAL, 0x1}, ++ {OP_WR, TM_REG_EXP_CRDCNT_VAL, 0x1}, ++ {OP_WR, TM_REG_PCIARB_CRDCNT_VAL, 0x2}, ++ {OP_WR_ASIC, TM_REG_TIMER_TICK_SIZE, 0x3d090}, ++ {OP_WR_EMUL, TM_REG_TIMER_TICK_SIZE, 0x9c}, ++ {OP_WR_FPGA, TM_REG_TIMER_TICK_SIZE, 0x9c4}, ++ {OP_WR, TM_REG_CL0_CONT_REGION, 0x8}, ++ {OP_WR, TM_REG_CL1_CONT_REGION, 0xc}, ++ {OP_WR, TM_REG_CL2_CONT_REGION, 0x10}, ++ {OP_WR, TM_REG_TM_CONTEXT_REGION, 0x20}, ++ {OP_WR, TM_REG_EN_TIMERS, 0x1}, ++ {OP_WR, TM_REG_EN_REAL_TIME_CNT, 0x1}, ++ {OP_WR, TM_REG_EN_CL0_INPUT, 0x1}, ++ {OP_WR, TM_REG_EN_CL1_INPUT, 0x1}, ++ {OP_WR, TM_REG_EN_CL2_INPUT, 0x1}, ++/* #define TIMERS_COMMON_END 507 */ ++/* #define TIMERS_PORT0_START 508 */ ++ {OP_WR, TM_REG_LIN0_LOGIC_ADDR, 0x0}, ++ {OP_WR, TM_REG_LIN0_PHY_ADDR_VALID, 0x0}, ++ {OP_ZR, TM_REG_LIN0_PHY_ADDR, 0x2}, ++/* #define TIMERS_PORT0_END 509 */ ++/* #define TIMERS_PORT1_START 510 */ ++ {OP_WR, TM_REG_LIN1_LOGIC_ADDR, 0x0}, ++ {OP_WR, TM_REG_LIN1_PHY_ADDR_VALID, 0x0}, ++ {OP_ZR, TM_REG_LIN1_PHY_ADDR, 0x2}, ++/* #define TIMERS_PORT1_END 511 */ ++/* #define XSDM_COMMON_START 528 */ ++ {OP_WR, XSDM_REG_CFC_RSP_START_ADDR, 0x424}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_START_ADDR, 0x410}, ++ {OP_WR, XSDM_REG_Q_COUNTER_START_ADDR, 0x414}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX0, 0xffff}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX1, 0xffff}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX2, 0xffff}, ++ {OP_WR, XSDM_REG_CMP_COUNTER_MAX3, 0xffff}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_0, 0x20}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_1, 0x20}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_2, 0x34}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_3, 0x35}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_4, 0x23}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_5, 0x24}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_6, 0x25}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_7, 0x26}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_8, 0x27}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_9, 0x29}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_10, 0x2a}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_11, 0x2b}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_12, 0x2c}, ++ {OP_WR, XSDM_REG_AGG_INT_EVENT_13, 0x2d}, ++ {OP_ZR, XSDM_REG_AGG_INT_EVENT_14, 0x52}, ++ {OP_WR, XSDM_REG_AGG_INT_MODE_0, 0x1}, ++ {OP_ZR, XSDM_REG_AGG_INT_MODE_1, 0x1f}, ++ {OP_WR, XSDM_REG_ENABLE_IN1, 0x7ffffff}, ++ {OP_WR, XSDM_REG_ENABLE_IN2, 0x3f}, ++ {OP_WR, XSDM_REG_ENABLE_OUT1, 0x7ffffff}, ++ {OP_WR, XSDM_REG_ENABLE_OUT2, 0xf}, ++ {OP_RD, XSDM_REG_NUM_OF_Q0_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q1_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q3_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q4_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q5_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q6_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q7_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q8_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q9_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q10_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_Q11_CMD, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_PKT_END_MSG, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0}, ++ {OP_RD, XSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0}, ++ {OP_WR_ASIC, XSDM_REG_TIMER_TICK, 0x3e8}, ++ {OP_WR_EMUL, XSDM_REG_TIMER_TICK, 0x1}, ++ {OP_WR_FPGA, XSDM_REG_TIMER_TICK, 0xa}, ++/* #define XSDM_COMMON_END 529 */ ++/* #define QM_COMMON_START 550 */ ++ {OP_WR, QM_REG_ACTCTRINITVAL_0, 0x6}, ++ {OP_WR, QM_REG_ACTCTRINITVAL_1, 0x5}, ++ {OP_WR, QM_REG_ACTCTRINITVAL_2, 0xa}, ++ {OP_WR, QM_REG_ACTCTRINITVAL_3, 0x5}, ++ {OP_WR, QM_REG_PCIREQAT, 0x2}, ++ {OP_WR, QM_REG_CMINITCRD_0, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_1, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_2, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_3, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_4, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_5, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_6, 0x4}, ++ {OP_WR, QM_REG_CMINITCRD_7, 0x4}, ++ {OP_WR, QM_REG_OUTLDREQ, 0x4}, ++ {OP_WR, QM_REG_CTXREG_0, 0x7c}, ++ {OP_WR, QM_REG_CTXREG_1, 0x3d}, ++ {OP_WR, QM_REG_CTXREG_2, 0x3f}, ++ {OP_WR, QM_REG_CTXREG_3, 0x9c}, ++ {OP_WR, QM_REG_ENSEC, 0x7}, ++ {OP_ZR, QM_REG_QVOQIDX_0, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_0, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_5, 0x0}, ++ {OP_WR, QM_REG_QVOQIDX_6, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_7, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_8, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_1, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_9, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_10, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_11, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_12, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_2, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_13, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_14, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_15, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_16, 0x0}, ++ {OP_WR, QM_REG_WRRWEIGHTS_3, 0x1010120}, ++ {OP_ZR, QM_REG_QVOQIDX_17, 0x4}, ++ {OP_WR, QM_REG_WRRWEIGHTS_4, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_21, 0x0}, ++ {OP_WR, QM_REG_QVOQIDX_22, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_23, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_24, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_5, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_25, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_26, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_27, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_28, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_6, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_29, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_30, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_31, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_32, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_7, 0x1010120}, ++ {OP_WR, QM_REG_QVOQIDX_33, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_34, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_35, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_36, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_8, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_37, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_38, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_39, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_40, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_9, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_41, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_42, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_43, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_44, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_10, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_45, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_46, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_47, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_48, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_11, 0x1010120}, ++ {OP_WR, QM_REG_QVOQIDX_49, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_50, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_51, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_52, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_12, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_53, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_54, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_55, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_56, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_13, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_57, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_58, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_59, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_60, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_14, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_61, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_62, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_63, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_64, 0x0}, ++ {OP_WR, QM_REG_WRRWEIGHTS_15, 0x1010120}, ++ {OP_ZR, QM_REG_QVOQIDX_65, 0x4}, ++ {OP_WR, QM_REG_WRRWEIGHTS_16, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_69, 0x0}, ++ {OP_WR, QM_REG_QVOQIDX_70, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_71, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_72, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_17, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_73, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_74, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_75, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_76, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_18, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_77, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_78, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_79, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_80, 0x0}, ++ {OP_WR, QM_REG_WRRWEIGHTS_19, 0x1010120}, ++ {OP_ZR, QM_REG_QVOQIDX_81, 0x4}, ++ {OP_WR, QM_REG_WRRWEIGHTS_20, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_85, 0x0}, ++ {OP_WR, QM_REG_QVOQIDX_86, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_87, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_88, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_21, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_89, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_90, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_91, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_92, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_22, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_93, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_94, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_95, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_96, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_23, 0x1010120}, ++ {OP_WR, QM_REG_QVOQIDX_97, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_98, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_99, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_100, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_24, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_101, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_102, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_103, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_104, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_25, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_105, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_106, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_107, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_108, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_26, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_109, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_110, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_111, 0x7}, ++ {OP_WR, QM_REG_QVOQIDX_112, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_27, 0x1010120}, ++ {OP_WR, QM_REG_QVOQIDX_113, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_114, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_115, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_116, 0x1}, ++ {OP_WR, QM_REG_WRRWEIGHTS_28, 0x1010101}, ++ {OP_WR, QM_REG_QVOQIDX_117, 0x1}, ++ {OP_WR, QM_REG_QVOQIDX_118, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_119, 0x4}, ++ {OP_WR, QM_REG_QVOQIDX_120, 0x2}, ++ {OP_WR, QM_REG_WRRWEIGHTS_29, 0x8012004}, ++ {OP_WR, QM_REG_QVOQIDX_121, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_122, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_123, 0x5}, ++ {OP_WR, QM_REG_QVOQIDX_124, 0x5}, ++ {OP_WR, QM_REG_WRRWEIGHTS_30, 0x20081001}, ++ {OP_WR, QM_REG_QVOQIDX_125, 0x8}, ++ {OP_WR, QM_REG_QVOQIDX_126, 0x6}, ++ {OP_WR, QM_REG_QVOQIDX_127, 0x7}, ++ {OP_WR, QM_REG_WRRWEIGHTS_31, 0x1010120}, ++ {OP_WR, QM_REG_VOQQMASK_0_LSB, 0x3f003f}, ++ {OP_WR, QM_REG_VOQQMASK_0_MSB, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_0_LSB_EXT_A, 0x3f003f}, ++ {OP_WR, QM_REG_VOQQMASK_0_MSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_1_LSB, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_1_MSB, 0x3f003f}, ++ {OP_WR, QM_REG_VOQQMASK_1_LSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_1_MSB_EXT_A, 0x3f003f}, ++ {OP_WR, QM_REG_VOQQMASK_2_LSB, 0x1000100}, ++ {OP_WR, QM_REG_VOQQMASK_2_MSB, 0x1000100}, ++ {OP_WR, QM_REG_VOQQMASK_2_LSB_EXT_A, 0x1000100}, ++ {OP_WR, QM_REG_VOQQMASK_2_MSB_EXT_A, 0x1000100}, ++ {OP_ZR, QM_REG_VOQQMASK_3_LSB, 0x2}, ++ {OP_WR, QM_REG_VOQQMASK_3_LSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_3_MSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_4_LSB, 0xc000c0}, ++ {OP_WR, QM_REG_VOQQMASK_4_MSB, 0xc000c0}, ++ {OP_WR, QM_REG_VOQQMASK_4_LSB_EXT_A, 0xc000c0}, ++ {OP_WR, QM_REG_VOQQMASK_4_MSB_EXT_A, 0xc000c0}, ++ {OP_WR, QM_REG_VOQQMASK_5_LSB, 0x1e001e00}, ++ {OP_WR, QM_REG_VOQQMASK_5_MSB, 0x1e001e00}, ++ {OP_WR, QM_REG_VOQQMASK_5_LSB_EXT_A, 0x1e001e00}, ++ {OP_WR, QM_REG_VOQQMASK_5_MSB_EXT_A, 0x1e001e00}, ++ {OP_WR, QM_REG_VOQQMASK_6_LSB, 0x40004000}, ++ {OP_WR, QM_REG_VOQQMASK_6_MSB, 0x40004000}, ++ {OP_WR, QM_REG_VOQQMASK_6_LSB_EXT_A, 0x40004000}, ++ {OP_WR, QM_REG_VOQQMASK_6_MSB_EXT_A, 0x40004000}, ++ {OP_WR, QM_REG_VOQQMASK_7_LSB, 0x80008000}, ++ {OP_WR, QM_REG_VOQQMASK_7_MSB, 0x80008000}, ++ {OP_WR, QM_REG_VOQQMASK_7_LSB_EXT_A, 0x80008000}, ++ {OP_WR, QM_REG_VOQQMASK_7_MSB_EXT_A, 0x80008000}, ++ {OP_WR, QM_REG_VOQQMASK_8_LSB, 0x20002000}, ++ {OP_WR, QM_REG_VOQQMASK_8_MSB, 0x20002000}, ++ {OP_WR, QM_REG_VOQQMASK_8_LSB_EXT_A, 0x20002000}, ++ {OP_WR, QM_REG_VOQQMASK_8_MSB_EXT_A, 0x20002000}, ++ {OP_ZR, QM_REG_VOQQMASK_9_LSB, 0x2}, ++ {OP_WR, QM_REG_VOQQMASK_9_LSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_9_MSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_10_LSB, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_10_MSB, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_10_LSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_10_MSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_11_LSB, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_11_MSB, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_11_LSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQQMASK_11_MSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_VOQPORT_0, 0x0}, ++ {OP_WR, QM_REG_VOQPORT_1, 0x1}, ++ {OP_ZR, QM_REG_VOQPORT_2, 0xa}, ++ {OP_WR, QM_REG_CMINTVOQMASK_0, 0xc08}, ++ {OP_WR, QM_REG_CMINTVOQMASK_1, 0x40}, ++ {OP_WR, QM_REG_CMINTVOQMASK_2, 0x100}, ++ {OP_WR, QM_REG_CMINTVOQMASK_3, 0x20}, ++ {OP_WR, QM_REG_CMINTVOQMASK_4, 0x17}, ++ {OP_WR, QM_REG_CMINTVOQMASK_5, 0x80}, ++ {OP_WR, QM_REG_CMINTVOQMASK_6, 0x200}, ++ {OP_WR, QM_REG_CMINTVOQMASK_7, 0x0}, ++ {OP_WR, QM_REG_HWAEMPTYMASK_LSB, 0x1ff01ff}, ++ {OP_WR, QM_REG_HWAEMPTYMASK_MSB, 0x1ff01ff}, ++ {OP_WR, QM_REG_HWAEMPTYMASK_LSB_EXT_A, 0x1ff01ff}, ++ {OP_WR, QM_REG_HWAEMPTYMASK_MSB_EXT_A, 0x1ff01ff}, ++ {OP_WR, QM_REG_ENBYPVOQMASK, 0x13}, ++ {OP_WR, QM_REG_VOQCREDITAFULLTHR, 0x13f}, ++ {OP_WR, QM_REG_VOQINITCREDIT_0, 0x140}, ++ {OP_WR, QM_REG_VOQINITCREDIT_1, 0x140}, ++ {OP_ZR, QM_REG_VOQINITCREDIT_2, 0x2}, ++ {OP_WR, QM_REG_VOQINITCREDIT_4, 0xc0}, ++ {OP_ZR, QM_REG_VOQINITCREDIT_5, 0x7}, ++ {OP_WR, QM_REG_TASKCRDCOST_0, 0x48}, ++ {OP_WR, QM_REG_TASKCRDCOST_1, 0x48}, ++ {OP_ZR, QM_REG_TASKCRDCOST_2, 0x2}, ++ {OP_WR, QM_REG_TASKCRDCOST_4, 0x48}, ++ {OP_ZR, QM_REG_TASKCRDCOST_5, 0x7}, ++ {OP_WR, QM_REG_BYTECRDINITVAL, 0x8000}, ++ {OP_WR, QM_REG_BYTECRDCOST, 0x25e4}, ++ {OP_WR, QM_REG_BYTECREDITAFULLTHR, 0x7fff}, ++ {OP_WR, QM_REG_ENBYTECRD_LSB, 0xf000f}, ++ {OP_WR, QM_REG_ENBYTECRD_MSB, 0xf000f}, ++ {OP_WR, QM_REG_ENBYTECRD_LSB_EXT_A, 0xf000f}, ++ {OP_WR, QM_REG_ENBYTECRD_MSB_EXT_A, 0xf000f}, ++ {OP_WR, QM_REG_BYTECRDPORT_LSB, 0x0}, ++ {OP_WR, QM_REG_BYTECRDPORT_MSB, 0xffffffff}, ++ {OP_WR, QM_REG_BYTECRDPORT_LSB_EXT_A, 0x0}, ++ {OP_WR, QM_REG_BYTECRDPORT_MSB_EXT_A, 0xffffffff}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_0, 0x0}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_1, 0x2}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_2, 0x1}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_3, 0x3}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_4, 0x4}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_5, 0x6}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_6, 0x5}, ++ {OP_WR, QM_REG_PQ2PCIFUNC_7, 0x7}, ++ {OP_WR, QM_REG_CMINTEN, 0xff}, ++/* #define QM_COMMON_END 551 */ ++/* #define PBF_COMMON_START 572 */ ++ {OP_WR, PBF_REG_INIT, 0x1}, ++ {OP_WR, PBF_REG_INIT_P4, 0x1}, ++ {OP_WR, PBF_REG_MAC_LB_ENABLE, 0x1}, ++ {OP_WR, PBF_REG_IF_ENABLE_REG, 0x7fff}, ++ {OP_WR, PBF_REG_INIT_P4, 0x0}, ++ {OP_WR, PBF_REG_INIT, 0x0}, ++ {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P4, 0x0}, ++/* #define PBF_COMMON_END 573 */ ++/* #define PBF_PORT0_START 574 */ ++ {OP_WR, PBF_REG_INIT_P0, 0x1}, ++ {OP_WR, PBF_REG_MAC_IF0_ENABLE, 0x1}, ++ {OP_WR, PBF_REG_INIT_P0, 0x0}, ++ {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P0, 0x0}, ++/* #define PBF_PORT0_END 575 */ ++/* #define PBF_PORT1_START 576 */ ++ {OP_WR, PBF_REG_INIT_P1, 0x1}, ++ {OP_WR, PBF_REG_MAC_IF1_ENABLE, 0x1}, ++ {OP_WR, PBF_REG_INIT_P1, 0x0}, ++ {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P1, 0x0}, ++/* #define PBF_PORT1_END 577 */ ++/* #define XCM_COMMON_START 594 */ ++ {OP_WR, XCM_REG_XX_OVFL_EVNT_ID, 0x32}, ++ {OP_WR, XCM_REG_XQM_XCM_HDR_P, 0x3150020}, ++ {OP_WR, XCM_REG_XQM_XCM_HDR_S, 0x3150020}, ++ {OP_WR, XCM_REG_TM_XCM_HDR, 0x1000030}, ++ {OP_WR, XCM_REG_ERR_XCM_HDR, 0x8100000}, ++ {OP_WR, XCM_REG_ERR_EVNT_ID, 0x33}, ++ {OP_WR, XCM_REG_EXPR_EVNT_ID, 0x30}, ++ {OP_WR, XCM_REG_STOP_EVNT_ID, 0x31}, ++ {OP_WR, XCM_REG_STORM_WEIGHT, 0x3}, ++ {OP_WR, XCM_REG_TSEM_WEIGHT, 0x6}, ++ {OP_WR, XCM_REG_CSEM_WEIGHT, 0x3}, ++ {OP_WR, XCM_REG_USEM_WEIGHT, 0x3}, ++ {OP_WR, XCM_REG_DORQ_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_PBF_WEIGHT, 0x0}, ++ {OP_WR, XCM_REG_NIG0_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_CP_WEIGHT, 0x0}, ++ {OP_WR, XCM_REG_XSDM_WEIGHT, 0x6}, ++ {OP_WR, XCM_REG_XQM_P_WEIGHT, 0x4}, ++ {OP_WR, XCM_REG_XQM_S_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_TM_WEIGHT, 0x2}, ++ {OP_WR, XCM_REG_XCM_XQM_USE_Q, 0x1}, ++ {OP_WR, XCM_REG_XQM_BYP_ACT_UPD, 0x6}, ++ {OP_WR, XCM_REG_UNA_GT_NXT_Q, 0x0}, ++ {OP_WR, XCM_REG_AUX1_Q, 0x2}, ++ {OP_WR, XCM_REG_AUX_CNT_FLG_Q_19, 0x1}, ++ {OP_WR, XCM_REG_GR_ARB_TYPE, 0x1}, ++ {OP_WR, XCM_REG_GR_LD0_PR, 0x1}, ++ {OP_WR, XCM_REG_GR_LD1_PR, 0x2}, ++ {OP_WR, XCM_REG_CFC_INIT_CRD, 0x1}, ++ {OP_WR, XCM_REG_FIC0_INIT_CRD, 0x40}, ++ {OP_WR, XCM_REG_FIC1_INIT_CRD, 0x40}, ++ {OP_WR, XCM_REG_TM_INIT_CRD, 0x4}, ++ {OP_WR, XCM_REG_XQM_INIT_CRD, 0x20}, ++ {OP_WR, XCM_REG_XX_INIT_CRD, 0x2}, ++ {OP_WR, XCM_REG_XX_MSG_NUM, 0x20}, ++ {OP_ZR, XCM_REG_XX_TABLE, 0x12}, ++ {OP_SW, XCM_REG_XX_DESCR_TABLE, 0x1f032b}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_0, 0xf}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_1, 0x7}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_2, 0xb}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_3, 0xe}, ++ {OP_WR, XCM_REG_N_SM_CTX_LD_4, 0xe}, ++ {OP_ZR, XCM_REG_N_SM_CTX_LD_5, 0x3}, ++ {OP_WR, XCM_REG_XCM_REG0_SZ, 0x4}, ++ {OP_WR, XCM_REG_XCM_STORM0_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_STORM1_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_XQM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_STORM_XCM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XQM_XCM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XSDM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_TM_XCM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_TM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_TSEM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CSEM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_USEM_IFEN, 0x1}, ++ {OP_WR, XCM_REG_DORQ_IFEN, 0x1}, ++ {OP_WR, XCM_REG_PBF_IFEN, 0x1}, ++ {OP_WR, XCM_REG_NIG0_IFEN, 0x1}, ++ {OP_WR, XCM_REG_NIG1_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_AG_WR_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_AG_RD_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_SM_WR_IFEN, 0x1}, ++ {OP_WR, XCM_REG_CDU_SM_RD_IFEN, 0x1}, ++ {OP_WR, XCM_REG_XCM_CFC_IFEN, 0x1}, ++/* #define XCM_COMMON_END 595 */ ++/* #define XCM_FUNC0_START 600 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD00, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD10, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define XCM_FUNC0_END 601 */ ++/* #define XCM_FUNC1_START 602 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD01, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD11, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define XCM_FUNC1_END 603 */ ++/* #define XCM_FUNC2_START 604 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD00, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD10, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define XCM_FUNC2_END 605 */ ++/* #define XCM_FUNC3_START 606 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD01, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD11, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define XCM_FUNC3_END 607 */ ++/* #define XCM_FUNC4_START 608 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD00, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD10, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define XCM_FUNC4_END 609 */ ++/* #define XCM_FUNC5_START 610 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD01, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD11, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define XCM_FUNC5_END 611 */ ++/* #define XCM_FUNC6_START 612 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD00, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD10, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_0, 0x0}, ++/* #define XCM_FUNC6_END 613 */ ++/* #define XCM_FUNC7_START 614 */ ++ {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8}, ++ {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD01, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_CMD11, 0x2}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff}, ++ {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff}, ++ {OP_WR, XCM_REG_PHYS_QNUM3_1, 0x0}, ++/* #define XCM_FUNC7_END 615 */ ++/* #define XSEM_COMMON_START 616 */ ++ {OP_ZP, XSEM_REG_INT_TABLE, 0xc00000}, ++ {OP_WR_64, XSEM_REG_INT_TABLE + 0x3a8, 0xb034a}, ++ {OP_ZP, XSEM_REG_PRAM, 0x32fd0000}, ++ {OP_ZP, XSEM_REG_PRAM + 0x8000, 0x357e0cc0}, ++ {OP_ZP, XSEM_REG_PRAM + 0x10000, 0x3ae41a20}, ++ {OP_ZP, XSEM_REG_PRAM + 0x18000, 0x39cf28da}, ++ {OP_ZP, XSEM_REG_PRAM + 0x20000, 0x1c3c374e}, ++ {OP_WR_64, XSEM_REG_PRAM + 0x23710, 0x391e034c}, ++ {OP_RD, XSEM_REG_MSG_NUM_FIC0, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FIC1, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC0, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC1, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC2, 0x0}, ++ {OP_RD, XSEM_REG_MSG_NUM_FOC3, 0x0}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT0, 0x1}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT1, 0x2}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT2, 0x3}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT3, 0x0}, ++ {OP_WR, XSEM_REG_ARB_ELEMENT4, 0x4}, ++ {OP_WR, XSEM_REG_ARB_CYCLE_SIZE, 0x1}, ++ {OP_WR, XSEM_REG_TS_0_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_1_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_2_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_3_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_4_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_5_AS, 0x3}, ++ {OP_WR, XSEM_REG_TS_6_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_7_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_8_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_9_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_10_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_11_AS, 0x3}, ++ {OP_WR, XSEM_REG_TS_12_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_13_AS, 0x1}, ++ {OP_WR, XSEM_REG_TS_14_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_15_AS, 0x0}, ++ {OP_WR, XSEM_REG_TS_16_AS, 0x4}, ++ {OP_WR, XSEM_REG_TS_17_AS, 0x3}, ++ {OP_ZR, XSEM_REG_TS_18_AS, 0x2}, ++ {OP_WR, XSEM_REG_ENABLE_IN, 0x3fff}, ++ {OP_WR, XSEM_REG_ENABLE_OUT, 0x3ff}, ++ {OP_WR, XSEM_REG_FIC0_DISABLE, 0x0}, ++ {OP_WR, XSEM_REG_FIC1_DISABLE, 0x0}, ++ {OP_WR, XSEM_REG_PAS_DISABLE, 0x0}, ++ {OP_WR, XSEM_REG_THREADS_LIST, 0xffff}, ++ {OP_ZR, XSEM_REG_PASSIVE_BUFFER, 0x800}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18bc0, 0x1}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18000, 0x0}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18040, 0x18}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x18080, 0xc}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x180c0, 0x66}, ++ {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18300, 0x7a120}, ++ {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18300, 0x138}, ++ {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18300, 0x1388}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4}, ++ {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18340, 0x1f4}, ++ {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18340, 0x0}, ++ {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18340, 0x5}, ++ {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18380, 0x4c4b4}, ++ {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500}, ++ {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x11480, 0x0}, ++ {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18380, 0x4c4b40}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x11480, 0x1}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x29c8, 0x4}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x29c8 + 0x10, 0x2034e}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x2080, 0x48}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x9020, 0xc8}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x9000, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x21a8, 0x86}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x2000, 0x20}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x23c8, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x23d0, 0x20350}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2498, 0x40352}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x2c50, 0x0}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x2c10, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2c08, 0x20356}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x3000, 0x20358}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3000 + 0x8, 0x100}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4040, 0x10}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x4000, 0x10035a}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x6ac0, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x6b00, 0x4}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x8408, 0x2036a}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c00, 0x10036c}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x1000000}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c40, 0x8037c}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x2000000}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c60, 0x80384}, ++/* #define XSEM_COMMON_END 617 */ ++/* #define XSEM_PORT0_START 618 */ ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xc000, 0xd8}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x24a8, 0x14}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x2548, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x2668, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x2788, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x28a8, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xa000, 0x28}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xa140, 0xc}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x29e0, 0x2038c}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5020, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5030, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5000, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5010, 0x2}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x5208, 0x1}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x6ac8, 0x2038e}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x6b10, 0x42}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x6d20, 0x4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xbcd0, 0x2}, ++/* #define XSEM_PORT0_END 619 */ ++/* #define XSEM_PORT1_START 620 */ ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xc360, 0xd8}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x24f8, 0x14}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x25d8, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x26f8, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x2818, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x2938, 0x24}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xa0a0, 0x28}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xa170, 0xc}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x29e8, 0x20390}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5028, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5038, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5008, 0x2}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5018, 0x2}, ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0x520c, 0x1}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x6ad0, 0x20392}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x6c18, 0x42}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x6d30, 0x4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xbcd8, 0x2}, ++/* #define XSEM_PORT1_END 621 */ ++/* #define XSEM_FUNC0_START 622 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6c0, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x29f0, 0x100394}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5048, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb000, 0x6}, ++/* #define XSEM_FUNC0_END 623 */ ++/* #define XSEM_FUNC1_START 624 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6c4, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2a30, 0x1003a4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5080, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb018, 0x6}, ++/* #define XSEM_FUNC1_END 625 */ ++/* #define XSEM_FUNC2_START 626 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6c8, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2a70, 0x1003b4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x50b8, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb030, 0x6}, ++/* #define XSEM_FUNC2_END 627 */ ++/* #define XSEM_FUNC3_START 628 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6cc, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2ab0, 0x1003c4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x50f0, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb048, 0x6}, ++/* #define XSEM_FUNC3_END 629 */ ++/* #define XSEM_FUNC4_START 630 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6d0, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2af0, 0x1003d4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5128, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb060, 0x6}, ++/* #define XSEM_FUNC4_END 631 */ ++/* #define XSEM_FUNC5_START 632 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6d4, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2b30, 0x1003e4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5160, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb078, 0x6}, ++/* #define XSEM_FUNC5_END 633 */ ++/* #define XSEM_FUNC6_START 634 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6d8, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2b70, 0x1003f4}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5198, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb090, 0x6}, ++/* #define XSEM_FUNC6_END 635 */ ++/* #define XSEM_FUNC7_START 636 */ ++ {OP_WR, XSEM_REG_FAST_MEMORY + 0xc6dc, 0x0}, ++ {OP_SW, XSEM_REG_FAST_MEMORY + 0x2bb0, 0x100404}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0x51d0, 0xe}, ++ {OP_ZR, XSEM_REG_FAST_MEMORY + 0xb0a8, 0x6}, ++/* #define XSEM_FUNC7_END 637 */ ++/* #define CDU_COMMON_START 638 */ ++ {OP_WR, CDU_REG_CDU_CONTROL0, 0x1}, ++ {OP_WR, CDU_REG_MF_MODE, 0x1}, ++ {OP_WR, CDU_REG_CDU_CHK_MASK0, 0x3d000}, ++ {OP_WR, CDU_REG_CDU_CHK_MASK1, 0x3d}, ++ {OP_WB, CDU_REG_L1TT, 0x2000414}, ++ {OP_WB, CDU_REG_MATT, 0x280614}, ++ {OP_ZR, CDU_REG_MATT + 0xa0, 0x18}, ++/* #define CDU_COMMON_END 639 */ ++/* #define DMAE_COMMON_START 660 */ ++ {OP_ZR, DMAE_REG_CMD_MEM, 0xe0}, ++ {OP_WR, DMAE_REG_CRC16C_INIT, 0x0}, ++ {OP_WR, DMAE_REG_CRC16T10_INIT, 0x1}, ++ {OP_WR, DMAE_REG_PXP_REQ_INIT_CRD, 0x2}, ++ {OP_WR, DMAE_REG_PCI_IFEN, 0x1}, ++ {OP_WR, DMAE_REG_GRC_IFEN, 0x1}, ++/* #define DMAE_COMMON_END 661 */ ++/* #define PXP_COMMON_START 682 */ ++ {OP_WB, PXP_REG_HST_INBOUND_INT + 0x400, 0x5063c}, ++ {OP_WB, PXP_REG_HST_INBOUND_INT, 0x50641}, ++ {OP_WB, PXP_REG_HST_INBOUND_INT + 0x20, 0x50646}, ++/* #define PXP_COMMON_END 683 */ ++/* #define CFC_COMMON_START 704 */ ++ {OP_ZR, CFC_REG_LINK_LIST, 0x100}, ++ {OP_WR, CFC_REG_CONTROL0, 0x10}, ++ {OP_WR, CFC_REG_DISABLE_ON_ERROR, 0x3fff}, ++ {OP_WR, CFC_REG_INTERFACES, 0x280000}, ++ {OP_WR, CFC_REG_LCREQ_WEIGHTS, 0x84924a}, ++ {OP_WR, CFC_REG_INTERFACES, 0x0}, ++/* #define CFC_COMMON_END 705 */ ++/* #define HC_FUNC0_START 732 */ ++ {OP_WR, HC_REG_CONFIG_0, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P0, 0x0}, ++ {OP_WR, HC_REG_ATTN_NUM_P0, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT, 0x2}, ++ {OP_WR, HC_REG_VQID_0, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_0, 0x0}, ++ {OP_ZR, HC_REG_P0_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND, 0x2}, ++ {OP_WR, HC_REG_CONFIG_0, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a}, ++/* #define HC_FUNC0_END 733 */ ++/* #define HC_FUNC1_START 734 */ ++ {OP_WR, HC_REG_CONFIG_1, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P1, 0x1}, ++ {OP_WR, HC_REG_ATTN_NUM_P1, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX + 0x4, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT + 0x8, 0x2}, ++ {OP_WR, HC_REG_VQID_1, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_1, 0x0}, ++ {OP_ZR, HC_REG_P1_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK + 0x4, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND + 0x8, 0x2}, ++ {OP_WR, HC_REG_CONFIG_1, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a}, ++/* #define HC_FUNC1_END 735 */ ++/* #define HC_FUNC2_START 736 */ ++ {OP_WR, HC_REG_CONFIG_0, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P0, 0x2}, ++ {OP_WR, HC_REG_ATTN_NUM_P0, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT, 0x2}, ++ {OP_WR, HC_REG_VQID_0, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_0, 0x0}, ++ {OP_ZR, HC_REG_P0_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND, 0x2}, ++ {OP_WR, HC_REG_CONFIG_0, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a}, ++/* #define HC_FUNC2_END 737 */ ++/* #define HC_FUNC3_START 738 */ ++ {OP_WR, HC_REG_CONFIG_1, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P1, 0x3}, ++ {OP_WR, HC_REG_ATTN_NUM_P1, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX + 0x4, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT + 0x8, 0x2}, ++ {OP_WR, HC_REG_VQID_1, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_1, 0x0}, ++ {OP_ZR, HC_REG_P1_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK + 0x4, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND + 0x8, 0x2}, ++ {OP_WR, HC_REG_CONFIG_1, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a}, ++/* #define HC_FUNC3_END 739 */ ++/* #define HC_FUNC4_START 740 */ ++ {OP_WR, HC_REG_CONFIG_0, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P0, 0x4}, ++ {OP_WR, HC_REG_ATTN_NUM_P0, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT, 0x2}, ++ {OP_WR, HC_REG_VQID_0, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_0, 0x0}, ++ {OP_ZR, HC_REG_P0_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND, 0x2}, ++ {OP_WR, HC_REG_CONFIG_0, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a}, ++/* #define HC_FUNC4_END 741 */ ++/* #define HC_FUNC5_START 742 */ ++ {OP_WR, HC_REG_CONFIG_1, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P1, 0x5}, ++ {OP_WR, HC_REG_ATTN_NUM_P1, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX + 0x4, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT + 0x8, 0x2}, ++ {OP_WR, HC_REG_VQID_1, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_1, 0x0}, ++ {OP_ZR, HC_REG_P1_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK + 0x4, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND + 0x8, 0x2}, ++ {OP_WR, HC_REG_CONFIG_1, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a}, ++/* #define HC_FUNC5_END 743 */ ++/* #define HC_FUNC6_START 744 */ ++ {OP_WR, HC_REG_CONFIG_0, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P0, 0x6}, ++ {OP_WR, HC_REG_ATTN_NUM_P0, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT, 0x2}, ++ {OP_WR, HC_REG_VQID_0, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_0, 0x0}, ++ {OP_ZR, HC_REG_P0_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND, 0x2}, ++ {OP_WR, HC_REG_CONFIG_0, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a}, ++/* #define HC_FUNC6_END 745 */ ++/* #define HC_FUNC7_START 746 */ ++ {OP_WR, HC_REG_CONFIG_1, 0x1080}, ++ {OP_WR, HC_REG_FUNC_NUM_P1, 0x7}, ++ {OP_WR, HC_REG_ATTN_NUM_P1, 0x10}, ++ {OP_WR, HC_REG_ATTN_IDX + 0x4, 0x0}, ++ {OP_ZR, HC_REG_ATTN_BIT + 0x8, 0x2}, ++ {OP_WR, HC_REG_VQID_1, 0x2b5}, ++ {OP_WR, HC_REG_PCI_CONFIG_1, 0x0}, ++ {OP_ZR, HC_REG_P1_PROD_CONS, 0x4a}, ++ {OP_WR, HC_REG_INT_MASK + 0x4, 0x1ffff}, ++ {OP_ZR, HC_REG_PBA_COMMAND + 0x8, 0x2}, ++ {OP_WR, HC_REG_CONFIG_1, 0x1a80}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a}, ++ {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a}, ++/* #define HC_FUNC7_END 747 */ ++/* #define PXP2_COMMON_START 748 */ ++ {OP_WR, PXP2_REG_RQ_DRAM_ALIGN, 0x1}, ++ {OP_WR, PXP2_REG_PGL_CONTROL0, 0xe38340}, ++ {OP_WR, PXP2_REG_PGL_CONTROL1, 0x3c10}, ++ {OP_WR, PXP2_REG_RQ_ELT_DISABLE, 0x1}, ++ {OP_WR, PXP2_REG_WR_REV_MODE, 0x0}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_0, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_1, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_TSDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_1, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_0, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_1, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_2, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_3, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_4, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_5, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_6, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_CSDM_7, 0xffffffff}, ++ {OP_WR, PXP2_REG_PGL_INT_XSDM_0, 0xff802000}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_0, 0xf0005000}, ++ {OP_WR, PXP2_REG_PGL_INT_USDM_1, 0xf0001000}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ6, 0x8}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ9, 0x8}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ10, 0x8}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ11, 0x2}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ17, 0x4}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ18, 0x5}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ19, 0x4}, ++ {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ22, 0x0}, ++ {OP_WR, PXP2_REG_RD_START_INIT, 0x1}, ++ {OP_WR, PXP2_REG_WR_DMAE_TH, 0x3f}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD0, 0x40}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD1, 0x1808}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD2, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD3, 0x803}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD4, 0x40}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD5, 0x3}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD6, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD7, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD8, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD9, 0x10003}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD10, 0x803}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD11, 0x803}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD12, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD13, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD14, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD15, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD16, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD17, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD18, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD19, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD20, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD22, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD23, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD24, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD25, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD26, 0x3}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_ADD27, 0x3}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_ADD28, 0x2403}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_ADD29, 0x2f}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_ADD30, 0x9}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND0, 0x19}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB1, 0x184}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB2, 0x183}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB3, 0x306}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND4, 0x19}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND5, 0x6}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB6, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB7, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB8, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB9, 0xc86}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB10, 0x306}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB11, 0x306}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND12, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND13, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND14, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND15, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND16, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND17, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND18, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND19, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND20, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND22, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND23, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND24, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND25, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND26, 0x6}, ++ {OP_WR, PXP2_REG_RQ_BW_RD_UBOUND27, 0x6}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_UB28, 0x306}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_UBOUND29, 0x13}, ++ {OP_WR, PXP2_REG_RQ_BW_WR_UBOUND30, 0x6}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_L1, 0x1004}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_L2, 0x1004}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_RD, 0x106440}, ++ {OP_WR, PXP2_REG_PSWRQ_BW_WR, 0x106440}, ++ {OP_WR, PXP2_REG_RQ_ILT_MODE, 0x1}, ++ {OP_WR, PXP2_REG_RQ_RBC_DONE, 0x1}, ++/* #define PXP2_COMMON_END 749 */ ++/* #define MISC_AEU_COMMON_START 770 */ ++ {OP_ZR, MISC_REG_AEU_GENERAL_ATTN_0, 0x16}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_NIG_0, 0x55540000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_NIG_0, 0x55555555}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_NIG_0, 0x5555}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_NIG_0, 0xf0000000}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_PXP_0, 0x55540000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_PXP_0, 0x55555555}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_PXP_0, 0x5555}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_PXP_0, 0xf0000000}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_NIG_1, 0x55540000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_NIG_1, 0x55555555}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_NIG_1, 0x5555}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_NIG_1, 0xf0000000}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_PXP_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_PXP_1, 0x10000}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_PXP_1, 0x5014}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_PXP_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0xc00}, ++ {OP_WR, MISC_REG_AEU_GENERAL_MASK, 0x3}, ++/* #define MISC_AEU_COMMON_END 771 */ ++/* #define MISC_AEU_PORT0_START 772 */ ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0, 0xff5c0000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_0, 0xfff55fff}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_FUNC_0_OUT_0, 0xffff}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_0, 0xf00003e0}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_1, 0xa000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE3_FUNC_0_OUT_1, 0x5}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_2, 0xfe00000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_3, 0x7}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_4, 0x400}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_5, 0x3}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_5, 0x1000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_6, 0x3}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_6, 0x4000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_7, 0x3}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_7, 0x10000}, ++ {OP_ZR, MISC_REG_AEU_INVERTER_1_FUNC_0, 0x4}, ++/* #define MISC_AEU_PORT0_END 773 */ ++/* #define MISC_AEU_PORT1_START 774 */ ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0, 0xff5c0000}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_0, 0xfff55fff}, ++ {OP_WR, MISC_REG_AEU_ENABLE3_FUNC_1_OUT_0, 0xffff}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_0, 0xf00003e0}, ++ {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_1, 0x0}, ++ {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_1, 0xa000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE3_FUNC_1_OUT_1, 0x5}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_2, 0xfe00000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_3, 0x7}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_4, 0x800}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_5, 0x3}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_5, 0x2000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_6, 0x3}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_6, 0x8000}, ++ {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_7, 0x3}, ++ {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_7, 0x20000}, ++ {OP_ZR, MISC_REG_AEU_INVERTER_1_FUNC_1, 0x4}, ++/* #define MISC_AEU_PORT1_END 775 */ ++ ++}; ++ ++static const u16 init_ops_offsets_e1h[] = { ++ 0x0000, 0x0031, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0031, 0x0032, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0032, ++ 0x0056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0056, 0x008c, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x008c, 0x0090, 0x0090, 0x0094, 0x0094, 0x0098, 0x0098, 0x009c, 0x009c, ++ 0x00a0, 0x00a0, 0x00a4, 0x00a4, 0x00a8, 0x00a8, 0x00ac, 0x00ac, 0x00b1, ++ 0x00b1, 0x00b3, 0x00b3, 0x00b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x00b5, 0x0102, 0x0102, 0x010a, 0x010a, 0x0112, 0x0112, ++ 0x011b, 0x011b, 0x0124, 0x0124, 0x012d, 0x012d, 0x0136, 0x0136, 0x013f, ++ 0x013f, 0x0148, 0x0148, 0x0151, 0x0151, 0x015a, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x015a, 0x015f, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x015f, 0x0160, 0x0160, 0x0161, 0x0161, 0x0162, 0x0162, 0x0163, ++ 0x0163, 0x0164, 0x0164, 0x0165, 0x0165, 0x0166, 0x0166, 0x0167, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0167, 0x016c, 0x016c, 0x0179, 0x0179, 0x0186, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0186, 0x0187, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0187, 0x01be, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x01be, 0x01e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01e9, 0x021a, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x021a, 0x0221, 0x0221, 0x0228, 0x0228, 0x022f, 0x022f, ++ 0x0236, 0x0236, 0x023d, 0x023d, 0x0244, 0x0244, 0x024b, 0x024b, 0x0252, ++ 0x0252, 0x028a, 0x0000, 0x0000, 0x0000, 0x0000, 0x028a, 0x028e, 0x028e, ++ 0x0292, 0x0292, 0x0296, 0x0296, 0x029a, 0x029a, 0x029e, 0x029e, 0x02a2, ++ 0x02a2, 0x02a6, 0x02a6, 0x02aa, 0x02aa, 0x02fc, 0x02fc, 0x0313, 0x0313, ++ 0x032a, 0x032a, 0x032d, 0x032d, 0x0330, 0x0330, 0x0333, 0x0333, 0x0336, ++ 0x0336, 0x0339, 0x0339, 0x033c, 0x033c, 0x033f, 0x033f, 0x0342, 0x0342, ++ 0x0383, 0x0383, 0x038a, 0x038a, 0x0391, 0x0391, 0x0395, 0x0395, 0x0399, ++ 0x0399, 0x039d, 0x039d, 0x03a1, 0x03a1, 0x03a5, 0x03a5, 0x03a9, 0x03a9, ++ 0x03ad, 0x03ad, 0x03b1, 0x03b1, 0x03b2, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b2, 0x03c4, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x03c4, 0x03d9, 0x03d9, 0x03dc, 0x03dc, 0x03df, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03df, 0x040c, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x040c, 0x050f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x050f, 0x0516, 0x0516, 0x051a, ++ 0x051a, 0x051e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x051e, 0x055e, 0x0000, 0x0000, 0x0000, 0x0000, 0x055e, 0x0567, 0x0567, ++ 0x0570, 0x0570, 0x0579, 0x0579, 0x0582, 0x0582, 0x058b, 0x058b, 0x0594, ++ 0x0594, 0x059d, 0x059d, 0x05a6, 0x05a6, 0x05ff, 0x05ff, 0x0611, 0x0611, ++ 0x0623, 0x0623, 0x0627, 0x0627, 0x062b, 0x062b, 0x062f, 0x062f, 0x0633, ++ 0x0633, 0x0637, 0x0637, 0x063b, 0x063b, 0x063f, 0x063f, 0x0643, 0x0643, ++ 0x064a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x064a, 0x0650, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0650, 0x0653, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0653, 0x0659, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0659, 0x0668, 0x0668, 0x0677, 0x0677, 0x0686, ++ 0x0686, 0x0695, 0x0695, 0x06a4, 0x06a4, 0x06b3, 0x06b3, 0x06c2, 0x06c2, ++ 0x06d1, 0x06d1, 0x0742, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0742, 0x0755, 0x0755, 0x0766, ++ 0x0766, 0x0777, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, ++ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 ++}; ++ ++static const u32 init_data_e1h[] = { ++ 0x00010000, 0x000204c0, 0x00030980, 0x00040e40, 0x00051300, 0x000617c0, ++ 0x00071c80, 0x00082140, 0x00092600, 0x000a2ac0, 0x000b2f80, 0x000c3440, ++ 0x000d3900, 0x000e3dc0, 0x000f4280, 0x00104740, 0x00114c00, 0x001250c0, ++ 0x00135580, 0x00145a40, 0x00155f00, 0x001663c0, 0x00176880, 0x00186d40, ++ 0x00197200, 0x001a76c0, 0x001b7b80, 0x001c8040, 0x001d8500, 0x001e89c0, ++ 0x001f8e80, 0x00209340, 0x00002000, 0x00004000, 0x00006000, 0x00008000, ++ 0x0000a000, 0x0000c000, 0x0000e000, 0x00010000, 0x00012000, 0x00014000, ++ 0x00016000, 0x00018000, 0x0001a000, 0x0001c000, 0x0001e000, 0x00020000, ++ 0x00022000, 0x00024000, 0x00026000, 0x00028000, 0x0002a000, 0x0002c000, ++ 0x0002e000, 0x00030000, 0x00032000, 0x00034000, 0x00036000, 0x00038000, ++ 0x0003a000, 0x0003c000, 0x0003e000, 0x00040000, 0x00042000, 0x00044000, ++ 0x00046000, 0x00048000, 0x0004a000, 0x0004c000, 0x0004e000, 0x00050000, ++ 0x00052000, 0x00054000, 0x00056000, 0x00058000, 0x0005a000, 0x0005c000, ++ 0x0005e000, 0x00060000, 0x00062000, 0x00064000, 0x00066000, 0x00068000, ++ 0x0006a000, 0x0006c000, 0x0006e000, 0x00070000, 0x00072000, 0x00074000, ++ 0x00076000, 0x00078000, 0x0007a000, 0x0007c000, 0x0007e000, 0x00080000, ++ 0x00082000, 0x00084000, 0x00086000, 0x00088000, 0x0008a000, 0x0008c000, ++ 0x0008e000, 0x00090000, 0x00092000, 0x00094000, 0x00096000, 0x00098000, ++ 0x0009a000, 0x0009c000, 0x0009e000, 0x000a0000, 0x000a2000, 0x000a4000, ++ 0x000a6000, 0x000a8000, 0x000aa000, 0x000ac000, 0x000ae000, 0x000b0000, ++ 0x000b2000, 0x000b4000, 0x000b6000, 0x000b8000, 0x000ba000, 0x000bc000, ++ 0x000be000, 0x000c0000, 0x000c2000, 0x000c4000, 0x000c6000, 0x000c8000, ++ 0x000ca000, 0x000cc000, 0x000ce000, 0x000d0000, 0x000d2000, 0x000d4000, ++ 0x000d6000, 0x000d8000, 0x000da000, 0x000dc000, 0x000de000, 0x000e0000, ++ 0x000e2000, 0x000e4000, 0x000e6000, 0x000e8000, 0x000ea000, 0x000ec000, ++ 0x000ee000, 0x000f0000, 0x000f2000, 0x000f4000, 0x000f6000, 0x000f8000, ++ 0x000fa000, 0x000fc000, 0x000fe000, 0x00100000, 0x00102000, 0x00104000, ++ 0x00106000, 0x00108000, 0x0010a000, 0x0010c000, 0x0010e000, 0x00110000, ++ 0x00112000, 0x00114000, 0x00116000, 0x00118000, 0x0011a000, 0x0011c000, ++ 0x0011e000, 0x00120000, 0x00122000, 0x00124000, 0x00126000, 0x00128000, ++ 0x0012a000, 0x0012c000, 0x0012e000, 0x00130000, 0x00132000, 0x00134000, ++ 0x00136000, 0x00138000, 0x0013a000, 0x0013c000, 0x0013e000, 0x00140000, ++ 0x00142000, 0x00144000, 0x00146000, 0x00148000, 0x0014a000, 0x0014c000, ++ 0x0014e000, 0x00150000, 0x00152000, 0x00154000, 0x00156000, 0x00158000, ++ 0x0015a000, 0x0015c000, 0x0015e000, 0x00160000, 0x00162000, 0x00164000, ++ 0x00166000, 0x00168000, 0x0016a000, 0x0016c000, 0x0016e000, 0x00170000, ++ 0x00172000, 0x00174000, 0x00176000, 0x00178000, 0x0017a000, 0x0017c000, ++ 0x0017e000, 0x00180000, 0x00182000, 0x00184000, 0x00186000, 0x00188000, ++ 0x0018a000, 0x0018c000, 0x0018e000, 0x00190000, 0x00192000, 0x00194000, ++ 0x00196000, 0x00198000, 0x0019a000, 0x0019c000, 0x0019e000, 0x001a0000, ++ 0x001a2000, 0x001a4000, 0x001a6000, 0x001a8000, 0x001aa000, 0x001ac000, ++ 0x001ae000, 0x001b0000, 0x001b2000, 0x001b4000, 0x001b6000, 0x001b8000, ++ 0x001ba000, 0x001bc000, 0x001be000, 0x001c0000, 0x001c2000, 0x001c4000, ++ 0x001c6000, 0x001c8000, 0x001ca000, 0x001cc000, 0x001ce000, 0x001d0000, ++ 0x001d2000, 0x001d4000, 0x001d6000, 0x001d8000, 0x001da000, 0x001dc000, ++ 0x001de000, 0x001e0000, 0x001e2000, 0x001e4000, 0x001e6000, 0x001e8000, ++ 0x001ea000, 0x001ec000, 0x001ee000, 0x001f0000, 0x001f2000, 0x001f4000, ++ 0x001f6000, 0x001f8000, 0x001fa000, 0x001fc000, 0x001fe000, 0x00200000, ++ 0x00202000, 0x00204000, 0x00206000, 0x00208000, 0x0020a000, 0x0020c000, ++ 0x0020e000, 0x00210000, 0x00212000, 0x00214000, 0x00216000, 0x00218000, ++ 0x0021a000, 0x0021c000, 0x0021e000, 0x00220000, 0x00222000, 0x00224000, ++ 0x00226000, 0x00228000, 0x0022a000, 0x0022c000, 0x0022e000, 0x00230000, ++ 0x00232000, 0x00234000, 0x00236000, 0x00238000, 0x0023a000, 0x0023c000, ++ 0x0023e000, 0x00240000, 0x00242000, 0x00244000, 0x00246000, 0x00248000, ++ 0x0024a000, 0x0024c000, 0x0024e000, 0x00250000, 0x00252000, 0x00254000, ++ 0x00256000, 0x00258000, 0x0025a000, 0x0025c000, 0x0025e000, 0x00260000, ++ 0x00262000, 0x00264000, 0x00266000, 0x00268000, 0x0026a000, 0x0026c000, ++ 0x0026e000, 0x00270000, 0x00272000, 0x00274000, 0x00276000, 0x00278000, ++ 0x0027a000, 0x0027c000, 0x0027e000, 0x00280000, 0x00282000, 0x00284000, ++ 0x00286000, 0x00288000, 0x0028a000, 0x0028c000, 0x0028e000, 0x00290000, ++ 0x00292000, 0x00294000, 0x00296000, 0x00298000, 0x0029a000, 0x0029c000, ++ 0x0029e000, 0x002a0000, 0x002a2000, 0x002a4000, 0x002a6000, 0x002a8000, ++ 0x002aa000, 0x002ac000, 0x002ae000, 0x002b0000, 0x002b2000, 0x002b4000, ++ 0x002b6000, 0x002b8000, 0x002ba000, 0x002bc000, 0x002be000, 0x002c0000, ++ 0x002c2000, 0x002c4000, 0x002c6000, 0x002c8000, 0x002ca000, 0x002cc000, ++ 0x002ce000, 0x002d0000, 0x002d2000, 0x002d4000, 0x002d6000, 0x002d8000, ++ 0x002da000, 0x002dc000, 0x002de000, 0x002e0000, 0x002e2000, 0x002e4000, ++ 0x002e6000, 0x002e8000, 0x002ea000, 0x002ec000, 0x002ee000, 0x002f0000, ++ 0x002f2000, 0x002f4000, 0x002f6000, 0x002f8000, 0x002fa000, 0x002fc000, ++ 0x002fe000, 0x00300000, 0x00302000, 0x00304000, 0x00306000, 0x00308000, ++ 0x0030a000, 0x0030c000, 0x0030e000, 0x00310000, 0x00312000, 0x00314000, ++ 0x00316000, 0x00318000, 0x0031a000, 0x0031c000, 0x0031e000, 0x00320000, ++ 0x00322000, 0x00324000, 0x00326000, 0x00328000, 0x0032a000, 0x0032c000, ++ 0x0032e000, 0x00330000, 0x00332000, 0x00334000, 0x00336000, 0x00338000, ++ 0x0033a000, 0x0033c000, 0x0033e000, 0x00340000, 0x00342000, 0x00344000, ++ 0x00346000, 0x00348000, 0x0034a000, 0x0034c000, 0x0034e000, 0x00350000, ++ 0x00352000, 0x00354000, 0x00356000, 0x00358000, 0x0035a000, 0x0035c000, ++ 0x0035e000, 0x00360000, 0x00362000, 0x00364000, 0x00366000, 0x00368000, ++ 0x0036a000, 0x0036c000, 0x0036e000, 0x00370000, 0x00372000, 0x00374000, ++ 0x00376000, 0x00378000, 0x0037a000, 0x0037c000, 0x0037e000, 0x00380000, ++ 0x00382000, 0x00384000, 0x00386000, 0x00388000, 0x0038a000, 0x0038c000, ++ 0x0038e000, 0x00390000, 0x00392000, 0x00394000, 0x00396000, 0x00398000, ++ 0x0039a000, 0x0039c000, 0x0039e000, 0x003a0000, 0x003a2000, 0x003a4000, ++ 0x003a6000, 0x003a8000, 0x003aa000, 0x003ac000, 0x003ae000, 0x003b0000, ++ 0x003b2000, 0x003b4000, 0x003b6000, 0x003b8000, 0x003ba000, 0x003bc000, ++ 0x003be000, 0x003c0000, 0x003c2000, 0x003c4000, 0x003c6000, 0x003c8000, ++ 0x003ca000, 0x003cc000, 0x003ce000, 0x003d0000, 0x003d2000, 0x003d4000, ++ 0x003d6000, 0x003d8000, 0x003da000, 0x003dc000, 0x003de000, 0x003e0000, ++ 0x003e2000, 0x003e4000, 0x003e6000, 0x003e8000, 0x003ea000, 0x003ec000, ++ 0x003ee000, 0x003f0000, 0x003f2000, 0x003f4000, 0x003f6000, 0x003f8000, ++ 0x003fa000, 0x003fc000, 0x003fe000, 0x003fe001, 0x00000000, 0x000001ff, ++ 0x00000200, 0x00007ff8, 0x00007ff8, 0x00000cdf, 0x00001500, 0x00000001, ++ 0x00000001, 0x00000001, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, ++ 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, ++ 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, ++ 0xffffffff, 0x00000003, 0x00bebc20, 0xffffffff, 0x00000000, 0xffffffff, ++ 0x00000000, 0xffffffff, 0x00000003, 0x00bebc20, 0xffffffff, 0x00000000, ++ 0xffffffff, 0x00000000, 0xffffffff, 0x00000003, 0x00bebc20, 0xffffffff, ++ 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000003, 0x00bebc20, ++ 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000003, ++ 0x00bebc20, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, ++ 0x00000003, 0x00bebc20, 0x00002000, 0x000040c0, 0x00006180, 0x00008240, ++ 0x0000a300, 0x0000c3c0, 0x0000e480, 0x00010540, 0x00012600, 0x000146c0, ++ 0x00016780, 0x00018840, 0x0001a900, 0x0001c9c0, 0x0001ea80, 0x00020b40, ++ 0x00022c00, 0x00024cc0, 0x00026d80, 0x00028e40, 0x0002af00, 0x0002cfc0, ++ 0x0002f080, 0x00031140, 0x00033200, 0x000352c0, 0x00037380, 0x00039440, ++ 0x0003b500, 0x0003d5c0, 0x0003f680, 0x00041740, 0x00043800, 0x000458c0, ++ 0x00047980, 0x00049a40, 0x00008000, 0x00010380, 0x00018700, 0x00020a80, ++ 0x00028e00, 0x00031180, 0x00039500, 0x00041880, 0x00049c00, 0x00051f80, ++ 0x0005a300, 0x00062680, 0x0006aa00, 0x00072d80, 0x0007b100, 0x00083480, ++ 0x0008b800, 0x00093b80, 0x0009bf00, 0x000a4280, 0x000ac600, 0x000b4980, ++ 0x000bcd00, 0x000c5080, 0x000cd400, 0x000d5780, 0x000ddb00, 0x00007ff8, ++ 0x00007ff8, 0x0000193c, 0x00001500, 0x00001900, 0x00000028, 0x00100000, ++ 0x00000000, 0x00000000, 0xffffffff, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x00007ff8, ++ 0x00007ff8, 0x000005c7, 0x00001500, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, ++ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x00001000, 0x00002080, 0x00003100, 0x00004180, 0x00005200, ++ 0x00006280, 0x00007300, 0x00008380, 0x00009400, 0x0000a480, 0x0000b500, ++ 0x0000c580, 0x0000d600, 0x0000e680, 0x0000f700, 0x00010780, 0x00011800, ++ 0x00012880, 0x00013900, 0x00014980, 0x00015a00, 0x00016a80, 0x00017b00, ++ 0x00018b80, 0x00019c00, 0x0001ac80, 0x0001bd00, 0x0001cd80, 0x0001de00, ++ 0x0001ee80, 0x0001ff00, 0x00007ff8, 0x00007ff8, 0x0000112e, 0x00003500, ++ 0x10000000, 0x000028ad, 0x00000000, 0x00010001, 0x00150005, 0xccccccc5, ++ 0xffffffff, 0xffffffff, 0x7058103c, 0x00000000, 0x00000000, 0x00000001, ++ 0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, ++ 0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, ++ 0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, 0x00000000, 0xffffffff, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, ++ 0x40000000, 0x40000000, 0x000e0232, 0x011600d6, 0x00100000, 0x00000000, ++ 0x00720236, 0x012300f3, 0x00100000, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, ++ 0xfffffff3, 0x318fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x30efffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, ++ 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, ++ 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, ++ 0xfffffff7, 0x31efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x302fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x310fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, ++ 0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff, ++ 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, ++ 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x30efffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, ++ 0xfffffff5, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x31efffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x310fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, ++ 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, ++ 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, ++ 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0010cf3c, 0xcdcdcdcd, 0xffffff97, 0x056fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cc000, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x310fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, ++ 0xfffffff3, 0x320fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, ++ 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, ++ 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xffffff8a, 0x042fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, ++ 0xffffff97, 0x05cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, ++ 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x310fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x316fffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, ++ 0xfffffff1, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffffff6, 0x30bfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf314, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, ++ 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x31cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, ++ 0xfffffff0, 0x307fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, ++ 0x0040cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0002cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0010cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0000cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0004cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0020cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0001cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0008cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, ++ 0xcf3cf3cc, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, ++ 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, ++ 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, ++ 0x0040cf3c, 0xcdcdcdcd, 0x000c0000, 0x000700c0, 0x00028130, 0x000b8158, ++ 0x00020210, 0x00010230, 0x000f0240, 0x00010330, 0x00080000, 0x00080080, ++ 0x00028100, 0x000b8128, 0x000201e0, 0x00010200, 0x00070210, 0x00020280, ++ 0x000f0000, 0x000800f0, 0x00028170, 0x000b8198, 0x00020250, 0x00010270, ++ 0x000b8280, 0x00080338, 0x00100000, 0x00080100, 0x00028180, 0x000b81a8, ++ 0x00020260, 0x00018280, 0x000e8298, 0x00080380, 0x000b0000, 0x000100b0, ++ 0x000280c0, 0x000580e8, 0x00020140, 0x00010160, 0x000e0170, 0x00038250, ++ 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000, 0xcccccccc, ++ 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000, 0xcccccccc, 0xcccccccc, ++ 0xcccccccc, 0xcccccccc, 0x04002000 ++}; ++ ++static const u8 tsem_int_table_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfb, 0x51, ++ 0xcf, 0xc0, 0xf0, 0x03, 0x8a, 0x59, 0x05, 0x19, 0x18, 0xf4, 0x84, 0x11, ++ 0x7c, 0x7a, 0x60, 0x7e, 0x4e, 0xca, 0xf4, 0x3b, 0xf2, 0x32, 0x30, 0x38, ++ 0x03, 0xb1, 0x2b, 0x10, 0x37, 0x00, 0xf1, 0x61, 0x6e, 0x06, 0x86, 0x23, ++ 0xdc, 0xc4, 0xeb, 0x3f, 0x2b, 0x8f, 0x60, 0x07, 0xca, 0x32, 0x30, 0xd4, ++ 0x02, 0xf1, 0x7e, 0x69, 0x06, 0x06, 0x2b, 0x39, 0x84, 0xb8, 0xa1, 0x02, ++ 0x03, 0xc3, 0x12, 0x20, 0x3f, 0x0d, 0x2a, 0xf6, 0x1a, 0x48, 0x17, 0xca, ++ 0x53, 0xe6, 0xee, 0xc1, 0x82, 0x55, 0x54, 0x31, 0xc5, 0x14, 0x95, 0x11, ++ 0x6c, 0x55, 0x2c, 0xf2, 0xc8, 0x58, 0x0d, 0x4d, 0xbe, 0x41, 0x19, 0x95, ++ 0xaf, 0x4e, 0x40, 0xff, 0x40, 0xe3, 0x64, 0x1d, 0x54, 0xfe, 0x04, 0x2d, ++ 0x08, 0xfd, 0x5e, 0x1b, 0x42, 0xa7, 0xa0, 0xc9, 0x4f, 0x84, 0xca, 0xbb, ++ 0x42, 0xfd, 0x95, 0xaa, 0x83, 0xdd, 0x5c, 0x37, 0x22, 0xfd, 0x9d, 0xc6, ++ 0x82, 0xca, 0x4f, 0x40, 0xe3, 0xb7, 0x30, 0xa2, 0xf2, 0xcd, 0x38, 0xd0, ++ 0xdc, 0x0f, 0x55, 0x0f, 0x00, 0x00, 0x17, 0x4b, 0x67, 0xc8, 0x03, 0x00, ++ 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 tsem_pram_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, ++ 0x0d, 0x78, 0x54, 0xd5, 0xb5, 0xe8, 0x3e, 0x3f, 0x73, 0xe6, 0xcc, 0xe4, ++ 0xcc, 0xe4, 0x24, 0x24, 0x61, 0xc2, 0xef, 0x24, 0x84, 0x10, 0x34, 0xe2, ++ 0x10, 0x22, 0x06, 0x4b, 0xeb, 0x09, 0x7f, 0x86, 0x9a, 0x7a, 0x07, 0xaa, ++ 0x98, 0x5a, 0xc5, 0x01, 0x23, 0x06, 0x08, 0x24, 0x52, 0xf5, 0xe1, 0xd3, ++ 0x7e, 0x99, 0x48, 0x02, 0x01, 0x11, 0x06, 0xb5, 0x34, 0x14, 0xd4, 0xe1, ++ 0x4f, 0x69, 0x2f, 0xb6, 0x91, 0x8b, 0x96, 0x5a, 0x8a, 0x03, 0x3e, 0x2d, ++ 0xb6, 0xbe, 0xef, 0x05, 0x9f, 0xb5, 0x7a, 0xb5, 0x7d, 0xd1, 0x52, 0xfc, ++ 0x29, 0x4a, 0xca, 0xbb, 0x52, 0xfb, 0xae, 0xad, 0x6f, 0xaf, 0xb5, 0xf7, ++ 0x4e, 0xce, 0x39, 0xcc, 0x90, 0xe0, 0x4f, 0xdb, 0xfb, 0xde, 0xa5, 0x9f, ++ 0xdd, 0xd9, 0xe7, 0xec, 0x9f, 0xb5, 0xd7, 0xdf, 0x5e, 0x6b, 0xed, 0xb5, ++ 0xcf, 0x78, 0x48, 0x3e, 0x29, 0xb8, 0x9c, 0x90, 0x4f, 0xe0, 0x1f, 0x2d, ++ 0xff, 0x97, 0x41, 0x08, 0x7d, 0xd4, 0x57, 0x7a, 0x74, 0x12, 0xcf, 0xba, ++ 0x98, 0x90, 0x9c, 0x3c, 0x2b, 0xde, 0x53, 0x4e, 0xc8, 0xd0, 0x3c, 0x2b, ++ 0x45, 0x2a, 0xe9, 0x73, 0x53, 0x0b, 0x7b, 0xa5, 0xfe, 0x7e, 0xa2, 0x3c, ++ 0x9c, 0x33, 0x2b, 0x04, 0xed, 0xda, 0xf2, 0xad, 0x10, 0xa1, 0x63, 0xb4, ++ 0xe5, 0xcc, 0x23, 0x31, 0x18, 0x2b, 0xd6, 0x40, 0x48, 0x01, 0x21, 0xaa, ++ 0x4e, 0xf0, 0x9f, 0x68, 0xef, 0x31, 0xe7, 0xea, 0xa4, 0x1c, 0x1f, 0xfd, ++ 0xf5, 0x13, 0xf1, 0x5e, 0x21, 0xa4, 0xdd, 0x2c, 0xce, 0x86, 0x7e, 0xee, ++ 0xf1, 0x09, 0x49, 0x12, 0x72, 0x89, 0xbd, 0x2e, 0x13, 0x22, 0xc6, 0xa4, ++ 0xfd, 0x7c, 0x02, 0xde, 0x12, 0xfa, 0x20, 0x8f, 0x10, 0x7f, 0x95, 0x9c, ++ 0xbc, 0xa2, 0x88, 0xc2, 0x5d, 0x92, 0x4c, 0x41, 0xdd, 0x08, 0x33, 0xb8, ++ 0x0f, 0x17, 0xbd, 0x52, 0x33, 0x86, 0xae, 0x63, 0x5d, 0xb5, 0x1c, 0xf1, ++ 0x86, 0xa1, 0xf7, 0xad, 0x84, 0x4c, 0x26, 0x64, 0x05, 0x8c, 0x45, 0xeb, ++ 0xeb, 0x26, 0x76, 0xd7, 0x8c, 0xc9, 0x83, 0xf7, 0x6a, 0x04, 0xde, 0xce, ++ 0x54, 0xf6, 0xb6, 0x6a, 0xb4, 0xbd, 0x51, 0x42, 0xb0, 0x7d, 0x70, 0x62, ++ 0x3c, 0xa5, 0x61, 0x3f, 0xcb, 0x28, 0xa4, 0xfd, 0x72, 0x18, 0x08, 0x24, ++ 0xa7, 0x6c, 0x51, 0x2d, 0x09, 0x12, 0x62, 0xce, 0xd0, 0xfa, 0xe1, 0xc2, ++ 0xff, 0xb7, 0x70, 0xfd, 0x06, 0x6f, 0xa7, 0x97, 0x38, 0xdf, 0x1b, 0x64, ++ 0xfd, 0x1f, 0x95, 0x09, 0x50, 0xeb, 0x25, 0xd1, 0x8b, 0xe8, 0xf8, 0x53, ++ 0x5d, 0xef, 0xcb, 0x66, 0xbd, 0x0d, 0xe3, 0x1a, 0x84, 0x3e, 0x2f, 0xe3, ++ 0xcf, 0xe9, 0xba, 0xee, 0x87, 0x3f, 0x0a, 0x09, 0xf9, 0x12, 0x09, 0xe4, ++ 0x9d, 0xc8, 0xa2, 0x7f, 0x5f, 0x4a, 0x2e, 0x05, 0x3c, 0x90, 0x9a, 0x5c, ++ 0x42, 0xa6, 0x9c, 0x8d, 0xbf, 0x7e, 0xbc, 0xc5, 0x91, 0xbe, 0x84, 0x30, ++ 0xba, 0x68, 0xa4, 0xef, 0x1f, 0xd2, 0x41, 0xe7, 0x74, 0xb8, 0x62, 0x46, ++ 0x4f, 0xa7, 0x44, 0xd7, 0xed, 0x8b, 0xc8, 0xc4, 0x4b, 0x1f, 0xcd, 0x52, ++ 0x5e, 0xd4, 0x8b, 0x01, 0x2f, 0x47, 0x15, 0xc4, 0xc3, 0xba, 0x3a, 0x86, ++ 0xe7, 0x75, 0x33, 0xe4, 0x64, 0x5c, 0xc2, 0x75, 0xd6, 0x16, 0xd2, 0xfe, ++ 0xa3, 0x09, 0xc3, 0x63, 0xce, 0xf8, 0x62, 0x89, 0x14, 0x13, 0xb2, 0xb1, ++ 0x85, 0xd6, 0xc7, 0x9d, 0x8d, 0xe7, 0xec, 0x92, 0x84, 0x05, 0xf4, 0xf7, ++ 0x95, 0x10, 0x09, 0xf8, 0x2a, 0x9b, 0x3e, 0x1b, 0x42, 0xd7, 0x95, 0x3d, ++ 0x35, 0x85, 0x7c, 0x33, 0xba, 0x8a, 0xe1, 0x93, 0xdc, 0xcd, 0xf0, 0x11, ++ 0xa7, 0xff, 0xfb, 0xa4, 0xb8, 0x1f, 0x9f, 0xd9, 0x02, 0x9f, 0x11, 0x27, ++ 0xbe, 0xb2, 0x39, 0x3e, 0x73, 0x6a, 0x6c, 0xf8, 0x82, 0xe7, 0x55, 0x14, ++ 0x8f, 0x13, 0xe0, 0xbd, 0x13, 0x8f, 0x49, 0xf8, 0x83, 0xe2, 0xab, 0x5e, ++ 0xe0, 0x31, 0x9f, 0x8c, 0x45, 0x3c, 0xc6, 0x73, 0x11, 0xbf, 0x03, 0xe1, ++ 0xf1, 0x0a, 0x8a, 0x83, 0x2c, 0x0a, 0xbf, 0xff, 0x55, 0x6f, 0xd2, 0x5b, ++ 0xd4, 0x8f, 0x57, 0xc1, 0x17, 0x02, 0xaf, 0x26, 0xc7, 0xeb, 0x86, 0x99, ++ 0xbd, 0x3a, 0x30, 0xc3, 0x46, 0x8b, 0xf1, 0x39, 0x21, 0x29, 0x49, 0x0e, ++ 0xe1, 0x78, 0x92, 0x5c, 0x85, 0xeb, 0xc3, 0xb2, 0x03, 0xf0, 0xe6, 0xc5, ++ 0xfe, 0xf8, 0x5e, 0xa7, 0x30, 0x1b, 0x7c, 0x9e, 0x30, 0x9d, 0xc7, 0x5f, ++ 0x96, 0x40, 0xfc, 0xeb, 0x14, 0x1d, 0x43, 0x24, 0xe0, 0x53, 0x43, 0x52, ++ 0x81, 0xaf, 0x81, 0x4f, 0xd3, 0xcc, 0xbb, 0x4e, 0x4f, 0xea, 0x12, 0x6d, ++ 0xbf, 0x69, 0xaa, 0x4c, 0x80, 0x5e, 0xeb, 0x2c, 0x99, 0x84, 0x69, 0xfd, ++ 0x74, 0x99, 0x9a, 0x54, 0x00, 0xee, 0xb8, 0xd5, 0x1d, 0xb2, 0xf1, 0xa9, ++ 0x01, 0xf8, 0xa7, 0xf8, 0xba, 0x8f, 0xe3, 0x47, 0x1b, 0x21, 0x3b, 0xf0, ++ 0xa9, 0xe6, 0xf9, 0x5d, 0x7c, 0xee, 0x5c, 0xc7, 0xa6, 0xbe, 0xf5, 0x59, ++ 0x7c, 0x5d, 0x6c, 0x1d, 0xa4, 0x3b, 0xd9, 0x01, 0x70, 0x9c, 0x99, 0x29, ++ 0x93, 0x75, 0xd2, 0xc0, 0xe3, 0x0e, 0x84, 0x27, 0x31, 0xee, 0x80, 0xf0, ++ 0xf5, 0x98, 0xbe, 0x12, 0x98, 0xf7, 0x05, 0x25, 0xb2, 0x8e, 0xf2, 0xda, ++ 0xba, 0x70, 0xb2, 0x43, 0xa6, 0xf8, 0xda, 0x38, 0x83, 0xe1, 0xe3, 0x6c, ++ 0xfa, 0x7e, 0xc6, 0xf9, 0x7a, 0x7b, 0xf5, 0x92, 0x4a, 0xdb, 0x7c, 0x91, ++ 0x5e, 0xdd, 0x2c, 0xff, 0x02, 0xe6, 0x21, 0x39, 0xce, 0x75, 0x55, 0x99, ++ 0x3e, 0x33, 0xad, 0xfe, 0x3c, 0xbf, 0x79, 0x88, 0xb9, 0x60, 0x74, 0x34, ++ 0x90, 0x99, 0x1e, 0x9f, 0x1b, 0xfc, 0x61, 0x0a, 0xbf, 0x0d, 0x4f, 0x7a, ++ 0xd8, 0x94, 0x60, 0x7c, 0x7d, 0xfc, 0x3d, 0x3a, 0xa8, 0x78, 0x42, 0x76, ++ 0xe8, 0xa0, 0x17, 0xdd, 0xf3, 0x9c, 0x05, 0xaf, 0x6b, 0x5e, 0xf7, 0x3c, ++ 0x6a, 0x49, 0xb3, 0xa5, 0x62, 0xcd, 0xa9, 0x87, 0x34, 0x33, 0x41, 0xd8, ++ 0x3c, 0x16, 0xdb, 0xa7, 0x08, 0x7b, 0xae, 0x82, 0x1e, 0xa1, 0xfa, 0xc7, ++ 0x1f, 0x71, 0xea, 0x11, 0xb7, 0xfe, 0xd6, 0x46, 0x38, 0xeb, 0x6a, 0x15, ++ 0xd3, 0xd7, 0x2a, 0xb1, 0x3d, 0x2f, 0x02, 0xed, 0x4e, 0xf5, 0xcb, 0x85, ++ 0xa4, 0x5f, 0x4f, 0x57, 0x0e, 0x4e, 0xbf, 0x10, 0xab, 0x01, 0xe1, 0x75, ++ 0xeb, 0x93, 0x31, 0x5c, 0xae, 0xa7, 0xef, 0xed, 0xa9, 0x53, 0x29, 0xfd, ++ 0x4b, 0xb6, 0x09, 0x3d, 0x7d, 0xf7, 0x2f, 0xca, 0x68, 0x7d, 0x37, 0xe8, ++ 0x69, 0x5a, 0xdf, 0xdd, 0x09, 0x73, 0xd1, 0xb2, 0xcb, 0xa9, 0xa7, 0x27, ++ 0xf0, 0xc1, 0xca, 0xbf, 0xf3, 0x92, 0x0c, 0x7a, 0x7a, 0x47, 0x06, 0x3d, ++ 0x5d, 0x9c, 0xb0, 0xa6, 0x81, 0x9e, 0x2e, 0x49, 0xd0, 0x8d, 0x80, 0x8e, ++ 0x53, 0xbc, 0x9e, 0xe9, 0xe9, 0xe2, 0x8e, 0x66, 0x19, 0xe8, 0x34, 0x81, ++ 0xeb, 0x09, 0x72, 0x80, 0xe1, 0x49, 0xa7, 0xff, 0xb3, 0xeb, 0xe9, 0x62, ++ 0x3e, 0xcf, 0x98, 0x6d, 0x4e, 0x3c, 0x15, 0x73, 0x3d, 0x5d, 0xbe, 0xdf, ++ 0xf5, 0x9c, 0xeb, 0xe9, 0x62, 0x97, 0x9e, 0xde, 0x08, 0x7f, 0x50, 0x7c, ++ 0x15, 0x4a, 0x1c, 0x8f, 0x63, 0x49, 0x29, 0xe2, 0x71, 0xea, 0x20, 0xf7, ++ 0x3b, 0x8e, 0x47, 0xf7, 0x7e, 0x57, 0x0c, 0x73, 0x8f, 0xa1, 0x78, 0x7c, ++ 0x90, 0xed, 0x77, 0x39, 0x79, 0x0c, 0x8f, 0xed, 0x1d, 0x32, 0x01, 0xfd, ++ 0x70, 0x7a, 0x9b, 0x8c, 0xfa, 0x71, 0x5c, 0x51, 0x54, 0x86, 0x76, 0x42, ++ 0x4f, 0x72, 0xd0, 0x48, 0x19, 0x5f, 0xff, 0x4e, 0xae, 0xaf, 0x05, 0x9c, ++ 0x63, 0x66, 0x98, 0xd5, 0xa0, 0x4c, 0x4b, 0x88, 0x59, 0x0d, 0xf4, 0xd1, ++ 0xd6, 0x93, 0x48, 0x2a, 0x0c, 0x7a, 0xba, 0x31, 0x0e, 0xf3, 0x6c, 0x4a, ++ 0x30, 0x3d, 0x5d, 0x92, 0x20, 0x72, 0xcc, 0x66, 0x07, 0x69, 0x1c, 0x9e, ++ 0x4d, 0xa1, 0xdc, 0xd9, 0x20, 0xd7, 0xa7, 0x13, 0x6a, 0x04, 0x96, 0xb9, ++ 0x8b, 0x84, 0x65, 0xbd, 0xa8, 0x1f, 0xaf, 0x7d, 0x76, 0x07, 0xc7, 0xe3, ++ 0xd7, 0xa0, 0x95, 0x43, 0x1e, 0x9c, 0x74, 0xcc, 0xe1, 0x78, 0x75, 0xe3, ++ 0x67, 0x5c, 0xd2, 0xc9, 0xdf, 0x25, 0x0f, 0xba, 0xe8, 0xb1, 0xde, 0x59, ++ 0xcf, 0x71, 0xd1, 0xe5, 0x4a, 0xc9, 0x65, 0x7f, 0x0c, 0x92, 0x1e, 0x5e, ++ 0x95, 0xc4, 0xbd, 0xb9, 0x50, 0x4f, 0xa2, 0x5d, 0xa7, 0xd3, 0xb5, 0xe6, ++ 0xd3, 0xba, 0xf2, 0x2f, 0xcf, 0x5a, 0xc0, 0xd7, 0x46, 0x27, 0x7b, 0xa6, ++ 0x75, 0xc8, 0xc9, 0x22, 0xca, 0xb7, 0x81, 0x36, 0x56, 0xf7, 0x74, 0xa8, ++ 0xc9, 0x6a, 0x5a, 0xbf, 0x21, 0x8f, 0xf1, 0xf5, 0xd8, 0x38, 0x49, 0x82, ++ 0x5d, 0xa7, 0x84, 0xa2, 0x04, 0xec, 0xcf, 0xb1, 0x79, 0x54, 0x7f, 0xd8, ++ 0xf0, 0xe9, 0xe1, 0xf8, 0x14, 0x74, 0x83, 0x3f, 0x01, 0x1f, 0x63, 0xb8, ++ 0x7d, 0x91, 0x3d, 0x33, 0xd7, 0x07, 0xfc, 0xbd, 0x29, 0x8f, 0xe3, 0x7b, ++ 0x06, 0xc3, 0x37, 0x55, 0x80, 0x3e, 0xd0, 0x7f, 0x02, 0xdf, 0x1e, 0x8e, ++ 0x6f, 0xa3, 0xb2, 0x1b, 0xc0, 0x23, 0xb3, 0xc3, 0x4e, 0x7c, 0x4f, 0x3a, ++ 0xea, 0xd4, 0x37, 0xd7, 0xd6, 0x0d, 0x71, 0xd4, 0xaf, 0x89, 0x0e, 0x3f, ++ 0x27, 0x7d, 0x3c, 0x9c, 0x8e, 0x1e, 0x4e, 0x27, 0xc1, 0x47, 0x67, 0xe1, ++ 0x3f, 0xee, 0xb2, 0x0f, 0x2b, 0x9d, 0x75, 0x8f, 0x8b, 0x3e, 0x2d, 0x92, ++ 0x4b, 0xef, 0x0c, 0x92, 0x3e, 0xda, 0x11, 0x52, 0x06, 0x7c, 0x3b, 0x4e, ++ 0xf6, 0x47, 0x76, 0x14, 0x9d, 0xdd, 0x2e, 0x21, 0xc9, 0x48, 0x37, 0x3a, ++ 0x79, 0xf2, 0x38, 0x9d, 0x7f, 0x01, 0x35, 0xe3, 0xb2, 0xe9, 0xf8, 0xcb, ++ 0x48, 0xcf, 0x28, 0x40, 0xd0, 0x01, 0x23, 0x8c, 0xe3, 0x2c, 0x97, 0x7b, ++ 0x0a, 0xa0, 0x7e, 0x8a, 0xf4, 0x6e, 0x1e, 0x39, 0xa6, 0x7f, 0xfc, 0x51, ++ 0x2a, 0x39, 0x20, 0x51, 0x23, 0x4e, 0xa2, 0xe8, 0x5d, 0x49, 0x41, 0x1a, ++ 0xa6, 0x93, 0x54, 0x56, 0x10, 0xc1, 0x8e, 0xea, 0x05, 0xb8, 0x74, 0xc4, ++ 0x8b, 0x44, 0xff, 0xbb, 0x1e, 0xf9, 0x44, 0x95, 0x01, 0x5f, 0xc3, 0x4d, ++ 0xf6, 0x9c, 0xc4, 0xb3, 0x55, 0xa8, 0x87, 0x88, 0xf8, 0x17, 0x46, 0x3a, ++ 0x79, 0xf9, 0x9f, 0x85, 0x2b, 0x9f, 0xff, 0xb3, 0x44, 0xf1, 0x28, 0xf1, ++ 0x52, 0x01, 0x3a, 0x8e, 0x01, 0xfc, 0xc4, 0x50, 0x6f, 0xea, 0x24, 0x81, ++ 0x75, 0x3f, 0xe9, 0xc2, 0xd2, 0x20, 0xdd, 0x58, 0x06, 0xa9, 0xa6, 0x86, ++ 0xd2, 0x24, 0xa6, 0x04, 0x65, 0x2e, 0x89, 0x60, 0x49, 0x2e, 0x48, 0x3e, ++ 0x91, 0x42, 0xfd, 0x79, 0xb7, 0x89, 0xfc, 0xee, 0xfb, 0x1d, 0xf9, 0x24, ++ 0xab, 0x7f, 0x3d, 0xf7, 0xc2, 0x9f, 0x14, 0xaf, 0xc3, 0x48, 0xf4, 0x71, ++ 0x09, 0xfc, 0x27, 0x3a, 0x9e, 0xae, 0xf4, 0xf3, 0xa1, 0x8f, 0xf3, 0x21, ++ 0xb5, 0xd3, 0x90, 0x6f, 0x75, 0x93, 0xf1, 0xad, 0x5e, 0x42, 0xf7, 0xd3, ++ 0x72, 0x94, 0x7b, 0xf4, 0x5f, 0xdc, 0x78, 0x5e, 0xcb, 0xf5, 0xf2, 0x86, ++ 0x16, 0x1d, 0xcb, 0xf5, 0x2d, 0x26, 0x2e, 0x72, 0x68, 0x28, 0x19, 0x97, ++ 0x29, 0x7d, 0x7c, 0xb5, 0x4c, 0x8f, 0xe4, 0x84, 0x7a, 0x3a, 0xc0, 0x6f, ++ 0xf1, 0x37, 0xab, 0x91, 0x2b, 0x68, 0xdd, 0x6f, 0xf4, 0xbe, 0x7a, 0x13, ++ 0xd8, 0x7b, 0xb7, 0x6b, 0x91, 0x7b, 0x68, 0xfd, 0xf0, 0xcc, 0xe7, 0x43, ++ 0x50, 0xef, 0xb8, 0xdd, 0x60, 0xf6, 0x61, 0x1b, 0xb3, 0x53, 0xfd, 0x1c, ++ 0x7b, 0x1d, 0x63, 0x7b, 0x7b, 0x56, 0x51, 0xb8, 0x36, 0xdc, 0xae, 0x47, ++ 0xf8, 0x23, 0x87, 0x3e, 0xda, 0x30, 0xbe, 0xf7, 0x9d, 0x9d, 0xa0, 0xb7, ++ 0x6e, 0xf3, 0x47, 0x00, 0xbf, 0x9b, 0x42, 0x47, 0xc2, 0xab, 0x40, 0x5e, ++ 0x9a, 0x35, 0x94, 0x17, 0x6a, 0x7b, 0x22, 0xfd, 0xd6, 0x57, 0xfc, 0xa2, ++ 0x08, 0xed, 0xb5, 0x8f, 0x29, 0xfc, 0x94, 0x3e, 0x28, 0x42, 0xb4, 0xbf, ++ 0xfe, 0x11, 0x6d, 0x35, 0x89, 0xb6, 0x1b, 0xd1, 0xdb, 0x82, 0x76, 0x7d, ++ 0x73, 0x77, 0xb5, 0x92, 0x87, 0xef, 0xe3, 0x81, 0x70, 0xff, 0x7a, 0x3b, ++ 0x8a, 0x87, 0xe1, 0xfe, 0xdf, 0x71, 0x64, 0x2d, 0x09, 0xd3, 0x97, 0x39, ++ 0x95, 0x71, 0x0b, 0xf0, 0xe5, 0x2b, 0xa3, 0xa6, 0x2c, 0xe5, 0x43, 0x5f, ++ 0xa5, 0x29, 0xc5, 0x0d, 0x90, 0xca, 0xd8, 0xeb, 0x12, 0xe5, 0x3f, 0xff, ++ 0x8c, 0x18, 0xb1, 0x28, 0xfe, 0x02, 0x21, 0xb3, 0x15, 0x78, 0x45, 0xe7, ++ 0x74, 0x23, 0x6a, 0x22, 0x04, 0xf2, 0xeb, 0xc6, 0x67, 0xc7, 0xc8, 0x78, ++ 0x68, 0x21, 0x9d, 0x37, 0x3e, 0x5e, 0x8b, 0xec, 0x46, 0xb6, 0x32, 0xa5, ++ 0x79, 0x69, 0xda, 0xf5, 0xe1, 0x7f, 0xe6, 0x1d, 0xd7, 0x59, 0x69, 0xec, ++ 0xa9, 0x6c, 0x59, 0x42, 0xfe, 0x3f, 0x32, 0x7e, 0x11, 0xfa, 0xbd, 0x5e, ++ 0x12, 0x0b, 0x65, 0x81, 0x4e, 0x2a, 0xd3, 0xc8, 0x6e, 0x0a, 0xe7, 0xba, ++ 0xf1, 0x8b, 0x46, 0xc7, 0xd2, 0xd8, 0x7b, 0x36, 0x39, 0xe3, 0xf6, 0x4a, ++ 0xfa, 0x32, 0x53, 0x3f, 0x4d, 0x21, 0xcd, 0x5d, 0x36, 0x78, 0xc6, 0xca, ++ 0x32, 0xf2, 0x9f, 0x24, 0xeb, 0x4c, 0x6e, 0x43, 0x94, 0x8f, 0xa8, 0x5c, ++ 0xe5, 0x98, 0x8c, 0x9f, 0xb4, 0x19, 0xc4, 0x4a, 0xa6, 0x81, 0xe3, 0x72, ++ 0x0e, 0xbf, 0xae, 0xc6, 0x89, 0x89, 0xf6, 0xb5, 0x29, 0x81, 0x9d, 0xf5, ++ 0x45, 0xe1, 0xeb, 0x5d, 0x89, 0xc1, 0xb9, 0x56, 0x22, 0x75, 0x5d, 0x69, ++ 0xde, 0x6f, 0x07, 0x78, 0xf2, 0x41, 0x3e, 0xee, 0x4e, 0xc1, 0xfe, 0x98, ++ 0x3d, 0x93, 0xf1, 0x35, 0xfd, 0xcf, 0xea, 0xa2, 0xf0, 0xe7, 0xa8, 0xac, ++ 0x14, 0xed, 0x6b, 0x38, 0xfc, 0x7b, 0x78, 0xbf, 0xf3, 0xd0, 0x43, 0x05, ++ 0x0f, 0x02, 0x7f, 0x94, 0x0f, 0xce, 0xfe, 0xf2, 0xc2, 0xbc, 0x69, 0xe0, ++ 0x9d, 0xf8, 0x29, 0xe6, 0xdd, 0x48, 0xe7, 0x95, 0x65, 0x13, 0x9f, 0x0b, ++ 0xbc, 0xbb, 0xe9, 0x29, 0x4a, 0x49, 0xf6, 0xe1, 0xfa, 0xce, 0x8c, 0xdf, ++ 0x1c, 0x02, 0xfb, 0x34, 0x13, 0x9c, 0xe1, 0xdb, 0x50, 0xb7, 0x93, 0x70, ++ 0x33, 0x2d, 0x87, 0xd2, 0xb2, 0x96, 0x97, 0x26, 0x2b, 0xdd, 0xf3, 0x9d, ++ 0xef, 0x78, 0x5f, 0x96, 0xd9, 0x3a, 0xdc, 0xe3, 0x92, 0x5d, 0xcc, 0x9e, ++ 0xf2, 0xf3, 0xfd, 0xeb, 0xf0, 0x94, 0x57, 0x2c, 0x85, 0xd2, 0x6d, 0x74, ++ 0x9c, 0xf0, 0xb8, 0x8a, 0x53, 0x7f, 0x8c, 0x2e, 0x93, 0xd1, 0x5f, 0xdd, ++ 0xb4, 0x87, 0x6e, 0xf8, 0x45, 0xa0, 0x3f, 0x58, 0xfd, 0x91, 0x5d, 0x24, ++ 0xa9, 0x50, 0x54, 0x9e, 0xbe, 0xfb, 0x1e, 0x19, 0xe0, 0x1a, 0x49, 0xed, ++ 0x7c, 0x68, 0x3f, 0x84, 0xc4, 0x64, 0xc0, 0x5b, 0x11, 0x09, 0x4b, 0x50, ++ 0x0a, 0x3d, 0xb8, 0x86, 0xeb, 0xc1, 0x0f, 0x49, 0xf4, 0x3a, 0x39, 0x1f, ++ 0xf4, 0x74, 0x17, 0xda, 0x45, 0xb5, 0x95, 0xb7, 0x4e, 0x4b, 0x17, 0x37, ++ 0xaa, 0xe7, 0xf2, 0x71, 0x3e, 0xfb, 0xd4, 0x57, 0x68, 0xb9, 0x40, 0x8f, ++ 0x2e, 0x82, 0xf1, 0x8d, 0xc8, 0x31, 0x8b, 0xee, 0xe4, 0x44, 0x7b, 0x31, ++ 0xbd, 0x5c, 0xd1, 0xed, 0x2a, 0x34, 0xd7, 0x26, 0x0f, 0x44, 0x11, 0x7c, ++ 0xc1, 0xe4, 0xa9, 0x9d, 0xf3, 0x3b, 0xc8, 0xcd, 0x1c, 0x5a, 0x9f, 0x77, ++ 0x7d, 0x7a, 0x38, 0x37, 0xcd, 0xd4, 0x86, 0x31, 0xbb, 0xc5, 0x2c, 0x44, ++ 0x7f, 0x47, 0x35, 0x0b, 0xe7, 0xda, 0xe4, 0x71, 0x53, 0x2b, 0x95, 0x2b, ++ 0xfa, 0x3e, 0x09, 0xe3, 0xd9, 0xe4, 0xe0, 0xbb, 0x7c, 0x7d, 0xad, 0x5c, ++ 0x1e, 0xce, 0x87, 0x1f, 0x6b, 0x68, 0x69, 0x46, 0x2c, 0x4b, 0xa1, 0xaf, ++ 0x6a, 0x92, 0x89, 0x19, 0x40, 0xb7, 0xab, 0xa5, 0xd8, 0x6a, 0x99, 0x8e, ++ 0x53, 0xd1, 0x1c, 0x79, 0x56, 0xa5, 0x75, 0x63, 0x4f, 0xb7, 0xe5, 0x67, ++ 0xcf, 0xd7, 0xc2, 0xf3, 0x79, 0x25, 0xcd, 0xed, 0xc0, 0x12, 0x86, 0xd5, ++ 0x4d, 0x40, 0xdf, 0x3e, 0x72, 0xf7, 0x0a, 0x0b, 0xe8, 0x78, 0x7a, 0x04, ++ 0x5d, 0x7a, 0x1a, 0x3b, 0x41, 0x94, 0xaa, 0x25, 0x3b, 0xec, 0x14, 0x7d, ++ 0x84, 0xdf, 0x69, 0x0f, 0x0d, 0x52, 0x1e, 0x2f, 0x88, 0x24, 0xa6, 0x01, ++ 0xbc, 0x65, 0xe1, 0x63, 0xd5, 0xb9, 0x61, 0xa0, 0x53, 0x6c, 0x1b, 0xd0, ++ 0x69, 0xc4, 0xd1, 0xc8, 0x61, 0x58, 0xa2, 0x51, 0x77, 0x2c, 0x95, 0x6f, ++ 0xa3, 0x57, 0xd8, 0x64, 0x65, 0x23, 0x00, 0x4d, 0xe1, 0xd7, 0xe2, 0x94, ++ 0x6e, 0x48, 0x8f, 0x68, 0x08, 0xe8, 0xb1, 0x98, 0x44, 0x77, 0x42, 0xff, ++ 0x40, 0x65, 0x94, 0xc5, 0x2b, 0x07, 0x09, 0x47, 0x26, 0xfe, 0x0f, 0x87, ++ 0x98, 0xde, 0x0a, 0x73, 0x7e, 0x6f, 0x8f, 0x50, 0x7e, 0x97, 0xfa, 0xe5, ++ 0xc1, 0xcf, 0xe5, 0xa1, 0x9d, 0xbf, 0x3f, 0x5d, 0x49, 0xd0, 0xbf, 0x68, ++ 0xcf, 0xab, 0x30, 0xd3, 0xed, 0x17, 0x82, 0xdf, 0x05, 0xff, 0x0b, 0x7d, ++ 0xe8, 0x6e, 0x77, 0xf8, 0x53, 0xf0, 0xf9, 0x78, 0x5a, 0x96, 0x12, 0x13, ++ 0xfd, 0x9a, 0x0f, 0x49, 0xec, 0x39, 0xc0, 0x03, 0x5d, 0x3d, 0xca, 0x9f, ++ 0x16, 0xea, 0x42, 0xff, 0x4e, 0xc8, 0x55, 0x6d, 0xe4, 0xd8, 0x8c, 0x21, ++ 0x10, 0x47, 0xad, 0x0c, 0x57, 0x28, 0xb6, 0xfd, 0xfa, 0x7d, 0xce, 0x77, ++ 0x0b, 0x74, 0xeb, 0x97, 0xd0, 0x7f, 0xde, 0xf5, 0x0b, 0xda, 0xf3, 0x29, ++ 0x1e, 0xc6, 0xdd, 0x4d, 0x22, 0xa0, 0x66, 0xaf, 0xbd, 0x7e, 0x01, 0xb1, ++ 0xf3, 0xfb, 0xaf, 0xfb, 0xda, 0x47, 0x5f, 0x42, 0xf9, 0xba, 0xbb, 0x1b, ++ 0xdd, 0xd2, 0x81, 0xfa, 0x75, 0xf3, 0xf5, 0x5d, 0x2d, 0x45, 0x5f, 0xb3, ++ 0xf3, 0x21, 0x1d, 0xe7, 0x75, 0x1c, 0xa7, 0xa4, 0x3b, 0x2e, 0xdb, 0xf4, ++ 0x4e, 0x0e, 0xc7, 0xb3, 0x32, 0xb3, 0x8f, 0x3f, 0x4d, 0x10, 0xcd, 0x9a, ++ 0xdb, 0x12, 0x2a, 0xd0, 0xa7, 0xa2, 0x36, 0xa2, 0x48, 0xb6, 0x75, 0x5c, ++ 0x5b, 0xe7, 0xb4, 0xe7, 0x29, 0xbf, 0xbf, 0x03, 0xe3, 0xba, 0xf9, 0x74, ++ 0x1e, 0x69, 0xf6, 0x90, 0xf3, 0xd8, 0x3f, 0x46, 0x49, 0xb1, 0x5e, 0x80, ++ 0xb7, 0xb6, 0xa4, 0xbb, 0x0d, 0xe0, 0xd3, 0x42, 0x51, 0xf4, 0xf7, 0x28, ++ 0xdc, 0xa7, 0xe1, 0xf9, 0x17, 0x00, 0xf7, 0x27, 0xe7, 0x82, 0xfb, 0x1d, ++ 0x88, 0x75, 0x80, 0xde, 0x8c, 0x54, 0x5b, 0x43, 0xc2, 0x08, 0x9f, 0xaa, ++ 0x5c, 0x02, 0x7e, 0x54, 0xaa, 0x2d, 0x3f, 0x0c, 0x78, 0x3f, 0xa6, 0x02, ++ 0xde, 0x29, 0x9e, 0x35, 0xc5, 0x86, 0xe7, 0xc1, 0xca, 0xf9, 0xfd, 0x7c, ++ 0xbf, 0x18, 0x48, 0xde, 0xdb, 0xe0, 0x0f, 0xb4, 0x97, 0x63, 0x79, 0x0a, ++ 0x6d, 0x3f, 0x44, 0x67, 0x72, 0x4a, 0x7a, 0x8e, 0x11, 0xe6, 0x77, 0x39, ++ 0xe3, 0x97, 0xc2, 0x6e, 0x0e, 0x86, 0x08, 0xc6, 0x59, 0x73, 0x6a, 0x7b, ++ 0x08, 0xf8, 0x6b, 0x17, 0x1f, 0x55, 0xd0, 0xde, 0x1d, 0x5a, 0x4b, 0x24, ++ 0xb0, 0xc3, 0x84, 0x5d, 0x3b, 0xc4, 0x75, 0xde, 0xb0, 0x01, 0xec, 0x66, ++ 0x2a, 0x3f, 0xf7, 0xb5, 0x84, 0x50, 0x88, 0x2e, 0x36, 0x7a, 0x8f, 0xc2, ++ 0x39, 0xc0, 0x86, 0x42, 0x99, 0xd9, 0xc7, 0x53, 0xce, 0x0c, 0x83, 0xfe, ++ 0x3f, 0xaa, 0xee, 0x09, 0x81, 0x3f, 0x68, 0x56, 0x9d, 0x59, 0x77, 0x53, ++ 0x18, 0xec, 0xed, 0x30, 0xb6, 0x5f, 0xdb, 0x12, 0xe1, 0xfb, 0x4f, 0x15, ++ 0x96, 0x89, 0xda, 0xb7, 0xf6, 0xec, 0xa4, 0xf3, 0x6f, 0x08, 0xf9, 0xd1, ++ 0x5e, 0xbe, 0xb7, 0xa5, 0x4c, 0xc4, 0x6b, 0x11, 0xee, 0x21, 0x22, 0xde, ++ 0x5b, 0xcb, 0xec, 0x7b, 0x11, 0x17, 0x16, 0x70, 0xd1, 0xfe, 0x3a, 0x0f, ++ 0xb6, 0x3a, 0xda, 0x93, 0x90, 0x0d, 0x6f, 0xc5, 0xb6, 0xfe, 0x61, 0xa6, ++ 0x6f, 0x06, 0xea, 0x9f, 0x55, 0xe9, 0xc4, 0x7b, 0x5f, 0x7f, 0x6b, 0x70, ++ 0xfd, 0x21, 0xde, 0x6f, 0xef, 0x5f, 0x6d, 0xf5, 0x1c, 0x85, 0xf8, 0x9c, ++ 0xc9, 0xe3, 0xfe, 0x42, 0xef, 0x05, 0x79, 0x1b, 0xb3, 0x4a, 0x46, 0xff, ++ 0x59, 0xe0, 0xd9, 0x5b, 0xe6, 0x8c, 0xcb, 0x25, 0xf8, 0xfc, 0x99, 0xf8, ++ 0xc5, 0x3d, 0x1f, 0x09, 0xfb, 0x1d, 0xeb, 0x27, 0xf1, 0x06, 0x84, 0x6f, ++ 0x05, 0x97, 0x8b, 0x4c, 0xe3, 0xb4, 0x73, 0xfd, 0x28, 0xea, 0x1e, 0x92, ++ 0xde, 0x6e, 0x5b, 0xa6, 0xf0, 0x7d, 0x92, 0x9f, 0x4b, 0x99, 0x7c, 0xae, ++ 0x1f, 0x59, 0x4e, 0x7c, 0x5c, 0x2c, 0xe8, 0x77, 0x90, 0xe3, 0xcf, 0x64, ++ 0xf2, 0x2e, 0xfc, 0x1a, 0x8c, 0x07, 0x28, 0xf6, 0xf9, 0xd8, 0x3a, 0xb0, ++ 0x8e, 0x71, 0x9a, 0x38, 0xd3, 0xc7, 0x2e, 0xf8, 0x45, 0x7f, 0x8d, 0xf7, ++ 0xcf, 0x04, 0x87, 0xe6, 0x1e, 0xef, 0x38, 0x1d, 0x67, 0xb2, 0x6d, 0x1c, ++ 0x17, 0x9c, 0x99, 0xe0, 0x73, 0x9f, 0x93, 0x91, 0x77, 0x9c, 0xe3, 0x64, ++ 0xd6, 0x5f, 0xae, 0x7e, 0x27, 0x07, 0x47, 0x87, 0xb3, 0xfa, 0x11, 0x9b, ++ 0xdc, 0x63, 0x3d, 0xd7, 0x55, 0x1f, 0xe6, 0x6a, 0x5f, 0xec, 0x7a, 0x7f, ++ 0x81, 0xeb, 0x7d, 0x85, 0xab, 0x7e, 0x99, 0xab, 0xfd, 0x34, 0x57, 0xfd, ++ 0xab, 0xae, 0xf6, 0x73, 0x5d, 0xf5, 0xeb, 0x5c, 0xed, 0x17, 0xba, 0xde, ++ 0x2f, 0x71, 0xbd, 0x5f, 0xe1, 0xaa, 0xff, 0x57, 0x67, 0xfb, 0xf2, 0xc5, ++ 0x9f, 0x0e, 0xbf, 0xff, 0x9f, 0xe1, 0x49, 0xc8, 0xd5, 0xd9, 0x78, 0x49, ++ 0x3a, 0xce, 0x79, 0xdd, 0x72, 0x55, 0x4c, 0x52, 0xa3, 0x52, 0xb4, 0xdc, ++ 0x91, 0xf3, 0xe2, 0x22, 0x78, 0xd5, 0xa3, 0x48, 0xea, 0x09, 0x98, 0x47, ++ 0xc4, 0xb7, 0x48, 0x6a, 0x82, 0xdd, 0x8f, 0xfd, 0xbd, 0x11, 0xfb, 0x1d, ++ 0xec, 0x63, 0x3b, 0x3e, 0xb6, 0xfc, 0x51, 0x2a, 0x57, 0xbb, 0x12, 0x2f, ++ 0x05, 0x61, 0x7f, 0x13, 0xcf, 0x4f, 0x4a, 0x6f, 0x04, 0xc7, 0x87, 0xa9, ++ 0x7d, 0xa8, 0xa5, 0x96, 0xb3, 0x78, 0x50, 0x02, 0xe5, 0xc6, 0x4f, 0xd4, ++ 0xb7, 0x7a, 0xca, 0x80, 0x4a, 0x12, 0xc6, 0xd1, 0x74, 0xa3, 0x1e, 0x51, ++ 0xae, 0x97, 0xd0, 0xe7, 0x36, 0x7d, 0xe5, 0x25, 0x51, 0xa4, 0xb3, 0x36, ++ 0xc2, 0xf9, 0x9c, 0x24, 0x98, 0x1c, 0x96, 0x40, 0x80, 0x8a, 0x8e, 0x17, ++ 0xdf, 0xa4, 0xa1, 0xbd, 0x17, 0x1f, 0x49, 0x92, 0x63, 0x41, 0x9e, 0xf3, ++ 0xd8, 0xf8, 0xd8, 0xbe, 0xb8, 0x1f, 0xde, 0x49, 0x2a, 0xd3, 0x4f, 0xa1, ++ 0x68, 0xa2, 0x1a, 0x64, 0x78, 0x58, 0x5d, 0xd7, 0x61, 0x28, 0xdd, 0x78, ++ 0x0a, 0x4d, 0x8f, 0x4f, 0x7c, 0x9e, 0xea, 0x65, 0xf2, 0x00, 0xf3, 0xcb, ++ 0x77, 0xcd, 0x74, 0xfa, 0xd5, 0xd7, 0xf1, 0x71, 0xe6, 0xab, 0xe7, 0xed, ++ 0xa7, 0xbe, 0x32, 0x49, 0xe9, 0x1f, 0x7f, 0xd7, 0xb7, 0x8d, 0x48, 0x2b, ++ 0x6d, 0xb2, 0x0b, 0x80, 0xa0, 0xf5, 0xf8, 0xb7, 0xf5, 0x24, 0xc4, 0x37, ++ 0x46, 0x41, 0xbc, 0x8e, 0x1d, 0x22, 0x60, 0xbc, 0x6e, 0x24, 0xe1, 0xff, ++ 0x78, 0x5c, 0x6e, 0x04, 0xfc, 0x4d, 0xfb, 0x8d, 0x34, 0x8e, 0x62, 0xfc, ++ 0x2d, 0xdc, 0x60, 0x1e, 0x01, 0x9d, 0xf7, 0x75, 0xb5, 0x14, 0xe1, 0x7a, ++ 0x44, 0xea, 0x1d, 0x0f, 0xf3, 0xc9, 0x59, 0x27, 0x27, 0xb2, 0xf3, 0xbd, ++ 0xbf, 0x7e, 0x82, 0xf1, 0x78, 0x8e, 0xaf, 0xd0, 0xbd, 0x93, 0x7b, 0xe2, ++ 0x10, 0x4f, 0xd9, 0xa8, 0x45, 0xc6, 0x22, 0x9e, 0x23, 0x88, 0x67, 0xea, ++ 0x8f, 0xb7, 0x79, 0x2b, 0x80, 0x4d, 0x18, 0x7e, 0x57, 0xc1, 0xee, 0xcb, ++ 0x9e, 0xab, 0x81, 0x5c, 0x38, 0x77, 0xe1, 0xf4, 0x00, 0xfd, 0x4b, 0x4b, ++ 0x1f, 0xf0, 0x13, 0xec, 0x8b, 0x24, 0x85, 0xf5, 0x00, 0xe9, 0xc1, 0x7a, ++ 0x36, 0xb7, 0x73, 0xcb, 0xd4, 0x22, 0x5c, 0x7f, 0x0e, 0xf7, 0x33, 0x09, ++ 0x89, 0x48, 0x60, 0x7f, 0x84, 0xae, 0x4c, 0xef, 0x97, 0x47, 0xa5, 0xea, ++ 0x32, 0xf5, 0x92, 0xfe, 0xb8, 0xa5, 0x14, 0x66, 0xf1, 0x49, 0x69, 0xfd, ++ 0xf3, 0x7f, 0x96, 0x20, 0xae, 0x55, 0x46, 0xc2, 0xcc, 0x7e, 0xe1, 0x71, ++ 0xc2, 0xb5, 0x8a, 0xf4, 0x09, 0xc4, 0x5f, 0xcd, 0xc1, 0xd9, 0x8b, 0xa1, ++ 0x6f, 0x3a, 0xe9, 0x4a, 0xd4, 0x66, 0x32, 0xc7, 0xe6, 0x5f, 0x5e, 0xaf, ++ 0x0a, 0x3f, 0x8f, 0xe1, 0x6b, 0x4c, 0x88, 0xad, 0x3f, 0xb4, 0x51, 0x6b, ++ 0x06, 0xbf, 0x66, 0xd7, 0x6c, 0x27, 0x1f, 0x88, 0xf6, 0xea, 0xf9, 0xf3, ++ 0xc1, 0xe6, 0x09, 0x63, 0xbe, 0x38, 0x3e, 0xc8, 0x55, 0xc7, 0x64, 0xe0, ++ 0x83, 0xeb, 0x4d, 0x88, 0x57, 0x4b, 0x71, 0x8a, 0xb7, 0xac, 0xc1, 0xe3, ++ 0xcd, 0x54, 0xac, 0x6f, 0xaa, 0xb8, 0x4e, 0x82, 0xe3, 0xfe, 0x40, 0xb2, ++ 0x6e, 0xb0, 0xd7, 0x55, 0x62, 0xdd, 0xa8, 0xe6, 0xf7, 0xd7, 0x7f, 0xad, ++ 0x44, 0x17, 0xc2, 0xfb, 0xf8, 0x34, 0x52, 0xd6, 0x6c, 0xf4, 0x8f, 0x43, ++ 0x9f, 0xdf, 0x0c, 0xed, 0xd2, 0x3c, 0x6f, 0x48, 0xd7, 0x7e, 0x1c, 0x8f, ++ 0xdb, 0xd2, 0xfd, 0x19, 0xf7, 0xf1, 0x52, 0xae, 0x03, 0x86, 0x6e, 0x33, ++ 0x65, 0xb0, 0x27, 0x8b, 0x3a, 0x57, 0xf8, 0xed, 0x79, 0x2e, 0xa5, 0x7c, ++ 0xbf, 0x7e, 0xac, 0x73, 0x9f, 0x0f, 0xd6, 0xbb, 0xb5, 0xf1, 0xdc, 0xf6, ++ 0xd1, 0x7d, 0x2d, 0xc8, 0xfc, 0x19, 0xdb, 0x05, 0xa5, 0xee, 0x28, 0xd0, ++ 0x83, 0x5c, 0xa2, 0x92, 0xdd, 0x69, 0xce, 0xb1, 0x7f, 0xca, 0xf9, 0xbb, ++ 0xaf, 0xbd, 0xcb, 0x3e, 0x9c, 0xd1, 0x16, 0xaf, 0x86, 0xfe, 0xb9, 0x75, ++ 0x32, 0x81, 0x78, 0x34, 0xdd, 0xe7, 0xd1, 0xbe, 0x2b, 0xe2, 0x7e, 0xed, ++ 0xe6, 0xa9, 0x71, 0x49, 0xa3, 0x72, 0xf8, 0xc0, 0x16, 0x82, 0x76, 0x72, ++ 0x6e, 0xdb, 0x42, 0x9f, 0x7d, 0x3d, 0x85, 0x7c, 0x3d, 0x9b, 0x6b, 0x0b, ++ 0xfc, 0x60, 0xb7, 0x6c, 0xaf, 0x5f, 0xf8, 0x55, 0xf4, 0x13, 0xa8, 0xfd, ++ 0xaf, 0xa0, 0xdf, 0x1b, 0x5b, 0x07, 0xe3, 0x17, 0xd6, 0xb0, 0xf3, 0x7e, ++ 0x37, 0x7c, 0xf7, 0xf2, 0xf5, 0x25, 0xea, 0x19, 0x9e, 0xdc, 0xef, 0xb3, ++ 0x34, 0x12, 0x4b, 0x27, 0x87, 0x3f, 0x55, 0xf9, 0xf9, 0x83, 0x4a, 0xdd, ++ 0xc7, 0x82, 0xfe, 0x73, 0x94, 0x7b, 0x0f, 0xdf, 0xf9, 0x8b, 0xf1, 0x74, ++ 0xbe, 0xd2, 0x2a, 0x39, 0xe2, 0x0b, 0xf7, 0xc3, 0x39, 0xae, 0xcf, 0x6e, ++ 0xea, 0x41, 0x7c, 0x65, 0x5d, 0xa6, 0x9a, 0xeb, 0x40, 0x0f, 0x77, 0x6a, ++ 0x0e, 0x7b, 0x73, 0xfb, 0xb6, 0xfb, 0xb7, 0xd4, 0xc3, 0xb9, 0x1f, 0x7d, ++ 0x0e, 0xea, 0xe0, 0xd1, 0x2f, 0x37, 0x0f, 0x8b, 0x52, 0xb8, 0x1e, 0xfb, ++ 0xda, 0xa2, 0x17, 0x16, 0x03, 0xdf, 0xb7, 0xcb, 0x04, 0xf4, 0x91, 0x80, ++ 0xc3, 0x28, 0x77, 0xda, 0xbb, 0x47, 0xfa, 0xe4, 0xcc, 0x39, 0x2f, 0x1d, ++ 0xb7, 0x1a, 0xf1, 0x52, 0x7f, 0x6e, 0xff, 0xe9, 0xd3, 0xe2, 0x63, 0x0b, ++ 0x97, 0xf3, 0x4c, 0x7c, 0xe2, 0xde, 0x57, 0xdd, 0x7c, 0x70, 0x3e, 0xfb, ++ 0xc3, 0x55, 0xca, 0x67, 0x5f, 0xdf, 0x7e, 0x90, 0x43, 0x3a, 0x6e, 0x01, ++ 0xf7, 0xfb, 0x86, 0xd6, 0x85, 0xa5, 0x1e, 0xa3, 0x5f, 0x8e, 0x84, 0x9f, ++ 0x22, 0xe6, 0x29, 0xe0, 0x7c, 0x96, 0x5b, 0x7b, 0xbf, 0x0f, 0xf8, 0x6c, ++ 0x4b, 0x5d, 0x05, 0xca, 0xcf, 0xe9, 0xda, 0x85, 0x12, 0xe8, 0x93, 0x4d, ++ 0xd0, 0x32, 0x8d, 0x9e, 0x10, 0xf3, 0x65, 0x82, 0x27, 0xcb, 0x93, 0xc0, ++ 0x7c, 0x89, 0x2d, 0xf5, 0xf7, 0x4b, 0xe9, 0xf0, 0x56, 0x18, 0x63, 0xf1, ++ 0x22, 0xf7, 0xf3, 0x6a, 0x0f, 0xa3, 0xf3, 0x7a, 0x35, 0x21, 0x41, 0xff, ++ 0x4c, 0xed, 0x46, 0x7b, 0xb8, 0xbe, 0xe6, 0x72, 0x55, 0xc8, 0xd7, 0x15, ++ 0x9a, 0x9a, 0x8a, 0x02, 0xbe, 0x0a, 0x22, 0x2a, 0xb9, 0x87, 0xe2, 0xeb, ++ 0x81, 0xda, 0x85, 0xd5, 0xa5, 0xc0, 0x77, 0x54, 0x0e, 0x21, 0xbe, 0x32, ++ 0xa3, 0x86, 0xa0, 0xbd, 0x50, 0x68, 0xb1, 0x73, 0x22, 0x93, 0xe2, 0xeb, ++ 0x69, 0xba, 0xef, 0x6d, 0xae, 0x27, 0x91, 0x14, 0x6d, 0xb7, 0xd9, 0xd2, ++ 0xf0, 0x1c, 0xc6, 0x2d, 0x87, 0x6e, 0x7e, 0xdc, 0x5c, 0x7f, 0x6e, 0xfd, ++ 0x42, 0x2c, 0x5b, 0x7b, 0xca, 0xff, 0x1e, 0x8f, 0xc1, 0xce, 0x73, 0x4b, ++ 0x48, 0x09, 0xd8, 0x53, 0x0f, 0x0c, 0xe0, 0xbf, 0x0d, 0x16, 0xbf, 0xa1, ++ 0x7a, 0x99, 0xc5, 0x4b, 0x67, 0x54, 0x0c, 0xa0, 0xcf, 0x5b, 0xcf, 0x37, ++ 0x8e, 0x39, 0xef, 0xcb, 0xc0, 0x8f, 0x33, 0x06, 0x99, 0x07, 0xe0, 0xd2, ++ 0x17, 0xe4, 0xd9, 0x2d, 0xb3, 0x4b, 0xf3, 0x20, 0x1e, 0x42, 0xf5, 0x05, ++ 0x49, 0x87, 0x1f, 0xa7, 0x7e, 0x18, 0x08, 0x1f, 0x6e, 0xfc, 0x5f, 0x0c, ++ 0xf8, 0xbc, 0xf0, 0x8b, 0xc3, 0xa7, 0xfb, 0x7d, 0x9e, 0x87, 0xc7, 0x01, ++ 0x07, 0x89, 0x8f, 0xf5, 0x75, 0xc5, 0xff, 0x03, 0x52, 0x26, 0x33, 0xb5, ++ 0x77, 0xaf, 0x47, 0xf4, 0x13, 0x79, 0x61, 0x5f, 0x21, 0xbd, 0x0a, 0xc8, ++ 0xbf, 0x05, 0x1c, 0x3a, 0x06, 0xbc, 0x8a, 0x08, 0x96, 0x33, 0x48, 0x14, ++ 0xcb, 0x63, 0x6a, 0x2c, 0xea, 0xa1, 0xed, 0x67, 0x91, 0x66, 0xac, 0xd7, ++ 0x90, 0x04, 0x96, 0x8b, 0x55, 0x93, 0xd1, 0x99, 0xe7, 0xc1, 0x88, 0xf3, ++ 0x6e, 0x75, 0x3a, 0xe3, 0xfb, 0x71, 0x97, 0x92, 0x24, 0x9c, 0x3b, 0x93, ++ 0xa9, 0x73, 0xf9, 0x61, 0xb0, 0x6a, 0x9d, 0xd0, 0x09, 0x86, 0x52, 0x3f, ++ 0x49, 0xe3, 0x57, 0x11, 0x72, 0x0f, 0x8e, 0x37, 0xdc, 0xb5, 0x1f, 0x8b, ++ 0x38, 0xc5, 0xd0, 0xc6, 0x44, 0x6d, 0x05, 0x1d, 0x77, 0x78, 0x2d, 0xcb, ++ 0xfb, 0x1c, 0x5e, 0xb5, 0xcf, 0xb1, 0x8f, 0x05, 0xb9, 0xfc, 0x88, 0xf1, ++ 0xb6, 0x56, 0x0d, 0x6e, 0x7f, 0x7e, 0xd4, 0xb5, 0x3f, 0x3f, 0xaa, 0xf6, ++ 0xe8, 0x40, 0x9f, 0x47, 0xab, 0xee, 0x69, 0x85, 0xed, 0x46, 0xcd, 0x7d, ++ 0x27, 0x94, 0xae, 0xff, 0xb8, 0x4e, 0x27, 0x5e, 0x37, 0x7c, 0xdc, 0xe5, ++ 0x8b, 0xa6, 0x81, 0x67, 0x6b, 0xfd, 0x01, 0x1f, 0xe4, 0x8d, 0x6d, 0xad, ++ 0x4a, 0x9f, 0x17, 0xeb, 0x86, 0x23, 0xd3, 0xfb, 0x71, 0x19, 0xce, 0x99, ++ 0xbe, 0xe2, 0x65, 0xe7, 0x4c, 0x5b, 0x73, 0xf4, 0x6f, 0xb0, 0x64, 0x9d, ++ 0x95, 0x8e, 0xbc, 0x04, 0xa2, 0x18, 0x45, 0xf6, 0x79, 0xb7, 0x7e, 0x4c, ++ 0x72, 0xa2, 0xe7, 0xd4, 0x27, 0x4e, 0x79, 0xd9, 0xe8, 0xe1, 0xf9, 0x21, ++ 0x01, 0x12, 0x00, 0xfe, 0xcf, 0x84, 0x0f, 0x51, 0x7e, 0xd1, 0x78, 0x78, ++ 0x6c, 0x5a, 0xf3, 0x92, 0x68, 0x9a, 0xfe, 0xa5, 0x5e, 0x26, 0x37, 0xed, ++ 0x39, 0x24, 0x0e, 0xe7, 0xd2, 0x8f, 0xbd, 0xa6, 0x32, 0xfe, 0xe3, 0x7a, ++ 0x78, 0xf2, 0x37, 0xc2, 0x49, 0xb0, 0x17, 0xda, 0x41, 0x49, 0x50, 0xfd, ++ 0xfb, 0x58, 0x35, 0xe3, 0xcf, 0xc9, 0x39, 0xfc, 0xfd, 0x43, 0x61, 0xcc, ++ 0xaf, 0x1a, 0xde, 0x49, 0xe2, 0x1a, 0xdd, 0xcf, 0x86, 0xbf, 0x5a, 0xff, ++ 0x40, 0x0e, 0x6d, 0x77, 0x5f, 0x3d, 0xf5, 0x20, 0x6d, 0xcf, 0xef, 0xab, ++ 0x7c, 0xa9, 0x03, 0xce, 0x89, 0x9f, 0x7a, 0x59, 0xc6, 0xb8, 0xee, 0x64, ++ 0x5f, 0xb7, 0x1e, 0xa1, 0xf0, 0x54, 0xf1, 0x7d, 0x70, 0x6b, 0xfd, 0x4b, ++ 0x98, 0x9f, 0x1c, 0xdf, 0xa6, 0x46, 0xc6, 0xa2, 0x7e, 0x97, 0x88, 0x34, ++ 0x19, 0xbd, 0x79, 0xa4, 0x87, 0x80, 0xf7, 0x19, 0x8f, 0xca, 0xe8, 0x56, ++ 0x79, 0xbf, 0x2f, 0x0c, 0xfb, 0x57, 0xb8, 0x47, 0x8f, 0x50, 0xfc, 0xdc, ++ 0x3e, 0xe5, 0x25, 0x3d, 0x4c, 0xcb, 0xfb, 0x46, 0xa4, 0x74, 0x58, 0xe7, ++ 0xfa, 0xaa, 0xfb, 0x91, 0xcf, 0xf7, 0xd5, 0x17, 0x7f, 0xbd, 0x14, 0xd1, ++ 0xea, 0xcc, 0x3b, 0x99, 0xa5, 0x4c, 0xed, 0xb6, 0xe8, 0x7c, 0xeb, 0xeb, ++ 0xd9, 0xb9, 0x5d, 0x4e, 0x4f, 0x4a, 0xf7, 0x42, 0x9c, 0xb5, 0x4e, 0x25, ++ 0x57, 0x50, 0xf8, 0x82, 0x06, 0x5b, 0xef, 0x7d, 0xed, 0x24, 0x79, 0x8f, ++ 0x04, 0x70, 0x30, 0xfa, 0x4a, 0x64, 0x0e, 0xfa, 0xc5, 0x85, 0xae, 0xbc, ++ 0xae, 0x02, 0x57, 0xde, 0x9b, 0x59, 0x39, 0xeb, 0x5d, 0xc8, 0x67, 0x31, ++ 0xe1, 0x9c, 0x1f, 0x16, 0xa1, 0x34, 0x3e, 0x70, 0x11, 0xe8, 0xdb, 0x26, ++ 0x99, 0xb9, 0x5b, 0xae, 0xfc, 0x68, 0xa3, 0xd2, 0x7a, 0x17, 0xf2, 0x03, ++ 0x66, 0x29, 0x07, 0x7d, 0x90, 0x7f, 0xb5, 0xa5, 0x4d, 0x35, 0x71, 0xff, ++ 0x73, 0x8d, 0xeb, 0x5e, 0x87, 0x49, 0x62, 0x87, 0x2d, 0x09, 0xc7, 0x89, ++ 0x83, 0x1f, 0xb8, 0xe5, 0x41, 0xb6, 0x4f, 0x9a, 0x13, 0x8d, 0x48, 0x3c, ++ 0x0c, 0x5d, 0x39, 0xdc, 0x26, 0x85, 0x7b, 0x08, 0x9d, 0xb2, 0xcd, 0x09, ++ 0xb7, 0xc0, 0xab, 0x7b, 0x1e, 0x77, 0xde, 0xf5, 0xbb, 0x82, 0x9f, 0x87, ++ 0x93, 0xb1, 0xa0, 0x87, 0x44, 0xbc, 0x59, 0xc0, 0xef, 0xe6, 0xdb, 0xbc, ++ 0x8a, 0xe4, 0xfe, 0x97, 0x28, 0x1c, 0x5b, 0x5f, 0x36, 0x70, 0xbf, 0xde, ++ 0x5a, 0xf5, 0xd2, 0x37, 0x9b, 0x60, 0x9f, 0x2f, 0xf3, 0x62, 0xde, 0xc4, ++ 0x57, 0xcf, 0xec, 0x69, 0xfc, 0x11, 0x2d, 0x7f, 0xf9, 0xc7, 0x03, 0x25, ++ 0x50, 0x5e, 0x59, 0xb8, 0xab, 0xb2, 0x89, 0xb6, 0x0b, 0xf0, 0x7c, 0x09, ++ 0x11, 0xcf, 0x2b, 0x80, 0x91, 0xd1, 0x7e, 0xe5, 0x7a, 0x8d, 0xf3, 0x03, ++ 0x29, 0xdf, 0xde, 0xe6, 0xc9, 0xc3, 0x47, 0x98, 0x47, 0x71, 0xdf, 0x11, ++ 0x1f, 0xd2, 0xab, 0xb0, 0x4d, 0x4e, 0xfa, 0x80, 0x3e, 0x6a, 0x8a, 0x00, ++ 0x7f, 0xe5, 0x5d, 0x96, 0x40, 0xbb, 0xe9, 0xbe, 0xeb, 0xba, 0x31, 0xe9, ++ 0x22, 0x50, 0xd7, 0x25, 0xc5, 0x6d, 0x72, 0x16, 0x10, 0xf6, 0x43, 0x63, ++ 0x4c, 0x82, 0xf3, 0xfb, 0x2b, 0xea, 0x12, 0xb3, 0x81, 0x0f, 0x0d, 0x9e, ++ 0x47, 0x68, 0x44, 0x12, 0x68, 0x1f, 0xcd, 0x54, 0x5e, 0xd4, 0x31, 0xce, ++ 0xce, 0xe9, 0x66, 0x72, 0x38, 0x84, 0xdc, 0xb9, 0xe9, 0x52, 0x5a, 0x9f, ++ 0xd2, 0x21, 0x2f, 0x65, 0x78, 0x9b, 0x1a, 0x01, 0x70, 0x87, 0x37, 0x36, ++ 0xcb, 0x20, 0x2f, 0xa5, 0x55, 0x2c, 0x6f, 0xb9, 0xb4, 0xb3, 0x4b, 0xe2, ++ 0x79, 0xc2, 0x98, 0x4f, 0x3f, 0x8e, 0x23, 0x71, 0x5c, 0xb4, 0x81, 0xe5, ++ 0x15, 0x6e, 0x63, 0xf8, 0x17, 0xf9, 0xdf, 0xc1, 0x46, 0x27, 0xdd, 0x4c, ++ 0x9e, 0xa7, 0x49, 0xfd, 0x0c, 0x19, 0xfc, 0xee, 0xa2, 0x4e, 0xd7, 0xfb, ++ 0x68, 0x0d, 0xe6, 0x63, 0xba, 0xe9, 0x5a, 0xac, 0xf1, 0xbc, 0xa8, 0x52, ++ 0x9e, 0x47, 0xc8, 0xf1, 0x30, 0x9c, 0xdb, 0xb3, 0xeb, 0x1b, 0xf9, 0xf9, ++ 0x9c, 0xa1, 0x27, 0xcf, 0x65, 0xcf, 0xee, 0xe3, 0xe7, 0x73, 0x47, 0x61, ++ 0xfd, 0xe3, 0xce, 0x7e, 0x3f, 0x29, 0x83, 0xde, 0xbd, 0x0a, 0xf4, 0x2e, ++ 0xd5, 0x37, 0x8a, 0x9c, 0xea, 0x40, 0xff, 0xed, 0x32, 0x19, 0xfd, 0x37, ++ 0x37, 0x1c, 0x1b, 0x1a, 0x99, 0xbe, 0xdb, 0xa5, 0xc9, 0x0e, 0xfb, 0xfd, ++ 0xb3, 0xce, 0x7f, 0x03, 0xd7, 0xfb, 0x8a, 0xdc, 0xd3, 0x01, 0xeb, 0xfc, ++ 0x5b, 0xcf, 0xdf, 0xd8, 0xb7, 0xfe, 0xbf, 0xcf, 0xfc, 0x77, 0xfd, 0x9d, ++ 0xe7, 0x5f, 0xf7, 0x77, 0xc6, 0xff, 0x96, 0xbf, 0xf3, 0xfa, 0xf7, 0xfc, ++ 0x8d, 0xd7, 0x5f, 0x53, 0x26, 0x39, 0xfc, 0xb3, 0x1d, 0x90, 0x98, 0x42, ++ 0xc7, 0xfb, 0xb1, 0x57, 0xc4, 0xd3, 0x9c, 0x7a, 0x5b, 0x91, 0xd3, 0xfb, ++ 0xd9, 0x6f, 0x69, 0xb2, 0x23, 0x9f, 0x58, 0xe4, 0x29, 0x4e, 0xaf, 0xb3, ++ 0x16, 0x68, 0x78, 0x3e, 0x2e, 0x13, 0x7b, 0xfe, 0x8b, 0x18, 0x6f, 0xa6, ++ 0xf2, 0x46, 0x07, 0xe8, 0xd3, 0x2d, 0x5c, 0x9f, 0x52, 0x3d, 0x4a, 0x20, ++ 0x5f, 0x20, 0x7b, 0x8a, 0xc8, 0x97, 0x61, 0xfa, 0xaf, 0x86, 0xeb, 0xbf, ++ 0x1a, 0xae, 0xff, 0xf6, 0x65, 0xd0, 0xab, 0x15, 0x90, 0x2b, 0x96, 0x87, ++ 0x76, 0x05, 0xde, 0x07, 0x99, 0x44, 0x12, 0xe8, 0xc7, 0x04, 0x8f, 0xaa, ++ 0x98, 0x67, 0xbc, 0x8f, 0xd0, 0xed, 0x05, 0xf4, 0x5a, 0xd8, 0x9b, 0x36, ++ 0x2f, 0xbb, 0x80, 0xc3, 0xed, 0xd6, 0xa7, 0x05, 0x5c, 0x9f, 0x56, 0xbc, ++ 0xe8, 0x7a, 0xce, 0xf5, 0xa8, 0x7b, 0x7f, 0x2f, 0xea, 0x8b, 0x9b, 0x12, ++ 0x8c, 0x9b, 0xfe, 0x77, 0x8d, 0xef, 0x8f, 0x2e, 0xbd, 0x2a, 0xf0, 0xb0, ++ 0xa5, 0x8a, 0xd9, 0xc9, 0x79, 0x73, 0xd3, 0xdb, 0x81, 0xeb, 0x5d, 0x74, ++ 0x34, 0x2a, 0x9b, 0x31, 0xff, 0xc0, 0x4d, 0x8f, 0xb7, 0x34, 0xe6, 0x7f, ++ 0x0b, 0x7a, 0x2c, 0xd0, 0xad, 0xd7, 0xb5, 0xfc, 0xcc, 0xf4, 0xee, 0xe1, ++ 0xf4, 0xbe, 0x9c, 0xd3, 0xfb, 0x57, 0x1a, 0xf3, 0x3f, 0x44, 0xbe, 0x48, ++ 0x26, 0x7a, 0x57, 0x79, 0xd9, 0x3c, 0x97, 0x06, 0x8e, 0x87, 0x5a, 0x61, ++ 0x35, 0xd1, 0x6a, 0xa4, 0x83, 0xc2, 0xe9, 0xa4, 0x90, 0xf5, 0xdd, 0x18, ++ 0xf7, 0x25, 0xb7, 0x13, 0xbb, 0x5f, 0xb9, 0xe1, 0x63, 0x6a, 0x7f, 0x50, ++ 0x7a, 0x6c, 0x35, 0x8c, 0xc8, 0x3d, 0xb4, 0x7e, 0x69, 0x1e, 0x91, 0x45, ++ 0xd2, 0xfd, 0xc7, 0x93, 0xfb, 0xf3, 0x89, 0x3d, 0xdd, 0x2c, 0x7e, 0xaa, ++ 0xe4, 0x69, 0x2e, 0x3f, 0xcb, 0x6d, 0xff, 0xea, 0x98, 0x37, 0xbe, 0xd5, ++ 0x92, 0x93, 0xf1, 0x22, 0xb0, 0x23, 0x76, 0x6c, 0x5d, 0x0e, 0x76, 0xc4, ++ 0xcb, 0xfe, 0x08, 0xc4, 0x0b, 0xb6, 0xe6, 0x74, 0xbe, 0x88, 0x7e, 0x5c, ++ 0x62, 0x92, 0x0a, 0x70, 0x08, 0x7b, 0x91, 0xf0, 0xb8, 0x2c, 0x98, 0x12, ++ 0x04, 0xed, 0x26, 0xf7, 0xb9, 0x93, 0xd3, 0xde, 0xdf, 0xfa, 0x71, 0x57, ++ 0x0a, 0xec, 0x2e, 0xb3, 0x48, 0xc2, 0x78, 0x5f, 0x47, 0xf8, 0xfe, 0xbc, ++ 0xb4, 0xf7, 0xf1, 0x5c, 0x76, 0xbe, 0xe1, 0x0d, 0x38, 0xe2, 0x06, 0xe4, ++ 0x8a, 0xc1, 0xd9, 0xeb, 0xab, 0x38, 0xbd, 0xa9, 0x9f, 0x98, 0xef, 0xb5, ++ 0xc5, 0x29, 0x57, 0x05, 0x66, 0x4d, 0x62, 0xe7, 0xe6, 0x33, 0x4c, 0x38, ++ 0xdf, 0x91, 0xac, 0x59, 0x32, 0xc4, 0xd1, 0x33, 0x8d, 0x03, 0x11, 0xde, ++ 0x13, 0xb6, 0xf3, 0xa6, 0xc5, 0xaa, 0x35, 0x12, 0xc6, 0x93, 0xc0, 0x6f, ++ 0x2c, 0xeb, 0xf7, 0x1b, 0x09, 0x19, 0xc1, 0xe2, 0xf2, 0x62, 0xfd, 0x83, ++ 0xbd, 0x3f, 0xd0, 0xb8, 0x98, 0x9d, 0x7b, 0x73, 0xbc, 0xe6, 0x5d, 0xd6, ++ 0xf5, 0xb9, 0xf8, 0x8f, 0xc2, 0xdf, 0x17, 0xed, 0x0c, 0x6a, 0xaf, 0xa5, ++ 0xbb, 0xbf, 0xe3, 0xf6, 0xc3, 0x6b, 0x3c, 0xd6, 0x14, 0xef, 0x25, 0x83, ++ 0x87, 0xff, 0x11, 0x60, 0x38, 0xda, 0xfe, 0x85, 0x72, 0xa5, 0x26, 0x5d, ++ 0xdc, 0xa0, 0x87, 0xeb, 0xd7, 0xc0, 0xd1, 0xae, 0xd9, 0x73, 0xe9, 0xfa, ++ 0x2a, 0x5f, 0xe4, 0x71, 0x7d, 0x6a, 0xb6, 0xd9, 0xcf, 0xd3, 0xee, 0xcb, ++ 0x53, 0xd3, 0xf6, 0xff, 0x39, 0x97, 0x93, 0x5f, 0xc1, 0xe5, 0x48, 0xd4, ++ 0xeb, 0xa9, 0x78, 0xbe, 0x84, 0xf9, 0x24, 0x04, 0xd6, 0x25, 0xe4, 0xd1, ++ 0x3d, 0xff, 0x44, 0x3e, 0xef, 0xc4, 0xcf, 0x38, 0xff, 0xcb, 0x5c, 0xae, ++ 0x27, 0x72, 0xb9, 0x26, 0x24, 0x82, 0xe7, 0x30, 0x99, 0xe6, 0xad, 0xe6, ++ 0x7a, 0x43, 0x94, 0x9f, 0x76, 0xde, 0x1e, 0xbe, 0xee, 0x6a, 0xcd, 0xe4, ++ 0x71, 0xdf, 0x73, 0xcf, 0x3b, 0x87, 0xaf, 0x73, 0xce, 0x67, 0x5c, 0xef, ++ 0x49, 0x3e, 0xef, 0x9c, 0x41, 0xae, 0x77, 0x01, 0x9f, 0x6f, 0xc1, 0x67, ++ 0x9c, 0xf7, 0x23, 0x3e, 0xef, 0x82, 0x41, 0xce, 0x7b, 0x2b, 0xc7, 0xef, ++ 0xad, 0x9f, 0x11, 0xcf, 0xaa, 0x2e, 0xf1, 0x71, 0x06, 0x87, 0xe7, 0x56, ++ 0x3e, 0x5f, 0xeb, 0x67, 0x9c, 0xd7, 0xe4, 0xf3, 0xb6, 0x0e, 0x72, 0xde, ++ 0x4d, 0x1c, 0xbf, 0x9b, 0x3e, 0x23, 0x9e, 0x47, 0xf0, 0x79, 0x37, 0xb9, ++ 0xf0, 0x9c, 0x49, 0x7e, 0x77, 0x7c, 0xc6, 0xf9, 0xca, 0x74, 0x26, 0x3f, ++ 0xbb, 0xb8, 0xfc, 0xba, 0xf5, 0x9a, 0x98, 0x3f, 0x50, 0x28, 0x47, 0xa1, ++ 0xff, 0xd6, 0x10, 0x1d, 0xc7, 0xa6, 0xa7, 0xae, 0xf4, 0xb2, 0xf9, 0x45, ++ 0x49, 0x52, 0x9f, 0xa0, 0xdf, 0x3a, 0x9c, 0x9f, 0xe7, 0x4e, 0x59, 0x7e, ++ 0xc7, 0xc2, 0x74, 0x79, 0xe1, 0xa2, 0xbd, 0x7b, 0x3f, 0xce, 0x34, 0xcf, ++ 0x37, 0x79, 0x9c, 0x46, 0x94, 0x62, 0x9e, 0x20, 0x3f, 0x07, 0x9d, 0x72, ++ 0x19, 0x9d, 0x27, 0xcd, 0xfa, 0x44, 0xfb, 0x89, 0x70, 0x58, 0x90, 0x9f, ++ 0x79, 0xfc, 0x25, 0x1c, 0x9e, 0x25, 0xe7, 0xb9, 0x0e, 0xd1, 0xbe, 0x5a, ++ 0x63, 0x7a, 0x36, 0xd3, 0xf8, 0x77, 0x72, 0x38, 0xee, 0x74, 0xc1, 0x3f, ++ 0xd0, 0xf8, 0xa2, 0xfd, 0x9c, 0x01, 0xe0, 0xef, 0xe0, 0x70, 0x74, 0x9c, ++ 0x27, 0xfc, 0xa2, 0xfd, 0x82, 0x01, 0xc6, 0xff, 0x2e, 0x87, 0xe3, 0xbb, ++ 0xe7, 0x09, 0xbf, 0x68, 0x7f, 0xeb, 0x00, 0xf8, 0x79, 0x94, 0xc3, 0xf1, ++ 0xe8, 0x79, 0xc2, 0x2f, 0xda, 0xb7, 0x0e, 0x30, 0xfe, 0x93, 0x1c, 0x8e, ++ 0x27, 0xcf, 0x13, 0x7e, 0xd1, 0x7e, 0xd3, 0x00, 0xf8, 0x79, 0x96, 0xc3, ++ 0xf1, 0xec, 0x79, 0xc2, 0x2f, 0xda, 0xef, 0xea, 0x93, 0x77, 0xa7, 0xfc, ++ 0x19, 0xe2, 0xfb, 0x06, 0x11, 0x52, 0x06, 0xf7, 0xbc, 0x47, 0x11, 0x7f, ++ 0x04, 0xbf, 0x6f, 0x10, 0xe9, 0x39, 0x8c, 0xdf, 0x37, 0x58, 0xa9, 0x85, ++ 0xf1, 0xfe, 0x79, 0x97, 0xfb, 0x5e, 0x94, 0xed, 0x3e, 0x15, 0x15, 0xf1, ++ 0xc3, 0x77, 0x96, 0xc6, 0xa1, 0xfd, 0xc3, 0x8b, 0x59, 0x9e, 0xf2, 0xc3, ++ 0x13, 0x09, 0xfa, 0x11, 0x0f, 0xe7, 0xb3, 0xbc, 0xfc, 0xbe, 0x78, 0x16, ++ 0xb7, 0x07, 0x1f, 0x9e, 0x28, 0x63, 0x3c, 0xe9, 0xe1, 0x90, 0x33, 0x8f, ++ 0xd9, 0xe0, 0xfe, 0xd9, 0xc3, 0x11, 0x1e, 0x27, 0x19, 0xc1, 0xf2, 0x98, ++ 0x8d, 0x72, 0x71, 0x9f, 0x96, 0x4e, 0x57, 0xc0, 0x4d, 0xc4, 0x30, 0xe4, ++ 0xd3, 0xb0, 0xfb, 0x55, 0xc2, 0xde, 0x13, 0xf7, 0xac, 0x56, 0xa9, 0x7c, ++ 0x7e, 0x8b, 0x24, 0x5b, 0x69, 0xff, 0x87, 0xcb, 0x59, 0x7d, 0xeb, 0x0c, ++ 0x92, 0x94, 0x8b, 0x6c, 0xf7, 0xaf, 0xca, 0x52, 0x78, 0x0f, 0x08, 0x0c, ++ 0x5b, 0x88, 0xc3, 0xf6, 0xdf, 0x1f, 0xb3, 0xc8, 0xca, 0x0a, 0x5b, 0x1e, ++ 0xc6, 0xca, 0x14, 0xe6, 0x19, 0xa8, 0x3c, 0x5f, 0x84, 0x22, 0x84, 0x38, ++ 0xf2, 0x31, 0x5c, 0xf7, 0xb6, 0xc4, 0xb9, 0xe1, 0x35, 0x11, 0x6b, 0x26, ++ 0xa8, 0xb9, 0xa2, 0x4a, 0x76, 0x8e, 0x57, 0x14, 0x75, 0xfa, 0x0f, 0x8d, ++ 0x70, 0x99, 0x8b, 0xb6, 0xff, 0x2d, 0xd7, 0x93, 0x66, 0x65, 0xfa, 0x7b, ++ 0x35, 0x7b, 0x75, 0x16, 0x97, 0x15, 0xf9, 0x9a, 0x57, 0xf3, 0xf5, 0x0b, ++ 0xbc, 0x55, 0x70, 0x7a, 0x6e, 0x98, 0xf3, 0xc7, 0xee, 0xe9, 0x74, 0x9d, ++ 0x2f, 0x4c, 0xf5, 0x60, 0xfe, 0xe8, 0x0b, 0x47, 0x39, 0x1e, 0xa7, 0x2a, ++ 0x49, 0x76, 0x6e, 0x4e, 0x3c, 0xe9, 0xee, 0xe3, 0x64, 0x8a, 0xb3, 0x19, ++ 0x9d, 0xcd, 0x47, 0x7c, 0x14, 0x3f, 0xd7, 0xbc, 0x48, 0x22, 0x40, 0xc6, ++ 0xc0, 0x36, 0xab, 0x3d, 0x8c, 0x71, 0xb5, 0x8f, 0x91, 0xff, 0x30, 0xae, ++ 0x46, 0xe7, 0xbd, 0x66, 0x5b, 0x42, 0x05, 0xfe, 0x9b, 0xdd, 0x19, 0x9e, ++ 0x0e, 0xf1, 0xc0, 0xab, 0x5f, 0x0c, 0xaf, 0x82, 0xef, 0x0a, 0x8c, 0xeb, ++ 0x24, 0x11, 0x0b, 0xd0, 0xfb, 0xf1, 0xb7, 0x70, 0x9c, 0xdc, 0x36, 0x12, ++ 0x49, 0x32, 0x52, 0xb5, 0x9a, 0x2c, 0xde, 0xe7, 0x8c, 0xcf, 0x89, 0x7b, ++ 0xbf, 0x3c, 0x3e, 0x07, 0x61, 0x6a, 0xbb, 0x7f, 0x39, 0x9b, 0xaf, 0xbb, ++ 0xa2, 0xcd, 0x6c, 0x87, 0x23, 0xbb, 0x8a, 0x19, 0x5e, 0x87, 0xfd, 0x3a, ++ 0x9b, 0xfb, 0x99, 0xff, 0x64, 0x79, 0x1d, 0x7e, 0xe6, 0x6c, 0x7e, 0x7f, ++ 0x7a, 0xb6, 0xcb, 0xcf, 0xec, 0xd4, 0x9d, 0xf1, 0x3a, 0xa3, 0x33, 0x3a, ++ 0x13, 0xe2, 0xdc, 0xca, 0xd5, 0xc7, 0x2c, 0x1d, 0xe0, 0x8f, 0x4a, 0x26, ++ 0x5c, 0x4b, 0xb9, 0x21, 0xba, 0x49, 0x85, 0x73, 0xe4, 0xd9, 0xdb, 0x9a, ++ 0xd9, 0xbd, 0xda, 0x0c, 0xe7, 0x5a, 0xd9, 0x0f, 0xcd, 0x0d, 0xd8, 0xed, ++ 0x77, 0x71, 0x8e, 0xfd, 0xab, 0x6d, 0xe7, 0xb6, 0xd7, 0x45, 0x9c, 0x41, ++ 0xc4, 0x1d, 0x5e, 0xe1, 0xf7, 0xf1, 0x5e, 0xe6, 0x79, 0xc5, 0x7d, 0xf9, ++ 0x28, 0x9c, 0x3f, 0x72, 0xaf, 0x96, 0x1c, 0x7c, 0xd2, 0xa9, 0x33, 0x3d, ++ 0xd2, 0x09, 0x7c, 0x92, 0xff, 0x9f, 0x7c, 0xf2, 0x79, 0xf3, 0xc9, 0x6f, ++ 0x74, 0x67, 0xfc, 0xa1, 0x13, 0xde, 0x51, 0x79, 0x2c, 0x8d, 0xa4, 0x3f, ++ 0x9f, 0x6f, 0xd0, 0xb5, 0xff, 0x94, 0xd7, 0x2f, 0x80, 0x0e, 0x41, 0x5f, ++ 0x7a, 0x3a, 0x90, 0xc6, 0x6c, 0x47, 0x1e, 0xb1, 0xc8, 0xa7, 0x72, 0xe3, ++ 0x6d, 0x0d, 0xc7, 0x9b, 0xa8, 0xeb, 0x19, 0xee, 0xbd, 0x8c, 0xf0, 0xf1, ++ 0x7d, 0xd6, 0xed, 0xd7, 0xbf, 0x11, 0xab, 0x86, 0x75, 0x89, 0x38, 0x0d, ++ 0x21, 0x77, 0xb9, 0xce, 0x35, 0xa7, 0x46, 0xce, 0x15, 0x97, 0x50, 0xc4, ++ 0xb9, 0x8f, 0xfc, 0x86, 0x02, 0xeb, 0x29, 0xf3, 0x71, 0xfd, 0xa3, 0x12, ++ 0x15, 0xc7, 0x77, 0xad, 0x03, 0xe5, 0xbe, 0x00, 0xf2, 0x0d, 0x39, 0x0c, ++ 0xae, 0xf1, 0xda, 0x41, 0x5f, 0x78, 0xfb, 0xd7, 0xe5, 0x29, 0x89, 0x5a, ++ 0x12, 0xde, 0x17, 0x25, 0x78, 0xce, 0x07, 0xf9, 0xea, 0xfb, 0xca, 0x61, ++ 0x7f, 0x34, 0x1d, 0xeb, 0xb6, 0x7c, 0x6c, 0xbf, 0x59, 0xc7, 0xef, 0x0b, ++ 0xad, 0x2b, 0x53, 0x93, 0x59, 0x2c, 0xaf, 0xca, 0xf9, 0xdd, 0xa2, 0x92, ++ 0x1d, 0x7a, 0x3a, 0xbb, 0x42, 0x94, 0x70, 0x2f, 0xd5, 0x9e, 0xe7, 0xe1, ++ 0x86, 0x57, 0x2b, 0x89, 0xc5, 0xed, 0xf0, 0x68, 0x1c, 0x1e, 0xf7, 0x38, ++ 0x73, 0x33, 0xc2, 0xd3, 0xe0, 0x88, 0x7f, 0x9d, 0x2f, 0x3c, 0xde, 0xf1, ++ 0x84, 0x74, 0x03, 0xdf, 0xaa, 0x94, 0x8b, 0x91, 0x7f, 0xbf, 0xe5, 0x18, ++ 0x4f, 0x2e, 0x4b, 0x92, 0x9e, 0x74, 0x71, 0x28, 0x3e, 0x0e, 0xdc, 0x55, ++ 0xc3, 0x75, 0xb9, 0xe8, 0x92, 0x69, 0x7e, 0x7d, 0x84, 0x33, 0xff, 0x49, ++ 0xcb, 0x73, 0xde, 0x4f, 0x51, 0x8d, 0x5c, 0x57, 0x7e, 0x94, 0x8b, 0xbf, ++ 0xfa, 0xe2, 0x42, 0x83, 0x9b, 0x4f, 0x7c, 0xcf, 0x67, 0x35, 0xe7, 0x83, ++ 0x36, 0x7e, 0x1f, 0xc5, 0xdd, 0xdf, 0xa7, 0x26, 0x48, 0x24, 0x0d, 0xde, ++ 0x7d, 0x61, 0x77, 0x1e, 0x46, 0x12, 0xe9, 0xe0, 0x0d, 0x39, 0xbf, 0x3b, ++ 0xe0, 0x31, 0x5d, 0x70, 0xbb, 0xc6, 0x5f, 0x0f, 0xcf, 0xd2, 0xe4, 0xdf, ++ 0xb8, 0xef, 0x57, 0xae, 0x55, 0x93, 0x68, 0x6f, 0xc5, 0x29, 0x98, 0x90, ++ 0xe7, 0xd9, 0xce, 0xf9, 0x52, 0x35, 0x93, 0x78, 0x2f, 0xeb, 0x3b, 0x3e, ++ 0x29, 0xed, 0xfa, 0x49, 0x24, 0xfd, 0x7e, 0xab, 0x96, 0xa4, 0x87, 0xdf, ++ 0x7d, 0x2f, 0x48, 0xcb, 0xcb, 0x75, 0xd2, 0x21, 0xc3, 0xfd, 0xdb, 0xb5, ++ 0x42, 0xee, 0xcd, 0x5d, 0x16, 0xf0, 0x09, 0x92, 0x26, 0x0c, 0xff, 0xe7, ++ 0x96, 0xf3, 0x83, 0x91, 0x73, 0xed, 0xe7, 0x59, 0x42, 0x6f, 0x49, 0xbf, ++ 0x51, 0x3e, 0xa1, 0x4b, 0xda, 0xed, 0x73, 0x7d, 0x2f, 0x61, 0x90, 0xf4, ++ 0x55, 0x3f, 0x1a, 0x02, 0x97, 0x56, 0xfb, 0xeb, 0x54, 0xaf, 0x42, 0xbc, ++ 0x96, 0xca, 0x08, 0xe6, 0xf1, 0xba, 0xdb, 0x1f, 0x13, 0xf8, 0x7b, 0x63, ++ 0x07, 0xc2, 0x2f, 0xf4, 0x74, 0xd6, 0x36, 0x91, 0x4f, 0xfb, 0xe9, 0xd6, ++ 0x01, 0xb9, 0x06, 0xec, 0x7c, 0xdc, 0xd9, 0x3f, 0xa3, 0x1c, 0x72, 0x3d, ++ 0xa7, 0x70, 0xbe, 0x7e, 0x6e, 0x80, 0xf5, 0x67, 0xa2, 0xaf, 0xbf, 0xc4, ++ 0x9d, 0x4f, 0x38, 0x38, 0xfa, 0xfa, 0x40, 0xee, 0x61, 0xdf, 0x53, 0x2d, ++ 0x7e, 0x88, 0xee, 0x94, 0xfb, 0x4c, 0xf3, 0x11, 0x93, 0xad, 0xf7, 0x7c, ++ 0xe5, 0xfe, 0xd3, 0xc2, 0x39, 0xa4, 0x26, 0x46, 0x40, 0x9f, 0x69, 0xa1, ++ 0x18, 0x89, 0xd1, 0x7d, 0xbe, 0x30, 0x94, 0x90, 0x20, 0xce, 0x60, 0x48, ++ 0xbd, 0x71, 0xf0, 0xc7, 0xa8, 0x4c, 0x85, 0x81, 0xce, 0x1b, 0xe1, 0x52, ++ 0x5d, 0xbe, 0xb3, 0xdd, 0x34, 0xda, 0xcf, 0x53, 0x24, 0xc7, 0x3d, 0xd9, ++ 0x20, 0x7f, 0x91, 0xc3, 0xd0, 0x3e, 0x1e, 0x22, 0x5d, 0xd0, 0x7e, 0x7d, ++ 0x9e, 0x5a, 0xb3, 0xa3, 0xbc, 0xbf, 0x9d, 0x21, 0x91, 0x28, 0xf0, 0xbb, ++ 0x91, 0xaf, 0x46, 0xe1, 0xb9, 0x18, 0x2f, 0x7b, 0xaa, 0x73, 0x3c, 0x6a, ++ 0x26, 0x28, 0xf6, 0x7b, 0x58, 0xee, 0xef, 0x2d, 0x78, 0xa6, 0x30, 0xff, ++ 0x54, 0xa3, 0x76, 0xe8, 0xf6, 0x74, 0xfa, 0xc4, 0xcf, 0xec, 0xd0, 0xac, ++ 0x67, 0x7d, 0x78, 0xaf, 0x2f, 0x10, 0x35, 0x92, 0xc0, 0x92, 0x85, 0x95, ++ 0x49, 0xcc, 0xe3, 0x2c, 0x6c, 0x20, 0x11, 0xf0, 0xe7, 0x4a, 0x3b, 0xbb, ++ 0x49, 0x8c, 0x0e, 0xba, 0x96, 0xc3, 0x51, 0x58, 0x99, 0xc0, 0xfc, 0x80, ++ 0xc2, 0x6d, 0x09, 0x3c, 0xb7, 0xcf, 0xf3, 0x92, 0x66, 0xd8, 0x97, 0x0b, ++ 0x1b, 0x13, 0xd2, 0x02, 0xdb, 0x3c, 0x65, 0x7e, 0xc6, 0xdf, 0xd3, 0xe6, ++ 0xea, 0xb8, 0x4f, 0x7c, 0xab, 0x9a, 0xdd, 0xdb, 0xeb, 0x0e, 0x2d, 0x4c, ++ 0x54, 0xc3, 0x7c, 0x55, 0xec, 0xdc, 0x2b, 0x90, 0xa7, 0x92, 0x61, 0x14, ++ 0x1f, 0x81, 0x57, 0xbd, 0xcc, 0xff, 0xac, 0xec, 0x81, 0x6f, 0x49, 0xb0, ++ 0x7c, 0x11, 0xfa, 0xfe, 0x9d, 0x16, 0x52, 0x51, 0x3f, 0x96, 0x90, 0xf7, ++ 0x5a, 0x74, 0x2c, 0x4f, 0xb6, 0x98, 0x58, 0x9a, 0x1f, 0xff, 0xcf, 0x10, ++ 0xe4, 0xb7, 0xb4, 0x5f, 0x32, 0x39, 0x0c, 0xf9, 0x08, 0x67, 0x02, 0x0d, ++ 0xa3, 0x61, 0xdf, 0xf8, 0xa0, 0x25, 0x84, 0xef, 0xef, 0xfb, 0x76, 0x24, ++ 0x0c, 0x79, 0x44, 0xca, 0x91, 0xd7, 0xf0, 0x3b, 0x12, 0xfd, 0xfc, 0x1e, ++ 0x57, 0x48, 0x15, 0xe4, 0xbf, 0xf6, 0x58, 0x40, 0x3f, 0xdb, 0xfa, 0x77, ++ 0xf8, 0x6c, 0xe7, 0xfc, 0x7d, 0xeb, 0xa2, 0xeb, 0x5d, 0x40, 0xe7, 0xb9, ++ 0x57, 0x92, 0x6f, 0x84, 0xf9, 0xa0, 0xbe, 0x10, 0xf9, 0x54, 0x57, 0xb4, ++ 0x02, 0x8e, 0xef, 0x30, 0xc3, 0x33, 0xd8, 0x97, 0x9e, 0x76, 0x12, 0x7d, ++ 0xa2, 0x1c, 0xbe, 0x67, 0x92, 0x94, 0x6e, 0x2d, 0xb7, 0x3d, 0xf7, 0x51, ++ 0xbb, 0x0d, 0xf6, 0xd7, 0x4b, 0x4c, 0xa4, 0x7b, 0x3f, 0x3e, 0x93, 0xad, ++ 0x1c, 0xdf, 0x13, 0xc1, 0xdf, 0x2d, 0x7c, 0x91, 0xe3, 0x75, 0x6e, 0xd5, ++ 0x39, 0xcf, 0x4d, 0xd6, 0xb7, 0xa4, 0xba, 0x67, 0x8c, 0xed, 0xaf, 0x1b, ++ 0x19, 0xee, 0xbb, 0xcd, 0xf5, 0x4c, 0xbb, 0xdc, 0x4f, 0xe7, 0x99, 0x09, ++ 0x97, 0xd8, 0x29, 0x9f, 0x4f, 0x9f, 0x5b, 0x36, 0x14, 0xf0, 0xf5, 0xa0, ++ 0xc7, 0x79, 0x8f, 0x5c, 0x94, 0x8a, 0x39, 0x29, 0x52, 0x02, 0x6d, 0xe3, ++ 0x85, 0x32, 0xca, 0x21, 0xff, 0xde, 0xca, 0x8a, 0xf1, 0xe1, 0xa1, 0x39, ++ 0xb6, 0xf1, 0x67, 0x72, 0xf8, 0x95, 0x23, 0x3f, 0x41, 0xfc, 0x66, 0x95, ++ 0x27, 0xc4, 0x77, 0x77, 0x6a, 0x0b, 0x6d, 0x79, 0xff, 0x23, 0x62, 0x0d, ++ 0xec, 0x3b, 0x7e, 0xcd, 0xec, 0x7e, 0x8c, 0x38, 0x87, 0x1c, 0x7d, 0x7d, ++ 0x4f, 0x2b, 0x1c, 0x49, 0x8c, 0x5e, 0xe9, 0xbc, 0x37, 0x33, 0x8b, 0xdf, ++ 0xf3, 0x2c, 0x6a, 0x97, 0x31, 0xef, 0xb5, 0x68, 0x0a, 0xea, 0x50, 0x52, ++ 0xd4, 0x4a, 0x30, 0xbf, 0x6a, 0xa7, 0x12, 0xa9, 0x00, 0xfe, 0x7e, 0x88, ++ 0xbc, 0x9c, 0x63, 0x29, 0xb0, 0x2b, 0x13, 0x32, 0x92, 0x8a, 0x6a, 0x51, ++ 0xdc, 0x39, 0xce, 0xce, 0x45, 0xb5, 0xcf, 0x43, 0x1c, 0x40, 0xdc, 0x1b, ++ 0x5d, 0xd5, 0xc6, 0xc6, 0x1b, 0x15, 0x8e, 0x1c, 0x0d, 0x43, 0xfc, 0xa4, ++ 0x5c, 0x46, 0x7b, 0x79, 0x34, 0x89, 0xe8, 0x30, 0xfe, 0x68, 0x43, 0x26, ++ 0x70, 0xaf, 0x68, 0x0c, 0xb1, 0x8d, 0x43, 0xeb, 0x23, 0x9b, 0x9d, 0xe3, ++ 0xba, 0xe1, 0x2d, 0x0a, 0xc8, 0xf8, 0xdd, 0x02, 0x01, 0xcf, 0x28, 0xb2, ++ 0x5f, 0xb7, 0xf2, 0x70, 0x7c, 0x92, 0xa4, 0xfd, 0x47, 0x50, 0x37, 0x6f, ++ 0x78, 0x1a, 0xf8, 0xdc, 0xf3, 0x8c, 0x11, 0xed, 0x2e, 0xaa, 0xa8, 0x48, ++ 0x91, 0x34, 0xf3, 0x92, 0xde, 0x56, 0x38, 0x17, 0x3a, 0x6b, 0xfe, 0x01, ++ 0xc6, 0x6d, 0xf1, 0xf7, 0xe5, 0xdf, 0x05, 0x41, 0x9f, 0x6f, 0x93, 0xd8, ++ 0xfa, 0xe3, 0x2f, 0x28, 0x91, 0xdd, 0x40, 0xd7, 0x5b, 0xf7, 0x60, 0xbc, ++ 0x66, 0xc4, 0x8a, 0x4e, 0xdc, 0xd7, 0x3b, 0xfd, 0xcc, 0xbe, 0x5b, 0x4d, ++ 0xed, 0x01, 0xc3, 0x03, 0x76, 0x0a, 0x2d, 0xc7, 0x66, 0xe6, 0x43, 0xc5, ++ 0xa4, 0x88, 0xcb, 0xc6, 0xfd, 0x23, 0x2d, 0xff, 0x3d, 0xe6, 0xaf, 0xde, ++ 0xe8, 0x87, 0x78, 0x98, 0x7f, 0xda, 0x46, 0xe0, 0x43, 0xbf, 0x1a, 0xbe, ++ 0x16, 0xe8, 0xe1, 0x3f, 0xea, 0x21, 0x70, 0x8e, 0xe9, 0xb7, 0x12, 0x28, ++ 0x7f, 0xa4, 0x84, 0xd9, 0x19, 0xf7, 0x96, 0x17, 0x67, 0x83, 0xbc, 0xf9, ++ 0x9b, 0xb5, 0xb4, 0xfe, 0x5a, 0x9b, 0xdf, 0x83, 0xf0, 0x6d, 0xf3, 0x4b, ++ 0x2a, 0xe4, 0x83, 0x52, 0xde, 0xc2, 0x75, 0xa9, 0x8d, 0xe1, 0xef, 0xce, ++ 0xa2, 0xd5, 0xff, 0x96, 0x6f, 0x3d, 0x02, 0xf3, 0xbc, 0x9f, 0x1f, 0xc3, ++ 0x52, 0x3c, 0x0f, 0x2d, 0xac, 0x0b, 0x03, 0x7f, 0x4e, 0xbf, 0xa5, 0x1c, ++ 0xe3, 0x5f, 0xa7, 0x3b, 0x25, 0x8c, 0x7f, 0xbd, 0x2d, 0x25, 0x35, 0x48, ++ 0xd1, 0x5e, 0x7a, 0x75, 0xf3, 0x84, 0x2b, 0x28, 0x3e, 0xe6, 0xe4, 0xc4, ++ 0x1e, 0x85, 0x7e, 0x8d, 0x75, 0xdd, 0xcf, 0xb3, 0x33, 0xda, 0xe6, 0x52, ++ 0xf0, 0xeb, 0x6a, 0x21, 0xcf, 0x2f, 0x1f, 0xa6, 0x8b, 0x33, 0x7f, 0x70, ++ 0xc4, 0x5b, 0x11, 0x15, 0xee, 0x83, 0x8d, 0x50, 0x53, 0x9e, 0x20, 0x7c, ++ 0xcf, 0xe7, 0xc8, 0xab, 0xac, 0x8c, 0x57, 0x03, 0xbf, 0xeb, 0x70, 0x03, ++ 0x86, 0xd2, 0x33, 0x58, 0x62, 0xbd, 0x0b, 0x7e, 0x53, 0x80, 0xdf, 0x3f, ++ 0x52, 0x48, 0x6f, 0x5c, 0x02, 0xff, 0x68, 0x2a, 0x21, 0x6f, 0xd9, 0xe8, ++ 0x06, 0x3e, 0x9d, 0xbd, 0x0e, 0x67, 0xba, 0xf6, 0x7a, 0x26, 0xfc, 0x0f, ++ 0x54, 0xd6, 0xd3, 0xbe, 0x6f, 0x8d, 0x85, 0x5d, 0x3e, 0x62, 0x49, 0x68, ++ 0x17, 0x24, 0xd9, 0x77, 0x10, 0xcc, 0xc8, 0x04, 0x80, 0x53, 0x09, 0x1d, ++ 0x2d, 0x28, 0xb1, 0xed, 0x73, 0x5e, 0xbe, 0x3e, 0xef, 0xf4, 0x85, 0xfc, ++ 0x7b, 0x49, 0x16, 0xf7, 0x6f, 0x22, 0xc4, 0xee, 0xdf, 0x7a, 0xf9, 0xba, ++ 0x40, 0x87, 0xbf, 0x65, 0xeb, 0xef, 0x09, 0x39, 0xeb, 0x8a, 0xf9, 0xf9, ++ 0xae, 0x43, 0xd8, 0xdd, 0xd2, 0x33, 0x7f, 0x39, 0x01, 0x74, 0x5c, 0xf5, ++ 0xa4, 0x07, 0xe3, 0x9e, 0xd3, 0x9f, 0xf4, 0xa4, 0x2e, 0xa7, 0xf5, 0x65, ++ 0xdb, 0x25, 0xdc, 0x67, 0xe4, 0x43, 0x4c, 0xaf, 0x7f, 0xb0, 0x4b, 0x42, ++ 0xb9, 0x4f, 0x05, 0x34, 0xd4, 0x03, 0xef, 0x9b, 0x3a, 0xd6, 0x9b, 0xbc, ++ 0xdd, 0x1b, 0xbe, 0x44, 0xeb, 0xbd, 0x4f, 0x2a, 0x64, 0x07, 0xa2, 0xa5, ++ 0x0e, 0xbf, 0x2f, 0x75, 0x42, 0xec, 0xa7, 0x07, 0x58, 0x7d, 0x11, 0x77, ++ 0x90, 0x96, 0x6d, 0x3f, 0x3c, 0x1f, 0xc6, 0x6b, 0x38, 0xe0, 0x25, 0xb0, ++ 0x4f, 0x2c, 0xfb, 0xc9, 0x2d, 0x57, 0x7d, 0x89, 0xd6, 0x6f, 0xa1, 0x7c, ++ 0x0c, 0x4d, 0x96, 0xed, 0x6e, 0xd5, 0x86, 0xd1, 0xfa, 0xe2, 0xa4, 0xd4, ++ 0x05, 0xf5, 0x53, 0xd3, 0x08, 0xf2, 0x59, 0x3c, 0x57, 0x4b, 0x42, 0x5e, ++ 0xcb, 0xa9, 0x60, 0x77, 0xc1, 0x35, 0x06, 0xee, 0x63, 0x24, 0x3c, 0x0e, ++ 0xce, 0xb7, 0xbb, 0x0b, 0xae, 0xa6, 0xfc, 0xb8, 0x24, 0xf9, 0xc4, 0x2c, ++ 0xe8, 0xb7, 0x64, 0xaf, 0x04, 0x91, 0x54, 0xba, 0x8e, 0xdd, 0xcf, 0x17, ++ 0x52, 0xb8, 0x96, 0x7d, 0x5f, 0xc2, 0xfd, 0x71, 0xe9, 0x9e, 0x2c, 0x12, ++ 0xb6, 0xe1, 0xf3, 0x04, 0x5d, 0xca, 0xe5, 0xf4, 0xfd, 0x0a, 0xba, 0x4e, ++ 0xd0, 0x87, 0xb7, 0x90, 0xc4, 0x2c, 0xa0, 0xd7, 0xb2, 0xdd, 0x9b, 0x34, ++ 0xfb, 0x3e, 0xf7, 0x5e, 0x4b, 0x19, 0xa6, 0x7e, 0x88, 0xfa, 0xb2, 0xef, ++ 0xd3, 0x79, 0x68, 0xbf, 0xe5, 0x3f, 0x94, 0x22, 0xb0, 0xc4, 0xe5, 0x90, ++ 0xef, 0x00, 0xfb, 0xe5, 0x4f, 0x7c, 0x75, 0x3b, 0x0d, 0x58, 0x5f, 0xab, ++ 0x56, 0x1a, 0x80, 0x75, 0xad, 0xd1, 0xa0, 0xdd, 0x2d, 0xc9, 0x05, 0x4f, ++ 0xf9, 0xc2, 0x00, 0xdf, 0x76, 0x6d, 0x16, 0x7d, 0xbf, 0x64, 0xdb, 0x76, ++ 0x6d, 0x51, 0x39, 0xe0, 0x8d, 0xdc, 0x08, 0xfb, 0xea, 0xd2, 0x3d, 0x17, ++ 0x92, 0xb0, 0x8d, 0xae, 0x27, 0x3a, 0x15, 0xf4, 0x17, 0x56, 0xe4, 0xe8, ++ 0x3b, 0xf0, 0x7b, 0xa2, 0x86, 0x15, 0x9a, 0x9b, 0x26, 0x1e, 0xf2, 0x5e, ++ 0x0b, 0x71, 0xc0, 0xb5, 0x84, 0xeb, 0x0d, 0xea, 0xf7, 0x69, 0x73, 0x6c, ++ 0xed, 0x9f, 0xca, 0xca, 0x41, 0x3e, 0x5d, 0xba, 0x47, 0x71, 0xcc, 0x23, ++ 0xe8, 0x1f, 0x3f, 0x46, 0xd8, 0x3d, 0xb4, 0x9f, 0x05, 0xf0, 0x1e, 0x9a, ++ 0xa0, 0x9f, 0xd8, 0xaf, 0x04, 0xfd, 0x56, 0x88, 0x0f, 0xe5, 0xa9, 0xbd, ++ 0x93, 0xd3, 0xc1, 0x03, 0xdf, 0xd5, 0x02, 0x78, 0x12, 0xd4, 0xbf, 0x81, ++ 0xf2, 0xfe, 0x96, 0x10, 0x96, 0x0f, 0xb6, 0x84, 0x91, 0x4e, 0x9b, 0x01, ++ 0x8f, 0xe3, 0x58, 0x5e, 0x0a, 0x3c, 0xa7, 0x72, 0x8b, 0xdf, 0xf3, 0x0b, ++ 0x5a, 0xf0, 0xa1, 0x29, 0xb8, 0x8f, 0x62, 0x55, 0x43, 0xfe, 0x65, 0x6e, ++ 0x94, 0xd5, 0x0b, 0xae, 0x8f, 0x49, 0xe1, 0x73, 0xd8, 0xe9, 0xa2, 0xdc, ++ 0xec, 0x89, 0x2d, 0x00, 0x23, 0x67, 0x6a, 0xd6, 0xf7, 0x66, 0xaa, 0xd4, ++ 0x1f, 0xdb, 0xac, 0xc5, 0x6e, 0x85, 0x90, 0xb5, 0xa9, 0xee, 0x98, 0x39, ++ 0x83, 0xee, 0x79, 0x8d, 0x59, 0xd1, 0xc9, 0x59, 0xb6, 0x73, 0xbf, 0xd5, ++ 0xfc, 0x3b, 0x32, 0x17, 0x67, 0x85, 0x71, 0xfd, 0xab, 0x0b, 0x35, 0xc4, ++ 0xf7, 0xe6, 0x1b, 0x26, 0xef, 0xe4, 0xf1, 0x27, 0xdc, 0x27, 0x37, 0xdf, ++ 0xb0, 0xe8, 0x51, 0x88, 0x8f, 0xd3, 0xfe, 0x5f, 0xc9, 0x02, 0xff, 0x82, ++ 0x9f, 0xff, 0x65, 0xea, 0x5f, 0x30, 0xbf, 0xca, 0xd1, 0xbf, 0x60, 0x7e, ++ 0x83, 0xe8, 0x3f, 0x0b, 0xfb, 0xeb, 0xe7, 0xee, 0xbf, 0x79, 0xfe, 0x65, ++ 0xce, 0xf9, 0xe7, 0x2f, 0x11, 0xfd, 0xaf, 0x42, 0xf8, 0x8d, 0x73, 0xc3, ++ 0x5f, 0x70, 0xe3, 0x54, 0xe7, 0xfc, 0x37, 0x36, 0x62, 0xff, 0x26, 0x2f, ++ 0xa3, 0x6f, 0x6f, 0x8e, 0x8e, 0x79, 0xd6, 0x6d, 0xbe, 0x48, 0xca, 0x03, ++ 0x74, 0x56, 0x09, 0x7e, 0x87, 0x5a, 0xcd, 0x2d, 0xdd, 0x01, 0xed, 0xc4, ++ 0xbe, 0x43, 0x2d, 0x4b, 0x0b, 0xf2, 0xb6, 0x8d, 0xbd, 0x39, 0x15, 0xeb, ++ 0x88, 0x9d, 0x8f, 0xa6, 0xcd, 0x07, 0x38, 0x02, 0x54, 0xba, 0xec, 0x7c, ++ 0x94, 0x5d, 0xe5, 0x77, 0xc8, 0x55, 0x8e, 0x95, 0xeb, 0xa8, 0x0f, 0xa9, ++ 0x19, 0xe6, 0x68, 0x9f, 0x1f, 0x2d, 0x76, 0xbc, 0x1f, 0x5a, 0x77, 0x81, ++ 0x8b, 0x2f, 0x0d, 0xbc, 0xb7, 0x88, 0x75, 0x00, 0x0a, 0x0c, 0x73, 0x0a, ++ 0xa7, 0x36, 0x4c, 0x43, 0x7d, 0x54, 0x3d, 0x8c, 0xd9, 0xc1, 0x77, 0x1c, ++ 0xf2, 0x61, 0xfd, 0x8e, 0xcb, 0xd8, 0xfa, 0xee, 0x18, 0x66, 0xa0, 0x1c, ++ 0x03, 0xcc, 0xe0, 0x97, 0xdf, 0xa1, 0xc5, 0x2e, 0xb6, 0x7f, 0x27, 0x96, ++ 0xae, 0x4b, 0x82, 0xc3, 0x9c, 0x9b, 0x8d, 0xd8, 0x9d, 0xb0, 0x8e, 0xfe, ++ 0xe7, 0x61, 0x19, 0x9e, 0xfb, 0x79, 0xbe, 0x93, 0xdf, 0x4b, 0x50, 0xdf, ++ 0xad, 0x29, 0x9a, 0xbc, 0x33, 0x6e, 0xc3, 0x67, 0xc7, 0x48, 0xca, 0x0f, ++ 0xb4, 0xde, 0x96, 0xa5, 0x31, 0xbc, 0x73, 0x3a, 0xac, 0x19, 0xb9, 0x28, ++ 0x64, 0xb7, 0xd7, 0x57, 0x8f, 0xd4, 0xea, 0xc0, 0xdf, 0x80, 0xe7, 0x37, ++ 0x19, 0x30, 0x5f, 0x74, 0x35, 0xcc, 0xd7, 0xa4, 0xf5, 0x96, 0x82, 0xdd, ++ 0xe1, 0x9e, 0xc7, 0x5b, 0x5c, 0xe5, 0x98, 0x47, 0x1f, 0xd5, 0x80, 0xf3, ++ 0x6c, 0xca, 0x62, 0xf1, 0x54, 0x31, 0x8f, 0x77, 0x54, 0x83, 0x6b, 0x1e, ++ 0xbd, 0x6e, 0x07, 0x7f, 0xce, 0xe7, 0x79, 0x00, 0xf8, 0x2c, 0xd3, 0x3c, ++ 0x6b, 0x8a, 0x2f, 0x73, 0xae, 0x67, 0xd4, 0x12, 0x9c, 0xe7, 0x61, 0xd7, ++ 0x3c, 0x6b, 0x46, 0x2d, 0x71, 0xcd, 0xe3, 0x67, 0xeb, 0xa1, 0xcf, 0xf9, ++ 0x3c, 0xc9, 0x73, 0xcd, 0xe3, 0x1d, 0x33, 0xd5, 0xb9, 0x9e, 0xd1, 0x8d, ++ 0x38, 0xcf, 0x3f, 0xbb, 0xd7, 0x33, 0xba, 0xd1, 0x35, 0x8f, 0x81, 0xf3, ++ 0xc0, 0x73, 0x98, 0x87, 0x1a, 0xbe, 0x61, 0xf8, 0x3e, 0x96, 0xe6, 0xed, ++ 0x5d, 0x84, 0xf4, 0x7f, 0xc6, 0x87, 0x76, 0x8e, 0xe6, 0x8d, 0x3d, 0x86, ++ 0x76, 0xce, 0xeb, 0x3e, 0xb4, 0x73, 0x68, 0x2b, 0x0b, 0xbf, 0xa3, 0x55, ++ 0xc6, 0xfc, 0xdb, 0xdb, 0xb2, 0x72, 0x91, 0x3e, 0x67, 0xfc, 0x94, 0xfe, ++ 0x86, 0x9d, 0xce, 0x71, 0x9e, 0x77, 0x10, 0x47, 0xbf, 0xf8, 0x66, 0x0e, ++ 0x22, 0x49, 0x52, 0x88, 0xa8, 0x7e, 0x5b, 0xce, 0x79, 0xb0, 0x7e, 0xef, ++ 0x9c, 0x51, 0xad, 0x50, 0x1e, 0x98, 0x1e, 0x5a, 0x00, 0xfe, 0xe8, 0x83, ++ 0x01, 0x8c, 0xe3, 0x7d, 0x70, 0x60, 0xba, 0x76, 0x53, 0x1a, 0x7d, 0x74, ++ 0x73, 0xc2, 0x73, 0xa2, 0xc7, 0xc6, 0xcf, 0x7d, 0x7a, 0x95, 0xc7, 0x63, ++ 0x43, 0x59, 0xec, 0x1c, 0x52, 0xd4, 0x4f, 0xf0, 0xf8, 0xcf, 0x5b, 0x10, ++ 0x27, 0xa2, 0xe5, 0xdb, 0x1e, 0x82, 0xfe, 0xd0, 0x71, 0x1e, 0x2f, 0xea, ++ 0x87, 0xb7, 0x15, 0xfb, 0x9d, 0xe0, 0xe7, 0x7a, 0x27, 0xb6, 0xb1, 0x7d, ++ 0xea, 0xcc, 0xa6, 0x63, 0xec, 0xbb, 0x39, 0x71, 0xf2, 0x72, 0xf9, 0x64, ++ 0xf8, 0x1e, 0x0d, 0xfb, 0x77, 0x73, 0x22, 0xcb, 0xe1, 0x8f, 0x37, 0x71, ++ 0x7a, 0xf4, 0xfe, 0xc4, 0x9b, 0xdc, 0x81, 0xf4, 0xb0, 0x86, 0xe3, 0x77, ++ 0x7f, 0x3b, 0x87, 0x38, 0xe2, 0x85, 0xbf, 0x39, 0xf4, 0xb5, 0xe7, 0x59, ++ 0xde, 0x1d, 0x19, 0x0e, 0xdf, 0xcb, 0xbb, 0xae, 0xe3, 0x89, 0xe7, 0xa0, ++ 0xd9, 0x2b, 0xd2, 0x82, 0x91, 0x2b, 0xe8, 0x7a, 0xeb, 0xf6, 0x6f, 0xf2, ++ 0x0c, 0xa7, 0xf5, 0x0f, 0x3c, 0x3d, 0xf3, 0x23, 0x86, 0x6d, 0x9c, 0x3a, ++ 0x0f, 0xde, 0xbb, 0x17, 0x7e, 0xc8, 0x37, 0x62, 0x1e, 0x87, 0xfd, 0xfc, ++ 0xcd, 0x06, 0x67, 0xfd, 0x06, 0x97, 0x3d, 0xfd, 0x46, 0x56, 0xb1, 0x38, ++ 0x9f, 0x65, 0xf3, 0x86, 0x93, 0x1e, 0xa0, 0xd7, 0x3c, 0x38, 0x63, 0xa5, ++ 0x24, 0xbc, 0x01, 0x4a, 0x4c, 0xbe, 0x33, 0x91, 0x5e, 0xf3, 0x4d, 0xd6, ++ 0x57, 0xc0, 0xd3, 0x74, 0x97, 0x87, 0xa4, 0x70, 0xbf, 0xeb, 0xc9, 0xc7, ++ 0x38, 0x67, 0x3c, 0x1f, 0xe3, 0x34, 0x31, 0xb1, 0x6f, 0xb9, 0xe0, 0x9b, ++ 0xef, 0xd1, 0xad, 0x28, 0xa5, 0xe7, 0xfc, 0x3b, 0x15, 0xc4, 0xa3, 0x1b, ++ 0xde, 0x9e, 0x43, 0x59, 0x96, 0x4c, 0xfd, 0x9c, 0x9e, 0xce, 0xff, 0xed, ++ 0x81, 0xfb, 0x3b, 0x03, 0xc1, 0x7f, 0xe3, 0x4a, 0xe7, 0x7b, 0x12, 0xf7, ++ 0x38, 0xbe, 0x43, 0x20, 0xf8, 0xe0, 0xda, 0xba, 0xea, 0x9d, 0xc7, 0x6d, ++ 0xfc, 0xf1, 0x8d, 0xd8, 0xec, 0x9d, 0xc7, 0x1d, 0x78, 0x9a, 0xe3, 0xa8, ++ 0xdf, 0xd0, 0xfc, 0x0d, 0x47, 0xfb, 0x1b, 0x57, 0x2e, 0x70, 0xbc, 0x5f, ++ 0x10, 0x5f, 0xec, 0x78, 0x7f, 0x53, 0xc7, 0xad, 0x8e, 0xfa, 0xcd, 0x89, ++ 0x3b, 0x1d, 0xed, 0x6f, 0xe9, 0x6c, 0x75, 0xbc, 0x5f, 0x9c, 0x5c, 0xeb, ++ 0x78, 0xbf, 0x74, 0xcf, 0x26, 0x47, 0x7d, 0x59, 0xd7, 0x16, 0x47, 0xfb, ++ 0xa6, 0x03, 0xdb, 0x1d, 0xef, 0xe5, 0x43, 0xe3, 0xff, 0x09, 0xfd, 0xc0, ++ 0x5f, 0x29, 0x78, 0xcf, 0xf9, 0x43, 0xe3, 0xc4, 0x06, 0xb0, 0xdf, 0x3e, ++ 0x34, 0xd9, 0x77, 0xfe, 0xdf, 0xe1, 0xe7, 0x77, 0xef, 0xf1, 0xef, 0xfd, ++ 0x2c, 0x07, 0xde, 0x9b, 0x02, 0xf2, 0x33, 0x49, 0x07, 0xbf, 0xa1, 0xc9, ++ 0x4f, 0xe5, 0x99, 0xda, 0x12, 0x13, 0x8c, 0xfc, 0xd5, 0x1d, 0x53, 0x41, ++ 0x8f, 0x10, 0xfc, 0xa4, 0x46, 0x85, 0x31, 0x7c, 0x75, 0x9c, 0x3a, 0xbb, ++ 0x53, 0xf8, 0xbd, 0x44, 0xa5, 0x53, 0x23, 0xa9, 0x21, 0x70, 0xbc, 0xd2, ++ 0x1f, 0x87, 0xed, 0x55, 0xfa, 0xdf, 0xab, 0x3d, 0xf4, 0xfd, 0xa4, 0xcc, ++ 0xef, 0x95, 0x4e, 0x35, 0xed, 0x7b, 0xb5, 0x47, 0x4d, 0x3b, 0xee, 0x29, ++ 0xa9, 0xb7, 0x14, 0xec, 0xc7, 0xf8, 0x6b, 0xde, 0xb4, 0xf7, 0xbf, 0xfb, ++ 0xe5, 0x92, 0x0c, 0x87, 0xfd, 0x22, 0xd3, 0xfb, 0x93, 0x32, 0x69, 0xb0, ++ 0xfb, 0x6f, 0xf3, 0x0c, 0x16, 0x1f, 0x7a, 0x3e, 0x6b, 0xda, 0x3c, 0x03, ++ 0xfc, 0x21, 0x8d, 0xc9, 0x7b, 0xe3, 0xbe, 0xc2, 0x69, 0xe0, 0x37, 0x34, ++ 0x6a, 0xa9, 0xd2, 0x74, 0xe7, 0x36, 0x7d, 0xf3, 0x75, 0x49, 0xf8, 0x9d, ++ 0xc0, 0x79, 0x06, 0x93, 0x97, 0xc5, 0x49, 0xe7, 0xf7, 0x6f, 0x97, 0xee, ++ 0x19, 0xe3, 0x90, 0xfb, 0x57, 0xfd, 0xb1, 0x6b, 0x0c, 0xda, 0xee, 0xe4, ++ 0x61, 0x85, 0x7d, 0x2f, 0x2f, 0xf5, 0xec, 0xa8, 0xaf, 0x5f, 0x04, 0xf3, ++ 0x5b, 0xf3, 0xe0, 0x39, 0x39, 0x90, 0x8f, 0xfb, 0xe3, 0x2b, 0x2d, 0xd6, ++ 0xce, 0xe3, 0xd4, 0x0f, 0x78, 0xb5, 0xa5, 0x06, 0xcb, 0x7f, 0x6d, 0x89, ++ 0xee, 0x3c, 0x4e, 0x1d, 0xb5, 0x37, 0x5a, 0xea, 0xb0, 0xfe, 0xdb, 0x96, ++ 0x18, 0x96, 0x3d, 0x2d, 0x0d, 0x58, 0xbe, 0xd5, 0xd2, 0x8c, 0xef, 0x8f, ++ 0xb7, 0xac, 0xc4, 0xfa, 0x89, 0x96, 0x38, 0x96, 0xef, 0xb4, 0x74, 0x60, ++ 0xf9, 0x5e, 0x4b, 0x02, 0xdf, 0x9f, 0x6c, 0xe9, 0xc4, 0xfa, 0x07, 0x2d, ++ 0x49, 0x2c, 0x85, 0x1c, 0x08, 0x7b, 0x97, 0x44, 0xb9, 0x3d, 0x29, 0x0e, ++ 0x4c, 0x08, 0xab, 0x9f, 0xe6, 0x6b, 0x50, 0x0a, 0x44, 0x1c, 0x33, 0x82, ++ 0xdf, 0x8f, 0x3a, 0x6d, 0x9c, 0x29, 0x05, 0x3b, 0xfa, 0xf4, 0xab, 0x5e, ++ 0xcc, 0xbb, 0xcd, 0x84, 0x27, 0x37, 0xdf, 0x65, 0xa6, 0x9f, 0x85, 0xfb, ++ 0xfd, 0xa2, 0xa4, 0x33, 0xce, 0x2c, 0x4a, 0x9f, 0x9f, 0xd1, 0xc7, 0x27, ++ 0x93, 0x1a, 0xc8, 0x91, 0x58, 0x3b, 0x56, 0xc3, 0x38, 0x9a, 0xff, 0x99, ++ 0x0b, 0xd1, 0x1e, 0xa7, 0xcf, 0x55, 0xc2, 0xbe, 0xb7, 0x1c, 0xb1, 0x7f, ++ 0x4f, 0xa2, 0x6f, 0x7c, 0x48, 0x1e, 0x1e, 0x3a, 0x30, 0x9d, 0x44, 0xfb, ++ 0x13, 0xdf, 0xfb, 0xf7, 0xc9, 0x0b, 0xcb, 0x81, 0x3e, 0xc5, 0x88, 0x27, ++ 0xff, 0xb3, 0x4a, 0x33, 0xa3, 0xdb, 0xce, 0xc8, 0xd7, 0x2f, 0x1a, 0x18, ++ 0x7f, 0x68, 0xf3, 0x15, 0x9e, 0x8d, 0x47, 0xe9, 0x99, 0xdf, 0x8c, 0x82, ++ 0xf8, 0xd4, 0xfb, 0xf9, 0x02, 0x9f, 0xdd, 0xa3, 0x20, 0xb8, 0xa5, 0x1a, ++ 0xd1, 0x2d, 0xc0, 0x87, 0xa7, 0xf7, 0x7b, 0x71, 0x5d, 0xa7, 0x0f, 0x66, ++ 0xb1, 0x7c, 0x14, 0x08, 0xaa, 0x0d, 0x22, 0xff, 0x75, 0xe9, 0x1e, 0x5f, ++ 0xd2, 0xae, 0x1f, 0x96, 0x75, 0xe5, 0x24, 0x9d, 0xfa, 0xa2, 0x30, 0x69, ++ 0xd7, 0x17, 0xa7, 0x8f, 0xee, 0x0c, 0x82, 0xdc, 0xaf, 0x08, 0x29, 0xc9, ++ 0xe3, 0x93, 0x80, 0x3f, 0x2c, 0xce, 0x1f, 0x8c, 0xef, 0xc4, 0xf8, 0xcb, ++ 0xba, 0x8a, 0x92, 0x86, 0x63, 0x1c, 0x67, 0xfd, 0x74, 0x42, 0xaa, 0xe9, ++ 0xc2, 0xb8, 0x58, 0x38, 0xfb, 0xea, 0x34, 0xfe, 0x87, 0x28, 0x57, 0x84, ++ 0x34, 0x9c, 0xe7, 0xbd, 0x3d, 0x63, 0x30, 0xff, 0x80, 0xfa, 0x89, 0xc9, ++ 0xe3, 0x2c, 0xde, 0x99, 0x64, 0xf3, 0x86, 0x92, 0x76, 0xbe, 0x6c, 0x5c, ++ 0x99, 0x95, 0x3c, 0x3e, 0xa4, 0x1f, 0xbe, 0x4c, 0xe3, 0x7e, 0xde, 0xf0, ++ 0x11, 0xb2, 0x9f, 0xfc, 0x4e, 0xcf, 0x7c, 0x0f, 0x77, 0xa0, 0x92, 0xa8, ++ 0xff, 0xa6, 0xe1, 0xf7, 0x2d, 0x0f, 0x7a, 0xce, 0xc0, 0xbe, 0xe3, 0xa5, ++ 0xff, 0x7d, 0x82, 0xf9, 0x42, 0x2a, 0xd6, 0xc5, 0xb8, 0x4d, 0x5d, 0x4a, ++ 0xdc, 0x0b, 0xf7, 0x78, 0xc9, 0x5e, 0xc7, 0x7c, 0xb4, 0x5f, 0x58, 0xf8, ++ 0xe8, 0xf6, 0xef, 0xe6, 0x9c, 0x4d, 0x77, 0x67, 0x3e, 0xf8, 0x6f, 0x81, ++ 0x97, 0x70, 0xdf, 0x66, 0xf7, 0xca, 0x63, 0x70, 0xaf, 0x9c, 0x8e, 0x77, ++ 0x4a, 0x35, 0x3a, 0xa4, 0x8b, 0xfb, 0xef, 0x95, 0x37, 0x71, 0xbe, 0x5c, ++ 0xa6, 0xf7, 0x68, 0x31, 0xfa, 0xe8, 0xfd, 0xfd, 0x63, 0xce, 0x99, 0x0f, ++ 0xf2, 0x5e, 0xcb, 0x51, 0x53, 0x1d, 0x0b, 0x79, 0x04, 0x09, 0xfc, 0x60, ++ 0x44, 0x43, 0xd7, 0xf8, 0x19, 0xa0, 0x1f, 0xdf, 0xdf, 0xbf, 0xaa, 0x00, ++ 0xe2, 0x69, 0x4b, 0x95, 0xd3, 0x77, 0xa4, 0xbb, 0x2f, 0xfb, 0x91, 0xc1, ++ 0xe2, 0x6c, 0x24, 0xe9, 0xe9, 0xed, 0xb1, 0xad, 0x47, 0xc4, 0x67, 0x08, ++ 0xa1, 0xe3, 0xea, 0xfd, 0xf0, 0x03, 0xa7, 0x9f, 0xb0, 0xd5, 0xdd, 0xfa, ++ 0x5a, 0x94, 0x72, 0x80, 0xc5, 0xdd, 0x97, 0xef, 0x3d, 0x36, 0xeb, 0x4b, ++ 0x14, 0xfe, 0xe5, 0x07, 0xfe, 0xa8, 0x01, 0x1c, 0x07, 0x8c, 0x98, 0x1c, ++ 0xb0, 0xad, 0x5f, 0xe2, 0xf7, 0xea, 0x97, 0xec, 0x79, 0x53, 0x83, 0xf5, ++ 0xbd, 0xe3, 0x89, 0x97, 0xde, 0x75, 0x0e, 0x3d, 0x75, 0x36, 0x9c, 0x46, ++ 0xc8, 0x71, 0x1e, 0x1a, 0x27, 0xdd, 0x20, 0xc7, 0x0b, 0xd9, 0x6f, 0x30, ++ 0x00, 0x3f, 0x5d, 0xfb, 0x3a, 0x15, 0xcd, 0x77, 0x7f, 0xe9, 0x21, 0xf0, ++ 0xbb, 0x0e, 0xe2, 0xbc, 0x42, 0xdc, 0x7b, 0xa8, 0x27, 0xd1, 0x20, 0xe0, ++ 0x6b, 0xe1, 0xfe, 0xa5, 0x18, 0x1f, 0x7e, 0xf7, 0xa9, 0x2b, 0xb9, 0x3d, ++ 0x97, 0x98, 0x0c, 0xfc, 0xf1, 0x3e, 0x91, 0x6b, 0x60, 0x7d, 0xef, 0x93, ++ 0x97, 0x82, 0x93, 0x6c, 0xf8, 0x2b, 0x09, 0x30, 0x3f, 0x86, 0x74, 0x30, ++ 0x3b, 0x46, 0xdc, 0x0b, 0xa4, 0xf6, 0xac, 0xc3, 0xae, 0xb9, 0xa5, 0xd3, ++ 0x59, 0x5f, 0x44, 0xe6, 0x16, 0x80, 0xde, 0x58, 0xf4, 0xa0, 0x07, 0xbe, ++ 0xa1, 0x4a, 0x16, 0x13, 0xdb, 0xf7, 0x97, 0xe8, 0xba, 0xf3, 0x02, 0xcc, ++ 0xde, 0xbd, 0x85, 0x34, 0xaf, 0x06, 0x7b, 0x4e, 0xf5, 0x32, 0xff, 0x60, ++ 0xa1, 0x49, 0xd4, 0xe1, 0x54, 0x9f, 0x2e, 0xfb, 0xf1, 0x43, 0x93, 0xc1, ++ 0xee, 0xbf, 0x30, 0xc0, 0xce, 0x1d, 0x45, 0x1c, 0x63, 0x71, 0x2e, 0xb3, ++ 0xf7, 0x96, 0xe4, 0x25, 0x35, 0x38, 0x4f, 0xf8, 0xdd, 0xfe, 0x49, 0xf3, ++ 0xbe, 0x04, 0xdc, 0xe7, 0x4d, 0xae, 0x86, 0x7d, 0x99, 0x64, 0xa7, 0x3f, ++ 0xff, 0xbb, 0xa9, 0xc3, 0x09, 0xdf, 0x40, 0xf0, 0xbb, 0xe1, 0x15, 0xf7, ++ 0xdd, 0xcf, 0x8a, 0xa7, 0x70, 0x38, 0x94, 0x3d, 0x52, 0xda, 0xfc, 0xb4, ++ 0x29, 0x01, 0xce, 0x77, 0x5c, 0x8f, 0xdc, 0x13, 0x70, 0xda, 0xf9, 0x6b, ++ 0x5c, 0xf5, 0xda, 0x00, 0x8f, 0xb3, 0x2a, 0x44, 0x01, 0x3a, 0xbf, 0x6f, ++ 0xea, 0x71, 0x39, 0x1b, 0xdf, 0xe3, 0xfd, 0xda, 0xf8, 0x3e, 0x6f, 0x64, ++ 0x55, 0x18, 0xbe, 0xa7, 0x15, 0x8d, 0x02, 0x7f, 0x51, 0xbb, 0x60, 0x02, ++ 0xb1, 0xb5, 0xfb, 0xbd, 0x11, 0xc3, 0xe7, 0x27, 0xa5, 0x17, 0x17, 0xe1, ++ 0xfd, 0x72, 0x35, 0x35, 0x01, 0xf3, 0xf1, 0x74, 0xa2, 0xda, 0x7f, 0x8f, ++ 0x41, 0xf1, 0x07, 0x27, 0x90, 0x8b, 0x21, 0x4e, 0xda, 0x8c, 0x4e, 0xfd, ++ 0x2a, 0x5f, 0x70, 0x07, 0xd4, 0x57, 0x07, 0xd8, 0x3d, 0xa8, 0x26, 0x90, ++ 0x53, 0xb8, 0x3f, 0x1d, 0x9c, 0x75, 0x14, 0xe2, 0xfa, 0x3a, 0x49, 0xa4, ++ 0xac, 0x22, 0x38, 0xff, 0x76, 0xc6, 0xbf, 0x7d, 0x61, 0x67, 0x3d, 0x0b, ++ 0xe4, 0x09, 0xf4, 0x09, 0x3c, 0x00, 0x7a, 0x44, 0x08, 0xc6, 0x8b, 0xb2, ++ 0xca, 0x9c, 0xed, 0x02, 0x11, 0x67, 0x7d, 0x49, 0x1f, 0x9e, 0x52, 0x8a, ++ 0xfd, 0xde, 0x47, 0x50, 0x37, 0x52, 0xf8, 0x7b, 0x4d, 0x55, 0xea, 0x49, ++ 0xbb, 0xdd, 0xbc, 0x5c, 0x67, 0xf0, 0x13, 0xf8, 0x9e, 0x2a, 0x6d, 0x7f, ++ 0x1b, 0xb7, 0xe7, 0x97, 0x93, 0x70, 0x1c, 0xf3, 0x16, 0x43, 0x8c, 0x0f, ++ 0x6e, 0x9b, 0xcd, 0xf2, 0x26, 0x6e, 0x0b, 0x84, 0xf1, 0x5e, 0xb2, 0xa4, ++ 0x5a, 0x78, 0x3f, 0x62, 0x0d, 0x74, 0xb5, 0xed, 0x63, 0x4d, 0x1f, 0x49, ++ 0x24, 0x69, 0xd3, 0xeb, 0x4d, 0x6a, 0xaf, 0x06, 0x7c, 0xd9, 0xf4, 0x91, ++ 0x8a, 0xcf, 0x1f, 0x36, 0x62, 0xdf, 0x06, 0xbc, 0x6a, 0xc4, 0x42, 0x3b, ++ 0x57, 0xa7, 0x48, 0x83, 0xf3, 0x6b, 0xd5, 0xa8, 0x71, 0xd8, 0xbd, 0x64, ++ 0x04, 0xff, 0x2e, 0xa0, 0x2b, 0x7f, 0x61, 0x7d, 0xc0, 0x74, 0xf8, 0x7b, ++ 0x42, 0x2f, 0x78, 0xb8, 0x5e, 0xa4, 0xfa, 0x62, 0x4d, 0x20, 0x1f, 0xf4, ++ 0x60, 0xef, 0x2c, 0x76, 0xae, 0xde, 0xa3, 0xb1, 0xf3, 0x1d, 0xd6, 0x4e, ++ 0xeb, 0x6f, 0xb7, 0x1e, 0xe0, 0xc8, 0xd4, 0xce, 0xd7, 0xdf, 0x6e, 0x53, ++ 0xba, 0x76, 0xcb, 0x7e, 0xfc, 0xf8, 0x53, 0x71, 0x2a, 0xef, 0x4b, 0x7e, ++ 0xf4, 0x9d, 0x20, 0x1c, 0xa6, 0xbd, 0xab, 0x26, 0x0a, 0x20, 0xff, 0xa1, ++ 0x71, 0x77, 0x7b, 0x10, 0xf8, 0xf8, 0x1d, 0x35, 0x1e, 0x84, 0x75, 0xbf, ++ 0x9b, 0x4c, 0x9f, 0xf7, 0xfe, 0x73, 0xae, 0xef, 0x20, 0xdf, 0x09, 0xee, ++ 0xc9, 0x2f, 0xe7, 0x74, 0x7a, 0xef, 0x07, 0xf7, 0x5e, 0x05, 0x78, 0x3f, ++ 0xb3, 0xdb, 0x83, 0xf7, 0xec, 0x9b, 0xf6, 0x78, 0x53, 0x5e, 0x4a, 0xc4, ++ 0xe5, 0xfb, 0x17, 0x33, 0x7e, 0xda, 0xe3, 0x7d, 0x93, 0xd5, 0xd7, 0xe0, ++ 0xef, 0x2e, 0x34, 0x1d, 0x70, 0xca, 0xdb, 0x92, 0xc7, 0xbe, 0x53, 0x10, ++ 0xc6, 0xc3, 0xbd, 0x38, 0xf3, 0x1b, 0x49, 0x0a, 0xed, 0xe7, 0xe5, 0xbb, ++ 0x7e, 0x3f, 0x0b, 0xec, 0x91, 0x26, 0xd2, 0x8b, 0x7a, 0xc2, 0xdd, 0x0f, ++ 0xe6, 0xff, 0x28, 0x17, 0xf7, 0xaf, 0x05, 0x70, 0xdf, 0xdf, 0xfd, 0x5e, ++ 0xe4, 0x5b, 0x35, 0x71, 0xbe, 0x6f, 0xda, 0x7f, 0x2f, 0xe6, 0x55, 0x35, ++ 0xed, 0x9f, 0x8d, 0x79, 0x54, 0x4d, 0x2e, 0x39, 0x6f, 0xe0, 0x7e, 0xc8, ++ 0x81, 0x80, 0xf3, 0x77, 0x36, 0x04, 0x3e, 0x48, 0x92, 0xd9, 0xc5, 0xab, ++ 0xbe, 0xff, 0xdd, 0x09, 0x6f, 0x52, 0x78, 0x4e, 0xee, 0xfa, 0x65, 0x50, ++ 0x72, 0xc4, 0x8f, 0x98, 0x9e, 0x38, 0xdd, 0x75, 0xd3, 0x23, 0x4f, 0x87, ++ 0x33, 0xeb, 0xf7, 0x0f, 0xb8, 0x5f, 0xdf, 0xdf, 0x2f, 0x89, 0xfd, 0xc2, ++ 0x07, 0x98, 0x1d, 0x4f, 0x0e, 0xb2, 0xb2, 0xd1, 0x93, 0x0a, 0x82, 0xdf, ++ 0xd4, 0xb8, 0xdd, 0x13, 0xa1, 0x1a, 0x84, 0x34, 0x3e, 0xbe, 0xf3, 0xd1, ++ 0xef, 0x01, 0x7f, 0xbf, 0xe6, 0xc5, 0x78, 0xc3, 0xd2, 0xc7, 0x9f, 0x7b, ++ 0xe5, 0x32, 0x5a, 0x5f, 0xfa, 0x84, 0x27, 0xaf, 0x96, 0x2d, 0xc3, 0x80, ++ 0x3c, 0x60, 0x41, 0x17, 0xb8, 0xdb, 0x0e, 0xf9, 0xba, 0x82, 0x0e, 0x4b, ++ 0xfe, 0xe5, 0x39, 0x2d, 0x7c, 0x11, 0x7b, 0x7e, 0x77, 0x6e, 0x3f, 0x3d, ++ 0x96, 0x3e, 0x71, 0x58, 0x23, 0x17, 0x9d, 0x8d, 0xbf, 0xe9, 0x5d, 0x87, ++ 0x35, 0xfc, 0x4e, 0x90, 0x9b, 0x2e, 0x5d, 0x6f, 0xce, 0x02, 0xbb, 0x7b, ++ 0xd5, 0xf7, 0xff, 0xa4, 0x81, 0x7c, 0xbd, 0x7b, 0x48, 0x22, 0x43, 0x8b, ++ 0xce, 0xee, 0xdf, 0xb0, 0xfd, 0x39, 0xb4, 0xeb, 0x00, 0x4f, 0x48, 0x47, ++ 0x4e, 0xa7, 0x3e, 0xba, 0x9d, 0x45, 0xaf, 0xd4, 0x55, 0x4f, 0x57, 0x62, ++ 0x3b, 0x13, 0xf6, 0xb1, 0x81, 0xe8, 0xf5, 0x3d, 0xe0, 0x99, 0x7c, 0xe4, ++ 0xeb, 0x1f, 0x3e, 0x0d, 0xe7, 0x05, 0xff, 0xea, 0x8d, 0x00, 0x1e, 0x1a, ++ 0x7e, 0xf8, 0xad, 0x20, 0xac, 0xe7, 0x6d, 0xb5, 0x99, 0xf1, 0xf7, 0x43, ++ 0xed, 0x05, 0x70, 0x8e, 0xde, 0xe0, 0x89, 0x17, 0x98, 0x58, 0xb2, 0xe7, ++ 0x0d, 0x0f, 0xdf, 0x8e, 0x7c, 0x77, 0xcb, 0xb1, 0xdb, 0x0b, 0x58, 0x1e, ++ 0x94, 0x55, 0xc8, 0x7f, 0x17, 0xa0, 0x10, 0xe3, 0x80, 0xdb, 0xae, 0xc1, ++ 0x75, 0x2e, 0x22, 0x31, 0xe4, 0xbf, 0x86, 0x87, 0x94, 0x28, 0x9c, 0x93, ++ 0x7d, 0xa8, 0x92, 0x9a, 0x27, 0xd2, 0xc8, 0xc7, 0xe5, 0x41, 0xa6, 0xc7, ++ 0xde, 0xde, 0xe1, 0xc5, 0x8f, 0xde, 0xbd, 0x0d, 0x0a, 0x17, 0xfc, 0xc5, ++ 0x97, 0x94, 0x24, 0xbb, 0x6f, 0xcb, 0xf2, 0x12, 0x6f, 0x17, 0xe7, 0x1e, ++ 0xf0, 0xdd, 0x46, 0x5a, 0xff, 0x50, 0x67, 0xf4, 0xca, 0x0f, 0xca, 0xe2, ++ 0x7b, 0x56, 0xba, 0x83, 0x6f, 0x77, 0xad, 0xe9, 0x06, 0x3a, 0xbd, 0x37, ++ 0xd2, 0x1a, 0x0a, 0xf1, 0x4a, 0x8a, 0x87, 0x38, 0xc7, 0x9b, 0x04, 0x7a, ++ 0x48, 0x39, 0x36, 0x73, 0x28, 0xa3, 0x13, 0x09, 0xab, 0x93, 0x79, 0x3f, ++ 0xaa, 0x27, 0xa7, 0xc3, 0x73, 0x68, 0xdf, 0xed, 0xb1, 0x7c, 0x13, 0x1c, ++ 0xfd, 0xf8, 0xbe, 0xc6, 0xe6, 0xbf, 0x8d, 0xcf, 0x4f, 0xe1, 0xf6, 0x83, ++ 0x7d, 0xf6, 0x76, 0x01, 0xb5, 0x77, 0xd2, 0xac, 0x6f, 0x69, 0x50, 0xc8, ++ 0x3f, 0xb5, 0x3f, 0x6c, 0x7c, 0x66, 0x93, 0x73, 0x26, 0xf7, 0xbb, 0xd6, ++ 0x32, 0x39, 0x17, 0x72, 0x9f, 0x9c, 0x53, 0x03, 0xef, 0xff, 0xed, 0x65, ++ 0x26, 0x47, 0xd0, 0x0f, 0xf6, 0x79, 0x0a, 0x57, 0x6a, 0x28, 0xbe, 0x3f, ++ 0x7c, 0xb5, 0x84, 0x7a, 0xc1, 0x4b, 0x52, 0xe9, 0xe4, 0x7b, 0x97, 0x87, ++ 0xcb, 0xb7, 0xf3, 0x3d, 0xf5, 0xca, 0xd1, 0xbe, 0x15, 0x7c, 0x42, 0xe1, ++ 0x57, 0x61, 0xdf, 0xea, 0xe7, 0x17, 0x76, 0xce, 0x4b, 0xe9, 0x80, 0xf6, ++ 0xdb, 0xa2, 0x07, 0x69, 0x7f, 0xbb, 0x7d, 0x0e, 0xf3, 0x62, 0x3b, 0xad, ++ 0xff, 0xb9, 0x6d, 0xbf, 0xbf, 0x85, 0xeb, 0x83, 0xcb, 0x82, 0xae, 0xdf, ++ 0xdd, 0xd9, 0x96, 0x3f, 0xa8, 0xef, 0xe4, 0x35, 0x7a, 0x92, 0x8f, 0x7e, ++ 0x0f, 0xe4, 0x97, 0xca, 0x2b, 0xec, 0x3f, 0x8d, 0x8f, 0x7b, 0x30, 0x4f, ++ 0xe4, 0x0f, 0x7b, 0x9f, 0x7d, 0xe5, 0x3a, 0xca, 0xe7, 0x7f, 0xe8, 0x12, ++ 0x72, 0xeb, 0xd4, 0xa7, 0x6e, 0xb9, 0x6d, 0xd8, 0x77, 0x09, 0x49, 0x27, ++ 0xb7, 0x7f, 0x30, 0x22, 0x24, 0xad, 0xdc, 0xd2, 0xe7, 0x69, 0xe5, 0xd6, ++ 0xe8, 0x41, 0x7e, 0xfe, 0x5b, 0xe9, 0x53, 0x81, 0xbf, 0x85, 0x41, 0x67, ++ 0x9e, 0x93, 0xd0, 0x8f, 0x99, 0xf0, 0xe8, 0xd6, 0x8f, 0x7f, 0x0d, 0x84, ++ 0xd9, 0xef, 0x22, 0xb8, 0xf4, 0x23, 0xfd, 0xf7, 0x32, 0x99, 0x7c, 0x36, ++ 0x1f, 0x0a, 0xfe, 0x13, 0x7c, 0xb7, 0xe4, 0x9f, 0x97, 0xe1, 0xef, 0x83, ++ 0xf4, 0xf1, 0xa7, 0xe0, 0xbf, 0x3e, 0xfe, 0x14, 0xfc, 0xe7, 0x5e, 0xaf, ++ 0x13, 0x7f, 0xee, 0xf7, 0x17, 0x82, 0xa1, 0x22, 0xe2, 0xc5, 0xb4, 0xf4, ++ 0xdc, 0x43, 0xe2, 0x01, 0x88, 0xa7, 0xfe, 0x4c, 0xc1, 0x78, 0xea, 0x29, ++ 0x0a, 0xd3, 0x6a, 0x4a, 0xe7, 0x53, 0x7b, 0x8b, 0xf0, 0x1e, 0x71, 0xbb, ++ 0x8f, 0xf9, 0xe7, 0xa7, 0xcc, 0xde, 0x60, 0x6e, 0x39, 0x7e, 0xff, 0x06, ++ 0xeb, 0xbd, 0xf9, 0xda, 0x6a, 0xd0, 0x17, 0xe2, 0x79, 0xaf, 0x8f, 0xc5, ++ 0xbf, 0x4f, 0x45, 0x7b, 0x83, 0xf6, 0x3c, 0x90, 0x37, 0x0f, 0x2a, 0x41, ++ 0x38, 0xef, 0xea, 0x49, 0x92, 0x9a, 0x74, 0xfe, 0x08, 0xd5, 0xc8, 0x08, ++ 0x47, 0x0f, 0xc9, 0xf4, 0x9e, 0xc5, 0x8b, 0x4f, 0x81, 0xfd, 0x07, 0xf3, ++ 0xf9, 0x47, 0x25, 0x81, 0x6e, 0x33, 0x15, 0x63, 0xd4, 0x4a, 0xf0, 0xf3, ++ 0x13, 0xec, 0xbe, 0x7c, 0x7d, 0xeb, 0xb5, 0x41, 0xc8, 0x53, 0x38, 0x75, ++ 0x70, 0xcc, 0x46, 0xd0, 0x5f, 0x37, 0xbf, 0xa0, 0x10, 0xfe, 0xbb, 0x85, ++ 0x2a, 0xe4, 0x9b, 0xdc, 0xc4, 0xe9, 0xff, 0x0e, 0x89, 0x6f, 0x9e, 0x4a, ++ 0xd7, 0x79, 0xd3, 0x41, 0xe6, 0x57, 0xd4, 0xaf, 0x4f, 0xcf, 0x2f, 0x4b, ++ 0x78, 0xfb, 0x45, 0xc6, 0x6d, 0x1a, 0xe8, 0x25, 0xea, 0x17, 0xbc, 0x65, ++ 0x8f, 0x87, 0x2f, 0xe1, 0xbf, 0xc7, 0xd4, 0xb0, 0xcd, 0xf5, 0xfc, 0xe0, ++ 0x95, 0xc8, 0x57, 0x4b, 0x5c, 0x7c, 0x15, 0xe3, 0x7e, 0xe3, 0xe3, 0x82, ++ 0xaf, 0x26, 0x92, 0x89, 0xdc, 0x6f, 0x93, 0xed, 0xf9, 0x6c, 0x33, 0x95, ++ 0xf2, 0x8d, 0x60, 0x97, 0x9c, 0x3a, 0xca, 0xe2, 0x90, 0xa7, 0x0f, 0x2a, ++ 0x48, 0x8f, 0xd3, 0x7b, 0x25, 0x96, 0xff, 0x04, 0xf1, 0xe0, 0x29, 0xc0, ++ 0x0f, 0xbd, 0x9a, 0x3d, 0x8f, 0xed, 0x24, 0xf0, 0x5f, 0x9a, 0xef, 0x1b, ++ 0xf4, 0xbd, 0x7f, 0xf2, 0x37, 0x93, 0xef, 0xa2, 0x4d, 0x1a, 0x9f, 0x7a, ++ 0x7d, 0xc2, 0x56, 0x5a, 0x9e, 0x7c, 0xea, 0xb5, 0xd2, 0x9f, 0x42, 0xfd, ++ 0xc7, 0xbf, 0x1e, 0xf5, 0x3a, 0x39, 0xbb, 0xfd, 0xf4, 0x43, 0x7f, 0xc6, ++ 0xf3, 0xec, 0x53, 0x87, 0xbc, 0x08, 0xc7, 0xa9, 0x43, 0x3f, 0x1f, 0x75, ++ 0x17, 0xd4, 0x9f, 0xf6, 0xe2, 0x77, 0x6a, 0x4e, 0xdd, 0xe3, 0x65, 0xf9, ++ 0x9f, 0x87, 0x02, 0xc9, 0xb1, 0xf0, 0x7e, 0x24, 0xcb, 0x17, 0x5a, 0xf5, ++ 0xb3, 0x3f, 0x4d, 0x60, 0xdf, 0x7f, 0x69, 0x43, 0xba, 0xbd, 0x1a, 0x64, ++ 0xfe, 0xd8, 0xe9, 0x83, 0xff, 0xfe, 0x5b, 0xc8, 0x1f, 0x3e, 0x7d, 0xd0, ++ 0x1b, 0x86, 0x75, 0x34, 0x1d, 0xca, 0xc2, 0xf3, 0xad, 0xa6, 0xa7, 0x7d, ++ 0x18, 0xa7, 0x39, 0xf5, 0xb3, 0x3f, 0x4d, 0xb6, 0xe7, 0x33, 0x7d, 0xd6, ++ 0xf5, 0x2c, 0xe7, 0xdf, 0x41, 0x3c, 0x15, 0x20, 0x75, 0x90, 0xa7, 0x7c, ++ 0x2a, 0x87, 0x9d, 0x1b, 0x34, 0xfd, 0x74, 0xca, 0x4e, 0xb8, 0x47, 0xb4, ++ 0x6c, 0xff, 0x61, 0x0d, 0xce, 0x63, 0xa6, 0x3f, 0xf3, 0x97, 0x09, 0xa0, ++ 0x77, 0x4e, 0xed, 0x63, 0xf6, 0xc4, 0x07, 0x9e, 0x9e, 0x87, 0xe1, 0x9c, ++ 0xf5, 0x77, 0xc1, 0x1b, 0xd7, 0x78, 0x20, 0xbe, 0x0b, 0xfb, 0xf5, 0x30, ++ 0x42, 0x5a, 0xb2, 0x93, 0x57, 0xc4, 0x8d, 0x74, 0x78, 0x61, 0x78, 0x38, ++ 0x45, 0xf1, 0x00, 0xeb, 0xa2, 0x78, 0x69, 0x00, 0x7d, 0x99, 0x09, 0x1f, ++ 0xff, 0xe7, 0x1f, 0x16, 0x1f, 0x7f, 0x9c, 0x0f, 0xf3, 0x37, 0x1e, 0xbc, ++ 0x14, 0xe5, 0xa6, 0x1f, 0x2f, 0x92, 0xc5, 0x9e, 0x07, 0x92, 0x70, 0xb5, ++ 0x89, 0xae, 0x9f, 0x3d, 0x3f, 0xf4, 0xa7, 0x09, 0x60, 0x1f, 0xfd, 0xa1, ++ 0xab, 0x15, 0xf7, 0xf9, 0x81, 0xd6, 0x5d, 0x98, 0xfd, 0xff, 0xda, 0xba, ++ 0xa5, 0xd4, 0x60, 0xd6, 0x5d, 0xf5, 0x0f, 0xbb, 0x6e, 0xc6, 0xff, 0x87, ++ 0x82, 0x61, 0x96, 0xf7, 0xe7, 0x92, 0x83, 0xb3, 0xf9, 0xfc, 0xc7, 0x77, ++ 0x60, 0xfd, 0x87, 0x81, 0x08, 0xc2, 0x3b, 0x48, 0xf9, 0xaf, 0xfb, 0x87, ++ 0x5d, 0xff, 0xa7, 0xa4, 0xfb, 0x3e, 0x4a, 0xf7, 0xe0, 0xc0, 0x74, 0xff, ++ 0x2f, 0xd9, 0xec, 0x5c, 0xf8, 0x1f, 0x6f, 0xdd, 0x03, 0xd1, 0xfd, 0x05, ++ 0x4e, 0xf7, 0x80, 0x09, 0x79, 0x08, 0xa7, 0x7e, 0xf6, 0x17, 0x8c, 0xaf, ++ 0x8b, 0xf5, 0x0f, 0xb4, 0xee, 0xcd, 0xff, 0x41, 0xd7, 0x2d, 0xec, 0xa1, ++ 0x75, 0x72, 0x24, 0x51, 0x5c, 0x04, 0x79, 0xd8, 0xa9, 0xee, 0xb0, 0x04, ++ 0xbf, 0xc3, 0x33, 0x37, 0x01, 0x61, 0x29, 0x85, 0xe7, 0x5d, 0xbb, 0xe1, ++ 0x7a, 0x3e, 0x9b, 0xf9, 0x17, 0x8a, 0xc4, 0xe2, 0x36, 0x64, 0x24, 0x8b, ++ 0x1f, 0x11, 0xee, 0x6f, 0xf4, 0xfd, 0x5e, 0xac, 0xc1, 0xee, 0x57, 0xa9, ++ 0xc6, 0x6a, 0xf6, 0x3d, 0x32, 0x35, 0x82, 0xdf, 0xd5, 0x5b, 0x77, 0xc1, ++ 0xc2, 0x08, 0xe6, 0x76, 0x90, 0x8a, 0x57, 0x63, 0x50, 0x1f, 0x31, 0x15, ++ 0x7f, 0xe7, 0xd6, 0xed, 0x77, 0xb5, 0x49, 0xc4, 0x92, 0xa8, 0xfd, 0xa7, ++ 0x5e, 0xf0, 0xd5, 0xa3, 0x60, 0xff, 0x7b, 0xca, 0xe4, 0x94, 0x77, 0x02, ++ 0x96, 0x6f, 0x42, 0xb9, 0x86, 0xc7, 0xbd, 0x3c, 0xa6, 0xe6, 0xf0, 0x37, ++ 0x0c, 0x97, 0x9f, 0xe0, 0x0b, 0x3b, 0xdf, 0x7b, 0xf9, 0x78, 0x3a, 0xa9, ++ 0x48, 0xc0, 0xef, 0x77, 0xeb, 0x86, 0x6a, 0x26, 0xe9, 0xfc, 0x46, 0x35, ++ 0xfb, 0xfd, 0x68, 0xc8, 0xed, 0x4c, 0xd8, 0xce, 0x0d, 0xbd, 0xc4, 0xd6, ++ 0x9f, 0x8e, 0xb7, 0x03, 0x7e, 0x93, 0xc5, 0x66, 0x4f, 0x9e, 0x2f, 0xfe, ++ 0xfe, 0x94, 0xcd, 0xfc, 0x4f, 0x45, 0xaa, 0xe8, 0x86, 0xbc, 0x58, 0x32, ++ 0x5e, 0x66, 0xdf, 0x35, 0x27, 0xec, 0x5e, 0xf1, 0xba, 0x11, 0x91, 0xe4, ++ 0x3a, 0xf4, 0x43, 0x99, 0x7f, 0xd9, 0x8f, 0xcf, 0xd5, 0xdd, 0x80, 0x47, ++ 0x95, 0x50, 0xff, 0x90, 0xad, 0x0f, 0xfd, 0x4a, 0xc2, 0xfd, 0x49, 0x95, ++ 0x0f, 0xa1, 0x96, 0xc9, 0x96, 0xcf, 0xd9, 0x8e, 0xfb, 0x4b, 0x03, 0xd2, ++ 0x87, 0xd1, 0x63, 0x54, 0x23, 0xa7, 0xcf, 0x0a, 0x07, 0x3d, 0x04, 0xfe, ++ 0xd3, 0xd0, 0xc5, 0x41, 0x0f, 0x81, 0xdf, 0xf3, 0xa5, 0x8b, 0x9b, 0x1e, ++ 0x6e, 0xbc, 0xff, 0x22, 0x9b, 0xc5, 0xe7, 0xdc, 0x74, 0x72, 0xe4, 0x83, ++ 0xe4, 0x33, 0xbf, 0x24, 0x45, 0x0d, 0xe4, 0x9f, 0xef, 0xdd, 0x89, 0x71, ++ 0x91, 0xf7, 0x7f, 0xf0, 0xe6, 0x55, 0xd0, 0x7e, 0xe9, 0x4f, 0x15, 0x02, ++ 0xbf, 0x8b, 0xf6, 0xc1, 0xde, 0x00, 0x49, 0x81, 0xfc, 0xaa, 0x49, 0x0d, ++ 0xfc, 0xac, 0x25, 0xfb, 0x15, 0x8c, 0x0b, 0xff, 0x5f, 0x82, 0x42, 0xfc, ++ 0xff, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, 0x7b, 0x7c, 0x54, 0xd5, ++ 0xb5, 0xf0, 0x3e, 0x73, 0xce, 0x4c, 0x66, 0x92, 0x49, 0x32, 0x49, 0x66, ++ 0x26, 0x33, 0x79, 0x31, 0x49, 0x20, 0x82, 0x46, 0x98, 0x04, 0x08, 0xa8, ++ 0x28, 0x13, 0x02, 0x08, 0x42, 0xaf, 0x03, 0x8a, 0x60, 0x6f, 0xd4, 0x91, ++ 0x67, 0x30, 0x4f, 0x90, 0xb6, 0xb4, 0xd5, 0x1f, 0x03, 0x89, 0x31, 0x3c, ++ 0x6c, 0x83, 0x22, 0x0f, 0x4b, 0x75, 0x40, 0x54, 0x5a, 0xa9, 0x0d, 0x18, ++ 0x29, 0x28, 0xda, 0x41, 0x1e, 0x62, 0xad, 0x5f, 0xa3, 0xd2, 0x5b, 0x6c, ++ 0xb1, 0x37, 0xe2, 0x03, 0x15, 0x08, 0x29, 0xad, 0xfd, 0xe8, 0xbd, 0xf6, ++ 0x72, 0xd7, 0x5a, 0x7b, 0xef, 0xcc, 0x39, 0x93, 0x89, 0x68, 0x6f, 0x7f, ++ 0xf7, 0xfb, 0xe7, 0xcb, 0x3f, 0x27, 0xfb, 0x9c, 0x7d, 0xf6, 0x5e, 0x7b, ++ 0xbd, 0xd7, 0xda, 0xeb, 0xec, 0xb9, 0x74, 0x09, 0xfe, 0xc6, 0x33, 0x76, ++ 0x49, 0x5c, 0x19, 0x6b, 0x66, 0xcc, 0xc5, 0x58, 0xed, 0xcf, 0x53, 0x19, ++ 0x73, 0x32, 0x76, 0xcf, 0x9e, 0xa4, 0xc8, 0xf4, 0x42, 0xb8, 0xee, 0xfd, ++ 0x60, 0x38, 0xbb, 0x9a, 0xb1, 0x9e, 0x55, 0xbd, 0x47, 0x73, 0xe1, 0x7e, ++ 0xf8, 0xa7, 0x8a, 0xff, 0x29, 0xec, 0x1e, 0xee, 0x1e, 0x7e, 0x0b, 0xdc, ++ 0xbf, 0x47, 0x63, 0x77, 0x05, 0x4b, 0x63, 0xe3, 0xc8, 0x6b, 0xa6, 0xc3, ++ 0xc4, 0xd8, 0x68, 0xc6, 0xce, 0xee, 0x4f, 0x99, 0x13, 0xb1, 0x33, 0xa6, ++ 0xec, 0x3c, 0x78, 0x27, 0x8d, 0xdb, 0x31, 0xdb, 0x9c, 0xa4, 0xc4, 0xfa, ++ 0xd9, 0x1c, 0x66, 0x9a, 0x17, 0xfa, 0x05, 0xf0, 0x79, 0xf8, 0x27, 0x4a, ++ 0x64, 0x88, 0xd2, 0x7f, 0x3c, 0xc6, 0x56, 0xf2, 0xf1, 0x7e, 0xa2, 0x70, ++ 0xf8, 0xf6, 0x99, 0x23, 0x36, 0x84, 0x6f, 0xe7, 0x36, 0x4b, 0x08, 0xe0, ++ 0x68, 0xdc, 0xf9, 0x27, 0x4b, 0x00, 0xe0, 0xa8, 0xfa, 0xf9, 0xcf, 0xd2, ++ 0xba, 0x61, 0xbe, 0xc6, 0x7d, 0x2a, 0x8b, 0x0e, 0x65, 0xf4, 0x77, 0x89, ++ 0xe1, 0x73, 0x35, 0x9a, 0x34, 0x9c, 0xae, 0xef, 0xe3, 0x95, 0xb1, 0x80, ++ 0x5d, 0xa9, 0x60, 0xac, 0x01, 0xff, 0xf5, 0xc1, 0xb5, 0xb3, 0x7e, 0x3a, ++ 0x4b, 0x83, 0x6b, 0xc7, 0xda, 0x3f, 0xa9, 0x69, 0xf8, 0xbe, 0xf9, 0x54, ++ 0xb7, 0x35, 0xf6, 0x7e, 0xed, 0xcf, 0x5f, 0xde, 0x1b, 0x06, 0xd4, 0xd4, ++ 0x3e, 0xff, 0x4c, 0x9a, 0x0f, 0xae, 0x9f, 0x75, 0x3d, 0x95, 0xc6, 0x4a, ++ 0x69, 0xbc, 0xbb, 0x2d, 0xe9, 0x8c, 0x69, 0x76, 0xcd, 0xd0, 0x1f, 0xc7, ++ 0xbd, 0x98, 0xd9, 0x7f, 0x1c, 0x98, 0x97, 0x31, 0x37, 0xdc, 0xe7, 0xb7, ++ 0x58, 0x63, 0xc7, 0x6a, 0x3e, 0x5f, 0xe7, 0x37, 0x4e, 0x33, 0x84, 0x8f, ++ 0xc1, 0x38, 0x12, 0x6e, 0x58, 0xdf, 0x67, 0xf8, 0x8f, 0x97, 0xb1, 0xb1, ++ 0x8e, 0x54, 0xe7, 0xc7, 0x57, 0xc1, 0xff, 0x63, 0xd8, 0x98, 0x4b, 0x2a, ++ 0x5c, 0x77, 0x66, 0x31, 0x76, 0x4d, 0x7f, 0x3c, 0xc5, 0xf0, 0x15, 0xe6, ++ 0xf4, 0xfc, 0xd9, 0xe7, 0x8f, 0x87, 0x01, 0x3f, 0x67, 0xf7, 0x9c, 0x79, ++ 0x1c, 0xe1, 0xaf, 0xfb, 0xaf, 0x3f, 0x3f, 0xfe, 0x7d, 0xc0, 0x1f, 0x7b, ++ 0xc5, 0xe6, 0x78, 0x0a, 0xd6, 0xdd, 0xf8, 0xd3, 0xdf, 0xa6, 0x21, 0x7d, ++ 0xe5, 0x7b, 0x33, 0x1d, 0x0a, 0xbd, 0xd7, 0x93, 0xcf, 0xc2, 0x5e, 0xe8, ++ 0xd7, 0xf3, 0x6e, 0x52, 0x24, 0x0c, 0xb7, 0x7a, 0x5e, 0x3e, 0x5d, 0xe0, ++ 0x83, 0xf5, 0xf6, 0xec, 0xfe, 0x9b, 0xdb, 0x07, 0xfd, 0x97, 0xbd, 0x3c, ++ 0x29, 0x1b, 0xd7, 0xbf, 0xec, 0x85, 0xaa, 0x6c, 0x66, 0x1f, 0x18, 0x8e, ++ 0x9e, 0x15, 0x8c, 0x45, 0x92, 0xf4, 0x70, 0x45, 0x88, 0x8e, 0xbe, 0x7d, ++ 0x30, 0x68, 0x36, 0x34, 0x0f, 0x88, 0x6b, 0x1c, 0x3d, 0x0e, 0x75, 0x1e, ++ 0x2a, 0x40, 0x38, 0xcf, 0x9d, 0x48, 0xf2, 0x27, 0x21, 0x9e, 0xe0, 0xde, ++ 0xf2, 0x72, 0xa4, 0x0f, 0xd0, 0x69, 0x38, 0x6f, 0xdf, 0x07, 0xf8, 0x6d, ++ 0xd8, 0xf5, 0xe0, 0x9f, 0xd4, 0xe1, 0x89, 0xf0, 0x1c, 0xce, 0x35, 0x79, ++ 0x90, 0xae, 0x1f, 0x4c, 0x46, 0x38, 0x19, 0x8b, 0xe6, 0x32, 0x0f, 0xe2, ++ 0xb7, 0xb7, 0xd5, 0x61, 0xef, 0xdf, 0xbf, 0x8f, 0x5e, 0xc7, 0x81, 0x9e, ++ 0x23, 0xbe, 0x02, 0xdd, 0x76, 0xad, 0xe6, 0xf3, 0x76, 0x00, 0xdd, 0xd2, ++ 0xfa, 0xd3, 0xed, 0x1c, 0xfe, 0x03, 0xf4, 0x69, 0x44, 0xba, 0xa5, 0xc4, ++ 0xe8, 0xf6, 0x39, 0x0b, 0x3d, 0xe1, 0x2d, 0x86, 0x76, 0x67, 0x16, 0xd1, ++ 0x35, 0x11, 0xbe, 0xa2, 0x5f, 0x01, 0x5f, 0x35, 0x0a, 0x1f, 0xff, 0x7a, ++ 0x47, 0xe0, 0x7b, 0x0e, 0x94, 0x9f, 0x3d, 0x29, 0x7d, 0xf4, 0x9a, 0x8e, ++ 0xf4, 0xfa, 0xd9, 0xe7, 0x05, 0x0c, 0xe8, 0xfd, 0x89, 0xb9, 0xf7, 0x4e, ++ 0x36, 0x8a, 0xb1, 0xde, 0x97, 0x93, 0x1c, 0xdb, 0xe1, 0xfe, 0x3d, 0x2f, ++ 0xff, 0x8e, 0xe4, 0xa4, 0xe7, 0x85, 0xb7, 0x2c, 0x48, 0x47, 0xf8, 0xb3, ++ 0x2b, 0xb0, 0xae, 0x1e, 0xd6, 0xf7, 0xd7, 0x85, 0xeb, 0x6c, 0x50, 0xc4, ++ 0x3a, 0x77, 0xa4, 0x46, 0x93, 0xd2, 0x62, 0x78, 0x6f, 0x88, 0xcc, 0x98, ++ 0xe2, 0x4b, 0xa3, 0xfb, 0xef, 0xd3, 0xfd, 0x08, 0xe7, 0x5f, 0xc4, 0x5f, ++ 0x2e, 0xd2, 0x27, 0x72, 0xf0, 0x56, 0x25, 0x01, 0x3d, 0x3a, 0x1c, 0x45, ++ 0xb4, 0x0e, 0x16, 0x71, 0xd1, 0xba, 0xeb, 0x77, 0xfc, 0xc1, 0x82, 0x7c, ++ 0x23, 0xe9, 0x84, 0xf4, 0x51, 0xc6, 0x22, 0xbd, 0xde, 0x9f, 0x8c, 0xf7, ++ 0x25, 0x9d, 0xe4, 0xba, 0xe3, 0xc7, 0x73, 0x20, 0x1e, 0xc6, 0xe8, 0xe8, ++ 0xb6, 0x83, 0xcb, 0x61, 0x7f, 0xba, 0xf6, 0x5a, 0x58, 0x71, 0x22, 0x7a, ++ 0x01, 0xbc, 0xf8, 0x1e, 0xc2, 0x0b, 0xed, 0x9e, 0x6d, 0x49, 0x9a, 0x92, ++ 0xce, 0xef, 0xe7, 0xc1, 0x3a, 0x7a, 0xcc, 0x6c, 0x4e, 0x07, 0xc2, 0x11, ++ 0x51, 0x7e, 0x97, 0x88, 0xbe, 0x8c, 0xad, 0xa2, 0xf5, 0x3c, 0x1b, 0x2f, ++ 0x97, 0x62, 0x7d, 0x97, 0x93, 0xcb, 0xcb, 0xc1, 0xfd, 0x8f, 0xe2, 0xe5, ++ 0xc7, 0x0e, 0x07, 0x8d, 0x2f, 0xf1, 0x73, 0xf6, 0x8b, 0xc4, 0xfa, 0xf9, ++ 0x28, 0xca, 0x39, 0xc0, 0xbf, 0xcf, 0x1e, 0x3a, 0x82, 0xfc, 0xc3, 0x98, ++ 0x35, 0xf2, 0x21, 0x8c, 0x73, 0x17, 0x53, 0x58, 0x7a, 0x71, 0x0c, 0x6f, ++ 0x12, 0xde, 0xb3, 0x1a, 0x23, 0xbd, 0x7b, 0xf6, 0xa7, 0x6a, 0x24, 0x0c, ++ 0xeb, 0x6f, 0xed, 0x38, 0x44, 0x7a, 0x36, 0x5e, 0xbe, 0x61, 0x5d, 0x81, ++ 0x8e, 0x04, 0xf3, 0xfd, 0x4e, 0xcc, 0xd7, 0xb0, 0xef, 0xe0, 0x70, 0xd4, ++ 0x43, 0x67, 0x5f, 0xdd, 0x4f, 0xfc, 0xd7, 0xb0, 0xeb, 0x7d, 0x4b, 0x18, ++ 0xc6, 0x39, 0xba, 0xf3, 0x79, 0x4b, 0x77, 0x69, 0x8c, 0xdf, 0x51, 0x7f, ++ 0x47, 0x74, 0xfa, 0xfb, 0xec, 0x73, 0x07, 0x87, 0x93, 0xbe, 0xc5, 0xf1, ++ 0x13, 0xe8, 0x9b, 0x0f, 0xc5, 0xf8, 0x8d, 0x07, 0x8c, 0xe3, 0x37, 0xee, ++ 0xfa, 0x93, 0x61, 0xfc, 0xda, 0x70, 0x87, 0xc5, 0x61, 0xbf, 0xfc, 0x3c, ++ 0x9f, 0x69, 0x81, 0xd9, 0xb8, 0xde, 0xcf, 0xba, 0xcc, 0x0c, 0xf5, 0xdf, ++ 0x67, 0x1d, 0xea, 0x94, 0x48, 0x82, 0x79, 0x5f, 0x17, 0xf6, 0x4b, 0xe2, ++ 0xa9, 0xf5, 0x2d, 0x0b, 0xd9, 0xb1, 0x51, 0x6f, 0x27, 0x47, 0x92, 0x00, ++ 0x4f, 0xcb, 0xde, 0x9a, 0xf2, 0x87, 0x74, 0x27, 0x5e, 0x2d, 0x3e, 0x40, ++ 0x2d, 0xeb, 0x5c, 0xc9, 0xf9, 0xaa, 0xf3, 0xfe, 0x40, 0x2e, 0xd2, 0xa5, ++ 0xf3, 0xad, 0x6f, 0xaa, 0x68, 0x4f, 0xf6, 0x22, 0x1e, 0xaf, 0x88, 0x8d, ++ 0x5b, 0x71, 0xbc, 0xa9, 0x2a, 0x15, 0xe4, 0xb6, 0xe2, 0x64, 0x70, 0x14, ++ 0xb2, 0x55, 0xbc, 0x3e, 0x18, 0x73, 0xc2, 0x64, 0x80, 0x1b, 0xe6, 0xc9, ++ 0x46, 0xfd, 0xdc, 0x02, 0xe3, 0xf8, 0x60, 0x1c, 0xa6, 0xf9, 0x3d, 0x41, ++ 0x18, 0x57, 0x4d, 0x9b, 0x3c, 0x05, 0xe1, 0x51, 0x1d, 0x26, 0x87, 0x2d, ++ 0xa1, 0x5d, 0xe5, 0xe3, 0x99, 0xed, 0x41, 0x16, 0x02, 0xb8, 0xcc, 0x60, ++ 0xb7, 0x7d, 0x3a, 0x7e, 0xf2, 0xcc, 0x4c, 0x1b, 0xce, 0xd2, 0x71, 0x79, ++ 0x5e, 0x13, 0xea, 0x85, 0xa5, 0xc0, 0x5e, 0xa8, 0x9f, 0x3d, 0x16, 0x36, ++ 0x54, 0x03, 0xf8, 0x98, 0x29, 0xd9, 0xff, 0x14, 0x8c, 0xbb, 0x74, 0x58, ++ 0xa0, 0xec, 0x08, 0xb4, 0x97, 0x2e, 0xf0, 0xf8, 0xc3, 0xf0, 0xdc, 0x7b, ++ 0x0b, 0x7f, 0xef, 0x9c, 0xc3, 0x1e, 0x36, 0x8d, 0xc0, 0x76, 0x41, 0x04, ++ 0xe5, 0x28, 0xe5, 0xa2, 0xca, 0x7c, 0xa0, 0xfa, 0xce, 0x2a, 0xbf, 0x5e, ++ 0xc8, 0x40, 0x25, 0xa4, 0x08, 0xbe, 0xca, 0xed, 0x48, 0x21, 0x3b, 0x93, ++ 0xa2, 0xf9, 0x36, 0x55, 0x43, 0x3b, 0xa5, 0x46, 0xf3, 0x03, 0x46, 0xd9, ++ 0x47, 0xf6, 0x50, 0x7e, 0x86, 0x0b, 0xdf, 0xb3, 0xd0, 0x7b, 0xde, 0x0c, ++ 0x45, 0xfb, 0x18, 0xd7, 0x9d, 0xc6, 0xd2, 0x50, 0xde, 0xe4, 0xf8, 0xb2, ++ 0x9f, 0x1c, 0x97, 0x69, 0xd1, 0xe1, 0xb8, 0x7e, 0x66, 0x65, 0x1a, 0x03, ++ 0xbb, 0x92, 0xc7, 0x38, 0xdc, 0xaa, 0x58, 0x4f, 0x31, 0xeb, 0x52, 0x90, ++ 0xbf, 0x9b, 0x67, 0xa4, 0x6d, 0xc7, 0xf6, 0xd6, 0xd4, 0x1a, 0xb2, 0xff, ++ 0x05, 0xac, 0xf7, 0x60, 0x00, 0xe8, 0xf6, 0x64, 0xda, 0xe4, 0x63, 0xa8, ++ 0xc7, 0xe0, 0x5f, 0x13, 0xf6, 0xcb, 0x6f, 0x32, 0xda, 0xf7, 0x41, 0xcb, ++ 0x8d, 0xed, 0xc2, 0xb0, 0x16, 0x27, 0xbf, 0x3e, 0x53, 0x10, 0xf8, 0xaf, ++ 0xb8, 0xcd, 0x78, 0xdf, 0x59, 0x55, 0xb9, 0x64, 0x90, 0x1f, 0xe4, 0x6c, ++ 0x7d, 0xe7, 0x14, 0x0d, 0xf4, 0xb7, 0x73, 0x76, 0xe5, 0xee, 0x5c, 0xc0, ++ 0xe9, 0xb4, 0x35, 0x6f, 0xf3, 0xf6, 0x33, 0x95, 0x65, 0x5e, 0x68, 0x1f, ++ 0x5f, 0x5f, 0x37, 0x55, 0x03, 0x3d, 0xe2, 0xfc, 0x4d, 0x65, 0x59, 0x01, ++ 0xb4, 0xcf, 0x3f, 0xfc, 0x9d, 0xa9, 0xf4, 0xbc, 0x16, 0x90, 0x74, 0x2d, ++ 0xa8, 0xfe, 0xf5, 0x57, 0x4f, 0x0d, 0x97, 0xc6, 0xe4, 0xd6, 0x05, 0x60, ++ 0xa6, 0xab, 0x24, 0xcf, 0x37, 0x20, 0x1e, 0xce, 0x05, 0xcf, 0xb6, 0xe2, ++ 0xd3, 0xfa, 0x59, 0x7f, 0xb5, 0xc0, 0x23, 0xfc, 0x0b, 0x22, 0x1e, 0xf2, ++ 0xc7, 0x72, 0x3c, 0xe4, 0xd9, 0x4f, 0xee, 0x66, 0xd0, 0x7f, 0x90, 0xa9, ++ 0x7b, 0x25, 0xf2, 0xe5, 0x13, 0x2f, 0xff, 0xdf, 0x0c, 0xec, 0xe7, 0x63, ++ 0x0e, 0x5a, 0xaf, 0x83, 0xb5, 0x38, 0x3e, 0xb6, 0xe2, 0xe2, 0xd9, 0xd8, ++ 0x4b, 0x23, 0xbf, 0x4c, 0x9f, 0x69, 0xec, 0x63, 0xc9, 0x87, 0x6a, 0x4c, ++ 0x0e, 0x54, 0x77, 0xe8, 0xe6, 0x0c, 0xe0, 0xab, 0xd6, 0xb9, 0x43, 0x37, ++ 0x4d, 0x46, 0x5d, 0x5b, 0xe7, 0x27, 0xfe, 0x82, 0x99, 0x1d, 0x64, 0x0f, ++ 0x65, 0x7f, 0x87, 0x93, 0xe8, 0x33, 0x5f, 0xd0, 0x07, 0xe1, 0xb4, 0x02, ++ 0x9f, 0x2d, 0xe0, 0x5d, 0xd8, 0x22, 0x35, 0x6c, 0x61, 0x34, 0x6e, 0xbb, ++ 0x25, 0x48, 0xf6, 0x6a, 0xa2, 0x03, 0xe7, 0x53, 0xc2, 0x75, 0xea, 0xa5, ++ 0xab, 0xbe, 0x3e, 0x5c, 0xf3, 0x90, 0x7f, 0x90, 0x1e, 0xa9, 0x2c, 0x15, ++ 0xef, 0x6b, 0x75, 0x3e, 0x82, 0xef, 0xb0, 0x2b, 0xb0, 0x90, 0xf0, 0xe6, ++ 0x0a, 0xd1, 0x55, 0xde, 0xf7, 0xcc, 0x9d, 0xe3, 0x0b, 0x01, 0x9e, 0x6f, ++ 0xc8, 0x08, 0xd6, 0xe0, 0x7a, 0xbc, 0x0b, 0x2f, 0x16, 0xe0, 0x3a, 0xa6, ++ 0x67, 0x30, 0x1a, 0xaf, 0x6a, 0x91, 0x3d, 0x80, 0xf6, 0xf5, 0xc2, 0x01, ++ 0x50, 0x83, 0x09, 0xe4, 0x4b, 0x5e, 0xb7, 0xaf, 0x60, 0x7e, 0x6d, 0xc8, ++ 0xc0, 0xcf, 0x83, 0x99, 0xa1, 0x6f, 0xe3, 0xbc, 0x45, 0xbf, 0xf4, 0xed, ++ 0x39, 0x06, 0xe3, 0x8d, 0x98, 0x6f, 0xf1, 0xdb, 0x60, 0x8a, 0x11, 0xcb, ++ 0x47, 0xf9, 0xb5, 0x2c, 0xc6, 0x17, 0x84, 0xfe, 0x87, 0xa0, 0x9f, 0x07, ++ 0x69, 0x8a, 0xf2, 0xf7, 0x6d, 0x16, 0x41, 0xf9, 0x3b, 0x9f, 0xa4, 0x04, ++ 0x02, 0xd0, 0x3e, 0x7f, 0xaf, 0x83, 0xf4, 0x73, 0xde, 0xfc, 0xe9, 0xc7, ++ 0xd0, 0xae, 0x9d, 0x4f, 0x29, 0xec, 0x88, 0xe2, 0xfd, 0xef, 0xfb, 0x48, ++ 0x2e, 0xc1, 0x13, 0x50, 0x50, 0x2e, 0xf2, 0x0f, 0xa4, 0x47, 0x6d, 0x69, ++ 0xc4, 0xd7, 0x7f, 0x8d, 0xe3, 0xeb, 0xbf, 0x1a, 0xf9, 0xd8, 0x38, 0xef, ++ 0xf9, 0x4b, 0xbe, 0x7d, 0xdd, 0x34, 0x9e, 0x43, 0x8c, 0x07, 0x8e, 0x11, ++ 0x3c, 0xcf, 0x17, 0xf4, 0x3a, 0xaf, 0x72, 0xff, 0xfc, 0xfc, 0x0a, 0x1f, ++ 0xc1, 0x01, 0x6e, 0xe4, 0x41, 0xb4, 0xbb, 0x5f, 0x75, 0xbe, 0x47, 0x33, ++ 0x84, 0x3d, 0x15, 0xf4, 0xb9, 0xdf, 0x16, 0xd8, 0x88, 0x78, 0x01, 0xfc, ++ 0x6f, 0xd6, 0xe3, 0x7f, 0xeb, 0xc0, 0x74, 0x7c, 0x42, 0xd0, 0xf1, 0x89, ++ 0x44, 0x74, 0x5c, 0x68, 0x6d, 0x2a, 0x40, 0xfd, 0x70, 0x4f, 0xb0, 0x63, ++ 0x32, 0x68, 0x6e, 0x36, 0x23, 0x23, 0xb4, 0x03, 0xc7, 0x3d, 0xbd, 0xf0, ++ 0x68, 0xab, 0x19, 0xd6, 0x53, 0x5f, 0xdd, 0x54, 0x82, 0x4c, 0xdf, 0x9f, ++ 0xbe, 0x0a, 0xe9, 0x73, 0xf7, 0x81, 0xbb, 0x57, 0x9a, 0xa1, 0xdd, 0x88, ++ 0xf4, 0xf1, 0xf5, 0xa7, 0xe3, 0x88, 0xe5, 0x65, 0x44, 0x2f, 0x1d, 0x5d, ++ 0x3b, 0x10, 0x8e, 0x11, 0x07, 0xfe, 0x64, 0x42, 0xb8, 0x25, 0x3d, 0x37, ++ 0x29, 0xdc, 0x0e, 0xc4, 0xbf, 0xff, 0x52, 0x86, 0x22, 0xe6, 0xad, 0x5b, ++ 0x69, 0x06, 0x3c, 0x5e, 0xd8, 0x67, 0x21, 0xff, 0x37, 0xbe, 0xdf, 0x91, ++ 0x0c, 0x1f, 0xf5, 0x93, 0xed, 0xe1, 0xd6, 0x0a, 0xbf, 0x06, 0x72, 0x9a, ++ 0x6d, 0x62, 0xa1, 0x44, 0xe3, 0x1e, 0xe9, 0x37, 0xae, 0xd5, 0x9f, 0x94, ++ 0x00, 0xfe, 0xbe, 0xf1, 0x1c, 0x7c, 0x3c, 0xc0, 0xfb, 0x6b, 0x7a, 0xbc, ++ 0xbf, 0x21, 0xf5, 0x6f, 0x7f, 0xbc, 0xff, 0x1f, 0xec, 0x07, 0x78, 0xa7, ++ 0xeb, 0x57, 0xc0, 0xfb, 0x3b, 0x5f, 0x86, 0x77, 0xe9, 0x6f, 0xd7, 0x0a, ++ 0xbd, 0x50, 0xcb, 0xd6, 0x91, 0x9f, 0xf9, 0x51, 0x60, 0xa6, 0x7b, 0x30, ++ 0xcc, 0x3b, 0x59, 0xb5, 0x13, 0xff, 0x2f, 0x7e, 0x4a, 0x25, 0xb9, 0x83, ++ 0xfe, 0xd3, 0xbd, 0xee, 0x98, 0x1e, 0x59, 0x7c, 0x4d, 0xd3, 0x41, 0x5c, ++ 0xe7, 0xe2, 0x1f, 0x2b, 0xc4, 0xa7, 0xf3, 0x43, 0x5c, 0xbf, 0x9f, 0x59, ++ 0x38, 0xfd, 0x28, 0xea, 0xf5, 0x05, 0xed, 0x46, 0xbf, 0x69, 0xe1, 0x1c, ++ 0xd0, 0x33, 0x00, 0xdf, 0xa2, 0xcd, 0xc6, 0xfb, 0x8b, 0x23, 0x71, 0x71, ++ 0x20, 0xd3, 0xe9, 0x73, 0xe0, 0x87, 0x33, 0x31, 0x7e, 0x1d, 0xc4, 0xf5, ++ 0x8c, 0x87, 0xec, 0xa4, 0x2a, 0xe4, 0xa1, 0x6a, 0x51, 0x69, 0x3a, 0xfa, ++ 0x49, 0xaf, 0x98, 0x7d, 0xbf, 0x21, 0x3f, 0xfc, 0x75, 0x95, 0x6d, 0x4f, ++ 0x80, 0xf7, 0xfc, 0xcc, 0x42, 0xb2, 0xc3, 0x7d, 0xed, 0x26, 0x40, 0x86, ++ 0xce, 0xbe, 0xb3, 0xf9, 0x36, 0x13, 0xea, 0x49, 0x39, 0xee, 0xc4, 0x45, ++ 0xa5, 0xd9, 0xe8, 0xcf, 0x2c, 0x4d, 0xf5, 0x7d, 0x69, 0xfc, 0x35, 0x68, ++ 0xb9, 0xd1, 0x9e, 0x17, 0x86, 0x93, 0x99, 0x4f, 0x37, 0x6e, 0x71, 0x5b, ++ 0xa6, 0xa1, 0x3d, 0xa4, 0x3d, 0xc7, 0xd0, 0xff, 0x8a, 0xcd, 0x45, 0x86, ++ 0xe7, 0xc3, 0x22, 0x57, 0x1a, 0x9e, 0x5f, 0xb5, 0xb3, 0xdc, 0xd0, 0xbe, ++ 0xba, 0xe3, 0x5a, 0x43, 0xff, 0x11, 0xfb, 0x26, 0x18, 0xda, 0x65, 0xd1, ++ 0x9b, 0x0c, 0xfd, 0x47, 0x1e, 0x9b, 0x69, 0x68, 0x8f, 0xee, 0xfa, 0xa6, ++ 0xa1, 0xff, 0x98, 0x13, 0x73, 0x0d, 0xcf, 0xaf, 0xe9, 0xbe, 0xc7, 0xf0, ++ 0xfc, 0xba, 0x4f, 0x96, 0x1a, 0xda, 0xd7, 0xf7, 0x7e, 0xcf, 0xe8, 0xbf, ++ 0x98, 0x18, 0xe9, 0x45, 0x96, 0xac, 0x90, 0x9e, 0x3c, 0xbc, 0xe2, 0x93, ++ 0x8a, 0x0f, 0x91, 0x01, 0x47, 0x29, 0x13, 0x11, 0x9f, 0x55, 0x63, 0x79, ++ 0xdf, 0xc3, 0x4b, 0x2c, 0x26, 0x47, 0x1a, 0x5e, 0x4b, 0x4c, 0x0e, 0xe0, ++ 0x8f, 0x57, 0x17, 0x4c, 0x27, 0xfb, 0x7f, 0x78, 0x89, 0x3b, 0xe0, 0xa3, ++ 0x6b, 0x45, 0x00, 0xe3, 0x1e, 0xa6, 0x8e, 0x1b, 0x15, 0x4a, 0xe0, 0xdf, ++ 0x4e, 0x72, 0x7c, 0x5a, 0xf1, 0xa1, 0x6e, 0xde, 0x2a, 0xab, 0xd9, 0xa0, ++ 0xd7, 0x26, 0x39, 0x8c, 0xed, 0xf2, 0x4c, 0x11, 0x17, 0x0e, 0xe2, 0x7c, ++ 0x33, 0x26, 0xd3, 0x28, 0x57, 0x6a, 0xd3, 0xf4, 0xa8, 0x05, 0x9a, 0x39, ++ 0x8b, 0x07, 0x67, 0xe3, 0x7c, 0x20, 0x5f, 0xd7, 0x66, 0x72, 0xbd, 0x46, ++ 0xd7, 0xaf, 0x20, 0x5f, 0xe3, 0xb1, 0xdf, 0xe9, 0xb4, 0x68, 0x2b, 0xb6, ++ 0xa5, 0x7c, 0x31, 0x61, 0x5f, 0x2b, 0x05, 0x1f, 0xc1, 0x35, 0x60, 0x29, ++ 0x47, 0x86, 0x4a, 0x25, 0x3b, 0x1c, 0xc0, 0x9b, 0x3e, 0xba, 0x1f, 0xd6, ++ 0x20, 0x3e, 0x99, 0x60, 0xf5, 0xe7, 0x1d, 0xc1, 0xf5, 0x98, 0xfc, 0x4e, ++ 0x64, 0xbe, 0x89, 0x73, 0x82, 0x87, 0xcd, 0x9c, 0x03, 0xb9, 0x1d, 0x66, ++ 0x43, 0x4d, 0x5f, 0xc7, 0x0e, 0x4b, 0xf9, 0xf6, 0x98, 0x7c, 0x61, 0xb2, ++ 0x5f, 0x99, 0x8c, 0xf2, 0x49, 0x5b, 0x16, 0x94, 0xa4, 0x33, 0x1d, 0x5e, ++ 0xe7, 0x64, 0xf2, 0xfc, 0x11, 0xd8, 0x7d, 0x7e, 0x75, 0xec, 0x1c, 0xa9, ++ 0x49, 0xfc, 0x15, 0xe9, 0xef, 0x4f, 0x19, 0xad, 0x0d, 0x8d, 0xdd, 0x57, ++ 0x16, 0x4d, 0xcf, 0x46, 0x79, 0xf3, 0x0c, 0xa0, 0x07, 0x2d, 0x9e, 0xe2, ++ 0x61, 0x3b, 0x40, 0xff, 0x5a, 0xbc, 0x85, 0x74, 0x95, 0xf7, 0x5b, 0xe7, ++ 0x98, 0xa6, 0x44, 0x12, 0xd0, 0xb5, 0x36, 0x53, 0x11, 0x70, 0x70, 0x3f, ++ 0x6b, 0x58, 0xcc, 0xcf, 0xaa, 0x25, 0x7a, 0x78, 0xde, 0xde, 0x38, 0x04, ++ 0xf0, 0xd5, 0x50, 0xdd, 0x4b, 0x7e, 0x96, 0xc7, 0xd4, 0xbe, 0xe4, 0x28, ++ 0xae, 0xeb, 0x57, 0x2a, 0xcf, 0x93, 0x81, 0x27, 0x85, 0xfa, 0x60, 0x81, ++ 0xf0, 0x9b, 0x17, 0x4c, 0x7d, 0x78, 0xc9, 0x51, 0xd0, 0x4b, 0x0b, 0xde, ++ 0x1c, 0x42, 0x7a, 0x49, 0xce, 0xb3, 0x75, 0x45, 0x74, 0x98, 0xde, 0x3f, ++ 0xc8, 0x1b, 0x20, 0x8e, 0x7a, 0x3a, 0x93, 0xeb, 0xf1, 0xc7, 0x57, 0x04, ++ 0x86, 0xcd, 0x1f, 0x42, 0x70, 0x91, 0x5e, 0x90, 0x7e, 0x79, 0x41, 0xb8, ++ 0x7e, 0x32, 0xc6, 0x37, 0x83, 0x58, 0x13, 0xc5, 0x89, 0x1b, 0x4d, 0xac, ++ 0x26, 0xd1, 0x38, 0x0f, 0x8a, 0x71, 0xb2, 0x91, 0xe4, 0x08, 0xaf, 0xc3, ++ 0x4e, 0xf2, 0x71, 0x6e, 0xe1, 0xc9, 0x34, 0x0d, 0xd6, 0x91, 0x9c, 0x1a, ++ 0x7a, 0x10, 0xd7, 0x37, 0x77, 0x44, 0x57, 0x05, 0x8f, 0x03, 0x03, 0xfe, ++ 0x99, 0xe0, 0x7f, 0x15, 0x44, 0xef, 0xd8, 0x88, 0xfd, 0x0b, 0x3c, 0x1a, ++ 0x8b, 0x28, 0xfd, 0xe7, 0xcf, 0xae, 0x0e, 0xb5, 0x15, 0xc2, 0xfa, 0x5a, ++ 0x32, 0x4d, 0x7e, 0x3b, 0xb5, 0x7b, 0x15, 0xec, 0x9f, 0x74, 0x1f, 0x63, ++ 0x59, 0xd0, 0xbf, 0xe5, 0xbf, 0x54, 0x82, 0xa7, 0xe5, 0xd5, 0x6b, 0x18, ++ 0xc6, 0x67, 0x49, 0xf6, 0x26, 0x86, 0x7e, 0xac, 0x5c, 0xd7, 0xa1, 0xcc, ++ 0xc7, 0x08, 0x3f, 0x6a, 0x67, 0x0a, 0xd9, 0x3d, 0x86, 0x2e, 0x28, 0xe0, ++ 0xef, 0x5b, 0x82, 0xf6, 0x9f, 0x7b, 0xe6, 0x77, 0xa1, 0x7f, 0xf1, 0xf9, ++ 0x06, 0x33, 0xcd, 0xf7, 0x39, 0xac, 0xd1, 0x01, 0xe3, 0x7f, 0xde, 0xa9, ++ 0x46, 0xd0, 0x59, 0x3f, 0x9a, 0x99, 0x1c, 0x35, 0x41, 0x5b, 0x6d, 0x4b, ++ 0x25, 0x7b, 0x5d, 0x80, 0x3e, 0x27, 0xf4, 0x5f, 0xd8, 0x99, 0x1a, 0xf1, ++ 0x15, 0xc6, 0xf0, 0xa2, 0x6d, 0x1e, 0xc7, 0xa2, 0x60, 0xdf, 0x92, 0xf2, ++ 0xf8, 0xfa, 0x5b, 0x32, 0xed, 0x11, 0x7b, 0x21, 0xad, 0xfb, 0x87, 0x99, ++ 0xa3, 0x63, 0x70, 0xca, 0x75, 0xe7, 0x0f, 0x10, 0x77, 0xbe, 0x22, 0xe0, ++ 0x66, 0x81, 0xa1, 0x06, 0x3a, 0x7b, 0x21, 0x06, 0xeb, 0xc2, 0xb9, 0x35, ++ 0x70, 0xf6, 0x61, 0x1c, 0x75, 0x83, 0x99, 0xe2, 0xc2, 0x05, 0x19, 0x76, ++ 0x82, 0x33, 0xb2, 0x22, 0x3c, 0x6c, 0xbe, 0xb9, 0xff, 0xfa, 0x5a, 0x3d, ++ 0x33, 0x6f, 0xbe, 0x1d, 0xe0, 0x69, 0x3e, 0xae, 0x32, 0x15, 0xc6, 0xf1, ++ 0x75, 0xb7, 0x13, 0x3e, 0x16, 0x02, 0x3e, 0x22, 0xbe, 0xfe, 0xf8, 0x3e, ++ 0xe7, 0x2b, 0xfc, 0xab, 0x49, 0x25, 0xb8, 0x5f, 0x41, 0x7a, 0xa9, 0x9b, ++ 0x27, 0xd3, 0xba, 0x18, 0xfa, 0xf1, 0xf0, 0x5e, 0xfd, 0x13, 0x0a, 0x7b, ++ 0xac, 0x10, 0xf9, 0x32, 0x34, 0x85, 0xe8, 0x9c, 0x63, 0x62, 0x4f, 0x15, ++ 0x26, 0xf0, 0x0f, 0x50, 0xde, 0x5c, 0x88, 0x3f, 0x9e, 0x3f, 0xb0, 0x78, ++ 0x4a, 0xb8, 0x9c, 0x78, 0x06, 0x0f, 0xdb, 0x01, 0xe3, 0xfd, 0x2a, 0x73, ++ 0x40, 0x7f, 0xeb, 0xcd, 0x4c, 0x6e, 0xf7, 0xe9, 0x1a, 0xaf, 0x97, 0xc0, ++ 0xfe, 0x85, 0x11, 0x8e, 0x0b, 0x9b, 0x15, 0xa2, 0xe7, 0x69, 0x25, 0x62, ++ 0x31, 0x03, 0xca, 0x6a, 0x6f, 0x8d, 0x1a, 0xec, 0xbe, 0x1a, 0x50, 0xc9, ++ 0xdf, 0x88, 0x87, 0x0b, 0xf4, 0xd8, 0x89, 0x4c, 0x9d, 0x9f, 0xa3, 0xa6, ++ 0xdf, 0x37, 0x1c, 0xc7, 0x1d, 0xd8, 0x3f, 0xdb, 0x7d, 0xd0, 0x82, 0xfe, ++ 0x99, 0x83, 0x91, 0x7f, 0x26, 0xf5, 0xe7, 0x40, 0xfe, 0x19, 0xfa, 0x65, ++ 0xc8, 0x7f, 0xd2, 0x2f, 0xfb, 0x38, 0x4e, 0x0f, 0xc3, 0xfa, 0x3e, 0x15, ++ 0xeb, 0xfb, 0x34, 0xd1, 0xfa, 0x12, 0xe8, 0xdd, 0x1e, 0xd2, 0xbb, 0xdf, ++ 0x8c, 0x26, 0xf4, 0x6b, 0x5c, 0x96, 0xc4, 0x7a, 0x29, 0x37, 0x8b, 0xeb, ++ 0xbb, 0x46, 0x87, 0x85, 0x51, 0x1e, 0x6a, 0x80, 0xbc, 0xba, 0x2b, 0x4b, ++ 0xfa, 0x71, 0xdc, 0xaf, 0x18, 0x48, 0xcf, 0x5d, 0x2e, 0xde, 0x28, 0x5a, ++ 0x5b, 0x4a, 0xfa, 0xf6, 0x42, 0x97, 0x2f, 0x3d, 0x13, 0xae, 0xce, 0x0f, ++ 0x94, 0xa6, 0x44, 0xe3, 0xa8, 0xcb, 0x9f, 0x1d, 0x89, 0x74, 0x59, 0x6c, ++ 0xab, 0x4c, 0xca, 0x02, 0xf8, 0xec, 0x59, 0x46, 0xfc, 0x6c, 0x59, 0xdd, ++ 0xcf, 0x4e, 0xa5, 0x67, 0x71, 0x7c, 0xd1, 0xb5, 0x1f, 0xbe, 0xec, 0x80, ++ 0x2f, 0x93, 0x01, 0x5f, 0xce, 0xac, 0x2f, 0xf5, 0x03, 0xb9, 0xde, 0xcd, ++ 0xc1, 0xbc, 0x14, 0xcc, 0xd7, 0x23, 0xf0, 0x03, 0xfa, 0xf7, 0x22, 0xe9, ++ 0xdf, 0x5b, 0x7a, 0x6e, 0xc3, 0x58, 0xb1, 0xfe, 0x96, 0x2f, 0x44, 0x9c, ++ 0xcb, 0xfb, 0xbb, 0x85, 0x9e, 0x86, 0x38, 0xf8, 0x86, 0x8f, 0x7c, 0xd4, ++ 0xff, 0xcf, 0x48, 0xbf, 0x58, 0x3c, 0xdc, 0x5d, 0x81, 0x71, 0x50, 0xf3, ++ 0x0b, 0x57, 0xa4, 0xa3, 0x1f, 0x35, 0x71, 0xef, 0xed, 0x0e, 0xbc, 0x5e, ++ 0x70, 0x0e, 0x26, 0xbc, 0x9c, 0xdb, 0x9b, 0x14, 0xc0, 0x79, 0xce, 0x65, ++ 0x82, 0xfe, 0xb4, 0x63, 0x7b, 0xcc, 0x51, 0xcc, 0x13, 0x9c, 0x59, 0x71, ++ 0x2c, 0x53, 0x8f, 0xd7, 0x73, 0xcf, 0xbd, 0x55, 0x61, 0x86, 0x71, 0xce, ++ 0xed, 0x79, 0xab, 0x42, 0xc3, 0x7c, 0x83, 0xc8, 0xa7, 0xc8, 0xe7, 0xf5, ++ 0x97, 0xde, 0xa9, 0x08, 0xc2, 0xfb, 0xe1, 0x09, 0x6c, 0x68, 0x93, 0x5d, ++ 0x47, 0x5f, 0x2b, 0xd7, 0xef, 0x1b, 0x6c, 0x3c, 0x1f, 0xe1, 0x72, 0x5b, ++ 0x5a, 0xd9, 0x08, 0xf0, 0x6b, 0x5d, 0x19, 0xf4, 0xfe, 0xa3, 0x6e, 0xd3, ++ 0x0f, 0xf0, 0xbe, 0x6a, 0x7d, 0xa7, 0xe0, 0x43, 0x94, 0xe7, 0xb8, 0xfc, ++ 0xcb, 0x06, 0xb3, 0xaf, 0xd9, 0x0e, 0x7c, 0x0e, 0x31, 0x96, 0x1f, 0xf3, ++ 0xf8, 0x4b, 0x87, 0x05, 0xbc, 0x0b, 0x30, 0xff, 0x32, 0xc3, 0x43, 0x79, ++ 0x93, 0x66, 0x85, 0xeb, 0xbd, 0xf0, 0x02, 0x1e, 0x1f, 0x3a, 0x8b, 0xd8, ++ 0xd0, 0x42, 0x18, 0xcf, 0x6c, 0x52, 0x55, 0x7c, 0xaf, 0xd7, 0xcb, 0xfc, ++ 0xdb, 0xa1, 0x4b, 0xd2, 0xe1, 0xf6, 0x28, 0xaa, 0xa9, 0xe4, 0xae, 0x8e, ++ 0x00, 0x82, 0x3f, 0x2a, 0x39, 0x93, 0xf0, 0x7e, 0xdd, 0x59, 0x87, 0x82, ++ 0xfe, 0xbe, 0xcc, 0xd7, 0x68, 0x55, 0x7c, 0xbc, 0xde, 0x59, 0x96, 0xc8, ++ 0x76, 0x5d, 0x9e, 0xc6, 0x33, 0x47, 0x23, 0x3b, 0x96, 0xa2, 0x75, 0x30, ++ 0xd4, 0xab, 0xb3, 0x5c, 0xfc, 0x7d, 0x99, 0xaf, 0xa9, 0x9a, 0x39, 0x27, ++ 0x58, 0x89, 0x70, 0x3d, 0x60, 0xa2, 0x78, 0x03, 0x14, 0xa5, 0x82, 0xfa, ++ 0x2b, 0x57, 0xac, 0xa3, 0xd0, 0xbb, 0x67, 0xb5, 0xf4, 0x45, 0x34, 0x37, ++ 0xb2, 0x15, 0xc3, 0xe4, 0x0c, 0x5b, 0x0b, 0xfc, 0x3b, 0x18, 0xf0, 0x9c, ++ 0xe6, 0x33, 0x05, 0x30, 0x3f, 0x9a, 0x96, 0x17, 0x3d, 0x61, 0x06, 0x3f, ++ 0x2c, 0xb7, 0x85, 0xb1, 0x53, 0x3a, 0x7f, 0x2f, 0x05, 0x99, 0x0f, 0xd7, ++ 0xf3, 0xa6, 0x1a, 0xd9, 0x0e, 0xf2, 0x9f, 0xfa, 0xc5, 0x78, 0xeb, 0x1c, ++ 0xf0, 0x67, 0x52, 0x92, 0xb9, 0xfc, 0xa4, 0x05, 0x5b, 0x97, 0x60, 0xde, ++ 0x1a, 0xef, 0xff, 0x6b, 0x39, 0xd2, 0x85, 0xbf, 0x4f, 0xf4, 0x51, 0x31, ++ 0x8d, 0xc4, 0xc2, 0xe9, 0x00, 0x72, 0xea, 0x58, 0xe3, 0xb8, 0x92, 0x7e, ++ 0x9d, 0x2b, 0xac, 0xfe, 0xc1, 0xc0, 0xa8, 0x7b, 0x56, 0x38, 0xe8, 0xfa, ++ 0xf4, 0x0a, 0x0f, 0xc1, 0xf5, 0xf0, 0x0a, 0x1f, 0x5d, 0x7f, 0xb8, 0x62, ++ 0x28, 0xdd, 0x1f, 0x48, 0xce, 0x2e, 0x77, 0x7d, 0x68, 0x05, 0xcc, 0xab, ++ 0xe3, 0x27, 0xe7, 0x18, 0xc0, 0x0a, 0xac, 0xd7, 0xa9, 0x32, 0x92, 0xc7, ++ 0x87, 0x46, 0x57, 0xa4, 0xcf, 0x4d, 0xa0, 0x07, 0xe4, 0xf5, 0xb1, 0x15, ++ 0xc7, 0xdc, 0x13, 0x87, 0x08, 0x04, 0x02, 0x3d, 0x72, 0xea, 0x1c, 0xdb, ++ 0xd6, 0x14, 0x12, 0x9d, 0x51, 0x68, 0x60, 0x75, 0xaf, 0xad, 0x0e, 0x8c, ++ 0x63, 0xec, 0x01, 0x73, 0x60, 0x09, 0x03, 0xd6, 0x7a, 0x20, 0xeb, 0x8b, ++ 0x89, 0x98, 0x57, 0x5a, 0xab, 0x98, 0x28, 0x8f, 0xd4, 0x9a, 0x75, 0x70, ++ 0x75, 0x38, 0x0f, 0xaf, 0x3e, 0x4e, 0xb7, 0x43, 0xef, 0x32, 0xcc, 0x47, ++ 0x7a, 0x47, 0xb5, 0x2b, 0x28, 0xaf, 0xde, 0xba, 0x76, 0xe2, 0x83, 0x51, ++ 0x5d, 0x5d, 0x2c, 0x24, 0xee, 0x07, 0xa0, 0xed, 0x3d, 0xce, 0xef, 0x3f, ++ 0x60, 0xe3, 0x78, 0x5e, 0xc7, 0xd8, 0x14, 0x84, 0xd7, 0xae, 0xb0, 0x20, ++ 0x5e, 0x7b, 0x6c, 0xdc, 0x9e, 0x7c, 0x6c, 0xe3, 0x7a, 0xed, 0x53, 0x71, ++ 0x2d, 0xcc, 0x0a, 0x3d, 0x9c, 0x05, 0xf7, 0xff, 0xe2, 0x38, 0x51, 0xf2, ++ 0x00, 0x80, 0x67, 0x2b, 0xfd, 0x7d, 0x01, 0xee, 0x47, 0xa4, 0x1c, 0xfa, ++ 0x1b, 0xe5, 0x6b, 0xd5, 0xe1, 0x16, 0x2b, 0xca, 0x87, 0xf7, 0xc0, 0xfb, ++ 0xb4, 0x4f, 0xa1, 0x9a, 0xba, 0x2d, 0x0c, 0x4c, 0xe8, 0xf3, 0x8f, 0xbc, ++ 0x4b, 0xf9, 0x2f, 0xd5, 0x12, 0x2c, 0xe4, 0xed, 0x9f, 0xaf, 0xc1, 0x75, ++ 0xb8, 0xd2, 0x82, 0xdb, 0xd0, 0xc5, 0x62, 0xe1, 0x77, 0xa7, 0x1e, 0xf6, ++ 0x80, 0xdc, 0x20, 0x3f, 0x5c, 0x4b, 0xd8, 0x08, 0xa3, 0x1c, 0xaf, 0xb5, ++ 0x89, 0x76, 0xf8, 0xdf, 0x08, 0x0f, 0x6b, 0xcd, 0xbc, 0xfd, 0xfc, 0x23, ++ 0xbf, 0x5d, 0x1d, 0xa6, 0x76, 0x70, 0x31, 0xe2, 0x05, 0xdb, 0x2d, 0x88, ++ 0x97, 0x8c, 0x0e, 0x8f, 0x09, 0xda, 0xf6, 0x95, 0xef, 0xac, 0x3e, 0x76, ++ 0x3d, 0xb6, 0x65, 0xff, 0x77, 0xa8, 0xff, 0x73, 0x59, 0xdc, 0x3e, 0x32, ++ 0x7b, 0xd0, 0x8b, 0xfa, 0xa3, 0xaf, 0xed, 0x80, 0xf6, 0xd5, 0xba, 0xb6, ++ 0xc6, 0xdb, 0xcc, 0xca, 0xaf, 0x72, 0x7d, 0xf5, 0x87, 0xfe, 0x76, 0x34, ++ 0x17, 0xf8, 0xb5, 0xe1, 0x80, 0xd2, 0x81, 0xa0, 0x79, 0x0f, 0xac, 0x57, ++ 0x70, 0x9d, 0xde, 0x7d, 0xeb, 0x09, 0xdf, 0xf4, 0x07, 0xf2, 0x81, 0xcb, ++ 0xa0, 0x3c, 0xa6, 0x35, 0x4c, 0x79, 0xaf, 0xa7, 0x57, 0x1c, 0x73, 0xb4, ++ 0x00, 0x9d, 0xb5, 0xcc, 0x36, 0x37, 0xe2, 0xfd, 0x0a, 0x4f, 0x28, 0x10, ++ 0x48, 0xa0, 0xaf, 0x7f, 0xee, 0x92, 0xfe, 0x2a, 0xf4, 0xd7, 0xe7, 0xbf, ++ 0x22, 0xe6, 0xde, 0x6e, 0x9d, 0xff, 0xec, 0x65, 0x5c, 0x6e, 0x58, 0x0b, ++ 0xe8, 0x87, 0x04, 0xfe, 0x40, 0x91, 0xab, 0xf2, 0x3d, 0x27, 0xac, 0x63, ++ 0x83, 0x12, 0x5a, 0xa3, 0xa2, 0x9e, 0xf9, 0x99, 0xd9, 0x81, 0x7a, 0x84, ++ 0x75, 0x71, 0x3d, 0x74, 0x56, 0x8c, 0xc5, 0x22, 0x39, 0xe4, 0x8f, 0xd4, ++ 0xd9, 0x78, 0xd3, 0xbc, 0x2a, 0xb4, 0x66, 0x18, 0xea, 0x89, 0x3b, 0x34, ++ 0x3f, 0xc6, 0xb9, 0xb5, 0x85, 0xed, 0x95, 0x68, 0x8f, 0x6b, 0xf7, 0x17, ++ 0xfa, 0x57, 0xb2, 0x18, 0xbf, 0xd4, 0x66, 0x74, 0xb8, 0xcb, 0x91, 0x7f, ++ 0x32, 0x8c, 0xed, 0x66, 0x91, 0x17, 0xc9, 0xce, 0x68, 0xca, 0xc8, 0x28, ++ 0xc5, 0xfd, 0x82, 0xf5, 0x05, 0x98, 0xcf, 0x6f, 0x60, 0xed, 0x77, 0x7e, ++ 0x0f, 0xe1, 0xfd, 0xb5, 0xca, 0xd0, 0xaf, 0xfe, 0xf4, 0xe0, 0x35, 0xe9, ++ 0xd7, 0x41, 0xbb, 0x1e, 0xda, 0x68, 0xe7, 0xeb, 0x3b, 0xdf, 0xb2, 0x20, ++ 0x7f, 0x3e, 0xe8, 0xe4, 0xfa, 0xb3, 0xa1, 0x13, 0xf8, 0x07, 0xc6, 0x59, ++ 0x07, 0xf2, 0x15, 0x00, 0xc7, 0x63, 0x9b, 0xe6, 0x48, 0x46, 0xfd, 0xf4, ++ 0x74, 0xa0, 0xe9, 0x4a, 0x74, 0xc9, 0x7a, 0x1f, 0xf9, 0xcb, 0x54, 0x1b, ++ 0x38, 0x75, 0xcf, 0x14, 0x05, 0x1c, 0x44, 0x6f, 0xe7, 0xa5, 0xd5, 0x56, ++ 0x6c, 0x5b, 0x1c, 0xc3, 0x58, 0x19, 0xb6, 0x2d, 0x6b, 0x90, 0xdf, 0x6a, ++ 0xcb, 0x4c, 0x5c, 0x8e, 0x98, 0xe5, 0x57, 0x01, 0x4d, 0xec, 0x4f, 0x42, ++ 0xfb, 0xb7, 0x8f, 0x54, 0xdd, 0x14, 0xb6, 0xc7, 0xec, 0x8d, 0x57, 0xd8, ++ 0xa7, 0xc6, 0xad, 0xf6, 0xb0, 0x89, 0xdb, 0xa7, 0xf3, 0x68, 0xd7, 0x1a, ++ 0x36, 0x9b, 0xc2, 0xa8, 0xbf, 0x4c, 0xd6, 0x2e, 0x0b, 0xd2, 0xd7, 0x8e, ++ 0x7b, 0xaf, 0x44, 0x1f, 0x07, 0xe1, 0x6d, 0x99, 0xd4, 0xe7, 0x71, 0xfa, ++ 0x7a, 0xd9, 0xd4, 0xcc, 0x9b, 0xb0, 0xbd, 0xec, 0x81, 0x22, 0x47, 0xf8, ++ 0x4b, 0xf2, 0x8a, 0x35, 0x17, 0x53, 0x58, 0x44, 0xe7, 0xcf, 0x3c, 0xe8, ++ 0xe4, 0x72, 0x5c, 0xa3, 0x85, 0x69, 0x9f, 0xa3, 0xe6, 0x62, 0x1a, 0x3d, ++ 0xff, 0xe7, 0xcd, 0x67, 0x63, 0x91, 0x91, 0x5f, 0x36, 0x9f, 0x9d, 0x9e, ++ 0xcb, 0xf9, 0xea, 0x62, 0xf3, 0x11, 0x5d, 0x0f, 0x95, 0xff, 0x6a, 0xe3, ++ 0x60, 0xa0, 0xdb, 0xb2, 0xdd, 0x66, 0x53, 0x92, 0x8e, 0xef, 0x96, 0xed, ++ 0x16, 0xfb, 0xc9, 0xb6, 0x40, 0x36, 0x8e, 0xe3, 0xb2, 0x30, 0x81, 0x77, ++ 0xf0, 0xcf, 0x01, 0xbf, 0x5a, 0x61, 0x5f, 0x3b, 0xac, 0x81, 0x9c, 0x3f, ++ 0xd4, 0x27, 0xe7, 0xde, 0x35, 0x13, 0xc7, 0x21, 0xdd, 0x62, 0xcf, 0xd9, ++ 0x58, 0x83, 0x1e, 0x08, 0x60, 0x7c, 0xf8, 0x50, 0xb2, 0xd4, 0x03, 0x85, ++ 0x89, 0xfb, 0x27, 0xc7, 0xf5, 0x2f, 0x92, 0xed, 0x2b, 0xa9, 0x7f, 0x3c, ++ 0x3c, 0xae, 0xe4, 0x58, 0xdb, 0x0a, 0xfd, 0xb5, 0xbf, 0x27, 0xf5, 0xb5, ++ 0x11, 0xbe, 0xf5, 0xa6, 0xb8, 0xf1, 0x32, 0xe5, 0xfc, 0xe5, 0x6b, 0x26, ++ 0xe6, 0xc5, 0xf8, 0xea, 0xb7, 0x59, 0xd7, 0xfd, 0x2a, 0x3c, 0x18, 0x9e, ++ 0x67, 0xb4, 0x57, 0x62, 0x7d, 0x45, 0xef, 0x02, 0xe6, 0x43, 0xbb, 0x8c, ++ 0xfc, 0xea, 0xd7, 0xe9, 0xfd, 0xdf, 0x0a, 0xbf, 0xaf, 0xe6, 0x62, 0xb1, ++ 0x81, 0xde, 0x31, 0xbc, 0x97, 0x18, 0xee, 0x9f, 0x5e, 0xe1, 0x31, 0xec, ++ 0xcb, 0x2d, 0xaa, 0x5e, 0x46, 0xfb, 0x87, 0xbf, 0x15, 0x7a, 0xbe, 0x86, ++ 0x85, 0x29, 0x0e, 0xaa, 0xd9, 0x9a, 0xcb, 0x22, 0xba, 0xbc, 0xc4, 0xff, ++ 0x87, 0xe3, 0x1f, 0x85, 0xe3, 0xba, 0x01, 0xe0, 0xb8, 0xe1, 0x7f, 0x19, ++ 0x8e, 0x42, 0x83, 0x7c, 0xc6, 0xe0, 0x18, 0x6c, 0xb8, 0xff, 0x8f, 0xc2, ++ 0xb1, 0xfd, 0xb6, 0x92, 0x9b, 0x0a, 0xa1, 0xcb, 0xa3, 0x4a, 0xd8, 0x5a, ++ 0x84, 0x76, 0xe1, 0x7e, 0x13, 0xe5, 0x39, 0xd4, 0x8c, 0x89, 0xbe, 0x95, ++ 0xb8, 0x2f, 0x70, 0xbf, 0x46, 0x7e, 0x1e, 0xba, 0x24, 0x58, 0x9f, 0x51, ++ 0xa4, 0xb1, 0x63, 0x5a, 0x39, 0xca, 0x4f, 0x7b, 0x00, 0xe3, 0x72, 0xb6, ++ 0x8a, 0xe7, 0x7b, 0xe0, 0x7e, 0x9b, 0xb9, 0x9c, 0xec, 0x10, 0xf9, 0xc1, ++ 0xc5, 0x07, 0x92, 0xee, 0x46, 0x3f, 0xad, 0xa8, 0x26, 0xb0, 0x18, 0xaf, ++ 0x2c, 0xaf, 0x94, 0xf6, 0x1d, 0xe4, 0xbe, 0x1d, 0x13, 0x79, 0x2b, 0xb9, ++ 0xcf, 0x30, 0xc4, 0xc1, 0x2a, 0x35, 0x70, 0xde, 0x46, 0xb8, 0xee, 0x26, ++ 0x3b, 0x55, 0x14, 0xac, 0xae, 0x45, 0x67, 0x4e, 0x4d, 0x1d, 0x95, 0x8c, ++ 0xf6, 0xf1, 0x51, 0x53, 0x24, 0x8c, 0xf3, 0x85, 0x1f, 0xe6, 0xf3, 0xb9, ++ 0x4c, 0x91, 0x0e, 0x2b, 0xea, 0xde, 0xb4, 0xc1, 0x0e, 0xb4, 0x77, 0xae, ++ 0x34, 0xae, 0xff, 0xd8, 0x9a, 0x52, 0xb2, 0x7f, 0xdb, 0x4d, 0x45, 0x57, ++ 0x2e, 0x01, 0x38, 0x1e, 0x50, 0x2a, 0x93, 0x5f, 0x47, 0x3c, 0x67, 0x14, ++ 0x51, 0x9e, 0x16, 0xef, 0x2f, 0x85, 0xfb, 0xdb, 0x85, 0xdd, 0x52, 0x33, ++ 0xfc, 0x0e, 0xb4, 0x53, 0xdb, 0x85, 0xdd, 0x6a, 0x16, 0xfa, 0x5d, 0xde, ++ 0x4f, 0xc9, 0x0c, 0xde, 0x8d, 0xfe, 0xc4, 0x49, 0x67, 0xc3, 0x4d, 0xd6, ++ 0x6b, 0x50, 0x0f, 0x05, 0xda, 0xb2, 0xc0, 0xde, 0xfc, 0xc1, 0xd9, 0xb0, ++ 0xc6, 0x73, 0x0d, 0xda, 0x1b, 0x5f, 0x91, 0x15, 0xec, 0xcb, 0x1f, 0x36, ++ 0xd4, 0xaf, 0x41, 0x7b, 0xb3, 0x7d, 0xa5, 0x2f, 0xc7, 0x91, 0x11, 0x6b, ++ 0x0f, 0xf9, 0x3b, 0x58, 0x6b, 0xd2, 0x13, 0xf5, 0x6b, 0xd0, 0x5f, 0x69, ++ 0xb1, 0x2f, 0xbd, 0x07, 0xfd, 0x1d, 0x78, 0xfe, 0x2b, 0x2b, 0xac, 0xf3, ++ 0x99, 0x4c, 0xa1, 0x77, 0xc4, 0xf3, 0xa2, 0x3e, 0x3d, 0x05, 0x7a, 0x09, ++ 0xf4, 0x98, 0xba, 0xb2, 0xaf, 0x1d, 0x46, 0xbd, 0x54, 0xd4, 0xa7, 0x77, ++ 0xea, 0x49, 0xef, 0xec, 0x78, 0x5c, 0xa5, 0xf6, 0x41, 0x98, 0x0f, 0xfd, ++ 0x3e, 0x58, 0x47, 0x58, 0xc5, 0xf5, 0x0e, 0xd1, 0xc8, 0xaf, 0xb7, 0x01, ++ 0x2c, 0xc9, 0xd0, 0xb6, 0x0d, 0x2b, 0xa2, 0xfd, 0x1b, 0x58, 0x37, 0x4b, ++ 0x46, 0xff, 0x7a, 0x18, 0x7f, 0x2e, 0xf3, 0xee, 0x96, 0x21, 0x26, 0xca, ++ 0xbb, 0x63, 0x7f, 0xc4, 0xa3, 0xcd, 0xcb, 0xfb, 0x5b, 0x66, 0x30, 0x3f, ++ 0xee, 0x37, 0x59, 0x52, 0xed, 0x14, 0x87, 0xc8, 0x3c, 0xbe, 0x2a, 0xf6, ++ 0x8f, 0x92, 0x45, 0x1d, 0x85, 0xe2, 0x98, 0xc1, 0x2e, 0xc1, 0xfb, 0xd6, ++ 0x75, 0xe5, 0x4b, 0x31, 0x1e, 0xb3, 0x0e, 0x36, 0xee, 0x93, 0x5a, 0xe2, ++ 0xea, 0x2d, 0xd4, 0xf8, 0xfa, 0x0b, 0x7b, 0x94, 0xfc, 0xaf, 0xf7, 0x9c, ++ 0x22, 0xff, 0x9e, 0xc5, 0x3c, 0x97, 0x8a, 0x63, 0xf7, 0x19, 0xf3, 0x97, ++ 0xe3, 0xd5, 0x7d, 0x7b, 0x4b, 0x25, 0xc2, 0xbb, 0x34, 0x95, 0x39, 0x54, ++ 0xcc, 0x83, 0x84, 0xa2, 0xb4, 0x0f, 0x19, 0x6f, 0xd7, 0xac, 0x60, 0x47, ++ 0x7d, 0x3a, 0xf9, 0xb0, 0xda, 0x59, 0x20, 0xd1, 0x7e, 0xff, 0x8b, 0x2e, ++ 0xee, 0xd7, 0xda, 0x2f, 0x6a, 0x14, 0xdf, 0x6c, 0x50, 0xc0, 0xbf, 0x41, ++ 0x3b, 0x9a, 0xca, 0xf9, 0x4c, 0xfa, 0x47, 0x66, 0x87, 0xe4, 0x5b, 0xa3, ++ 0xdd, 0x95, 0xfe, 0x92, 0x39, 0x83, 0xaf, 0x65, 0xd9, 0xd4, 0x09, 0xd9, ++ 0x18, 0x7f, 0xab, 0xf6, 0x80, 0x15, 0xfd, 0x9c, 0x83, 0x8e, 0x72, 0x8a, ++ 0xeb, 0x55, 0xe6, 0xbf, 0xb9, 0x52, 0xe7, 0xef, 0xb4, 0x44, 0xa7, 0x52, ++ 0xbe, 0x4c, 0x73, 0x04, 0xc8, 0x0f, 0xcf, 0xc6, 0x38, 0x11, 0xf3, 0x3d, ++ 0x0e, 0x3f, 0xd3, 0xfb, 0x39, 0xad, 0x2b, 0x20, 0xb0, 0xbc, 0x82, 0xb1, ++ 0x27, 0x2b, 0x4a, 0x26, 0xa0, 0x3c, 0x3c, 0x66, 0x8b, 0x5a, 0x8b, 0x91, ++ 0xbe, 0x8f, 0x9a, 0x28, 0xde, 0x3b, 0x54, 0x7e, 0x4f, 0x58, 0xc1, 0x7c, ++ 0xd9, 0x72, 0x46, 0x72, 0xfa, 0x64, 0x85, 0x7b, 0x02, 0xe6, 0xbb, 0xb7, ++ 0x69, 0xc1, 0xf4, 0x3b, 0x50, 0x5e, 0x8e, 0xc3, 0x7c, 0x3e, 0x4e, 0x37, ++ 0xbe, 0xcf, 0xda, 0xac, 0x60, 0x7e, 0xf7, 0x73, 0x6b, 0x30, 0x1d, 0xf5, ++ 0xc1, 0x43, 0xc8, 0xf7, 0x3a, 0xbc, 0x3c, 0xe9, 0xe2, 0x7e, 0xfd, 0x05, ++ 0x27, 0xf7, 0x3b, 0x1f, 0x30, 0x73, 0xb9, 0x68, 0x05, 0x78, 0xa2, 0x00, ++ 0x87, 0x76, 0xf1, 0x2a, 0xca, 0x47, 0x3d, 0xe0, 0xe2, 0xfa, 0xc9, 0x52, ++ 0x3d, 0x91, 0xf2, 0x35, 0x16, 0xc0, 0x07, 0xe6, 0xe3, 0x92, 0x58, 0x53, ++ 0xd8, 0x41, 0xeb, 0xe5, 0xf9, 0xb5, 0x24, 0x8f, 0xc9, 0x50, 0xb7, 0xa7, ++ 0x5d, 0x1c, 0x4e, 0xef, 0x5f, 0x70, 0x9a, 0x0c, 0x71, 0x75, 0x1b, 0xac, ++ 0xd3, 0xa7, 0xd3, 0x5f, 0x36, 0x16, 0xa6, 0xfc, 0x1a, 0xe2, 0xf8, 0xa9, ++ 0x04, 0xfe, 0xcb, 0x41, 0x41, 0x37, 0x2b, 0xf8, 0x43, 0x3e, 0xf2, 0x4f, ++ 0xe2, 0xf6, 0xa1, 0xfb, 0xfb, 0x47, 0xe4, 0xaf, 0x48, 0xfa, 0xf4, 0xf9, ++ 0x29, 0x0a, 0xf8, 0x27, 0x5f, 0x12, 0x8f, 0x35, 0x42, 0xbc, 0xac, 0xd7, ++ 0xf7, 0x8d, 0x5a, 0x2f, 0xe9, 0xdf, 0x46, 0x88, 0x87, 0xf1, 0x7e, 0x8f, ++ 0xc3, 0x4a, 0xfe, 0xa1, 0xac, 0x4b, 0xb0, 0x0b, 0x7d, 0xd6, 0xea, 0x09, ++ 0xb5, 0x5f, 0x87, 0x7c, 0x9e, 0x9c, 0x36, 0x1c, 0xf3, 0x00, 0x1a, 0xeb, ++ 0x20, 0xa4, 0xac, 0xc3, 0xba, 0x04, 0xd4, 0x87, 0x1e, 0xad, 0xb7, 0x8f, ++ 0xff, 0x41, 0xe6, 0x9b, 0x6d, 0x69, 0xdb, 0xb1, 0x5f, 0x8b, 0xa8, 0x53, ++ 0x48, 0xf1, 0x1b, 0xe5, 0x27, 0x99, 0xb5, 0x47, 0x03, 0x28, 0x9f, 0x43, ++ 0x75, 0x72, 0xc3, 0x10, 0xdf, 0x61, 0x1a, 0x37, 0xc9, 0x67, 0xbc, 0xcf, ++ 0x58, 0x88, 0x61, 0x9c, 0xa1, 0x79, 0xe2, 0xeb, 0x18, 0xc2, 0x7d, 0xf5, ++ 0x4a, 0x54, 0x6f, 0xa7, 0xb1, 0x2d, 0xb8, 0xaf, 0x2c, 0xfd, 0xde, 0x5c, ++ 0x51, 0x2f, 0x74, 0x2e, 0xe5, 0x8f, 0x15, 0x28, 0xc7, 0xe0, 0xf7, 0x8e, ++ 0xce, 0xa2, 0xbc, 0x4d, 0x2f, 0xc5, 0x2d, 0x32, 0x5f, 0xf3, 0x75, 0xfd, ++ 0xe4, 0x6c, 0x1c, 0x03, 0xe3, 0xd1, 0xe5, 0x7f, 0xae, 0xf8, 0x10, 0xe5, ++ 0x6c, 0xc6, 0xe4, 0x42, 0xbc, 0x9f, 0xa2, 0x71, 0x3e, 0x01, 0x57, 0x5c, ++ 0x4b, 0x2a, 0xc7, 0xf0, 0x6a, 0xf2, 0xe2, 0x0c, 0x58, 0xff, 0x37, 0xb2, ++ 0x38, 0xff, 0x39, 0xd5, 0x76, 0xaa, 0xeb, 0x78, 0x5e, 0xd8, 0xb1, 0xbf, ++ 0x38, 0xe6, 0x78, 0x29, 0x8e, 0x02, 0x7c, 0x52, 0x3d, 0x4c, 0xb2, 0xbf, ++ 0x9b, 0xe2, 0x45, 0xe1, 0xa7, 0xa9, 0x7d, 0xfa, 0xf1, 0xdd, 0xd5, 0x01, ++ 0xa3, 0xdf, 0x19, 0xd6, 0xfb, 0x79, 0x2b, 0x1e, 0x7d, 0x77, 0x75, 0x4b, ++ 0x29, 0xc5, 0x2b, 0xd4, 0x7e, 0xfe, 0x91, 0x17, 0xd7, 0x60, 0x3c, 0xf8, ++ 0x80, 0x4d, 0xb6, 0x5f, 0xa0, 0x36, 0xd8, 0xb9, 0x28, 0xc6, 0x4b, 0x6c, ++ 0x6f, 0x92, 0x0f, 0xf9, 0x10, 0xde, 0x0f, 0xa0, 0xbc, 0xb1, 0xdb, 0x4a, ++ 0xc8, 0xcf, 0x56, 0x8b, 0x58, 0x0e, 0xe2, 0x63, 0x62, 0x9a, 0x95, 0xf4, ++ 0xa6, 0xba, 0x37, 0x69, 0x3b, 0xfa, 0xc1, 0x10, 0x17, 0x3f, 0x97, 0xa5, ++ 0xcb, 0x73, 0x9e, 0x4b, 0x3d, 0x51, 0x80, 0xfe, 0x70, 0x82, 0xf1, 0xc2, ++ 0x86, 0xf1, 0x0a, 0xbe, 0xde, 0x78, 0x30, 0x7f, 0x27, 0xd6, 0xcb, 0xc8, ++ 0xe7, 0x13, 0xd3, 0x36, 0x47, 0x55, 0xfe, 0x9e, 0x0f, 0xdf, 0x63, 0x79, ++ 0x5d, 0x7f, 0x0c, 0xc3, 0xf8, 0x8f, 0xbe, 0x90, 0xc4, 0xd6, 0x00, 0x0a, ++ 0x1f, 0x33, 0x1b, 0xe5, 0x5d, 0x5e, 0x37, 0x8a, 0x38, 0x13, 0xf5, 0x8d, ++ 0xbe, 0x5e, 0xd1, 0x52, 0x3d, 0x3f, 0x80, 0x4c, 0x2d, 0xe5, 0x3a, 0xc9, ++ 0x93, 0xcc, 0xa2, 0x3a, 0x7e, 0x92, 0x72, 0xae, 0x5d, 0x1c, 0xc6, 0xa2, ++ 0x3a, 0x39, 0xc9, 0x76, 0x15, 0x12, 0xbd, 0x34, 0x2d, 0x40, 0x79, 0x24, ++ 0xed, 0x62, 0x29, 0x3d, 0xbf, 0xe0, 0xe4, 0x7c, 0xd0, 0xba, 0xc2, 0x71, ++ 0x99, 0x79, 0x32, 0x07, 0x98, 0x67, 0x24, 0xe9, 0x8f, 0x81, 0xe7, 0xa9, ++ 0x10, 0xfa, 0x85, 0x89, 0x7c, 0xa3, 0x46, 0x75, 0x2f, 0x52, 0x2f, 0x0c, ++ 0x24, 0xe7, 0xf1, 0xfb, 0x5a, 0xf1, 0x7a, 0x51, 0x5e, 0xa5, 0x5e, 0x4c, ++ 0xc1, 0xb1, 0xe1, 0xfa, 0x82, 0xcb, 0x98, 0x47, 0xbf, 0x67, 0x73, 0xc7, ++ 0x51, 0x64, 0xa1, 0xcf, 0xec, 0xa1, 0x7d, 0xae, 0xd1, 0x58, 0xbf, 0x74, ++ 0x32, 0x0d, 0x4d, 0x78, 0x9d, 0x29, 0x3a, 0x1c, 0xf9, 0xf8, 0xa3, 0xfe, ++ 0xf7, 0x1b, 0x70, 0x71, 0x51, 0xcc, 0x33, 0xc0, 0xfd, 0x92, 0x9d, 0x4b, ++ 0x5e, 0x45, 0x76, 0x3d, 0xec, 0x0a, 0x7d, 0x8a, 0x7e, 0xd0, 0x2b, 0x2e, ++ 0x91, 0x9f, 0xf5, 0x80, 0x3d, 0x54, 0xd1, 0xde, 0x81, 0xbd, 0x28, 0xe5, ++ 0xf9, 0x6b, 0x27, 0xe6, 0x63, 0x43, 0xbe, 0x4d, 0x93, 0x18, 0xca, 0xd3, ++ 0x6d, 0x94, 0x8f, 0x55, 0xdd, 0x41, 0x9f, 0x0b, 0xf1, 0x3b, 0xb3, 0x82, ++ 0x72, 0x0e, 0x12, 0xee, 0xb5, 0x2b, 0x78, 0x1d, 0x99, 0xd4, 0xb3, 0x76, ++ 0x2d, 0x44, 0xf8, 0xb2, 0x6a, 0x61, 0x7e, 0x75, 0x84, 0xc0, 0x86, 0x33, ++ 0xf6, 0xb1, 0xeb, 0xd2, 0x4d, 0x18, 0x9b, 0x69, 0x1a, 0x97, 0xa3, 0x5f, ++ 0x3f, 0x7a, 0x96, 0xfc, 0x0a, 0x9b, 0x16, 0x20, 0xbe, 0xb2, 0x39, 0x4c, ++ 0x3e, 0xf4, 0x0b, 0x6c, 0x10, 0x17, 0xa2, 0xde, 0x5d, 0xe9, 0x30, 0xf1, ++ 0xfd, 0x16, 0x8f, 0x95, 0xf2, 0xf5, 0xad, 0x0a, 0x44, 0x88, 0xa0, 0x37, ++ 0x96, 0x66, 0x14, 0x7d, 0xe9, 0x3e, 0xb6, 0xe5, 0xa2, 0x9b, 0xec, 0x2d, ++ 0x40, 0xe2, 0xd1, 0xeb, 0xed, 0x7f, 0xfe, 0x3c, 0x4e, 0x61, 0x1f, 0x8c, ++ 0xf3, 0x68, 0x0e, 0xee, 0x37, 0xb0, 0x43, 0xdc, 0x0e, 0x23, 0x12, 0x3e, ++ 0xd0, 0xe9, 0x63, 0xe9, 0x0f, 0xc4, 0xbf, 0x17, 0x3f, 0xbe, 0xc4, 0xa7, ++ 0xc4, 0xaf, 0x15, 0xf1, 0x5a, 0x4a, 0xf6, 0x30, 0xa1, 0xbf, 0xf1, 0x77, ++ 0x61, 0x37, 0xa5, 0xfe, 0xcc, 0x96, 0xfa, 0xd6, 0x75, 0xa2, 0x24, 0x0a, ++ 0x77, 0xeb, 0x95, 0xee, 0x34, 0xf4, 0x6b, 0x40, 0x8f, 0xfe, 0x1d, 0xf9, ++ 0xa4, 0xe1, 0xea, 0xde, 0x34, 0x93, 0x8f, 0xf4, 0xaf, 0x9b, 0xfb, 0x41, ++ 0x61, 0xf1, 0x3e, 0xb3, 0xeb, 0xf9, 0x5a, 0xe6, 0xa9, 0xe5, 0xba, 0x24, ++ 0xfc, 0x4b, 0x5f, 0x5f, 0x60, 0xd5, 0xef, 0x97, 0xc4, 0xc3, 0x1b, 0x6f, ++ 0x67, 0xed, 0xa5, 0xc6, 0xfa, 0x02, 0x9b, 0xcf, 0x58, 0x5f, 0x20, 0xeb, ++ 0xf6, 0x55, 0x2d, 0x48, 0x7c, 0x63, 0x1e, 0x17, 0xb0, 0xa2, 0x9c, 0xac, ++ 0x74, 0x94, 0x3b, 0xd0, 0xcf, 0x69, 0xd1, 0x7c, 0xbf, 0x0b, 0x50, 0x5d, ++ 0x84, 0x99, 0xfc, 0x6d, 0xf0, 0xdf, 0x0d, 0xf3, 0xcb, 0xeb, 0x43, 0x20, ++ 0xff, 0x08, 0xc7, 0x10, 0xb7, 0xc9, 0x50, 0xf7, 0x22, 0xaf, 0xa9, 0xb8, ++ 0x0f, 0x92, 0xe0, 0xbd, 0x49, 0x6e, 0x8e, 0xbf, 0x87, 0x0e, 0xde, 0x4e, ++ 0x7a, 0x58, 0xf3, 0xf3, 0x7d, 0xa1, 0x78, 0xfa, 0x31, 0xd6, 0x4e, 0xfc, ++ 0x92, 0x5a, 0xc2, 0x1c, 0x94, 0x3f, 0x15, 0xf0, 0xa6, 0x5d, 0x66, 0xdc, ++ 0x81, 0xf8, 0xe8, 0x07, 0x07, 0x6d, 0xe4, 0x27, 0x6b, 0x63, 0xad, 0x11, ++ 0xac, 0xbb, 0x8c, 0x9f, 0x4f, 0x35, 0x07, 0x03, 0x0a, 0xea, 0xdd, 0x32, ++ 0x46, 0x7e, 0xb2, 0x9a, 0xcf, 0xe7, 0x57, 0x87, 0x30, 0xaa, 0xd3, 0x4e, ++ 0x1b, 0x95, 0xc9, 0x86, 0xea, 0xf0, 0xd8, 0xea, 0x99, 0x49, 0xcf, 0x97, ++ 0xba, 0x1c, 0x0c, 0xe9, 0xad, 0xa6, 0x9a, 0x82, 0x89, 0xf8, 0x45, 0xe2, ++ 0xc9, 0xe3, 0x36, 0x19, 0xf6, 0xad, 0x3d, 0x92, 0x6f, 0xbc, 0xbf, 0xa7, ++ 0xfd, 0x15, 0x1d, 0xdf, 0x4c, 0x74, 0xbb, 0xfa, 0xf3, 0x8d, 0xc7, 0xcd, ++ 0xf5, 0x21, 0xc2, 0xa1, 0xa7, 0x6f, 0xab, 0xa7, 0x28, 0x3b, 0x11, 0x7d, ++ 0x62, 0x7a, 0x91, 0xf3, 0xd5, 0xe5, 0xf8, 0xa2, 0x62, 0x1c, 0xf0, 0x3b, ++ 0xda, 0x79, 0xb8, 0x6e, 0x83, 0x75, 0x74, 0x6a, 0x6c, 0xca, 0xee, 0x52, ++ 0x84, 0x8b, 0x51, 0x5d, 0x7b, 0xdd, 0x6c, 0x3b, 0x73, 0x80, 0x5d, 0xbb, ++ 0xc3, 0x53, 0x79, 0x9b, 0x1b, 0xc6, 0xab, 0xe8, 0x7a, 0x95, 0xd7, 0x8b, ++ 0x77, 0xba, 0x28, 0x68, 0xac, 0x13, 0xef, 0xc7, 0xcf, 0xff, 0xb6, 0x9b, ++ 0xeb, 0xdb, 0xb7, 0xdd, 0x5c, 0x3f, 0xa6, 0x9f, 0x08, 0x3c, 0x3b, 0x1e, ++ 0xf0, 0xdc, 0xd9, 0x95, 0xec, 0x53, 0xe0, 0x51, 0x67, 0x66, 0x62, 0x3d, ++ 0xfd, 0x03, 0xb7, 0x62, 0xac, 0x37, 0xd0, 0xba, 0x87, 0xa3, 0xff, 0x22, ++ 0xfb, 0x57, 0x54, 0x1b, 0xe7, 0x0b, 0x0b, 0xfa, 0xdf, 0x2f, 0xdf, 0x0b, ++ 0xdf, 0x9c, 0x89, 0xfe, 0xdc, 0x74, 0xc6, 0x65, 0xa3, 0xd8, 0xaf, 0xf0, ++ 0xfa, 0x86, 0x7d, 0x29, 0x91, 0x21, 0x68, 0x57, 0x59, 0x54, 0xbb, 0x05, ++ 0xf0, 0xba, 0x53, 0xc4, 0x8d, 0x3b, 0x21, 0x9e, 0x9c, 0x01, 0xe3, 0xba, ++ 0x93, 0x59, 0x08, 0xd7, 0xed, 0xca, 0x82, 0x76, 0x29, 0xbd, 0x1f, 0xd8, ++ 0x6d, 0x8f, 0x8d, 0xf7, 0x6b, 0x8e, 0x32, 0x36, 0xa9, 0x38, 0xb8, 0x03, ++ 0xc7, 0x9b, 0x94, 0xed, 0x2d, 0x6b, 0x2e, 0xe4, 0xef, 0xe3, 0x38, 0x47, ++ 0x92, 0x59, 0x8b, 0xb5, 0x3c, 0x86, 0xf7, 0x9b, 0x93, 0x80, 0xe5, 0x32, ++ 0xf1, 0x79, 0x38, 0x67, 0x49, 0x69, 0xec, 0xfe, 0x11, 0x50, 0xee, 0xd8, ++ 0xcf, 0xed, 0xee, 0x1e, 0xae, 0x80, 0xfc, 0xcf, 0x37, 0x05, 0xdc, 0x68, ++ 0x47, 0x3e, 0x7c, 0xeb, 0x7b, 0x54, 0x27, 0xba, 0x88, 0x05, 0x9e, 0xfc, ++ 0x10, 0xe8, 0x73, 0x35, 0xdc, 0xc4, 0xf8, 0xaa, 0xe2, 0x44, 0xd0, 0x82, ++ 0x7a, 0xe1, 0x53, 0x7c, 0x08, 0xf8, 0x7e, 0xdc, 0x1e, 0x5c, 0x8d, 0x7c, ++ 0xb2, 0xa0, 0x7d, 0xea, 0x93, 0xfa, 0x3a, 0x17, 0xb6, 0x83, 0x7f, 0x87, ++ 0x22, 0xf1, 0xd5, 0x9f, 0x1f, 0xb8, 0xfe, 0x01, 0x38, 0xc3, 0xd6, 0x4c, ++ 0x03, 0x9c, 0x6c, 0x2c, 0xc2, 0x6d, 0xe5, 0xef, 0xc5, 0xe3, 0x57, 0x5e, ++ 0xef, 0x12, 0x7c, 0x2c, 0xe9, 0x09, 0xe8, 0xb9, 0x2a, 0x55, 0xd0, 0x73, ++ 0x0d, 0xa0, 0x7e, 0x6e, 0x0a, 0xf7, 0x97, 0x3b, 0x2d, 0x9c, 0x4e, 0x7d, ++ 0xfc, 0xe3, 0xb2, 0xb4, 0xe2, 0x3e, 0xca, 0x59, 0x2b, 0x7f, 0xce, 0x02, ++ 0x43, 0xb9, 0x7f, 0x6f, 0xe5, 0xf4, 0x99, 0x9b, 0x52, 0x10, 0x41, 0xbf, ++ 0xba, 0x53, 0x0b, 0xa4, 0xa0, 0x7f, 0x3f, 0xb7, 0x6f, 0xbf, 0x3e, 0x40, ++ 0xdf, 0xf5, 0xd4, 0xd9, 0x02, 0xe9, 0xd7, 0x20, 0xfd, 0xde, 0xe2, 0xf1, ++ 0xd7, 0xe9, 0x4a, 0x7b, 0x9b, 0x02, 0xe3, 0x9c, 0x36, 0x07, 0xd2, 0x51, ++ 0x6e, 0x4f, 0xbf, 0xa5, 0x2a, 0x2b, 0xa9, 0xfe, 0x81, 0xd7, 0x47, 0xca, ++ 0xba, 0xb3, 0xd3, 0x66, 0xdf, 0xda, 0x2b, 0xe1, 0xf9, 0xbc, 0x1f, 0xa9, ++ 0x81, 0x95, 0xf4, 0xd8, 0x18, 0x57, 0x9c, 0x65, 0x81, 0x91, 0x6f, 0x62, ++ 0x9c, 0xb5, 0x4f, 0xa5, 0x7d, 0xbb, 0xc2, 0x87, 0xef, 0x56, 0xaf, 0x86, ++ 0xfe, 0xf3, 0x21, 0xe0, 0x40, 0xbd, 0x34, 0xb7, 0xca, 0x1e, 0x46, 0x7f, ++ 0xae, 0xf3, 0xf7, 0x4d, 0x7f, 0x44, 0xbb, 0x36, 0xef, 0xf1, 0x24, 0xdf, ++ 0x2a, 0x98, 0xe7, 0xf0, 0xe6, 0x91, 0x7f, 0xc5, 0xf6, 0xc7, 0xeb, 0x52, ++ 0x7d, 0x49, 0x94, 0xaf, 0x2d, 0x52, 0xbc, 0x98, 0x47, 0x5d, 0x5f, 0xe8, ++ 0xa0, 0xfd, 0xb7, 0xe5, 0x4c, 0xf8, 0xad, 0xf7, 0x4e, 0xab, 0x1a, 0xcc, ++ 0xd8, 0x4f, 0xf1, 0x5f, 0xb9, 0x0f, 0x02, 0x6b, 0xfe, 0x98, 0xc9, 0xe7, ++ 0x4f, 0xac, 0x9d, 0x08, 0xeb, 0xbc, 0xd2, 0xd5, 0x69, 0xb2, 0x03, 0x4c, ++ 0x37, 0x64, 0x3f, 0xb1, 0xd6, 0x0a, 0xf4, 0x7e, 0x60, 0x65, 0xd0, 0x83, ++ 0x79, 0x88, 0x73, 0x1b, 0xbf, 0xb5, 0x16, 0xf3, 0x10, 0x6e, 0x77, 0xa0, ++ 0x6b, 0xbc, 0x1f, 0xe0, 0xdb, 0xf4, 0x9d, 0x69, 0xd8, 0xee, 0x7c, 0x4c, ++ 0x8c, 0x17, 0x5e, 0xbe, 0x16, 0xf3, 0x0e, 0x2f, 0x99, 0x42, 0x85, 0x0a, ++ 0x3c, 0x9f, 0xb2, 0x69, 0xfd, 0x34, 0xaa, 0x53, 0x2e, 0x96, 0xe3, 0x3f, ++ 0xb5, 0x36, 0x00, 0xf6, 0x7f, 0xee, 0x13, 0x57, 0xfc, 0xf5, 0x04, 0x8c, ++ 0xdf, 0x90, 0xfd, 0x8b, 0x69, 0xe8, 0x1f, 0x00, 0x7d, 0x05, 0x3c, 0x07, ++ 0x08, 0xbe, 0x05, 0xe3, 0x64, 0xfb, 0x60, 0x4a, 0x15, 0xf8, 0x0e, 0xce, ++ 0x14, 0x66, 0xc8, 0xc7, 0x9a, 0x63, 0x79, 0x0d, 0xca, 0xf7, 0x76, 0x4a, ++ 0x3f, 0x9d, 0x1d, 0x99, 0x86, 0xf9, 0xd8, 0x79, 0x13, 0x9a, 0xaa, 0x34, ++ 0x18, 0x7f, 0x53, 0xf6, 0x1b, 0x6b, 0x4b, 0x87, 0x31, 0x36, 0xa6, 0xbd, ++ 0xd2, 0x11, 0x80, 0xf6, 0xd6, 0xec, 0x37, 0xa7, 0xa5, 0x00, 0x9f, 0x74, ++ 0xb2, 0x40, 0x2d, 0xe6, 0x4d, 0x22, 0xd9, 0xbf, 0x99, 0x66, 0xbd, 0x1e, ++ 0xc6, 0xcf, 0x32, 0x8e, 0xef, 0x54, 0x45, 0x5e, 0x3f, 0xfc, 0xce, 0x5a, ++ 0x1c, 0xaf, 0xa2, 0x3a, 0x50, 0x86, 0xfe, 0x4c, 0xa9, 0xe7, 0xc3, 0xb5, ++ 0x56, 0x78, 0xdf, 0x85, 0x75, 0xac, 0x30, 0xdf, 0x6d, 0x9b, 0x87, 0xad, ++ 0x43, 0xbf, 0x5e, 0xea, 0xd1, 0x7f, 0x11, 0x7a, 0x14, 0xf4, 0xe6, 0x19, ++ 0x94, 0x87, 0x7a, 0x6b, 0xf7, 0x51, 0x4c, 0xf5, 0x16, 0x2c, 0xef, 0xb5, ++ 0xf0, 0xfa, 0x66, 0xa1, 0x3f, 0xf2, 0x38, 0x5f, 0xf7, 0xb5, 0x87, 0x76, ++ 0xf3, 0x7a, 0x74, 0xd9, 0xf6, 0xf0, 0x76, 0xe7, 0xaa, 0xc4, 0xfa, 0xe8, ++ 0x2f, 0x1e, 0xce, 0xf7, 0x9d, 0xc9, 0x89, 0x9f, 0xe7, 0x66, 0x73, 0xfd, ++ 0x23, 0xe5, 0x26, 0xfd, 0x04, 0x0b, 0xec, 0x4a, 0x20, 0x3f, 0xa6, 0x6c, ++ 0xfb, 0xff, 0x48, 0xfe, 0xbc, 0xd9, 0xff, 0x8f, 0xf4, 0x5b, 0xc6, 0x65, ++ 0xf4, 0x5b, 0x86, 0xd4, 0x6f, 0x02, 0x9f, 0xa5, 0x46, 0x7d, 0x0d, 0xd3, ++ 0x08, 0xbd, 0x7f, 0x65, 0x11, 0xea, 0x89, 0x63, 0x6e, 0x9f, 0xc1, 0x5e, ++ 0x57, 0x74, 0xcd, 0x24, 0x7b, 0xf2, 0xae, 0x47, 0xe8, 0x15, 0x1f, 0x7f, ++ 0xdf, 0x55, 0xc5, 0xeb, 0x81, 0x7a, 0xf7, 0xa7, 0x50, 0xbe, 0x8b, 0x59, ++ 0xbb, 0x4a, 0x90, 0x4e, 0xf2, 0xbd, 0xd1, 0x02, 0xef, 0x55, 0x0f, 0x4e, ++ 0xdf, 0x84, 0xfd, 0xea, 0xba, 0xcc, 0x8c, 0xbe, 0xf3, 0xd8, 0x5d, 0xf9, ++ 0xa5, 0x7e, 0x65, 0x1d, 0xe6, 0x87, 0x75, 0x71, 0x48, 0x9d, 0x16, 0xa5, ++ 0xbc, 0x40, 0x1d, 0xe6, 0x87, 0x47, 0xe2, 0x78, 0xbf, 0xb6, 0xa0, 0x3f, ++ 0x84, 0xe3, 0xe0, 0x77, 0x1c, 0xb8, 0x0f, 0x82, 0xf9, 0x5d, 0x57, 0x73, ++ 0x62, 0xfa, 0x4b, 0xbf, 0xaa, 0xee, 0x62, 0x06, 0x0b, 0x8f, 0xec, 0x6f, ++ 0x7f, 0x63, 0xe3, 0x3b, 0xe9, 0xf9, 0xe5, 0xd6, 0x15, 0x1b, 0xcf, 0x98, ++ 0xbf, 0xe8, 0x3f, 0x9e, 0x45, 0xec, 0x27, 0xc5, 0xd9, 0x49, 0x4b, 0x62, ++ 0x38, 0xab, 0x25, 0x9f, 0x02, 0xbe, 0x4d, 0x3a, 0xfe, 0x5a, 0x20, 0xf8, ++ 0x0d, 0xb4, 0x27, 0xf9, 0x93, 0x3d, 0x7b, 0x87, 0x6d, 0x5f, 0x53, 0xa8, ++ 0x9f, 0x97, 0x7f, 0x5f, 0x05, 0xfa, 0xf9, 0xd9, 0xf1, 0xa8, 0x2f, 0x41, ++ 0xdf, 0xa3, 0xbf, 0x59, 0xa1, 0x05, 0xa6, 0x61, 0xff, 0x8a, 0xae, 0x4c, ++ 0xda, 0xa7, 0x92, 0xfc, 0x21, 0xf9, 0x42, 0xd2, 0xb5, 0x33, 0xb3, 0x89, ++ 0xf2, 0x7e, 0xbd, 0x5b, 0x14, 0xf2, 0xa7, 0xe2, 0xe1, 0x9a, 0x27, 0xe1, ++ 0xda, 0xac, 0x70, 0x3f, 0xa4, 0x3a, 0xa4, 0xde, 0xad, 0x83, 0x4f, 0xca, ++ 0x03, 0x8c, 0xdf, 0x29, 0xc6, 0x1f, 0x35, 0x96, 0xe4, 0xe7, 0xc7, 0xdc, ++ 0x9f, 0x06, 0xb9, 0xb9, 0x03, 0xe5, 0x17, 0xf7, 0xbd, 0x71, 0x1d, 0xfe, ++ 0xee, 0xe1, 0x33, 0xaf, 0xee, 0x0f, 0xff, 0xaf, 0x85, 0x1f, 0x05, 0x74, ++ 0xe4, 0xf8, 0x7f, 0xc1, 0x46, 0x75, 0x0a, 0xf1, 0xf6, 0x32, 0x86, 0xff, ++ 0xdc, 0xcb, 0xd0, 0xb3, 0x80, 0x9e, 0x4b, 0x7f, 0xa8, 0x6e, 0x40, 0xbb, ++ 0x99, 0x46, 0xef, 0x65, 0x9f, 0x88, 0xa6, 0xf9, 0xa0, 0x5f, 0x97, 0xe0, ++ 0xff, 0xce, 0x8e, 0x0f, 0xd2, 0xae, 0x43, 0xb9, 0xd8, 0xa7, 0x32, 0xc5, ++ 0xc7, 0xd7, 0x8d, 0x7a, 0xab, 0x42, 0xea, 0xe3, 0xf0, 0x88, 0x37, 0x26, ++ 0x68, 0xe4, 0x97, 0xc5, 0xec, 0x87, 0x8f, 0xfc, 0x33, 0xa9, 0x3f, 0xa3, ++ 0x56, 0x6b, 0xac, 0x7f, 0x70, 0xe3, 0x88, 0x69, 0x2d, 0xa8, 0xbf, 0x93, ++ 0xb8, 0xbc, 0x3a, 0x55, 0xb0, 0x36, 0xe5, 0x31, 0x38, 0x1e, 0xce, 0xe6, ++ 0x7a, 0x6c, 0x6c, 0x28, 0x71, 0x7c, 0xf3, 0x03, 0x77, 0x2a, 0x3d, 0x97, ++ 0xf8, 0xde, 0xb2, 0xbc, 0x8a, 0x7d, 0x00, 0xeb, 0x3b, 0x21, 0xec, 0xfd, ++ 0xd8, 0xee, 0xb0, 0x82, 0x74, 0x59, 0x20, 0xf0, 0xd8, 0xe7, 0xcf, 0x08, ++ 0x7d, 0x76, 0x73, 0x52, 0xf7, 0x73, 0xe2, 0xfb, 0x10, 0x03, 0x3f, 0xca, ++ 0x36, 0xf8, 0x3b, 0x0d, 0xa6, 0x62, 0xdd, 0x73, 0x3b, 0xd7, 0xbb, 0x72, ++ 0x3e, 0x80, 0xb7, 0x85, 0x61, 0xc9, 0x0a, 0x5c, 0x15, 0xb8, 0xde, 0xe6, ++ 0x29, 0x14, 0xe3, 0x70, 0xbe, 0x3c, 0xb5, 0x37, 0x7b, 0x1b, 0xea, 0x0f, ++ 0x67, 0x71, 0xa0, 0x0c, 0xf5, 0x8d, 0xe4, 0x2f, 0xb0, 0x27, 0x62, 0xbd, ++ 0xa6, 0xbb, 0x66, 0xda, 0x39, 0xff, 0xcf, 0x4c, 0x40, 0x87, 0xe7, 0x85, ++ 0xfe, 0x5c, 0xb0, 0x99, 0xaf, 0xbf, 0xf3, 0x3f, 0xaa, 0xa6, 0x21, 0x1f, ++ 0x74, 0xbe, 0x9d, 0x99, 0xb1, 0x4a, 0xc7, 0xef, 0xa7, 0x84, 0x1f, 0x29, ++ 0xc7, 0x95, 0xf2, 0x24, 0xdf, 0x93, 0xcf, 0xf7, 0x8b, 0xf1, 0x5e, 0xc9, ++ 0x4e, 0x23, 0x7c, 0x9c, 0x12, 0xf8, 0x43, 0x38, 0x12, 0xd5, 0x8b, 0xc9, ++ 0xf7, 0x70, 0xbd, 0xa4, 0xaf, 0xdb, 0xb8, 0xbe, 0x86, 0x75, 0x87, 0x91, ++ 0x4e, 0xb0, 0xee, 0xb0, 0x52, 0x8e, 0xeb, 0x56, 0x0c, 0x76, 0xa2, 0xcf, ++ 0x3e, 0x08, 0x7c, 0xd7, 0x5b, 0x00, 0xcf, 0x80, 0xc7, 0x9d, 0xe6, 0x70, ++ 0x0e, 0xd6, 0x31, 0xb9, 0x70, 0x3e, 0xfb, 0xe5, 0xe5, 0x17, 0xd6, 0x43, ++ 0xcf, 0x7b, 0xf7, 0xa7, 0x92, 0xde, 0x89, 0x1f, 0xff, 0x5c, 0x36, 0x8f, ++ 0xe7, 0xb6, 0x99, 0x78, 0x9d, 0xd5, 0x11, 0x13, 0xc8, 0x33, 0xca, 0x99, ++ 0x9d, 0xc3, 0xdb, 0xb3, 0xd7, 0x4b, 0xe3, 0x76, 0x0b, 0x3e, 0xba, 0xbc, ++ 0x3e, 0xfc, 0x6a, 0xf2, 0xb3, 0xcd, 0xc2, 0xeb, 0x62, 0x01, 0x7e, 0xaa, ++ 0x4f, 0xac, 0x7f, 0x31, 0x77, 0x9b, 0x11, 0xfe, 0x95, 0x02, 0xfe, 0x50, ++ 0x33, 0x7e, 0x87, 0xe7, 0xdc, 0xc4, 0xfc, 0xcd, 0x8c, 0xf0, 0x16, 0x45, ++ 0x7c, 0xdd, 0xeb, 0xf1, 0x71, 0xfd, 0x64, 0x09, 0x91, 0xff, 0xd6, 0xbb, ++ 0x85, 0x51, 0xfc, 0x3a, 0x04, 0xfc, 0x08, 0x1f, 0xb4, 0x1b, 0x83, 0xf6, ++ 0x72, 0xa5, 0x30, 0x26, 0xa7, 0x25, 0x1d, 0x0a, 0xd1, 0xb1, 0x62, 0x03, ++ 0xd8, 0x69, 0xc4, 0x9b, 0x55, 0xe2, 0xed, 0xf5, 0x5d, 0xfa, 0x79, 0x3f, ++ 0xcf, 0x4e, 0x35, 0x7c, 0x4f, 0x58, 0x27, 0xe8, 0x3f, 0x04, 0xec, 0xfb, ++ 0xb3, 0x00, 0xef, 0x10, 0x18, 0xe7, 0x39, 0x82, 0x9b, 0xc3, 0x75, 0x6a, ++ 0x63, 0xc7, 0x75, 0x98, 0xa7, 0xeb, 0xb3, 0xf7, 0x9e, 0x34, 0xc1, 0x0f, ++ 0xf1, 0x70, 0x46, 0x2d, 0xb9, 0x1c, 0x4e, 0xaa, 0xcb, 0x40, 0x7f, 0xc7, ++ 0x37, 0x2a, 0x06, 0x27, 0x8e, 0x8f, 0xf3, 0x30, 0x7b, 0x70, 0x15, 0x8e, ++ 0xdb, 0xf0, 0xce, 0x9e, 0x5c, 0xfd, 0xb8, 0xe9, 0x1e, 0xce, 0x6f, 0x4e, ++ 0x75, 0xee, 0x04, 0x1b, 0xea, 0xb1, 0xf5, 0xa0, 0x57, 0x49, 0x1d, 0x84, ++ 0x0e, 0xe1, 0x77, 0x16, 0xf3, 0x0f, 0x64, 0x38, 0xd6, 0x30, 0x8a, 0x1b, ++ 0x4c, 0x18, 0x1f, 0xca, 0x79, 0xe7, 0x8b, 0x7c, 0x2d, 0xc8, 0x65, 0xc5, ++ 0x0c, 0x58, 0x5a, 0x49, 0xdf, 0x3c, 0xa0, 0x3f, 0x75, 0xfa, 0xaf, 0xc8, ++ 0x63, 0xe7, 0xfd, 0xad, 0x55, 0x01, 0xaa, 0x77, 0xd3, 0xb8, 0x7d, 0x72, ++ 0xb5, 0x9f, 0xbe, 0x1f, 0xf7, 0x31, 0x06, 0xb2, 0xab, 0xff, 0x2c, 0x7e, ++ 0x00, 0x3a, 0xd2, 0xba, 0x7b, 0x77, 0xc3, 0xba, 0x7c, 0x31, 0xfc, 0x75, ++ 0x76, 0xdc, 0xbd, 0xca, 0x86, 0xfa, 0xf2, 0x04, 0xf3, 0xa3, 0xbe, 0x94, ++ 0xeb, 0x1a, 0x52, 0xdd, 0x9d, 0x86, 0x75, 0x3c, 0x8d, 0x42, 0x8f, 0x02, ++ 0x5e, 0x4c, 0xc8, 0x07, 0xce, 0x1f, 0xf9, 0x58, 0xb3, 0x4f, 0xa7, 0x9f, ++ 0x05, 0xfd, 0x86, 0x32, 0x2e, 0x6f, 0x32, 0x3e, 0x19, 0x8a, 0x1b, 0x2c, ++ 0xd0, 0xbe, 0xd6, 0x33, 0x5c, 0xea, 0x1b, 0xca, 0x17, 0x9c, 0x7a, 0xf1, ++ 0xe5, 0x67, 0xd7, 0x50, 0x5c, 0xc1, 0xe9, 0xd5, 0x58, 0xcd, 0xe9, 0x2b, ++ 0xe5, 0xf5, 0x0e, 0x4f, 0xe8, 0x5e, 0x0f, 0xca, 0xc1, 0xec, 0xfb, 0x68, ++ 0x7f, 0x07, 0xfa, 0x55, 0xa0, 0xbe, 0xab, 0xdb, 0xc0, 0xe7, 0x81, 0x7e, ++ 0x1d, 0x8c, 0xe4, 0xb6, 0xab, 0xa0, 0x1a, 0xf0, 0xf7, 0x2f, 0x9e, 0xd4, ++ 0x84, 0x74, 0x73, 0x06, 0x3b, 0x6c, 0xf4, 0xbe, 0xe0, 0xff, 0x73, 0xfb, ++ 0xaf, 0x8e, 0x20, 0x1f, 0xba, 0x6e, 0xed, 0xad, 0xc2, 0xfb, 0xc0, 0x0f, ++ 0x04, 0x4f, 0x67, 0x47, 0x6a, 0x04, 0xe3, 0x66, 0xf2, 0x97, 0xf1, 0xfd, ++ 0x97, 0x15, 0x6e, 0xbf, 0x58, 0x88, 0xf0, 0x32, 0xbf, 0xda, 0xe1, 0xd7, ++ 0xf3, 0x89, 0x84, 0xaf, 0x8f, 0xee, 0x0c, 0xe8, 0x7e, 0x75, 0xec, 0xfe, ++ 0x90, 0x6a, 0x3e, 0x6e, 0xe3, 0x3e, 0x18, 0x97, 0x8f, 0x43, 0xf2, 0x53, ++ 0x77, 0x17, 0xa3, 0x7c, 0xb3, 0xa4, 0x0f, 0x80, 0x1c, 0xc6, 0xfc, 0xbe, ++ 0xd4, 0x3b, 0x2e, 0xfc, 0x2c, 0x3e, 0x33, 0x86, 0x47, 0x89, 0x3f, 0xf9, ++ 0x7e, 0x03, 0xbe, 0xcf, 0x78, 0xde, 0x00, 0xe3, 0xbd, 0x46, 0xd6, 0x4d, ++ 0xf9, 0xd3, 0x3a, 0x35, 0x98, 0x87, 0xf1, 0x1a, 0xcb, 0x4e, 0xa2, 0xef, ++ 0x54, 0x21, 0x0e, 0x26, 0xfd, 0x73, 0xc4, 0xc6, 0x34, 0x1b, 0xbc, 0xff, ++ 0x1a, 0x5c, 0xd1, 0xbe, 0x4f, 0x52, 0x97, 0xd0, 0xf7, 0x42, 0x93, 0x8a, ++ 0x15, 0x92, 0x73, 0xd0, 0x10, 0x32, 0x6f, 0x16, 0x45, 0x3f, 0xf2, 0xe6, ++ 0xf1, 0x29, 0xa4, 0x1f, 0xd8, 0x17, 0xf7, 0x0e, 0xc6, 0xf5, 0xb8, 0x52, ++ 0x38, 0xdf, 0xc1, 0x38, 0x56, 0x31, 0x8e, 0x95, 0xfc, 0x54, 0xa1, 0x0f, ++ 0x7f, 0x53, 0x00, 0xfa, 0x50, 0x89, 0xe9, 0xf1, 0x23, 0x8a, 0x42, 0xe3, ++ 0x1c, 0xb9, 0xfe, 0xaa, 0xed, 0x54, 0x9b, 0x29, 0xd6, 0x89, 0xe3, 0xa1, ++ 0xdf, 0x70, 0x44, 0x99, 0x91, 0x47, 0xfe, 0xac, 0xc8, 0x6f, 0x00, 0xde, ++ 0x86, 0xeb, 0xfd, 0xb3, 0x18, 0xff, 0x86, 0x05, 0x5c, 0xdd, 0x05, 0xf8, ++ 0x5c, 0x1f, 0x27, 0x61, 0x5c, 0xd3, 0x17, 0x67, 0x85, 0xc7, 0xaf, 0xbb, ++ 0x11, 0xe2, 0xac, 0x31, 0x53, 0x3a, 0xa2, 0x26, 0x07, 0x4a, 0xc3, 0x84, ++ 0xe9, 0xdf, 0x81, 0x79, 0x27, 0x41, 0x9c, 0x65, 0x83, 0xf5, 0xdf, 0x8f, ++ 0x7c, 0x8c, 0xfa, 0xbe, 0x30, 0xac, 0xa6, 0x21, 0x5c, 0x43, 0x60, 0xdd, ++ 0x70, 0xeb, 0x68, 0x72, 0xa8, 0xb4, 0xc9, 0x1e, 0x9b, 0xc7, 0x2d, 0xf2, ++ 0x5f, 0x6e, 0x51, 0xb7, 0x8c, 0xfe, 0x3c, 0x5e, 0xcd, 0x5e, 0x6e, 0x57, ++ 0xd6, 0x7b, 0xb9, 0xdd, 0xe8, 0x16, 0x57, 0x70, 0x3b, 0x12, 0xe6, 0xcb, ++ 0xfe, 0x53, 0x3c, 0xff, 0x77, 0x3b, 0xd7, 0xe3, 0x6b, 0x2a, 0x13, 0xd7, ++ 0x37, 0x6f, 0xf1, 0x18, 0xf3, 0x9d, 0x37, 0x8b, 0xfd, 0x22, 0x88, 0xb7, ++ 0xb6, 0x20, 0xff, 0x40, 0xbc, 0x25, 0xea, 0x77, 0xf9, 0xfe, 0x12, 0xf8, ++ 0xb5, 0x84, 0xdf, 0xaa, 0x07, 0xab, 0x69, 0xdf, 0xf4, 0xf3, 0xae, 0x59, ++ 0xe9, 0xfc, 0xbc, 0x07, 0x2e, 0xff, 0x0b, 0x44, 0xfd, 0xec, 0x5d, 0xf7, ++ 0xcf, 0xfa, 0x21, 0xf2, 0xdd, 0x87, 0x58, 0x57, 0x0f, 0x74, 0xfc, 0x48, ++ 0xec, 0xef, 0x7d, 0xe8, 0x08, 0xa4, 0x61, 0x9d, 0x59, 0x7d, 0x72, 0xe2, ++ 0x3a, 0xea, 0x5f, 0x7a, 0xf8, 0x3a, 0xeb, 0x05, 0x1e, 0x4e, 0xaf, 0xe0, ++ 0xe7, 0x33, 0x2c, 0xc0, 0x7d, 0x4d, 0xf0, 0x83, 0x77, 0x7b, 0xb8, 0xfd, ++ 0x5a, 0xd4, 0x7e, 0xcb, 0x64, 0xa4, 0xfb, 0x22, 0x88, 0xe3, 0x71, 0x5f, ++ 0x53, 0xd6, 0x4f, 0x48, 0x3a, 0xd7, 0x6c, 0x55, 0x0d, 0xfb, 0x13, 0x0b, ++ 0x70, 0x5f, 0x33, 0xeb, 0x1f, 0x89, 0x23, 0xca, 0x06, 0x88, 0x23, 0x46, ++ 0x19, 0xe2, 0x08, 0x39, 0x6f, 0x7c, 0x3c, 0x71, 0x6a, 0x85, 0xc7, 0xb0, ++ 0x8f, 0x32, 0xb7, 0xbd, 0x58, 0x9c, 0x8f, 0xc1, 0xfb, 0xcf, 0x63, 0x7e, ++ 0x82, 0x7b, 0x5e, 0x5b, 0xae, 0x61, 0x1f, 0x96, 0xb5, 0xb9, 0xbe, 0xd2, ++ 0xb9, 0x06, 0x18, 0x3f, 0x84, 0x13, 0xc2, 0x67, 0x31, 0xdc, 0x3f, 0xb5, ++ 0xc2, 0x0a, 0x02, 0xae, 0x83, 0xe3, 0x93, 0xc1, 0x54, 0x7f, 0xb2, 0xc5, ++ 0x13, 0xfa, 0x9d, 0xc7, 0x00, 0x47, 0x0a, 0x0b, 0x1b, 0xf2, 0xc9, 0xe3, ++ 0x1c, 0xb4, 0xdf, 0x6f, 0xe3, 0x79, 0x6c, 0xa0, 0x7f, 0x58, 0xef, 0x57, ++ 0xc7, 0xc3, 0x75, 0xc6, 0xf3, 0x8f, 0xc6, 0x6b, 0xc5, 0x03, 0xe0, 0xb9, ++ 0xe4, 0x7f, 0x25, 0x5e, 0xab, 0x18, 0xc7, 0xf5, 0x1a, 0x6b, 0x57, 0xa8, ++ 0x96, 0x66, 0xcc, 0xc4, 0x38, 0xff, 0x59, 0xd8, 0xcb, 0x4b, 0x9e, 0x14, ++ 0x43, 0x1e, 0x60, 0x7e, 0xb5, 0xb1, 0x9f, 0xea, 0xe5, 0xf1, 0xbf, 0xea, ++ 0x4d, 0x31, 0xf8, 0xcd, 0x03, 0xe5, 0x01, 0xf4, 0x7e, 0xb3, 0x52, 0x8c, ++ 0xfa, 0x83, 0x8f, 0xd7, 0x20, 0xec, 0x56, 0xe1, 0x67, 0x6f, 0x53, 0x1d, ++ 0xeb, 0x78, 0x2f, 0xf7, 0x33, 0xc6, 0xe6, 0x04, 0x92, 0xbd, 0x70, 0x5d, ++ 0x27, 0xea, 0xd8, 0xd7, 0xd9, 0xf8, 0x77, 0xfe, 0xdb, 0xfe, 0x7e, 0xc8, ++ 0x33, 0x0f, 0xfd, 0x8d, 0x37, 0xcd, 0x54, 0x77, 0xc0, 0xf6, 0x71, 0xfe, ++ 0xa9, 0xfc, 0xf1, 0xb2, 0x66, 0x3c, 0x37, 0xc0, 0xde, 0xa1, 0x38, 0xf4, ++ 0xdf, 0xb5, 0x7e, 0x63, 0xb9, 0x12, 0x98, 0x0f, 0xf2, 0xe0, 0x16, 0x7a, ++ 0xa2, 0xce, 0xcf, 0xd7, 0x53, 0xe7, 0x8f, 0x5a, 0x06, 0xdb, 0xb1, 0xae, ++ 0x99, 0xc3, 0x91, 0xd7, 0x71, 0x50, 0xd1, 0x74, 0x7a, 0x23, 0xaf, 0x86, ++ 0xf7, 0xf3, 0x79, 0xcd, 0x86, 0xfa, 0x80, 0xc1, 0x5e, 0x7e, 0x2e, 0x43, ++ 0x91, 0x57, 0xe6, 0x0d, 0x23, 0x07, 0xa7, 0x3a, 0xb1, 0x7f, 0x40, 0x43, ++ 0x3b, 0x93, 0xd3, 0xa1, 0x90, 0x1d, 0xca, 0x69, 0x62, 0xf4, 0x3d, 0x4e, ++ 0xce, 0x28, 0xee, 0x9f, 0x7d, 0x63, 0xd4, 0x36, 0x65, 0x5e, 0x69, 0x6c, ++ 0xbd, 0x6d, 0xa6, 0x19, 0xa5, 0x0e, 0x78, 0xaf, 0xcd, 0x9d, 0xe2, 0x47, ++ 0xbd, 0xbd, 0x2a, 0x27, 0x74, 0xa5, 0x17, 0xe1, 0x3b, 0x19, 0x8d, 0x62, ++ 0x3a, 0x67, 0xcc, 0xc9, 0x2e, 0x0d, 0xe3, 0xa7, 0x0d, 0x39, 0x81, 0xab, ++ 0x10, 0x0f, 0x72, 0x9d, 0x3e, 0xd5, 0x91, 0x83, 0xf6, 0x27, 0xe5, 0x24, ++ 0x87, 0xaf, 0xbd, 0x2f, 0x2f, 0xc1, 0xf5, 0x36, 0x63, 0x6b, 0x05, 0x5c, ++ 0xdb, 0x79, 0x7c, 0xa8, 0xb2, 0x63, 0x8c, 0xfb, 0xbd, 0xb4, 0x8f, 0xeb, ++ 0x5e, 0x35, 0x94, 0xec, 0x87, 0x5c, 0x8f, 0x3b, 0x53, 0xe8, 0x5f, 0x37, ++ 0x0b, 0xed, 0x21, 0xff, 0x9b, 0xb5, 0x91, 0xfd, 0xb3, 0x72, 0x7b, 0xea, ++ 0x5e, 0x55, 0x42, 0x7e, 0xb2, 0xa4, 0x6b, 0x2c, 0x9f, 0x32, 0xac, 0x1c, ++ 0xf3, 0x29, 0xc5, 0xeb, 0xa2, 0xda, 0x5c, 0x78, 0xef, 0xc5, 0xad, 0xa6, ++ 0x84, 0xe7, 0x58, 0x4c, 0x15, 0x78, 0x87, 0x75, 0x4c, 0xd4, 0xaf, 0xe3, ++ 0x72, 0xf2, 0x2e, 0xfb, 0x99, 0x07, 0xc8, 0x53, 0x49, 0xbe, 0x4f, 0x99, ++ 0x92, 0x38, 0xfe, 0x83, 0x08, 0x90, 0x9e, 0x57, 0xfe, 0xd8, 0xf9, 0x4d, ++ 0x92, 0xcf, 0x16, 0x0b, 0xc3, 0xfc, 0xa6, 0xc4, 0xff, 0x86, 0x9c, 0xe0, ++ 0x6c, 0x84, 0x27, 0xa7, 0x63, 0x9b, 0x82, 0xb8, 0x39, 0x25, 0xea, 0x23, ++ 0x4e, 0x25, 0xf3, 0xfc, 0xed, 0xa9, 0x35, 0xcf, 0x2a, 0xe8, 0x87, 0xdd, ++ 0xbb, 0x98, 0x39, 0x54, 0x36, 0x30, 0xdc, 0x75, 0xcb, 0xd5, 0xc0, 0x7c, ++ 0xbd, 0x3c, 0xb7, 0x58, 0x88, 0x2e, 0x32, 0x0e, 0x88, 0xc1, 0xc3, 0xe3, ++ 0x96, 0x26, 0x2f, 0xd7, 0xeb, 0xaf, 0xe7, 0x04, 0x17, 0x21, 0xbd, 0x1b, ++ 0xf6, 0xad, 0xa7, 0xfc, 0xde, 0xe2, 0x1d, 0xef, 0x5b, 0xbe, 0x74, 0xff, ++ 0xe3, 0x2b, 0xe2, 0x4d, 0xa9, 0xe1, 0xf1, 0x4d, 0xdd, 0x1c, 0x2b, 0xd5, ++ 0x51, 0x55, 0xfe, 0x58, 0x23, 0xba, 0xd7, 0xb6, 0x58, 0x68, 0xbf, 0xb2, ++ 0x6e, 0xd7, 0x6e, 0xfa, 0x8e, 0x8d, 0xdd, 0xc7, 0xfc, 0x28, 0xff, 0x75, ++ 0x1d, 0xbb, 0x95, 0xf9, 0x30, 0x6f, 0xed, 0xae, 0xdd, 0xca, 0x02, 0x1d, ++ 0x1e, 0x73, 0xeb, 0x22, 0x54, 0x37, 0x7e, 0x45, 0xaa, 0xcc, 0x5f, 0x47, ++ 0x2d, 0xa8, 0xcf, 0xe3, 0xf9, 0x1b, 0xf3, 0xff, 0x68, 0xf7, 0x8f, 0xda, ++ 0xb8, 0xfc, 0x9f, 0xad, 0xb4, 0x87, 0x31, 0x9f, 0x7d, 0xd6, 0x1c, 0xaa, ++ 0xc3, 0x7e, 0x67, 0xbd, 0x29, 0x7e, 0xdc, 0x3f, 0x95, 0x78, 0x7f, 0x6d, ++ 0xf7, 0x8d, 0x74, 0x7e, 0x40, 0xea, 0x9e, 0xa4, 0x28, 0x5e, 0xdb, 0x4c, ++ 0xdb, 0x3d, 0x56, 0xe8, 0xd7, 0x76, 0xa5, 0xc5, 0x8f, 0xfc, 0xb4, 0x21, ++ 0x27, 0xb4, 0x0e, 0xe9, 0x92, 0xa9, 0x05, 0x3b, 0xf1, 0xfd, 0x0c, 0x67, ++ 0xaa, 0x1f, 0xf3, 0xe1, 0xbe, 0x24, 0x56, 0x4e, 0x76, 0xef, 0x2b, 0xe2, ++ 0x61, 0x4c, 0x1c, 0x5f, 0x8c, 0xb9, 0x8f, 0xcb, 0xcb, 0x2b, 0x42, 0xbf, ++ 0xc0, 0x1f, 0xd5, 0x71, 0x3d, 0xed, 0xe5, 0x71, 0x2e, 0x6e, 0x07, 0xa0, ++ 0xbe, 0x3a, 0x6a, 0xe6, 0xeb, 0xd8, 0xc3, 0x38, 0xbc, 0x66, 0x6f, 0xe0, ++ 0x47, 0xc4, 0xb7, 0xc7, 0x32, 0x69, 0xde, 0x9c, 0xba, 0xa8, 0x82, 0x75, ++ 0x1f, 0xf1, 0xf3, 0xc6, 0xf8, 0x2a, 0xb0, 0xcd, 0xeb, 0xfa, 0x3a, 0x70, ++ 0x76, 0x58, 0x50, 0xcf, 0xd7, 0x0a, 0x7d, 0x53, 0xf9, 0xe3, 0x1d, 0xca, ++ 0x07, 0x3a, 0xb8, 0x3b, 0xbc, 0x2a, 0xc1, 0x97, 0xb3, 0x6b, 0x9b, 0x82, ++ 0xf9, 0x16, 0x78, 0x4e, 0xfa, 0x06, 0xfa, 0x33, 0xac, 0xb3, 0xca, 0xd9, ++ 0xc5, 0xf3, 0x4c, 0xb5, 0xf0, 0x7c, 0x81, 0x4e, 0xbf, 0xc8, 0x75, 0x24, ++ 0xd0, 0x33, 0xbf, 0xc0, 0xf5, 0xd8, 0x4f, 0x76, 0x1d, 0xe6, 0x7a, 0x26, ++ 0xca, 0xf3, 0xcb, 0x02, 0xde, 0x78, 0x7a, 0x1e, 0xf2, 0xfa, 0x68, 0xfe, ++ 0xc9, 0x60, 0x66, 0xe9, 0xbe, 0x25, 0x3c, 0x14, 0xe3, 0xd0, 0xa3, 0x45, ++ 0xc9, 0x34, 0x9e, 0x94, 0xfb, 0x78, 0x39, 0x3d, 0xe4, 0xe5, 0xfe, 0x58, ++ 0xce, 0xd6, 0x1d, 0x8a, 0xc9, 0x4e, 0x79, 0x78, 0xf2, 0xcb, 0x24, 0x7c, ++ 0xb2, 0xdf, 0xd8, 0x9c, 0x09, 0xaf, 0x21, 0x3c, 0x63, 0xa6, 0x74, 0x11, ++ 0x1e, 0xea, 0xb7, 0x6a, 0xb4, 0x9e, 0x49, 0x96, 0xe0, 0xe0, 0x25, 0x3a, ++ 0x79, 0xf8, 0xad, 0x90, 0x9b, 0x57, 0x67, 0xff, 0x91, 0xce, 0xdb, 0xd9, ++ 0xf0, 0x8b, 0xb7, 0x88, 0x1f, 0xeb, 0xdb, 0x15, 0x1e, 0x0f, 0xb4, 0xbf, ++ 0x65, 0x99, 0x85, 0x76, 0x26, 0xfc, 0x13, 0x15, 0xf7, 0x4d, 0xa6, 0x71, ++ 0xd3, 0xce, 0x36, 0x8a, 0xf3, 0xa8, 0xa6, 0x75, 0x72, 0x3d, 0x5c, 0xdf, ++ 0xb9, 0x5b, 0x9b, 0x67, 0x8f, 0xf1, 0x69, 0xe1, 0x67, 0xaf, 0xd2, 0x39, ++ 0x56, 0xf5, 0x1d, 0x49, 0x0c, 0xf7, 0x53, 0x81, 0xff, 0xfe, 0x80, 0xf4, ++ 0x8b, 0xe7, 0x53, 0x89, 0x1f, 0xa9, 0x67, 0x07, 0xa2, 0x27, 0xe8, 0x23, ++ 0xfe, 0xfd, 0x43, 0xd8, 0x22, 0xf2, 0xd7, 0xa1, 0xc2, 0x99, 0xa9, 0x31, ++ 0x3d, 0x6d, 0x16, 0x78, 0x61, 0x76, 0x7e, 0xff, 0xa2, 0x58, 0x57, 0x8c, ++ 0x7f, 0x42, 0xe7, 0x70, 0xfe, 0x98, 0x9e, 0xb5, 0x91, 0x5c, 0x14, 0x7e, ++ 0x56, 0xfe, 0x2a, 0xd6, 0x99, 0xd6, 0xfb, 0x15, 0x3a, 0xbf, 0xc3, 0x59, ++ 0xc5, 0xf1, 0xa9, 0x87, 0x6b, 0x46, 0xc2, 0x7d, 0x32, 0xae, 0x27, 0x31, ++ 0x4f, 0xce, 0xf3, 0x2a, 0xdd, 0x05, 0x33, 0x75, 0xdf, 0x93, 0xf5, 0xe9, ++ 0x7b, 0xf1, 0xfe, 0x7f, 0x22, 0xbd, 0xb9, 0xdd, 0x88, 0xf2, 0xfb, 0xac, ++ 0x08, 0xed, 0xb7, 0x84, 0x3f, 0x9e, 0x7e, 0x57, 0xe4, 0x70, 0x3f, 0x36, ++ 0x01, 0x9f, 0x69, 0x39, 0x09, 0xec, 0x99, 0xb4, 0xf3, 0x85, 0x8f, 0xef, ++ 0xd1, 0xf0, 0x7b, 0x20, 0xc9, 0x3f, 0xd3, 0x90, 0xee, 0x3a, 0xfe, 0xc9, ++ 0xca, 0xb1, 0xd0, 0xb8, 0x59, 0x39, 0x1a, 0xc1, 0xb3, 0xb1, 0x92, 0xef, ++ 0x5f, 0x6d, 0x34, 0x73, 0x3b, 0xb6, 0x71, 0xa5, 0x95, 0xea, 0x42, 0x5f, ++ 0xbb, 0x9d, 0xd7, 0xa9, 0xa5, 0x7e, 0xd3, 0x12, 0xc5, 0xeb, 0x11, 0xd3, ++ 0xdc, 0x3a, 0x7c, 0x7e, 0x24, 0x87, 0xc3, 0xd1, 0x66, 0x5a, 0x45, 0xdf, ++ 0xc7, 0x81, 0x5c, 0x3a, 0x73, 0x46, 0x23, 0xff, 0xa4, 0x31, 0xae, 0x1f, ++ 0xb9, 0x3e, 0xdc, 0xf0, 0x3c, 0xd7, 0x67, 0x75, 0x61, 0x7b, 0x04, 0xcf, ++ 0xab, 0xa9, 0x0b, 0xdd, 0x3a, 0x9f, 0xea, 0x10, 0x9c, 0x36, 0x3f, 0xd6, ++ 0xef, 0xb2, 0xd0, 0x61, 0xcb, 0xac, 0xd4, 0xfe, 0x7c, 0xe5, 0xdb, 0x73, ++ 0xd0, 0x82, 0xf0, 0x4f, 0xeb, 0xe0, 0xf2, 0x27, 0xe9, 0x00, 0xfa, 0x94, ++ 0xf8, 0x4b, 0xca, 0x83, 0xc4, 0x6b, 0x0c, 0x9f, 0x11, 0x83, 0x3c, 0x49, ++ 0x7a, 0x98, 0xfb, 0xfc, 0x89, 0x50, 0x21, 0xf7, 0x97, 0x78, 0x9c, 0x52, ++ 0xca, 0x54, 0xda, 0x17, 0xaa, 0xb1, 0x06, 0x8e, 0xe2, 0x77, 0x8c, 0x35, ++ 0x62, 0x3f, 0x15, 0xef, 0x63, 0x9d, 0xab, 0xdc, 0x4f, 0x9d, 0x2b, 0xe8, ++ 0xf2, 0xb8, 0x3d, 0x38, 0x12, 0xd7, 0xd9, 0x6f, 0x3f, 0xf5, 0x2b, 0xfa, ++ 0xd9, 0xb5, 0xcb, 0xdf, 0xa0, 0xb8, 0xe6, 0x1e, 0xcf, 0xeb, 0x74, 0x95, ++ 0x72, 0x0b, 0xf1, 0xa0, 0x41, 0xbe, 0x27, 0x08, 0xba, 0x0f, 0xcb, 0xe1, ++ 0xf6, 0x7d, 0x6a, 0x0e, 0xe7, 0x9b, 0xda, 0x51, 0x1d, 0x24, 0x97, 0xb5, ++ 0x1f, 0x36, 0x91, 0x3c, 0xdb, 0xa7, 0x70, 0xbd, 0x66, 0x3f, 0x69, 0xd4, ++ 0xc7, 0x8c, 0x3d, 0x24, 0xd6, 0xbb, 0x8e, 0xde, 0x9b, 0x94, 0xd2, 0x31, ++ 0x19, 0xf7, 0x21, 0x27, 0x3d, 0xa1, 0x38, 0x30, 0x4e, 0x1e, 0x08, 0xce, ++ 0x45, 0xf8, 0x1d, 0x18, 0xc6, 0x4b, 0x5b, 0x0f, 0xa5, 0xdd, 0x8d, 0xf8, ++ 0xfd, 0x02, 0xbc, 0x75, 0xdd, 0x77, 0x42, 0xdf, 0xcc, 0x11, 0xe7, 0x43, ++ 0xee, 0x04, 0x84, 0x13, 0xbf, 0x37, 0x59, 0xbe, 0xcc, 0x1f, 0xbf, 0xdc, ++ 0x78, 0x2c, 0x7a, 0x5c, 0xa1, 0xf3, 0x42, 0x04, 0x2e, 0xcf, 0xee, 0xaa, ++ 0xba, 0xe6, 0x23, 0xdc, 0x37, 0xd8, 0x99, 0xee, 0xc7, 0xef, 0xf3, 0xcf, ++ 0xec, 0xba, 0xe5, 0xbb, 0x1f, 0x01, 0xdc, 0x67, 0x77, 0x8c, 0xf7, 0xa3, ++ 0x9f, 0xe0, 0x6c, 0x0e, 0x12, 0xff, 0xf4, 0xba, 0x6c, 0xfe, 0xed, 0x3c, ++ 0x1f, 0x3a, 0x05, 0xf3, 0x3d, 0x2b, 0x3b, 0x0e, 0xa5, 0xe1, 0x77, 0x45, ++ 0x9f, 0x3e, 0x3b, 0xa2, 0x1c, 0xf5, 0xf6, 0x12, 0x01, 0xe7, 0x67, 0xcf, ++ 0xab, 0xcb, 0x11, 0x2f, 0xab, 0x9e, 0xf9, 0xf9, 0x0d, 0xf8, 0xbc, 0x36, ++ 0xa2, 0x64, 0xa1, 0xff, 0x7a, 0x76, 0xe7, 0x13, 0xff, 0x95, 0x03, 0xe3, ++ 0xd4, 0xec, 0x68, 0xc4, 0x13, 0xc8, 0x58, 0xf3, 0xb3, 0xbf, 0xa4, 0xb8, ++ 0xc0, 0x14, 0xd9, 0xc6, 0xef, 0xef, 0x4c, 0x27, 0x3f, 0xf7, 0xd3, 0x27, ++ 0xd7, 0xdf, 0x80, 0xf8, 0x6e, 0xee, 0x68, 0xa6, 0xe7, 0x9f, 0x3d, 0xb9, ++ 0x8d, 0xda, 0xaf, 0x3e, 0xf3, 0xf3, 0x57, 0xfe, 0x03, 0xf3, 0x1f, 0xc1, ++ 0x34, 0xfa, 0x3e, 0xfa, 0xb3, 0xe7, 0x0f, 0x12, 0x5d, 0xea, 0x42, 0x1a, ++ 0xd5, 0xc5, 0x0f, 0xc4, 0xd7, 0x1b, 0x77, 0x1f, 0xe4, 0xfa, 0x12, 0xed, ++ 0x3c, 0xca, 0xc1, 0x1c, 0xae, 0xc7, 0x24, 0x5f, 0x4b, 0xfe, 0xfd, 0xf4, ++ 0x99, 0xbb, 0xae, 0xd1, 0xdb, 0x0d, 0x79, 0xbf, 0x4d, 0xe4, 0x41, 0xda, ++ 0x92, 0xb9, 0x1d, 0x39, 0x23, 0xe4, 0xb6, 0x76, 0x82, 0xbd, 0x0d, 0xaf, ++ 0x67, 0x7e, 0x66, 0xa3, 0x73, 0x3b, 0x1b, 0x2c, 0xdd, 0x25, 0x18, 0x1f, ++ 0xd7, 0x95, 0x72, 0xbe, 0x58, 0x91, 0xc3, 0xf5, 0x60, 0x5d, 0xc7, 0x12, ++ 0x73, 0x83, 0x9d, 0xde, 0xa7, 0x71, 0xfe, 0x0d, 0xe4, 0x1d, 0xaf, 0x57, ++ 0x03, 0x7f, 0x62, 0xfd, 0x19, 0xf4, 0xda, 0x71, 0x89, 0xea, 0xa8, 0x9e, ++ 0xa3, 0xfe, 0xd0, 0x6f, 0x2c, 0xe6, 0x49, 0x66, 0x57, 0xbf, 0xcf, 0xbf, ++ 0x2b, 0x2d, 0x6d, 0x32, 0xd7, 0x12, 0x9c, 0xcf, 0xf2, 0xe7, 0xb0, 0x6a, ++ 0xfd, 0xf3, 0x8a, 0x65, 0x89, 0xf7, 0x35, 0xb6, 0xe4, 0xd8, 0x0d, 0xf9, ++ 0xd1, 0x9c, 0xce, 0x19, 0x79, 0x3e, 0xd2, 0x03, 0x49, 0xfe, 0x21, 0x3a, ++ 0xff, 0x37, 0xa7, 0x26, 0xd4, 0x8c, 0x75, 0x02, 0x37, 0x2d, 0x0b, 0xf9, ++ 0xf1, 0x3b, 0xfa, 0x17, 0x3f, 0x79, 0x7b, 0x32, 0xe6, 0xd3, 0x9e, 0x19, ++ 0xaa, 0x8c, 0x24, 0xfa, 0xab, 0x0a, 0xb7, 0x73, 0x61, 0x3b, 0xcd, 0x53, ++ 0x8f, 0xfb, 0x0e, 0x10, 0x7f, 0x3c, 0x2b, 0xe4, 0xc4, 0xed, 0x60, 0xce, ++ 0x6b, 0x61, 0x3d, 0x93, 0x34, 0xe6, 0xb4, 0xe3, 0x95, 0xb1, 0xe3, 0x66, ++ 0xd2, 0x0b, 0x4f, 0xd1, 0xf8, 0xe0, 0xe7, 0x90, 0xff, 0xe6, 0xfb, 0xe5, ++ 0xec, 0xa7, 0xd0, 0xef, 0xd9, 0x68, 0x0e, 0x79, 0x47, 0xe3, 0x38, 0x6d, ++ 0xc2, 0x3e, 0xee, 0xe0, 0xf0, 0xc3, 0xfb, 0x0e, 0x7b, 0x39, 0x8d, 0xe7, ++ 0xb8, 0x96, 0xfb, 0xeb, 0x4b, 0xf1, 0xbd, 0xf3, 0x2b, 0xa7, 0x3b, 0xd1, ++ 0xbf, 0x87, 0x71, 0xbb, 0xcc, 0xba, 0x78, 0x0c, 0x38, 0xb2, 0x00, 0xed, ++ 0x23, 0x8e, 0x37, 0x0a, 0xf1, 0x34, 0x25, 0x3c, 0x87, 0xec, 0x94, 0xcf, ++ 0x42, 0xeb, 0x93, 0xe7, 0x81, 0xc2, 0xfa, 0x29, 0x7f, 0x2a, 0xe5, 0x33, ++ 0x3e, 0x4f, 0x83, 0xfa, 0x09, 0xf3, 0xad, 0xaf, 0xe7, 0x54, 0x1e, 0xce, ++ 0x71, 0xc5, 0xae, 0xee, 0x01, 0xf2, 0x1c, 0xd6, 0x5c, 0xfe, 0x7c, 0x4a, ++ 0x6e, 0x80, 0xae, 0x5f, 0xf5, 0x7c, 0xd1, 0x57, 0x67, 0xf7, 0x70, 0x3b, ++ 0xff, 0xd2, 0xfb, 0xc4, 0xb7, 0x0d, 0xc8, 0xb7, 0x38, 0x7f, 0xe8, 0x43, ++ 0x83, 0x9d, 0x97, 0xf5, 0x11, 0x1b, 0xf7, 0xbf, 0x4f, 0x7c, 0x3b, 0x7f, ++ 0x1f, 0xd7, 0xc7, 0x0d, 0xfb, 0x2a, 0x2d, 0x18, 0x6f, 0x9d, 0x59, 0x11, ++ 0x60, 0x1f, 0x80, 0xa3, 0xdb, 0x20, 0xf8, 0x6f, 0xa3, 0xd2, 0xbd, 0x90, ++ 0xbe, 0x4f, 0xdb, 0x6f, 0xa3, 0xef, 0x0e, 0x7b, 0x24, 0x7f, 0xb6, 0xbf, ++ 0xff, 0x31, 0xea, 0x9f, 0xa2, 0x7d, 0x5e, 0xaa, 0xe7, 0xe9, 0xd9, 0xcf, ++ 0xf9, 0xf4, 0x88, 0xc9, 0x44, 0x79, 0x80, 0x23, 0xdb, 0xaf, 0xda, 0xd6, ++ 0xac, 0xf4, 0xb7, 0xab, 0xe0, 0x6f, 0x93, 0x9c, 0x34, 0x34, 0x31, 0xe1, ++ 0x6f, 0x2f, 0x7b, 0x1b, 0xfd, 0xb3, 0xfa, 0x1a, 0x5e, 0x07, 0xdf, 0x10, ++ 0xc7, 0x47, 0x85, 0x8f, 0x9f, 0x6a, 0x45, 0x7e, 0xc9, 0x00, 0xef, 0x18, ++ 0xeb, 0x32, 0xc0, 0x9f, 0x99, 0x4c, 0xdf, 0x6d, 0xd6, 0xb1, 0xd1, 0x28, ++ 0xa7, 0x39, 0x13, 0x03, 0xfb, 0x73, 0x69, 0xff, 0x9b, 0xc7, 0xe7, 0x39, ++ 0x35, 0xa0, 0x4f, 0xa0, 0x7d, 0x93, 0x73, 0xb1, 0x1f, 0x4b, 0x07, 0x32, ++ 0x26, 0x82, 0x5f, 0x8c, 0xfc, 0xe7, 0xbc, 0xde, 0x8f, 0xf9, 0xa6, 0x8d, ++ 0xf9, 0x1d, 0xad, 0xe8, 0x3f, 0x87, 0x27, 0x31, 0x3a, 0x77, 0x75, 0xa3, ++ 0xb9, 0x7d, 0x02, 0xc6, 0xc1, 0x1b, 0x27, 0xf9, 0x1c, 0x80, 0x49, 0xc0, ++ 0xdb, 0x0e, 0xf2, 0xaf, 0xd9, 0x50, 0x8b, 0xb0, 0x67, 0xf3, 0xc9, 0x2f, ++ 0x6f, 0xf0, 0xfc, 0xab, 0x9f, 0xf2, 0xc1, 0xf1, 0xf2, 0xbf, 0x7f, 0x25, ++ 0xf9, 0x77, 0x0d, 0xbe, 0x64, 0x3f, 0x9e, 0x83, 0x3b, 0x6d, 0x9f, 0xb2, ++ 0x94, 0xfb, 0x33, 0x76, 0x86, 0xf0, 0x37, 0x00, 0x7e, 0xb1, 0x3d, 0x2d, ++ 0x72, 0x5d, 0x04, 0xe1, 0x39, 0x27, 0xf0, 0x27, 0xf1, 0xd8, 0x63, 0xee, ++ 0xa2, 0xf3, 0x78, 0x7b, 0x5e, 0x48, 0xa2, 0xf3, 0x0d, 0xa7, 0x4d, 0xe4, ++ 0xfc, 0x9a, 0x31, 0xb1, 0x83, 0xf4, 0xc7, 0x6b, 0xfb, 0x6f, 0x24, 0x7b, ++ 0x2d, 0xf9, 0x32, 0x75, 0x6f, 0x12, 0xd9, 0xed, 0x4c, 0xcd, 0xa1, 0xf8, ++ 0x29, 0x5f, 0x74, 0x4b, 0x12, 0xc2, 0x33, 0x4f, 0xc0, 0xd3, 0x2e, 0xea, ++ 0x84, 0x33, 0x84, 0x1d, 0x29, 0x5e, 0xc7, 0xfd, 0xb8, 0xcc, 0x5c, 0x2e, ++ 0x4f, 0x99, 0xb9, 0x26, 0x71, 0xb5, 0x18, 0xeb, 0xac, 0x1c, 0x61, 0xca, ++ 0x3b, 0x9c, 0x13, 0xf4, 0x27, 0x36, 0xd1, 0x9d, 0xfb, 0x54, 0x3f, 0x3f, ++ 0x4a, 0xf2, 0x54, 0xb7, 0x8b, 0x8f, 0xe7, 0x4c, 0x0a, 0x94, 0xdd, 0xab, ++ 0xe3, 0x5f, 0xe9, 0x5f, 0xc9, 0x7a, 0x03, 0xac, 0x1b, 0x98, 0x91, 0x80, ++ 0xbf, 0xc7, 0xe6, 0x72, 0x3b, 0x58, 0xf8, 0xf8, 0x52, 0xa2, 0xfb, 0xbc, ++ 0x1a, 0x71, 0x3e, 0xc4, 0x3a, 0xee, 0x57, 0x30, 0xe0, 0x0b, 0xc4, 0x1b, ++ 0xd0, 0x91, 0xf8, 0xe0, 0x26, 0xe7, 0x22, 0xa2, 0xdb, 0xbc, 0x75, 0xca, ++ 0x37, 0x89, 0x8e, 0xe1, 0x0a, 0xca, 0x1b, 0x4a, 0xff, 0x2c, 0x7e, 0xfc, ++ 0x71, 0x62, 0x7d, 0x3b, 0x6d, 0xc1, 0x51, 0x58, 0x67, 0xd8, 0xeb, 0x4a, ++ 0xf5, 0xe3, 0x7e, 0xd7, 0xce, 0x8c, 0x80, 0x89, 0xf2, 0xee, 0x65, 0x19, ++ 0x94, 0x07, 0x71, 0x65, 0x71, 0x7f, 0xd1, 0x25, 0xfc, 0xc5, 0x98, 0xdc, ++ 0x07, 0x47, 0x99, 0x60, 0x9e, 0x4f, 0xdc, 0xa9, 0x9c, 0xde, 0x91, 0xdf, ++ 0x68, 0x98, 0x17, 0x9e, 0x92, 0xeb, 0x4b, 0xe8, 0xe7, 0xf5, 0x8f, 0xf3, ++ 0xf9, 0x78, 0xd3, 0xdb, 0xc3, 0xc3, 0x31, 0xee, 0x91, 0xf5, 0x61, 0x12, ++ 0x1f, 0x91, 0x95, 0xc9, 0x73, 0xf4, 0xfa, 0x74, 0x82, 0xa0, 0x4b, 0x64, ++ 0x18, 0x9b, 0x83, 0x7a, 0x03, 0xe2, 0x09, 0x3b, 0xe5, 0xaf, 0x1d, 0x30, ++ 0x0f, 0xe6, 0x13, 0xb6, 0x5f, 0xf7, 0x24, 0xcf, 0x27, 0xf0, 0x73, 0xa1, ++ 0xaf, 0xca, 0xe5, 0xdf, 0x35, 0x4f, 0xca, 0x0a, 0x8e, 0xa2, 0xfd, 0xbf, ++ 0xe2, 0xe0, 0x32, 0x6e, 0x3f, 0xf9, 0x3a, 0xe3, 0xf1, 0xf1, 0xba, 0xb0, ++ 0x9b, 0xaf, 0xce, 0xbe, 0xb3, 0x0c, 0xe3, 0xd8, 0x86, 0x5b, 0xed, 0x7e, ++ 0x94, 0xbb, 0x0d, 0x2f, 0x29, 0x73, 0x89, 0xaf, 0xc3, 0x56, 0x3c, 0x3c, ++ 0x08, 0xf8, 0x9e, 0xcb, 0x21, 0x38, 0x4c, 0x54, 0x0f, 0xc5, 0x42, 0x1a, ++ 0xd1, 0xa3, 0xa1, 0x29, 0x18, 0x49, 0xcc, 0xf7, 0x33, 0x48, 0xce, 0x1a, ++ 0xc0, 0xef, 0xc3, 0x38, 0x60, 0x1a, 0xf2, 0xb9, 0x93, 0xf8, 0x3e, 0xc2, ++ 0xf9, 0x9e, 0xdb, 0x3f, 0x99, 0x6f, 0x40, 0x3d, 0xa9, 0xf7, 0xb7, 0xa5, ++ 0x3e, 0x90, 0x7a, 0x06, 0xed, 0x1b, 0xf2, 0xb3, 0x94, 0x8b, 0x86, 0x1b, ++ 0xba, 0x4b, 0x90, 0xbe, 0x5f, 0x55, 0xaf, 0xf4, 0x98, 0xb9, 0x9c, 0xf7, ++ 0x00, 0x1e, 0x50, 0x8e, 0xa4, 0xdc, 0xa4, 0xbe, 0xc8, 0xe5, 0x65, 0xcd, ++ 0x4a, 0x5f, 0x25, 0x3e, 0x5f, 0x03, 0x72, 0xaf, 0xa7, 0x77, 0x7c, 0x7c, ++ 0x86, 0x70, 0x62, 0xbc, 0x22, 0xf5, 0xfb, 0xaa, 0x9c, 0xe0, 0xb7, 0x73, ++ 0x11, 0x4e, 0x53, 0xb4, 0x95, 0xbe, 0x7d, 0x15, 0xfa, 0xb8, 0xe1, 0xc5, ++ 0xd5, 0x25, 0x89, 0xbe, 0x5f, 0x92, 0xfa, 0xd8, 0x2a, 0xce, 0xd3, 0xb4, ++ 0x46, 0x52, 0x22, 0xfa, 0x7d, 0x06, 0xdc, 0xb3, 0x4f, 0x2d, 0xa7, 0x6b, ++ 0x18, 0xed, 0x51, 0xca, 0xf2, 0xc4, 0xf9, 0x98, 0xd5, 0xb9, 0xd2, 0xbe, ++ 0xf6, 0xab, 0x77, 0x5a, 0x9d, 0xeb, 0xea, 0x5f, 0xef, 0xe4, 0x46, 0xdb, ++ 0x85, 0xf2, 0xb3, 0x3d, 0x85, 0xbe, 0xa3, 0x93, 0xf9, 0xa9, 0xf8, 0x71, ++ 0xbf, 0x2f, 0xf8, 0x4d, 0xd2, 0x45, 0xc6, 0x29, 0xb8, 0x5f, 0x80, 0xfd, ++ 0x9f, 0x12, 0xf2, 0xb3, 0x59, 0xc8, 0xe9, 0x73, 0xe2, 0xaa, 0x8b, 0x7f, ++ 0x88, 0xff, 0x7d, 0xa6, 0xd0, 0xfb, 0xb8, 0xdf, 0x3f, 0x90, 0x1d, 0x93, ++ 0xef, 0xfd, 0xb3, 0xf2, 0x65, 0x72, 0x1e, 0x69, 0x4f, 0xe3, 0xe9, 0x2f, ++ 0xf7, 0x3b, 0x70, 0x3d, 0x33, 0x4a, 0x07, 0xee, 0xd7, 0x7e, 0x50, 0xc4, ++ 0x81, 0x71, 0xfc, 0xf8, 0x82, 0xf0, 0xa7, 0xee, 0xcd, 0x65, 0x74, 0x6d, ++ 0x37, 0x47, 0x3f, 0x27, 0xb9, 0x5a, 0x92, 0xca, 0x68, 0x9f, 0x6d, 0x33, ++ 0x0b, 0x64, 0xe1, 0x7e, 0xd9, 0x2b, 0x57, 0x70, 0x79, 0x08, 0xf4, 0x96, ++ 0xe0, 0xf8, 0x57, 0xe6, 0x87, 0x32, 0xf2, 0x46, 0xc7, 0xf2, 0xc2, 0x78, ++ 0x1f, 0xe3, 0x93, 0x5a, 0x8d, 0x85, 0x71, 0x9f, 0xac, 0x76, 0xa7, 0x39, ++ 0xa2, 0xff, 0x8e, 0x67, 0x27, 0x7e, 0x48, 0x09, 0xfd, 0xcf, 0xa7, 0x5a, ++ 0xc3, 0x2a, 0xf0, 0xf9, 0xb8, 0xfc, 0xd0, 0x61, 0xa4, 0x67, 0x78, 0x02, ++ 0xff, 0x5e, 0x2f, 0xfc, 0x3d, 0x1b, 0xed, 0xff, 0x80, 0x23, 0x3d, 0x1a, ++ 0xf5, 0x4b, 0x23, 0xeb, 0x4e, 0x43, 0x3c, 0x37, 0xa8, 0x5d, 0x25, 0x98, ++ 0xc7, 0xdc, 0xe2, 0x0e, 0xbd, 0x8e, 0xfd, 0x4f, 0x99, 0xba, 0x0a, 0x78, ++ 0xbd, 0x05, 0xdf, 0x9f, 0x3a, 0x29, 0xf2, 0xbe, 0x27, 0x45, 0xde, 0xb7, ++ 0xd3, 0x12, 0xcd, 0xff, 0x8e, 0x33, 0x76, 0xce, 0xdd, 0x05, 0xc6, 0xeb, ++ 0x75, 0x2e, 0x74, 0x99, 0x32, 0x31, 0x0e, 0x7c, 0x6f, 0xdf, 0x3b, 0x3f, ++ 0x7b, 0x09, 0xde, 0xbe, 0xe3, 0xa5, 0x73, 0x77, 0x7c, 0x1f, 0xb1, 0xb5, ++ 0x26, 0xe5, 0xce, 0x1f, 0xc1, 0xb5, 0xda, 0xaa, 0x06, 0xf5, 0xe7, 0xff, ++ 0x9c, 0x4c, 0x4d, 0xac, 0x67, 0x4f, 0x09, 0x3e, 0xea, 0xab, 0xa7, 0x59, ++ 0x99, 0x94, 0x30, 0xef, 0xbf, 0x27, 0x8f, 0xf3, 0x41, 0x63, 0xdc, 0xfe, ++ 0xef, 0x9e, 0x3c, 0x1f, 0xbf, 0xdf, 0xf7, 0x5d, 0x16, 0xdf, 0xff, 0x7d, ++ 0x6f, 0x80, 0x73, 0xb2, 0x26, 0xe7, 0x71, 0xfa, 0x74, 0x8a, 0x3a, 0x9f, ++ 0xf8, 0xe7, 0xd3, 0xc4, 0x3c, 0x3b, 0xcd, 0xac, 0x64, 0x33, 0xc2, 0xb3, ++ 0x2d, 0x95, 0xf6, 0xd7, 0x99, 0xc6, 0xcf, 0x37, 0xab, 0x79, 0xa4, 0xd0, ++ 0x8f, 0xfb, 0x92, 0x9d, 0x45, 0xfc, 0xfc, 0xfc, 0xde, 0x47, 0x15, 0xb2, ++ 0x03, 0x27, 0xcd, 0x5c, 0xff, 0xc0, 0xdf, 0xad, 0xd6, 0x8a, 0x98, 0x1d, ++ 0x45, 0x37, 0x05, 0xfd, 0xc4, 0x1a, 0x47, 0x38, 0x6a, 0x02, 0xfd, 0x51, ++ 0xb3, 0x2c, 0x35, 0x8a, 0xe7, 0x67, 0xc2, 0x7d, 0x6d, 0x1c, 0xca, 0x5a, ++ 0xd8, 0x41, 0xf5, 0xa6, 0x73, 0x85, 0x7d, 0x9c, 0xd7, 0xf4, 0xda, 0xdf, ++ 0x30, 0xef, 0x51, 0xa3, 0x31, 0xeb, 0x38, 0x78, 0xef, 0xb4, 0x7d, 0x7e, ++ 0x1a, 0x9a, 0x87, 0x85, 0xdf, 0xba, 0x17, 0x8f, 0xc0, 0x61, 0xd9, 0xd5, ++ 0xed, 0xa2, 0x2e, 0x51, 0x9c, 0xd7, 0x16, 0x98, 0xae, 0x5e, 0x4a, 0xf9, ++ 0x32, 0xbf, 0xce, 0xf8, 0x5d, 0xcb, 0xde, 0xbc, 0xa0, 0x15, 0xf9, 0xac, ++ 0x3a, 0x9d, 0xe3, 0xbb, 0xfa, 0x5e, 0x7e, 0x4e, 0xaf, 0xec, 0xff, 0x92, ++ 0x90, 0xdb, 0x7e, 0xfc, 0x86, 0xbc, 0x0a, 0xf0, 0xfe, 0x51, 0xe1, 0xf6, ++ 0x25, 0x7e, 0x1e, 0x77, 0xfe, 0x84, 0xe7, 0x51, 0xbf, 0x2d, 0xf7, 0x04, ++ 0xb3, 0x68, 0xfc, 0x7b, 0xcf, 0x19, 0xf4, 0x5a, 0x8f, 0xd2, 0xfd, 0xf4, ++ 0x8f, 0x90, 0x2f, 0x97, 0xa4, 0x8a, 0x73, 0xd4, 0x58, 0x81, 0xbe, 0x5e, ++ 0xca, 0x9f, 0xc7, 0xed, 0x4b, 0x2d, 0xee, 0x37, 0x81, 0x6a, 0x3c, 0x5f, ++ 0xd6, 0x55, 0xb2, 0xbc, 0x10, 0xf9, 0xbf, 0xb7, 0xe0, 0x77, 0x98, 0x77, ++ 0x3b, 0x90, 0x44, 0x75, 0xb1, 0xb5, 0xb8, 0xef, 0xa4, 0xab, 0x67, 0x1b, ++ 0x68, 0xdf, 0x69, 0xe0, 0xfd, 0x26, 0x9f, 0x05, 0xf9, 0xbc, 0xe1, 0xa2, ++ 0x42, 0x7c, 0x32, 0xf7, 0xc0, 0x6b, 0x27, 0x50, 0xaf, 0x37, 0x68, 0xdd, ++ 0xc4, 0x3f, 0x73, 0xad, 0x76, 0xa2, 0x4f, 0xc3, 0x45, 0x8d, 0x9e, 0xb3, ++ 0x36, 0xf3, 0x59, 0xfd, 0x77, 0x7a, 0xed, 0x9e, 0xc0, 0x70, 0x5c, 0x5f, ++ 0xf8, 0xc1, 0x71, 0x19, 0xb4, 0x6f, 0x95, 0x0d, 0xf7, 0x09, 0xcf, 0x43, ++ 0xe9, 0x9c, 0x8f, 0xa5, 0xa2, 0x1e, 0xd9, 0x9d, 0x1f, 0x1a, 0x8d, 0xfd, ++ 0x36, 0xa5, 0xa4, 0xdd, 0x85, 0xf1, 0xe1, 0x05, 0x2b, 0x3f, 0x97, 0xa9, ++ 0xd1, 0xc2, 0xeb, 0x8e, 0x99, 0xf8, 0xfe, 0x59, 0xf2, 0x09, 0xcb, 0x4b, ++ 0x35, 0xf2, 0xc1, 0x81, 0xd7, 0xff, 0x86, 0x70, 0xcd, 0xb7, 0x86, 0xe8, ++ 0x1c, 0xcb, 0x05, 0x73, 0x9a, 0xe8, 0xdc, 0xdc, 0xea, 0xf4, 0xe8, 0x68, ++ 0x47, 0xa9, 0x9e, 0xfe, 0xe3, 0xbe, 0xd6, 0xb9, 0xb9, 0x5e, 0xa1, 0x37, ++ 0xde, 0xb3, 0xf0, 0xfa, 0x9c, 0xfe, 0xfc, 0xcf, 0xe9, 0xb0, 0x27, 0x8f, ++ 0xeb, 0xaf, 0xf7, 0x72, 0xb8, 0x1c, 0xbd, 0x57, 0xc0, 0x6a, 0xf6, 0xe0, ++ 0xf5, 0x4a, 0xb8, 0xc2, 0x7b, 0xef, 0x15, 0x89, 0x76, 0x39, 0x6f, 0xc7, ++ 0x8f, 0xd3, 0x28, 0xe4, 0xe8, 0xbd, 0xe1, 0xdc, 0x7e, 0x85, 0x97, 0xa6, ++ 0x24, 0x3c, 0x97, 0xe4, 0x6e, 0x21, 0x8f, 0x7b, 0xf3, 0x02, 0xb7, 0x23, ++ 0xbe, 0xe4, 0xfd, 0xa7, 0x05, 0x1c, 0xee, 0xfc, 0x40, 0x75, 0x9e, 0x8b, ++ 0xf4, 0x63, 0x48, 0xf0, 0x6d, 0x34, 0x03, 0xc6, 0xab, 0xfe, 0x25, 0xff, ++ 0x1d, 0x03, 0xd6, 0xd2, 0x4b, 0x75, 0x25, 0x7d, 0xeb, 0x2a, 0x11, 0xf0, ++ 0xba, 0x13, 0xc3, 0xd5, 0x12, 0x1b, 0x77, 0x11, 0x8e, 0x07, 0xfd, 0x02, ++ 0xe4, 0xc7, 0xbf, 0x62, 0xa3, 0xef, 0xef, 0xd8, 0x74, 0xd0, 0xd7, 0xa8, ++ 0x9f, 0x97, 0xe6, 0x33, 0xd4, 0xcf, 0x30, 0x6f, 0x63, 0x1e, 0x1f, 0x37, ++ 0x9a, 0x41, 0xfd, 0x92, 0x68, 0x1d, 0xac, 0x0d, 0xf4, 0x36, 0xf0, 0xef, ++ 0xf9, 0xd1, 0x3e, 0xa2, 0xcb, 0x9a, 0x4a, 0xe0, 0xd3, 0x51, 0xe2, 0x5c, ++ 0x7e, 0x5f, 0x8c, 0xaf, 0x24, 0x3f, 0xc5, 0xf3, 0xd1, 0x7d, 0x79, 0xca, ++ 0x40, 0xfb, 0xe2, 0xf7, 0xe1, 0x7c, 0xf1, 0xfb, 0xe2, 0x8c, 0x0d, 0x26, ++ 0x7a, 0x13, 0xbf, 0x7d, 0x8d, 0xef, 0xd8, 0x46, 0x64, 0x71, 0xbc, 0x80, ++ 0xdc, 0xb7, 0xe6, 0x91, 0xfd, 0x8d, 0x5e, 0xad, 0x97, 0x3b, 0x89, 0x67, ++ 0xa9, 0x2f, 0xdf, 0x4b, 0x36, 0xf2, 0x45, 0xaa, 0x80, 0xf3, 0x07, 0xa2, ++ 0x5f, 0x1f, 0x9e, 0xc5, 0x39, 0x5a, 0xce, 0x62, 0x6e, 0x07, 0x65, 0xbc, ++ 0xf0, 0xb8, 0xe8, 0x9f, 0x21, 0xe8, 0x2f, 0xaf, 0xd2, 0xae, 0xc5, 0xef, ++ 0x0f, 0x64, 0x88, 0x71, 0x33, 0xf2, 0xd2, 0x24, 0x5d, 0x1e, 0x13, 0xf4, ++ 0xce, 0x48, 0x48, 0xef, 0xad, 0x9c, 0xde, 0xd0, 0xef, 0x09, 0xec, 0x57, ++ 0x9d, 0xd4, 0x7b, 0x67, 0x16, 0xd8, 0xb3, 0xdb, 0xc0, 0x4f, 0xc2, 0x73, ++ 0x2f, 0xe1, 0x3d, 0x2f, 0xde, 0xef, 0x97, 0xb7, 0x98, 0xc8, 0xed, 0x70, ++ 0xe3, 0xd2, 0x54, 0x86, 0x7e, 0xc2, 0x4f, 0xf2, 0x44, 0xde, 0x6f, 0x54, ++ 0x2f, 0xdf, 0xbf, 0x1b, 0xda, 0x4b, 0xfa, 0x68, 0x2e, 0x03, 0xbd, 0xa3, ++ 0x5c, 0x9e, 0x7e, 0x98, 0x23, 0xf0, 0x82, 0x3e, 0x7c, 0x43, 0xd4, 0x0f, ++ 0x29, 0x58, 0xcf, 0x93, 0x49, 0x6a, 0xc0, 0x87, 0xe3, 0x01, 0xbe, 0x3b, ++ 0xf3, 0x5c, 0x31, 0x7c, 0xc7, 0xcf, 0x77, 0x12, 0x1f, 0x81, 0x5f, 0xf8, ++ 0x4a, 0x9e, 0xf8, 0xbe, 0xaf, 0x8c, 0x95, 0x21, 0xbd, 0xee, 0x7c, 0xeb, ++ 0xcf, 0xa9, 0x77, 0xf8, 0xf0, 0x1c, 0x74, 0xfe, 0x5d, 0xf1, 0x47, 0xf6, ++ 0xd0, 0xab, 0x38, 0xce, 0xd9, 0xef, 0xbe, 0x4e, 0x71, 0xc0, 0x49, 0x4b, ++ 0xb4, 0xa4, 0xdd, 0x9e, 0xe0, 0xb9, 0x25, 0xfa, 0xf8, 0x26, 0x25, 0xf6, ++ 0xfc, 0xae, 0x9f, 0xa8, 0x61, 0xfc, 0xdd, 0x8b, 0xce, 0xae, 0xb3, 0x8f, ++ 0xce, 0x06, 0xbe, 0x9c, 0xdb, 0xa5, 0xfa, 0x71, 0xca, 0xb9, 0xf7, 0x7d, ++ 0xfe, 0xe6, 0x18, 0xf4, 0xaf, 0xbb, 0xcc, 0xb4, 0x0f, 0x05, 0xfe, 0xc5, ++ 0x3a, 0x3c, 0x17, 0x94, 0x35, 0x71, 0x7f, 0xf4, 0xa4, 0xc9, 0x48, 0xff, ++ 0x33, 0xdf, 0x36, 0xd6, 0x75, 0x74, 0x0b, 0x79, 0x95, 0xdf, 0x3b, 0x4b, ++ 0x7d, 0x25, 0xfd, 0x86, 0xc5, 0xcc, 0xcf, 0xf5, 0x54, 0x32, 0x3f, 0x87, ++ 0xfd, 0xd4, 0x92, 0x45, 0xf4, 0xbd, 0xf3, 0x7c, 0x16, 0x3c, 0x8a, 0xe7, ++ 0xb0, 0x7f, 0xba, 0x74, 0x2a, 0xf9, 0xd3, 0x8b, 0x58, 0x88, 0x7e, 0x8f, ++ 0x60, 0x5e, 0x9b, 0xf1, 0x3c, 0xde, 0xf8, 0x73, 0x7c, 0xe3, 0xcf, 0xef, ++ 0xc5, 0x04, 0x3f, 0xe2, 0x2f, 0xfe, 0x1c, 0xdf, 0xbe, 0x7c, 0x7b, 0x55, ++ 0x62, 0x3f, 0x23, 0x35, 0x9f, 0xf3, 0xe1, 0x19, 0x8b, 0xa8, 0x2f, 0x18, ++ 0xc0, 0xcf, 0xb8, 0x28, 0xf8, 0x57, 0xd6, 0x17, 0x34, 0xca, 0xfa, 0x82, ++ 0x97, 0xbf, 0xbc, 0xbe, 0xa0, 0x31, 0xae, 0xbe, 0x20, 0xe6, 0x8f, 0xc8, ++ 0xfa, 0x82, 0x2f, 0x28, 0x4f, 0x68, 0xce, 0xf7, 0xd1, 0xf8, 0x38, 0x9e, ++ 0xbe, 0xce, 0xe0, 0xcc, 0x84, 0xc4, 0x70, 0x2b, 0xf9, 0xd2, 0xef, 0x49, ++ 0x31, 0x8c, 0x2f, 0xc7, 0x89, 0xcd, 0x93, 0x46, 0xcf, 0x1b, 0xf1, 0x3c, ++ 0x9f, 0x84, 0xdf, 0xab, 0xdb, 0xe9, 0xfe, 0x99, 0x85, 0x89, 0xe7, 0x49, ++ 0xcf, 0xe7, 0xeb, 0x6e, 0x8c, 0xab, 0x67, 0x88, 0xbd, 0xcf, 0xeb, 0x18, ++ 0x64, 0x9c, 0x2f, 0xf9, 0xa2, 0xf1, 0xa2, 0x97, 0xec, 0xb1, 0x6c, 0xf7, ++ 0xfd, 0x0e, 0x43, 0xdf, 0x7b, 0x79, 0xf4, 0x3c, 0xfe, 0xfb, 0x7c, 0x99, ++ 0xa7, 0x97, 0x72, 0xf0, 0x81, 0xc2, 0xac, 0x5e, 0xca, 0x9b, 0xad, 0x17, ++ 0x7a, 0xd1, 0x3f, 0x1c, 0xfd, 0xdf, 0x0f, 0xd0, 0xaf, 0x42, 0x39, 0xbc, ++ 0xd1, 0xf7, 0x4a, 0x37, 0x80, 0x38, 0xef, 0xfb, 0xd7, 0x94, 0x68, 0x45, ++ 0x31, 0x39, 0x89, 0x5f, 0x07, 0xf0, 0xd3, 0x67, 0xfa, 0xef, 0xe0, 0x87, ++ 0xe4, 0x8b, 0x73, 0x79, 0xfd, 0xcc, 0x4f, 0xdf, 0x49, 0x0a, 0x3e, 0xbf, ++ 0xf3, 0xbb, 0x93, 0xd2, 0x71, 0x9f, 0xf5, 0xdf, 0xef, 0xab, 0x32, 0x7c, ++ 0xff, 0xd6, 0xf7, 0x7d, 0xbc, 0x45, 0xfa, 0x73, 0x76, 0x83, 0x5d, 0x66, ++ 0x71, 0x76, 0x7b, 0xde, 0xbe, 0xd7, 0xc9, 0x5f, 0x9b, 0x6f, 0x0d, 0xd2, ++ 0x77, 0x78, 0x1f, 0xbd, 0xfc, 0x5d, 0xb2, 0xd7, 0x0b, 0x59, 0xd0, 0x8d, ++ 0xfc, 0x7d, 0xfe, 0xe5, 0x2b, 0x0a, 0x42, 0xff, 0x03, 0x7b, 0x2d, 0xe1, ++ 0xb9, 0x25, 0x7c, 0xb7, 0x99, 0xfb, 0xe9, 0x4e, 0xf2, 0x33, 0x66, 0x0a, ++ 0x78, 0x6e, 0x39, 0xc0, 0xfd, 0x45, 0x93, 0x35, 0x60, 0xa6, 0x79, 0x02, ++ 0xcc, 0xe7, 0x70, 0x53, 0x28, 0xce, 0xe1, 0x05, 0xa5, 0x89, 0xe7, 0xf0, ++ 0x5d, 0xdf, 0x07, 0x7f, 0x29, 0x9d, 0xdf, 0x31, 0x4e, 0xc0, 0xaf, 0xe0, ++ 0xfb, 0x80, 0xdf, 0xeb, 0xc5, 0x95, 0xcd, 0x0d, 0x79, 0x10, 0x6e, 0x79, ++ 0xae, 0x00, 0x70, 0x93, 0x07, 0xaf, 0xcd, 0xd7, 0xf8, 0x7d, 0x78, 0x1d, ++ 0xaf, 0x04, 0x35, 0xa6, 0xfb, 0xde, 0x74, 0x32, 0x6b, 0xca, 0xc3, 0xfe, ++ 0x26, 0x6b, 0xb7, 0x2a, 0xce, 0x3b, 0xa3, 0xf3, 0xe3, 0x93, 0x62, 0xf8, ++ 0xa2, 0x76, 0xaa, 0x68, 0xb7, 0xdc, 0x7a, 0xe1, 0xce, 0x05, 0x78, 0xdf, ++ 0xce, 0xcf, 0x27, 0xb6, 0x08, 0x38, 0x16, 0xe6, 0x8b, 0xef, 0xa8, 0xad, ++ 0xcc, 0x8a, 0xeb, 0x4e, 0xb2, 0x47, 0x3f, 0xa5, 0x7d, 0x40, 0x71, 0x0d, ++ 0x4f, 0xe0, 0xfe, 0x77, 0xb8, 0x88, 0xd7, 0xed, 0x26, 0xe3, 0x79, 0x0a, ++ 0x30, 0xaf, 0xdd, 0x7e, 0x2e, 0x8c, 0x8b, 0x75, 0x30, 0x07, 0x9d, 0x13, ++ 0x60, 0x73, 0x5c, 0x88, 0x62, 0x1c, 0xa2, 0xfb, 0x1d, 0x89, 0x7b, 0xf2, ++ 0x5d, 0xba, 0xdf, 0x91, 0x60, 0x51, 0x9e, 0x9f, 0x1a, 0xe8, 0x79, 0xdc, ++ 0xef, 0x4c, 0x64, 0x0a, 0xf8, 0x9a, 0x85, 0x7e, 0xf3, 0xe2, 0x79, 0x87, ++ 0xc5, 0x74, 0xae, 0x03, 0xe9, 0xb7, 0x87, 0x53, 0x17, 0xd2, 0x39, 0xe4, ++ 0x2e, 0xfb, 0x32, 0xda, 0x9f, 0xde, 0x92, 0x36, 0x85, 0xf6, 0x2f, 0xdd, ++ 0x88, 0x78, 0xac, 0x53, 0x9f, 0xa2, 0x3b, 0x97, 0x01, 0x9e, 0xbb, 0x82, ++ 0xc6, 0xf3, 0x18, 0xb2, 0xe7, 0x18, 0xdb, 0xde, 0x90, 0xb1, 0x6d, 0x65, ++ 0x27, 0xa9, 0x3e, 0x4a, 0x89, 0x06, 0x3d, 0x97, 0xb2, 0x62, 0xe7, 0x4e, ++ 0x9a, 0x85, 0xbe, 0xb8, 0x35, 0x99, 0xc3, 0x75, 0x6b, 0x32, 0x8f, 0xd7, ++ 0x56, 0xe7, 0x1b, 0xbf, 0x13, 0x0d, 0xca, 0xdf, 0x7f, 0xc9, 0xe4, 0xe7, ++ 0x36, 0xf4, 0xb8, 0xad, 0x56, 0xac, 0xb7, 0xc0, 0xf8, 0x3f, 0x9f, 0xc7, ++ 0xff, 0x7f, 0x04, 0x4a, 0x43, 0x5c, 0xc8, 0x7f, 0x1f, 0xa6, 0x6c, 0x7c, ++ 0x60, 0xc8, 0xa3, 0xa3, 0xf0, 0x77, 0x4f, 0x54, 0xff, 0x2a, 0xa0, 0x53, ++ 0x6b, 0xaa, 0x6f, 0xa5, 0x86, 0xfe, 0xdb, 0xed, 0xe2, 0x77, 0xc2, 0xb4, ++ 0x0e, 0xaa, 0x63, 0xd8, 0x76, 0x67, 0x06, 0xd5, 0x89, 0xb6, 0xda, 0x1c, ++ 0x95, 0x98, 0xf7, 0x0c, 0xe7, 0xf3, 0x7c, 0x4f, 0xa3, 0xa8, 0xf7, 0x07, ++ 0x8a, 0xd4, 0xee, 0x82, 0xf7, 0xb6, 0xcd, 0xcc, 0xa5, 0x7e, 0xce, 0xaa, ++ 0x5e, 0xca, 0x97, 0xf6, 0xae, 0x66, 0xe4, 0x1f, 0xf5, 0xe3, 0xd3, 0x2f, ++ 0x80, 0xff, 0x01, 0xdf, 0x4f, 0x62, 0x1b, 0xcf, 0x93, 0x98, 0xef, 0xef, ++ 0xc2, 0xef, 0x88, 0xbd, 0x01, 0x95, 0xea, 0x74, 0xe5, 0xf3, 0x1d, 0xf8, ++ 0x1c, 0xe0, 0x54, 0x04, 0x5f, 0xe0, 0xfd, 0xf1, 0x15, 0xb1, 0xdf, 0x71, ++ 0x2a, 0x3e, 0x50, 0x76, 0x08, 0xcf, 0xc3, 0x64, 0x21, 0xc5, 0xcf, 0xd3, ++ 0x8f, 0x3e, 0xe2, 0xf7, 0x59, 0xc2, 0x2f, 0x6f, 0x3c, 0x50, 0x79, 0xf3, ++ 0x68, 0x80, 0xab, 0xb8, 0x6b, 0x24, 0xb1, 0xf1, 0xe0, 0x03, 0x62, 0xbf, ++ 0xc5, 0x99, 0x24, 0xf6, 0x8d, 0xf9, 0xf9, 0xbd, 0xf1, 0xfd, 0x07, 0x63, ++ 0x7f, 0x68, 0xa7, 0x1c, 0xf3, 0xfd, 0x6b, 0x1d, 0x3e, 0x32, 0x41, 0x9c, ++ 0x8d, 0xef, 0x4d, 0x48, 0xa1, 0x75, 0x1f, 0x17, 0xf9, 0x26, 0x26, 0xf4, ++ 0xc3, 0x98, 0x38, 0xf9, 0xbb, 0x2e, 0x26, 0x0f, 0xf4, 0xbc, 0x4c, 0xb4, ++ 0x1b, 0x45, 0x7d, 0x1d, 0x9e, 0x61, 0x11, 0xa8, 0xe0, 0xe9, 0x0c, 0xea, ++ 0xe7, 0xe4, 0xf2, 0xe1, 0x67, 0xf2, 0x8f, 0xcb, 0xed, 0xb5, 0x2c, 0xf6, ++ 0x87, 0xe3, 0x54, 0xc5, 0xc6, 0x25, 0x3d, 0x35, 0x31, 0xf6, 0x38, 0x26, ++ 0x87, 0xb0, 0xc4, 0x72, 0xab, 0xbf, 0xb9, 0x0e, 0xfa, 0x1d, 0x99, 0xc1, ++ 0xf7, 0xd7, 0xc7, 0x68, 0xd1, 0x83, 0x28, 0xef, 0xd7, 0x89, 0x6b, 0x99, ++ 0xb8, 0xb2, 0xb9, 0xed, 0x84, 0xdf, 0x35, 0x2b, 0x03, 0x2a, 0xa3, 0x12, ++ 0x88, 0x90, 0xba, 0x1e, 0xda, 0x63, 0xad, 0x5d, 0x59, 0xc8, 0xdf, 0xe3, ++ 0xac, 0xdd, 0x2b, 0x5d, 0x30, 0xce, 0x35, 0x73, 0xee, 0xf6, 0x60, 0xbb, ++ 0xa4, 0xa0, 0x98, 0xf8, 0x0d, 0xfc, 0x2f, 0x3a, 0x77, 0x28, 0xc3, 0x6e, ++ 0x8a, 0xf0, 0xef, 0x28, 0xcb, 0xfc, 0x28, 0x47, 0xb3, 0xe7, 0xf0, 0x7c, ++ 0xec, 0xac, 0x39, 0x56, 0xaa, 0x3b, 0x9e, 0xa5, 0xf1, 0xf3, 0xa1, 0x98, ++ 0x16, 0x2a, 0xbc, 0x0d, 0x9e, 0xdf, 0x56, 0xcd, 0xf3, 0xc0, 0xd8, 0xae, ++ 0xd6, 0xe5, 0x59, 0xe4, 0xbe, 0xc7, 0x71, 0x88, 0x53, 0x76, 0x27, 0x88, ++ 0x37, 0x4b, 0x0a, 0xb8, 0x5d, 0x94, 0xef, 0x37, 0x8a, 0xfa, 0x1f, 0xf9, ++ 0xbc, 0x08, 0x0f, 0x8a, 0xc6, 0x3c, 0x59, 0xc1, 0xe4, 0x8f, 0xf2, 0xc9, ++ 0x9e, 0xf0, 0xfd, 0xdd, 0x33, 0x52, 0xcf, 0x0c, 0x65, 0x43, 0xe3, 0x7e, ++ 0x6f, 0xe6, 0x7c, 0x3e, 0xee, 0x5f, 0x56, 0xbe, 0x31, 0x90, 0x9e, 0x30, ++ 0x3e, 0x17, 0x7a, 0x62, 0x56, 0xe0, 0x11, 0x33, 0xf9, 0xe9, 0x42, 0x5f, ++ 0x48, 0xbd, 0x1c, 0x14, 0x75, 0x4d, 0x5d, 0xe2, 0x5c, 0x97, 0x77, 0x27, ++ 0x70, 0xbc, 0xbf, 0x5d, 0xb9, 0x98, 0xf4, 0xc5, 0xad, 0xac, 0x89, 0xf4, ++ 0xf9, 0x6d, 0x2c, 0x6c, 0x46, 0x7c, 0xf7, 0xe9, 0xff, 0x29, 0x3a, 0xbf, ++ 0x06, 0xe6, 0x99, 0x15, 0x34, 0xfa, 0x39, 0xb3, 0xe7, 0xc4, 0xfb, 0x3d, ++ 0x9c, 0x5f, 0xe5, 0xbc, 0xb7, 0x87, 0x8c, 0xcf, 0x67, 0x4a, 0xff, 0x75, ++ 0x8a, 0xd1, 0x7f, 0xad, 0xfe, 0xce, 0x17, 0x19, 0x64, 0x17, 0xb3, 0x9f, ++ 0xae, 0xbf, 0x34, 0x28, 0x56, 0xbf, 0xd4, 0x18, 0x57, 0xbf, 0xd4, 0x20, ++ 0xea, 0x97, 0x1a, 0xf7, 0x2d, 0x39, 0xe2, 0xd2, 0xd5, 0x2f, 0x35, 0x1e, ++ 0xe0, 0xf5, 0x4b, 0x0d, 0xfb, 0x2e, 0x57, 0xbf, 0xd4, 0x4b, 0xfb, 0x48, ++ 0xc7, 0xcd, 0x91, 0x83, 0xb8, 0xbf, 0x72, 0x7c, 0x31, 0x88, 0x04, 0xc0, ++ 0x79, 0x48, 0xd4, 0xbb, 0x1c, 0xc6, 0x7a, 0x97, 0xf2, 0x18, 0x5f, 0xa6, ++ 0xce, 0xe4, 0x79, 0x56, 0x60, 0x5f, 0xda, 0x2f, 0xc9, 0x73, 0xa4, 0xf8, ++ 0xd1, 0x5f, 0x6f, 0x33, 0x95, 0x53, 0x5e, 0xb6, 0x2d, 0x2d, 0xd5, 0xaf, ++ 0xcf, 0x83, 0xae, 0x59, 0x19, 0x9a, 0xa4, 0xcf, 0xc7, 0xca, 0x7a, 0xa5, ++ 0xe3, 0x03, 0xc4, 0xb7, 0xc3, 0x0b, 0xb8, 0xff, 0xba, 0x51, 0xe1, 0x79, ++ 0xf1, 0xf0, 0xed, 0x56, 0x8a, 0xe7, 0x5c, 0xc5, 0x41, 0xc3, 0x3e, 0x84, ++ 0x4b, 0x65, 0x27, 0x30, 0xbf, 0xf8, 0x11, 0xfa, 0x59, 0xa3, 0xa9, 0x3f, ++ 0xe5, 0x3d, 0x70, 0x1f, 0x6f, 0x24, 0x5c, 0x23, 0x0a, 0xaf, 0xb3, 0xef, ++ 0x7b, 0x1f, 0xbf, 0x3b, 0xc2, 0x7c, 0x64, 0x9c, 0x3e, 0x72, 0x65, 0xf9, ++ 0x69, 0x1f, 0xc0, 0x95, 0x7e, 0x35, 0xe5, 0xf3, 0xe7, 0x1c, 0x28, 0xdb, ++ 0x41, 0xfa, 0xc6, 0x6e, 0xf3, 0xe3, 0xef, 0x22, 0xca, 0xf1, 0xe7, 0x84, ++ 0xb6, 0x69, 0x58, 0x47, 0xd4, 0x78, 0x60, 0x9b, 0x36, 0xdf, 0x1e, 0xe3, ++ 0xbb, 0xca, 0x02, 0xc1, 0xaf, 0x29, 0x2c, 0x05, 0xf9, 0xb5, 0x2f, 0xbf, ++ 0xb7, 0x27, 0x89, 0xf2, 0x7b, 0x1f, 0xd9, 0x83, 0x93, 0x0a, 0xe0, 0xfd, ++ 0x3a, 0x4b, 0x74, 0x38, 0x33, 0xf2, 0x33, 0xdd, 0x1f, 0xc8, 0xae, 0x2d, ++ 0x12, 0xfc, 0x62, 0x9e, 0x10, 0xbc, 0x7d, 0x01, 0xc0, 0x73, 0xfe, 0x4d, ++ 0x0b, 0xcf, 0x73, 0xdd, 0xc7, 0x48, 0x5e, 0x9f, 0xdf, 0x9f, 0x41, 0xf9, ++ 0x49, 0x6d, 0x26, 0x23, 0xfb, 0xd2, 0x52, 0xc9, 0xf8, 0xef, 0xc0, 0x6c, ++ 0xe3, 0xdf, 0x0b, 0x9c, 0xce, 0xe0, 0xe7, 0x18, 0xb5, 0xcc, 0x60, 0x64, ++ 0x07, 0x7b, 0x32, 0x27, 0x13, 0xfd, 0x16, 0xb3, 0xc8, 0x51, 0x3c, 0xa7, ++ 0xa8, 0x66, 0xab, 0xd9, 0x70, 0x1e, 0xd1, 0x3d, 0x3b, 0x8c, 0xed, 0x3a, ++ 0xd6, 0x41, 0xf6, 0xa6, 0x6e, 0x57, 0x3f, 0x7e, 0x26, 0xbd, 0x25, 0xf5, ++ 0x63, 0x3d, 0xf3, 0xa9, 0x66, 0xdc, 0x07, 0xe8, 0x34, 0xbe, 0xcf, 0x06, ++ 0x1b, 0xf5, 0x63, 0x99, 0xb0, 0x07, 0x23, 0x67, 0x4d, 0x6c, 0xc6, 0x7a, ++ 0x8d, 0x91, 0xa6, 0xa0, 0x4a, 0xf6, 0xf7, 0x3e, 0x7f, 0xee, 0x4c, 0x8a, ++ 0x9f, 0xab, 0xb9, 0x1d, 0x65, 0x4f, 0xd3, 0xf9, 0x57, 0xe7, 0x53, 0x3f, ++ 0x51, 0xb9, 0x9c, 0x73, 0x7d, 0x3c, 0x3a, 0xa6, 0x35, 0x0d, 0x76, 0x69, ++ 0xb4, 0xf0, 0xaf, 0x6e, 0xd0, 0xf8, 0xef, 0x2a, 0x48, 0x7f, 0x69, 0xb4, ++ 0xf8, 0x9d, 0x85, 0xc3, 0xa6, 0x03, 0x2a, 0xfd, 0x76, 0x8f, 0x80, 0x67, ++ 0x94, 0x78, 0x4f, 0xfa, 0x69, 0x52, 0x5f, 0xf7, 0xd1, 0x73, 0x2c, 0xe8, ++ 0x52, 0xe0, 0xfb, 0x07, 0x25, 0x5d, 0x8b, 0x58, 0x11, 0xd2, 0x15, 0xc6, ++ 0x27, 0x79, 0x50, 0x30, 0xc0, 0xc9, 0xa4, 0xf1, 0xe9, 0xf7, 0x1a, 0xae, ++ 0x13, 0xf3, 0x01, 0xdd, 0xf9, 0xf9, 0x77, 0x26, 0x6b, 0x04, 0xf9, 0xa8, ++ 0x55, 0x69, 0x22, 0x3d, 0x6d, 0x65, 0x42, 0x5f, 0x2b, 0xa1, 0x66, 0x7c, ++ 0xf9, 0x17, 0xe1, 0x30, 0xe9, 0xed, 0x6b, 0x58, 0xd3, 0x2d, 0xf8, 0x7b, ++ 0x9f, 0xe3, 0xac, 0x5d, 0x29, 0xe4, 0x97, 0xda, 0x43, 0x6b, 0x0b, 0x5c, ++ 0x31, 0x3e, 0x69, 0x66, 0xd1, 0x82, 0xdd, 0x8a, 0x81, 0x5f, 0xe8, 0xf9, ++ 0xd9, 0x8c, 0x37, 0x12, 0xf2, 0x8b, 0xb4, 0x2b, 0xd1, 0x77, 0xb9, 0xbf, ++ 0x31, 0x8d, 0x81, 0x1f, 0x08, 0xf3, 0x06, 0x7e, 0xcf, 0xfd, 0xa0, 0xc3, ++ 0x0a, 0x8f, 0xf3, 0xc0, 0x1f, 0x3c, 0x8c, 0x71, 0xde, 0x1b, 0xa6, 0xa9, ++ 0xc4, 0x0f, 0x53, 0x61, 0x19, 0xd8, 0x6f, 0x92, 0xc3, 0x48, 0xe7, 0x1b, ++ 0x3d, 0xc6, 0xf6, 0x54, 0x5f, 0x3f, 0x3e, 0x50, 0xf5, 0xbf, 0x5f, 0x01, ++ 0x12, 0xa7, 0x21, 0x3c, 0xd3, 0x86, 0x1a, 0xfb, 0x05, 0xa4, 0x7e, 0x63, ++ 0x46, 0xfd, 0x56, 0xc8, 0xbe, 0xe0, 0x75, 0xe5, 0xab, 0x8f, 0x7e, 0x0b, ++ 0xe3, 0xff, 0x94, 0xe5, 0x6c, 0x28, 0xfa, 0x31, 0xe0, 0x39, 0xfa, 0x13, ++ 0xfd, 0x1e, 0xe9, 0x73, 0x05, 0x03, 0xee, 0x93, 0x3c, 0x57, 0x90, 0x60, ++ 0x9f, 0xe4, 0xbc, 0xc8, 0xf7, 0x5e, 0xcb, 0xba, 0x17, 0xee, 0x52, 0xfa, ++ 0xf3, 0x4d, 0xcf, 0x91, 0xe5, 0xaa, 0x47, 0xc7, 0x5f, 0x92, 0x9f, 0x5f, ++ 0x14, 0x75, 0x15, 0xca, 0x2f, 0xc5, 0x7e, 0xec, 0x28, 0x9e, 0xf7, 0x8b, ++ 0xd9, 0x79, 0xce, 0x37, 0x15, 0xa2, 0x75, 0x2d, 0xf2, 0x5d, 0x26, 0x7e, ++ 0x7f, 0x22, 0xf8, 0x45, 0xfc, 0xbe, 0xc8, 0xf5, 0xfb, 0x6c, 0x51, 0xfc, ++ 0xfd, 0x9c, 0x32, 0x31, 0xce, 0xb5, 0xc8, 0x3f, 0xe5, 0x31, 0xbb, 0x1e, ++ 0x35, 0xd9, 0x7d, 0x96, 0x22, 0xe4, 0x13, 0x7f, 0x9b, 0xaa, 0xf6, 0xf7, ++ 0xe7, 0xdd, 0x99, 0x3e, 0xe2, 0x97, 0x91, 0x26, 0x69, 0xe7, 0xfd, 0x59, ++ 0x8c, 0xec, 0x7c, 0x47, 0xb3, 0x86, 0xf0, 0xef, 0x1f, 0x93, 0x1b, 0xb2, ++ 0x1b, 0xf8, 0xe3, 0x1d, 0xae, 0x4f, 0x80, 0x3f, 0x28, 0x2f, 0xd5, 0xcf, ++ 0x3e, 0x1a, 0x9f, 0xc7, 0xf1, 0x8f, 0xa4, 0xe3, 0x31, 0xe1, 0x47, 0xdf, ++ 0xc8, 0x7c, 0x14, 0x47, 0x4c, 0x11, 0x7e, 0x74, 0xb4, 0x90, 0xf3, 0x4f, ++ 0x95, 0xfd, 0x56, 0x0d, 0xdf, 0x7f, 0xad, 0x88, 0xe7, 0x09, 0x26, 0xe2, ++ 0x06, 0x22, 0x7d, 0xef, 0x69, 0xb4, 0x8b, 0x55, 0x56, 0x23, 0x1f, 0xc4, ++ 0xf3, 0x17, 0xcc, 0x68, 0xd2, 0xcf, 0x1b, 0xcf, 0x6f, 0x03, 0xf1, 0xcd, ++ 0x20, 0xe4, 0x1b, 0x69, 0x17, 0xb3, 0x2e, 0xcf, 0x37, 0x9f, 0x0b, 0x3f, ++ 0x23, 0x01, 0xdf, 0x7c, 0x5e, 0x30, 0x7a, 0x60, 0xbe, 0x89, 0xe7, 0x17, ++ 0xa9, 0x57, 0x76, 0xdb, 0x1c, 0x55, 0x78, 0xa6, 0x70, 0x63, 0x8d, 0x42, ++ 0xfa, 0x78, 0xe4, 0x9b, 0x83, 0x9b, 0xb1, 0x7d, 0x45, 0x7d, 0x21, 0xd5, ++ 0xbd, 0xec, 0xce, 0xf0, 0x1f, 0xa2, 0xe7, 0x4d, 0xfc, 0xf9, 0xa8, 0xae, ++ 0x80, 0x8a, 0x75, 0x31, 0xc5, 0xcb, 0xc4, 0xf3, 0xc2, 0x60, 0x15, 0xb6, ++ 0x1b, 0x97, 0xf3, 0x7d, 0x89, 0xd1, 0xc7, 0x79, 0xdd, 0xcc, 0xe0, 0xfb, ++ 0xf8, 0xf3, 0xb2, 0x55, 0x4d, 0x87, 0xf0, 0xbb, 0xb8, 0xc6, 0x30, 0x7f, ++ 0xff, 0xc5, 0x4f, 0x5b, 0xe9, 0x7b, 0xa1, 0x48, 0xab, 0x78, 0xbf, 0xb2, ++ 0xbd, 0x0a, 0xdb, 0x8d, 0x6d, 0xfc, 0xfd, 0xd3, 0xb8, 0xbf, 0x34, 0x02, ++ 0xeb, 0xdd, 0x22, 0xcd, 0x78, 0x7f, 0xd8, 0xba, 0x42, 0x3f, 0x0f, 0x4b, ++ 0xb9, 0x5f, 0x3b, 0x5e, 0xf0, 0xe9, 0x6e, 0x65, 0xcf, 0x21, 0x7a, 0xaf, ++ 0x9d, 0xbf, 0xb7, 0xe8, 0xa8, 0x35, 0x99, 0x7e, 0x67, 0x50, 0xf8, 0xad, ++ 0x37, 0x88, 0x75, 0x8e, 0xdf, 0xca, 0xd7, 0xe9, 0xfc, 0xe0, 0x26, 0xfa, ++ 0xdd, 0xd1, 0x05, 0xbd, 0x61, 0xf2, 0x9f, 0x3e, 0x36, 0xd5, 0x55, 0x90, ++ 0xde, 0x19, 0x20, 0xfe, 0xac, 0x54, 0xda, 0xf3, 0xf0, 0x7a, 0x23, 0xea, ++ 0x13, 0x15, 0xe9, 0x07, 0x7c, 0x5d, 0xc4, 0xf7, 0x1f, 0xb7, 0xc3, 0x14, ++ 0x65, 0x83, 0x78, 0xfe, 0x42, 0xee, 0xdb, 0x61, 0x1d, 0x81, 0xbe, 0x6e, ++ 0xa0, 0x6c, 0x10, 0xb7, 0xfb, 0xb2, 0x9f, 0x3b, 0x93, 0x7f, 0xd7, 0xc5, ++ 0x1e, 0x4b, 0xa5, 0xbc, 0xaf, 0xdc, 0x57, 0x8c, 0x6e, 0x62, 0x0a, 0xca, ++ 0x19, 0xae, 0x51, 0xf8, 0x01, 0x09, 0xf7, 0x19, 0x6f, 0x2c, 0x6e, 0xa2, ++ 0xfd, 0xc5, 0x1b, 0x07, 0xc9, 0xfd, 0xc5, 0x6e, 0x0d, 0xcf, 0x75, 0x2f, ++ 0xbb, 0xf4, 0xe7, 0xc9, 0x89, 0xf2, 0x2b, 0x63, 0xc5, 0xbc, 0x9f, 0x88, ++ 0xba, 0x08, 0x79, 0xbf, 0x26, 0x52, 0x48, 0xbf, 0x23, 0xb6, 0x1b, 0x99, ++ 0x84, 0xbe, 0xc7, 0x7e, 0xf2, 0x37, 0xd4, 0x16, 0xe7, 0x94, 0x33, 0xf1, ++ 0x1d, 0xd8, 0xee, 0x42, 0xde, 0x9e, 0x3c, 0xe8, 0x89, 0x1f, 0xb6, 0xe5, ++ 0x01, 0x7e, 0x4d, 0x4d, 0x1a, 0x9e, 0xeb, 0xc6, 0x0a, 0x14, 0xfa, 0x0e, ++ 0xee, 0x5f, 0xba, 0x58, 0x34, 0x3d, 0xad, 0x3f, 0xfc, 0x37, 0x6a, 0x2c, ++ 0x6a, 0xe1, 0xdf, 0xb1, 0x11, 0xfc, 0x0b, 0x9b, 0x2d, 0xdb, 0xf9, 0xf7, ++ 0x88, 0x5c, 0x2f, 0xcd, 0x92, 0x6a, 0x67, 0xdc, 0x10, 0x92, 0xd3, 0x5b, ++ 0x05, 0x9d, 0x6e, 0x19, 0x24, 0xf2, 0x92, 0x23, 0xd9, 0x48, 0xd4, 0x37, ++ 0xb3, 0x04, 0xdd, 0x6e, 0xb3, 0x82, 0xdf, 0x4a, 0x7a, 0xad, 0xdd, 0x1c, ++ 0x27, 0xff, 0xb3, 0x07, 0xa1, 0xfd, 0xd8, 0x32, 0xa0, 0xff, 0x6c, 0x7c, ++ 0x1e, 0xa7, 0x1f, 0x6a, 0xc4, 0xbc, 0x0b, 0x85, 0xdf, 0xbc, 0x18, 0x7f, ++ 0xaf, 0x54, 0xc5, 0xf3, 0xe6, 0xb9, 0xff, 0xfc, 0xc9, 0x16, 0xee, 0x37, ++ 0xdf, 0xc3, 0x3a, 0x28, 0x8f, 0x78, 0xfe, 0x31, 0xee, 0x2f, 0xd6, 0xc3, ++ 0xf2, 0x90, 0x5f, 0xfa, 0xfd, 0xae, 0xd7, 0x4e, 0x63, 0xbb, 0xbe, 0x23, ++ 0xfe, 0x77, 0x64, 0xf9, 0xef, 0x10, 0xf6, 0xfb, 0x9d, 0xd6, 0x52, 0x9e, ++ 0x9f, 0x3d, 0xbf, 0xa5, 0xbe, 0x02, 0xf3, 0x73, 0x35, 0x9b, 0xdf, 0xa4, ++ 0x3c, 0x70, 0x8d, 0xd4, 0x17, 0x11, 0xa3, 0xbe, 0x00, 0x07, 0x83, 0xeb, ++ 0x8b, 0x4d, 0x57, 0x52, 0x5e, 0xc7, 0x64, 0xe5, 0xbf, 0xa3, 0x39, 0x12, ++ 0xf4, 0x05, 0xd6, 0x97, 0x8c, 0xc4, 0xba, 0x51, 0x18, 0x7f, 0xb8, 0x38, ++ 0x87, 0x67, 0x35, 0xbe, 0xc2, 0xcf, 0xdf, 0xf9, 0xee, 0x20, 0xb2, 0x37, ++ 0x53, 0xa8, 0xae, 0x94, 0xc6, 0x53, 0x69, 0x3f, 0xf7, 0xcd, 0x80, 0x2f, ++ 0x46, 0x1f, 0x69, 0x37, 0xe2, 0xf5, 0x45, 0x99, 0xcc, 0xd7, 0x0c, 0xce, ++ 0xa4, 0x7c, 0x96, 0xd4, 0x1f, 0x65, 0x8c, 0xdb, 0x8b, 0x78, 0xff, 0xe8, ++ 0x11, 0x49, 0x4f, 0x11, 0xf7, 0x48, 0x3f, 0xa3, 0x0c, 0xfd, 0x0c, 0xe0, ++ 0x8f, 0x2e, 0x93, 0x3d, 0x62, 0x32, 0xe9, 0xfd, 0x8a, 0x08, 0xc9, 0x21, ++ 0xc4, 0x8d, 0xd3, 0x6c, 0x45, 0xc8, 0x3a, 0xdc, 0x9f, 0x1a, 0x79, 0xfb, ++ 0x28, 0xab, 0xa0, 0x3f, 0x8b, 0xa3, 0xef, 0x26, 0xa2, 0xef, 0xc0, 0xf1, ++ 0x93, 0xf1, 0x79, 0x1c, 0xfd, 0x65, 0xfc, 0x52, 0x21, 0xe8, 0x7f, 0x3b, ++ 0x0b, 0x50, 0x5c, 0xb4, 0x57, 0xd0, 0xff, 0xed, 0x77, 0xf9, 0xef, 0xbd, ++ 0xcd, 0xb2, 0x2f, 0x23, 0xfe, 0x7b, 0xf7, 0xf7, 0xdc, 0xdf, 0x94, 0xf1, ++ 0xd3, 0xd7, 0x8f, 0x9b, 0x02, 0xea, 0x3f, 0x12, 0x37, 0xf5, 0xd1, 0xdb, ++ 0x06, 0x7e, 0x64, 0x0a, 0xfe, 0x1e, 0xc6, 0xd4, 0x21, 0x8f, 0xe2, 0x7e, ++ 0x78, 0xa7, 0x8d, 0xff, 0xae, 0xb5, 0xc2, 0xe9, 0xeb, 0xbe, 0xfd, 0x78, ++ 0x81, 0x3e, 0xaf, 0xf8, 0x36, 0xfe, 0x7e, 0x8b, 0xee, 0x77, 0x25, 0x9a, ++ 0xa7, 0x26, 0x59, 0x71, 0x1f, 0xb0, 0xd9, 0xcc, 0xe3, 0x8a, 0x99, 0xd3, ++ 0xde, 0xab, 0x98, 0xab, 0xd3, 0x1b, 0x85, 0x59, 0x95, 0x2f, 0x0d, 0x1a, ++ 0x8d, 0xf4, 0xe8, 0xfa, 0xf6, 0x1f, 0x30, 0xce, 0x78, 0x5d, 0x9c, 0xe3, ++ 0x7a, 0xc0, 0x45, 0xf4, 0xbe, 0xd0, 0xc5, 0xef, 0x5f, 0xd8, 0x7a, 0x95, ++ 0x3f, 0x0c, 0xb7, 0xcf, 0x98, 0xc5, 0x79, 0x46, 0x4a, 0xd3, 0x42, 0x2c, ++ 0x81, 0x92, 0x70, 0x2c, 0x14, 0xbf, 0xf7, 0xf2, 0x59, 0xca, 0x2b, 0xb4, ++ 0x7f, 0x3c, 0x23, 0x23, 0x74, 0x0c, 0xe9, 0x70, 0xcf, 0x1b, 0x7b, 0x29, ++ 0x5f, 0x59, 0xc7, 0xba, 0xf8, 0xef, 0x02, 0x8b, 0x71, 0x07, 0xce, 0x4b, ++ 0x86, 0x49, 0x7f, 0x59, 0x5e, 0xe5, 0xf6, 0xb0, 0x57, 0x49, 0xf6, 0xf3, ++ 0xef, 0x86, 0xc3, 0x25, 0xfa, 0xfd, 0xa4, 0x63, 0x3e, 0xae, 0x67, 0xc7, ++ 0xe5, 0x07, 0x8f, 0xe3, 0x3c, 0xd2, 0xde, 0xc5, 0xd7, 0x15, 0x9c, 0x5c, ++ 0x72, 0x23, 0x7d, 0xd7, 0xf9, 0x17, 0x16, 0x48, 0xc7, 0xfd, 0x4c, 0x45, ++ 0xe3, 0xbf, 0xdf, 0x1c, 0x3f, 0x2f, 0xd6, 0x11, 0xb4, 0xe8, 0xf2, 0xd9, ++ 0x27, 0x6d, 0x89, 0xbf, 0x33, 0x3d, 0x35, 0x88, 0xe7, 0x03, 0x8a, 0x10, ++ 0x47, 0x58, 0x07, 0x91, 0x1b, 0xf8, 0x00, 0xf1, 0xf7, 0x89, 0x88, 0x03, ++ 0x3f, 0x11, 0xfb, 0x5a, 0x9f, 0xa4, 0xf1, 0x7d, 0xae, 0x9e, 0xbe, 0xfe, ++ 0xfc, 0xaa, 0xf9, 0x84, 0x7e, 0x16, 0xfb, 0x60, 0x9f, 0x64, 0x1a, 0xe3, ++ 0x47, 0xd9, 0xcf, 0x22, 0xae, 0x1f, 0xae, 0xb0, 0x06, 0x5b, 0x74, 0xf4, ++ 0xf4, 0x6d, 0x4a, 0x6a, 0x8a, 0x50, 0x1d, 0x95, 0xa8, 0x1b, 0x59, 0xc6, ++ 0x78, 0xbc, 0xb4, 0x3f, 0xc3, 0x70, 0x0e, 0x41, 0x86, 0xaf, 0xb2, 0xc8, ++ 0x87, 0xfb, 0x14, 0xc5, 0x01, 0x0b, 0xfe, 0xbe, 0x77, 0xef, 0x7e, 0x6e, ++ 0x87, 0x71, 0xff, 0x19, 0xf7, 0x87, 0x23, 0x39, 0xa1, 0x2f, 0x10, 0xee, ++ 0x06, 0x1f, 0x0b, 0xe0, 0xfe, 0x2a, 0xf3, 0x75, 0x5b, 0x6e, 0xc1, 0x7d, ++ 0x46, 0xf1, 0x7d, 0xeb, 0x79, 0xc1, 0x2f, 0xe7, 0x6d, 0xfc, 0x2a, 0xe1, ++ 0xfa, 0x6f, 0xc3, 0xaf, 0xb7, 0x2e, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd5, 0x7d, ++ 0x09, 0x78, 0x54, 0xd5, 0xd9, 0xf0, 0xb9, 0x73, 0x27, 0x33, 0x13, 0x32, ++ 0x13, 0x26, 0x1b, 0x84, 0x2d, 0x4e, 0x16, 0xb2, 0x90, 0x6d, 0xb2, 0x61, ++ 0xd8, 0x27, 0x09, 0x20, 0xb8, 0x60, 0xc2, 0x52, 0x51, 0xb6, 0x61, 0xdf, ++ 0xb2, 0x09, 0xd8, 0x8f, 0xb6, 0xf6, 0xcf, 0x60, 0x10, 0x90, 0x47, 0x5b, ++ 0xa8, 0xb6, 0xc5, 0xcf, 0xe5, 0x19, 0x10, 0xa8, 0x56, 0x2c, 0x11, 0x83, ++ 0x46, 0x0d, 0x1a, 0x94, 0x22, 0x58, 0x5b, 0x47, 0x04, 0x45, 0x4b, 0x75, ++ 0xa4, 0xca, 0x22, 0x21, 0x89, 0x60, 0x2d, 0xf6, 0xa3, 0xe5, 0x7f, 0xdf, ++ 0xf7, 0x9c, 0x93, 0x99, 0x7b, 0x33, 0x61, 0xfb, 0xd5, 0xe7, 0xff, 0xc8, ++ 0xf3, 0x70, 0x72, 0xee, 0x3d, 0xf7, 0x2c, 0xef, 0x79, 0xf7, 0xf3, 0xbe, ++ 0x27, 0x51, 0x8e, 0x8a, 0x24, 0x47, 0x1c, 0x63, 0xed, 0x77, 0xfb, 0x4d, ++ 0x4c, 0x65, 0x2c, 0x4a, 0xd6, 0x2b, 0xa0, 0x9e, 0x8c, 0xf5, 0xf2, 0x24, ++ 0x47, 0x11, 0xd4, 0xa7, 0xc8, 0xf7, 0xa2, 0xfe, 0x10, 0xaf, 0xc3, 0x3f, ++ 0x03, 0xeb, 0xc5, 0xd8, 0x1c, 0xfc, 0xcd, 0x01, 0xa5, 0xc5, 0xda, 0xa2, ++ 0xe6, 0xc0, 0xef, 0xeb, 0xc2, 0x5a, 0xfd, 0xe9, 0xf4, 0x9e, 0x5d, 0x4a, ++ 0x62, 0x4c, 0x51, 0x99, 0x87, 0x45, 0x43, 0x25, 0x9d, 0x39, 0xca, 0x6d, ++ 0xf8, 0x74, 0xb8, 0xfd, 0x44, 0x26, 0x14, 0xe1, 0xf0, 0x1e, 0xfa, 0xa9, ++ 0x31, 0x59, 0xd7, 0x29, 0xb9, 0xd4, 0xbc, 0xdc, 0x02, 0xfd, 0xcd, 0x10, ++ 0xfd, 0xb1, 0xfe, 0x36, 0x23, 0xf6, 0x3f, 0x9d, 0x77, 0xc5, 0x66, 0x34, ++ 0x1f, 0xfc, 0x56, 0x89, 0x64, 0x6c, 0xa6, 0x85, 0xad, 0xe9, 0x07, 0xef, ++ 0x67, 0x35, 0xf7, 0x36, 0xc1, 0x0c, 0xd8, 0xa2, 0x48, 0x4f, 0xaa, 0x3d, ++ 0x0b, 0x5b, 0x8c, 0xb6, 0x9f, 0x80, 0x71, 0x15, 0x4f, 0x84, 0x7a, 0x29, ++ 0x02, 0xfa, 0xc6, 0x7f, 0xa3, 0xba, 0x96, 0x8c, 0x19, 0xd9, 0x09, 0x39, ++ 0x3f, 0x5a, 0x87, 0x87, 0x31, 0x5c, 0xf7, 0x00, 0x1f, 0xad, 0x6b, 0x7d, ++ 0x49, 0x47, 0xc2, 0x7f, 0x17, 0x32, 0xd6, 0xb1, 0xc7, 0x6c, 0xdf, 0x02, ++ 0xe3, 0x54, 0x35, 0xbf, 0x75, 0x54, 0x81, 0x75, 0x55, 0xc9, 0xf5, 0x35, ++ 0x6a, 0xd7, 0x97, 0xeb, 0x50, 0xe8, 0x7b, 0xc6, 0x2c, 0xde, 0xcf, 0x2d, ++ 0x8c, 0xdd, 0xce, 0x14, 0xd6, 0x13, 0xfa, 0x69, 0xb2, 0xba, 0x73, 0x11, ++ 0x5e, 0x55, 0x16, 0x3f, 0xcd, 0x13, 0x7a, 0x34, 0x95, 0x67, 0xc3, 0x68, ++ 0x6b, 0x87, 0x47, 0xd1, 0xfa, 0x7b, 0xc3, 0xf7, 0x30, 0x9f, 0x17, 0xeb, ++ 0x5c, 0xec, 0xef, 0x61, 0x01, 0x78, 0x2e, 0xb3, 0xf3, 0xf5, 0x8f, 0x51, ++ 0x2b, 0xcb, 0x4c, 0xb1, 0x8c, 0x9d, 0x9b, 0xc7, 0xec, 0x66, 0x78, 0xb4, ++ 0xec, 0xe0, 0xdc, 0x7a, 0x0b, 0xd4, 0x97, 0x3d, 0xc0, 0xec, 0x7c, 0x74, ++ 0x97, 0x81, 0x0d, 0x86, 0xfe, 0x05, 0xbc, 0xba, 0x9b, 0x5f, 0x5c, 0xb9, ++ 0x81, 0x39, 0x2c, 0xa2, 0x8e, 0xc3, 0x4e, 0xed, 0xc1, 0x1c, 0xe9, 0x81, ++ 0x7a, 0x1f, 0x77, 0xb4, 0xa6, 0x0e, 0xfd, 0x32, 0x9c, 0xc7, 0x52, 0xd1, ++ 0x6f, 0xbf, 0x45, 0x7d, 0x35, 0xdf, 0x0f, 0xa8, 0x4d, 0xd2, 0xb4, 0xbf, ++ 0x61, 0xe5, 0x20, 0xcd, 0xfb, 0x44, 0x4f, 0xbe, 0xa6, 0x9e, 0xbc, 0x6e, ++ 0xa8, 0xa6, 0xfd, 0xc0, 0x0d, 0xa5, 0x9a, 0x7a, 0xda, 0xa6, 0x9b, 0x35, ++ 0xed, 0xf3, 0x58, 0x52, 0x4f, 0x06, 0xf0, 0xaf, 0x39, 0xa0, 0x32, 0x2f, ++ 0x80, 0x36, 0xc3, 0x3b, 0x51, 0xf3, 0x3e, 0xf3, 0xe9, 0xbb, 0x34, 0xdf, ++ 0x9f, 0x64, 0xb5, 0xbf, 0x19, 0x0e, 0xed, 0x1a, 0xc3, 0x23, 0x73, 0x18, ++ 0xe0, 0x51, 0x7d, 0x78, 0xe4, 0x16, 0x2c, 0x99, 0xc7, 0xe5, 0xcb, 0x02, ++ 0xf8, 0xcc, 0x13, 0xeb, 0xc8, 0x6e, 0x98, 0xa3, 0xe9, 0xe7, 0x4c, 0xe4, ++ 0xd8, 0x03, 0xb8, 0xaf, 0xf3, 0x7c, 0x0b, 0x6e, 0x65, 0x80, 0x57, 0xb9, ++ 0x4d, 0x4b, 0x34, 0xfd, 0x2e, 0x55, 0x2b, 0xf9, 0xbe, 0x6d, 0x08, 0x3b, ++ 0xee, 0x87, 0xef, 0x6a, 0xe1, 0x07, 0xe1, 0x99, 0xcf, 0x3a, 0xf6, 0xf7, ++ 0x83, 0xf9, 0x55, 0x7b, 0x15, 0x67, 0x0b, 0xbc, 0x5e, 0xb8, 0x89, 0xbf, ++ 0x97, 0xdf, 0x2d, 0x6e, 0xda, 0x4c, 0xdf, 0x2d, 0xf6, 0x6a, 0x9f, 0x2f, ++ 0x7d, 0x5a, 0x5b, 0xf7, 0x94, 0xb2, 0xf4, 0x5a, 0x2b, 0x63, 0xcb, 0x1d, ++ 0xb6, 0x58, 0xc2, 0x87, 0xbe, 0xac, 0xef, 0xa5, 0x20, 0xba, 0x0a, 0xe0, ++ 0x01, 0x34, 0x82, 0xf1, 0xce, 0x3d, 0xae, 0x7a, 0xcd, 0x89, 0x08, 0x9f, ++ 0xd4, 0xdf, 0x0e, 0x27, 0xf8, 0x84, 0x31, 0xaf, 0xa3, 0xeb, 0x7e, 0x9d, ++ 0x63, 0xcc, 0xd9, 0x82, 0xed, 0x77, 0xd8, 0x9c, 0x1e, 0xa8, 0x2f, 0x3c, ++ 0x38, 0x97, 0xe6, 0x63, 0x8e, 0xd7, 0xe2, 0x41, 0xb8, 0x43, 0x8b, 0x07, ++ 0x11, 0xe9, 0x5a, 0x3c, 0xb0, 0x39, 0xb5, 0xfb, 0xde, 0xb3, 0x58, 0xbb, ++ 0xef, 0x7a, 0xf8, 0x46, 0xb9, 0x06, 0x5d, 0x16, 0xbe, 0x31, 0xe3, 0xb4, ++ 0x78, 0x21, 0xe1, 0x5a, 0x0c, 0x3f, 0xdf, 0x25, 0x5c, 0x9f, 0xd0, 0xc1, ++ 0xb3, 0x60, 0x9f, 0xab, 0xde, 0x4a, 0x70, 0x62, 0x93, 0x2d, 0x83, 0x11, ++ 0x7e, 0x7c, 0xbe, 0x66, 0x56, 0xae, 0x22, 0x9f, 0x63, 0xb1, 0xc0, 0x67, ++ 0xe0, 0xb9, 0x93, 0x77, 0xc1, 0xce, 0xda, 0xad, 0x1e, 0x03, 0xe0, 0xcf, ++ 0x73, 0x0e, 0xc5, 0x78, 0xc2, 0x12, 0xe8, 0x27, 0xcf, 0xd8, 0xb2, 0x17, ++ 0xd7, 0xb3, 0x46, 0xf1, 0x30, 0xfc, 0x2e, 0x9c, 0x79, 0xe3, 0x91, 0x5f, ++ 0xd4, 0x17, 0xb7, 0x24, 0xb4, 0xc0, 0xbe, 0xe4, 0x5b, 0x6a, 0x71, 0xe7, ++ 0xd8, 0x17, 0xd6, 0xf2, 0xe7, 0x91, 0xee, 0x2b, 0x4d, 0x2d, 0x39, 0xf8, ++ 0x5e, 0xf6, 0xf7, 0x85, 0xd5, 0x4d, 0xcf, 0x5b, 0x95, 0x77, 0x16, 0x30, ++ 0x58, 0x2f, 0x33, 0xb6, 0xe4, 0x10, 0x3f, 0xb4, 0x30, 0x1a, 0x5f, 0xc2, ++ 0x71, 0x70, 0x0f, 0x8e, 0xc7, 0x4b, 0x59, 0x39, 0xf1, 0xe1, 0x17, 0x05, ++ 0x3e, 0x7f, 0xfe, 0xd1, 0x22, 0x82, 0xe3, 0x02, 0x56, 0xbb, 0xdf, 0x05, ++ 0xe3, 0x9d, 0xf9, 0x98, 0xc3, 0x77, 0x31, 0xf3, 0x50, 0xbb, 0xf9, 0x1b, ++ 0xb4, 0x70, 0xe8, 0x02, 0x3f, 0x1d, 0xdc, 0x00, 0x6d, 0x1c, 0x38, 0x6e, ++ 0x8d, 0x58, 0xf7, 0x12, 0xc6, 0xbc, 0x86, 0xe4, 0xae, 0xf0, 0x54, 0x9a, ++ 0x95, 0x16, 0x5b, 0x0e, 0x82, 0xa1, 0x59, 0xf2, 0x6d, 0xf7, 0xa5, 0x02, ++ 0x8e, 0x76, 0x08, 0xcf, 0xa1, 0xac, 0xf3, 0x1f, 0xf1, 0x6f, 0x09, 0x5f, ++ 0x68, 0xa0, 0x04, 0xf3, 0x27, 0x1c, 0xcf, 0xde, 0x2b, 0x30, 0x9e, 0x84, ++ 0xa7, 0xe4, 0x5b, 0x72, 0x1c, 0x33, 0xab, 0x55, 0xe3, 0x91, 0x0e, 0x74, ++ 0x7c, 0x8c, 0xa5, 0x6b, 0xf7, 0x09, 0x36, 0x8e, 0x61, 0x7d, 0xb0, 0xa8, ++ 0xbd, 0x02, 0x3c, 0xd4, 0x12, 0x2d, 0x06, 0xeb, 0x85, 0xfd, 0xe0, 0xe4, ++ 0x19, 0xbb, 0x51, 0x8c, 0xc3, 0xe6, 0xb8, 0xe3, 0x11, 0x4e, 0x16, 0xb6, ++ 0x81, 0xf6, 0x6f, 0xbd, 0xe2, 0x5c, 0xa7, 0xc2, 0x38, 0xea, 0x0d, 0x89, ++ 0xf5, 0x0c, 0xe0, 0x59, 0x60, 0x77, 0xa9, 0xb8, 0x5f, 0x45, 0xcc, 0x37, ++ 0x0d, 0x9f, 0x17, 0x5b, 0x1a, 0xea, 0x8d, 0xd0, 0xd5, 0x0d, 0xec, 0xa2, ++ 0xfd, 0x04, 0xc8, 0x13, 0xd6, 0x7b, 0x7b, 0xd5, 0xa5, 0x98, 0xc0, 0x3a, ++ 0x14, 0xb9, 0x2e, 0x8f, 0xc2, 0x8c, 0x50, 0x1f, 0x21, 0xea, 0x93, 0x3c, ++ 0x8a, 0xff, 0xb1, 0x44, 0x5c, 0xcf, 0x5b, 0xdf, 0xe2, 0xb8, 0x23, 0x44, ++ 0x39, 0x09, 0x4b, 0xd8, 0x3f, 0x58, 0xe6, 0xdf, 0xff, 0x0a, 0x1f, 0x0f, ++ 0x57, 0x1c, 0x03, 0x70, 0xbc, 0x89, 0xaf, 0xa4, 0xc5, 0x21, 0xde, 0xac, ++ 0x51, 0x6a, 0x99, 0x6e, 0x7e, 0x47, 0x5f, 0x85, 0x7e, 0x54, 0x43, 0x47, ++ 0x0c, 0xb6, 0x1b, 0xc3, 0xdc, 0x46, 0x2e, 0x77, 0xbd, 0x38, 0x49, 0xf6, ++ 0x96, 0xe2, 0xa7, 0x79, 0xff, 0x88, 0xb9, 0xee, 0xc7, 0x52, 0xca, 0xb7, ++ 0x6a, 0xd6, 0x30, 0x76, 0x1a, 0xd4, 0xab, 0x1b, 0x41, 0x6e, 0x45, 0x62, ++ 0x19, 0xde, 0xa2, 0x42, 0xc9, 0x9a, 0x74, 0xf0, 0x64, 0xc6, 0xe3, 0x58, ++ 0x37, 0xc0, 0x4a, 0x10, 0xbf, 0x97, 0x62, 0x5d, 0xee, 0x7b, 0x62, 0xe0, ++ 0x3d, 0xd5, 0xd5, 0xae, 0xf5, 0x55, 0xb0, 0x86, 0x3e, 0xd1, 0x57, 0x96, ++ 0xef, 0x1b, 0x13, 0xed, 0x34, 0x5f, 0x90, 0x7f, 0xa9, 0xfc, 0x3d, 0xe7, ++ 0x6f, 0x8b, 0x04, 0xbc, 0x16, 0x49, 0xb9, 0xe5, 0xd5, 0xce, 0xef, 0x18, ++ 0xfe, 0xd2, 0x87, 0xb1, 0x3f, 0x9a, 0x00, 0x26, 0xf9, 0x48, 0x47, 0x16, ++ 0x8f, 0xa1, 0x27, 0xa8, 0x05, 0x89, 0x40, 0x97, 0xd8, 0x2e, 0x87, 0xe5, ++ 0x60, 0xff, 0x40, 0x57, 0x8e, 0x44, 0xe8, 0xbf, 0x57, 0x34, 0xd0, 0xa1, ++ 0x12, 0x4c, 0x77, 0xbc, 0xbd, 0x7c, 0xdf, 0x85, 0xee, 0x74, 0xeb, 0x67, ++ 0xb5, 0xb0, 0xb9, 0x43, 0x00, 0xde, 0xb6, 0x42, 0x93, 0x1b, 0x58, 0xee, ++ 0xdc, 0xe0, 0xf5, 0x5e, 0x05, 0x3c, 0xa4, 0x1e, 0x31, 0x0f, 0xdb, 0x42, ++ 0xf9, 0x2f, 0x87, 0x83, 0xd6, 0x5d, 0xd5, 0xe3, 0xd8, 0x07, 0x2e, 0x7c, ++ 0x5d, 0xe8, 0x4b, 0x40, 0xf9, 0x2f, 0xf7, 0xa9, 0xc6, 0xc4, 0xdc, 0x0d, ++ 0xa8, 0xb7, 0x34, 0xc4, 0xd1, 0xb8, 0xf2, 0xf9, 0xe8, 0x44, 0x83, 0xd0, ++ 0x27, 0x00, 0x1f, 0xaf, 0x02, 0x4e, 0xdd, 0xef, 0x43, 0x0a, 0xe9, 0x43, ++ 0x72, 0x1f, 0xae, 0x56, 0x1f, 0xca, 0x45, 0x1c, 0x2f, 0x0a, 0xc0, 0xef, ++ 0xe6, 0xae, 0xf0, 0x9e, 0x90, 0x18, 0x17, 0x04, 0x4f, 0x06, 0xf0, 0xcc, ++ 0xd6, 0xc0, 0x5b, 0xfb, 0x5e, 0xc0, 0x5b, 0xc2, 0xe3, 0x6c, 0x91, 0x6f, ++ 0x3b, 0xee, 0x93, 0x6a, 0x3b, 0xdc, 0x0b, 0xe1, 0xbc, 0x32, 0xbe, 0x7c, ++ 0x12, 0xee, 0xcf, 0x80, 0xa3, 0xfe, 0x13, 0x8a, 0x21, 0x30, 0xaf, 0x31, ++ 0x6a, 0xeb, 0xf6, 0xc7, 0x50, 0x8e, 0x35, 0xa9, 0x4e, 0xa4, 0xe5, 0xea, ++ 0x11, 0x9c, 0xcf, 0x55, 0xbf, 0xac, 0x12, 0xe9, 0xb7, 0x35, 0x9b, 0xbd, ++ 0x0a, 0xf4, 0xb3, 0xa8, 0xe9, 0x4d, 0xd2, 0xcf, 0x5a, 0xeb, 0x80, 0x91, ++ 0x86, 0x75, 0x0f, 0xa7, 0xce, 0xf5, 0xea, 0xe0, 0xdd, 0x15, 0x1e, 0x7c, ++ 0x1f, 0xe5, 0x7a, 0x96, 0xea, 0xd6, 0x3f, 0xf3, 0xbd, 0xf3, 0xb6, 0x19, ++ 0x0e, 0x5a, 0x67, 0xcd, 0x15, 0xe0, 0x50, 0x13, 0x0a, 0x0e, 0x67, 0x7e, ++ 0xcc, 0x66, 0x95, 0x67, 0xe1, 0xfa, 0xb2, 0x7a, 0xfa, 0xb3, 0x02, 0xe3, ++ 0x66, 0xe1, 0xbe, 0x03, 0x1c, 0x7e, 0x1e, 0x59, 0x7e, 0x0f, 0xc2, 0xa3, ++ 0xf0, 0xfd, 0xfe, 0x91, 0x08, 0x9f, 0x31, 0x6a, 0xf3, 0xfe, 0xbe, 0x08, ++ 0x87, 0x15, 0x8a, 0xd3, 0x0c, 0xe3, 0x8e, 0x32, 0x33, 0x4f, 0x38, 0xec, ++ 0x73, 0x9f, 0x95, 0x65, 0xec, 0xef, 0xb0, 0x57, 0xc5, 0xfe, 0x5a, 0xa7, ++ 0x1d, 0xe0, 0x11, 0xdf, 0xdf, 0xea, 0x54, 0x01, 0x1e, 0x69, 0xf7, 0xa8, ++ 0xe5, 0x5e, 0xe8, 0xf7, 0x6f, 0x2b, 0x96, 0x47, 0xcf, 0x85, 0xf2, 0xcb, ++ 0x3a, 0x18, 0x7a, 0x20, 0x3c, 0x57, 0x0c, 0xe5, 0x84, 0x6f, 0x6c, 0xd7, ++ 0x27, 0x3f, 0x85, 0xfe, 0xd2, 0x6c, 0xd3, 0x9d, 0xeb, 0xa1, 0x36, 0xc3, ++ 0x0c, 0xf3, 0x81, 0x71, 0x12, 0x7f, 0x1c, 0xd1, 0x92, 0x0c, 0x7c, 0xe2, ++ 0x75, 0x13, 0xb3, 0x20, 0xbd, 0x85, 0x25, 0xd5, 0x1e, 0x1a, 0x0f, 0xfd, ++ 0x76, 0x44, 0xa9, 0x4e, 0xd4, 0x83, 0x63, 0x55, 0x36, 0x1a, 0xf1, 0x4b, ++ 0xc2, 0x39, 0x36, 0x82, 0xaf, 0x43, 0x3e, 0x2f, 0x79, 0x62, 0xab, 0xe2, ++ 0xb7, 0x06, 0x9e, 0x8f, 0xaa, 0xef, 0x28, 0x58, 0x06, 0x65, 0x45, 0x22, ++ 0xdf, 0x77, 0xb9, 0xce, 0x51, 0x65, 0x1d, 0x05, 0xa8, 0xf7, 0x48, 0x38, ++ 0xc7, 0x26, 0xf3, 0xf6, 0xcc, 0xd8, 0x91, 0x30, 0x31, 0x88, 0x3e, 0x72, ++ 0x05, 0x3c, 0x8e, 0xa1, 0x5e, 0x07, 0xf0, 0xac, 0x8e, 0x33, 0xad, 0x41, ++ 0x39, 0xd8, 0x66, 0xe1, 0x75, 0xe6, 0x4a, 0x27, 0xfd, 0x77, 0x85, 0x85, ++ 0xd3, 0xc7, 0xb1, 0xf0, 0x04, 0x2f, 0xca, 0xc7, 0x63, 0xb0, 0x56, 0x1f, ++ 0xf5, 0xd7, 0x62, 0x63, 0xd6, 0x20, 0xbe, 0x18, 0xee, 0xea, 0x79, 0x23, ++ 0xac, 0x9b, 0xbd, 0xa7, 0xb2, 0x6d, 0x50, 0x7c, 0x6d, 0x77, 0xf5, 0x8c, ++ 0x22, 0x78, 0xd8, 0x79, 0x3f, 0x42, 0xdf, 0x6a, 0x63, 0x6c, 0x1c, 0xc2, ++ 0x69, 0xc5, 0xf8, 0xd2, 0xde, 0xd1, 0x50, 0xc6, 0xd5, 0x73, 0xf8, 0xe8, ++ 0xf1, 0xa4, 0x31, 0x91, 0xeb, 0xfd, 0x95, 0x17, 0x80, 0xf0, 0x0a, 0x02, ++ 0xcf, 0x2b, 0x8d, 0x2d, 0x26, 0xbb, 0x15, 0x9f, 0x9b, 0x34, 0xcf, 0x8f, ++ 0x03, 0xdc, 0x3c, 0xe6, 0x40, 0x7d, 0xce, 0xa9, 0x94, 0xb1, 0x8c, 0xf8, ++ 0x8c, 0x73, 0x0d, 0xb6, 0x9f, 0xbb, 0x2e, 0x82, 0x79, 0x82, 0xf4, 0xab, ++ 0x46, 0x31, 0x8f, 0xee, 0xe0, 0x52, 0x1d, 0x65, 0x64, 0x46, 0x80, 0x47, ++ 0xb5, 0xc2, 0xca, 0x2f, 0xd7, 0xee, 0xd5, 0xff, 0xa8, 0x04, 0x5f, 0xfd, ++ 0xfc, 0xff, 0x2a, 0xf8, 0x4c, 0x5c, 0x59, 0xe8, 0xf5, 0x1d, 0x12, 0xeb, ++ 0x2b, 0x5b, 0x7b, 0xeb, 0x6f, 0x51, 0xff, 0xac, 0xf6, 0x85, 0x31, 0x33, ++ 0x3c, 0x5a, 0xf1, 0x72, 0x49, 0x6f, 0x16, 0xa2, 0xbf, 0x4e, 0x38, 0x5f, ++ 0x18, 0xc6, 0xbc, 0x31, 0x41, 0x75, 0xa3, 0x9f, 0xe0, 0x51, 0x7d, 0x61, ++ 0x24, 0x3d, 0x2f, 0x5b, 0xdb, 0x6a, 0x42, 0xbc, 0xc7, 0x7e, 0x1c, 0xf0, ++ 0x7c, 0x45, 0xb8, 0xab, 0xb7, 0xf3, 0x32, 0x70, 0xce, 0xc5, 0x79, 0xe0, ++ 0x7a, 0x2f, 0x44, 0x31, 0x4f, 0x4c, 0xf0, 0x73, 0x8e, 0x57, 0x81, 0xfe, ++ 0x63, 0xe9, 0xfd, 0xef, 0x11, 0x80, 0x80, 0xb7, 0x9e, 0x26, 0xd5, 0xbb, ++ 0x0d, 0x3e, 0xfd, 0xfd, 0x01, 0xc3, 0xb8, 0x2d, 0xa1, 0xe6, 0x2b, 0xd6, ++ 0x3f, 0x28, 0xce, 0x48, 0xf4, 0x92, 0xd9, 0xc2, 0x5c, 0x9b, 0x43, 0x8c, ++ 0x2f, 0xdb, 0xf5, 0x8a, 0x06, 0x7e, 0x6d, 0xe5, 0x70, 0xae, 0xc8, 0xee, ++ 0x3a, 0xbf, 0xc6, 0x52, 0xff, 0x4c, 0x9c, 0xff, 0x8d, 0xa3, 0x99, 0x2b, ++ 0xd4, 0x78, 0xe7, 0x44, 0x3b, 0x39, 0xef, 0xc6, 0x68, 0xff, 0x02, 0x81, ++ 0xf7, 0xa9, 0x15, 0xb6, 0xa0, 0xba, 0x5d, 0xbb, 0x8f, 0x3d, 0xc5, 0xf8, ++ 0x8d, 0x37, 0xfb, 0x13, 0xb0, 0xff, 0xb6, 0xf1, 0x6c, 0x6a, 0x43, 0x88, ++ 0xfe, 0xe5, 0x7e, 0xcf, 0x88, 0x77, 0x67, 0x22, 0xdf, 0xa9, 0xbc, 0x03, ++ 0x1a, 0x03, 0x7e, 0x0c, 0x36, 0xd6, 0x2a, 0xf6, 0x20, 0x7a, 0xeb, 0x6e, ++ 0xbf, 0x03, 0x70, 0x06, 0xbb, 0xab, 0xe0, 0x72, 0x70, 0x36, 0xd1, 0x7b, ++ 0xd9, 0xdf, 0xe9, 0x43, 0x82, 0x1e, 0x99, 0xcb, 0xaa, 0x00, 0x1d, 0xcd, ++ 0x16, 0xf2, 0x6a, 0xf6, 0xd6, 0xa5, 0xb7, 0x02, 0xcf, 0xec, 0xb4, 0x5f, ++ 0x4e, 0x6f, 0x02, 0xfb, 0x05, 0x86, 0x38, 0xcd, 0x6a, 0xdf, 0xb4, 0x61, ++ 0x7d, 0x83, 0x42, 0xf6, 0xc9, 0x1c, 0x37, 0xc8, 0x00, 0xe0, 0x37, 0x0b, ++ 0xb6, 0x15, 0xac, 0x41, 0xb1, 0x35, 0x3b, 0x9e, 0xb1, 0x91, 0xd1, 0xfc, ++ 0xf9, 0xbd, 0x58, 0xae, 0x0e, 0x0b, 0xc8, 0x59, 0xfa, 0xdf, 0xc5, 0x82, ++ 0xe5, 0xa2, 0x1c, 0x7f, 0xde, 0x83, 0x5a, 0xbd, 0x75, 0x11, 0x7b, 0xf0, ++ 0x2b, 0xd4, 0x7b, 0x4e, 0x1f, 0xe2, 0x7c, 0x01, 0xd4, 0x53, 0xb2, 0xbf, ++ 0x17, 0x3c, 0xa2, 0xed, 0x6f, 0xd1, 0xd6, 0x5b, 0x4e, 0xe2, 0x3c, 0x17, ++ 0xe9, 0xf4, 0x9f, 0x34, 0x54, 0xf0, 0x40, 0xff, 0x48, 0x4b, 0x12, 0xf6, ++ 0xc4, 0x60, 0x36, 0x18, 0xf9, 0xff, 0xb2, 0x6d, 0xe7, 0x4d, 0x91, 0x8e, ++ 0xee, 0xf1, 0xff, 0x4b, 0xa0, 0xf3, 0x94, 0x81, 0xc8, 0x27, 0xed, 0x54, ++ 0x0e, 0x4d, 0x72, 0xe5, 0x24, 0xa1, 0x7f, 0xe1, 0x3d, 0x3e, 0xcf, 0xf1, ++ 0x49, 0xee, 0xfc, 0x24, 0xf4, 0xa3, 0xbc, 0xc7, 0xe7, 0x75, 0xae, 0xf2, ++ 0x1c, 0x97, 0x0f, 0x8f, 0xc7, 0x92, 0x5c, 0x32, 0x23, 0x13, 0x87, 0x5f, ++ 0xcd, 0xd3, 0x2c, 0xde, 0x7a, 0x98, 0xc7, 0x5a, 0x60, 0x23, 0xe1, 0x00, ++ 0x1f, 0xb3, 0x99, 0xeb, 0x41, 0x52, 0xff, 0x53, 0xd5, 0xe5, 0x6a, 0x24, ++ 0xbc, 0x1f, 0xf2, 0xc5, 0x8a, 0x68, 0x37, 0xf2, 0xe1, 0x67, 0x6f, 0x1a, ++ 0x87, 0xfd, 0xc5, 0x3d, 0x1b, 0xe1, 0xc2, 0xf5, 0xac, 0x2f, 0x71, 0xe5, ++ 0xa1, 0xbf, 0x60, 0x7d, 0x85, 0xd5, 0x59, 0x0f, 0x5d, 0x5a, 0xe0, 0x7b, ++ 0x94, 0x1b, 0xde, 0xdf, 0x0f, 0x79, 0xa3, 0x2f, 0x6a, 0x07, 0x0d, 0x1b, ++ 0x4b, 0xfb, 0x21, 0xba, 0x35, 0xef, 0x6d, 0x41, 0x7f, 0xca, 0x3a, 0xc3, ++ 0x57, 0xfb, 0xfb, 0x41, 0xfb, 0x75, 0x23, 0x99, 0xb3, 0x9e, 0x05, 0xc6, ++ 0xa9, 0x69, 0xae, 0x78, 0x1e, 0xe7, 0x93, 0x30, 0x99, 0xcb, 0x97, 0xf5, ++ 0x89, 0xae, 0x3c, 0x7b, 0x50, 0xbf, 0x4c, 0xe8, 0x73, 0xd5, 0x02, 0x76, ++ 0xed, 0x7b, 0xd2, 0x7e, 0x39, 0x0c, 0xf6, 0xf7, 0xb1, 0x03, 0xa4, 0x4e, ++ 0xc3, 0xfa, 0xc0, 0x9e, 0x87, 0xf9, 0x0d, 0x62, 0x7c, 0x9f, 0xd9, 0x45, ++ 0x80, 0x13, 0xe0, 0x09, 0x8e, 0x1d, 0xac, 0xb7, 0xb6, 0x82, 0x9c, 0x62, ++ 0x69, 0x81, 0xfa, 0xa0, 0x06, 0xa5, 0x25, 0x0c, 0xd6, 0x53, 0xd5, 0xf8, ++ 0xbc, 0x01, 0xe5, 0x60, 0xe5, 0x7d, 0x2d, 0xbd, 0xa6, 0xa1, 0x3c, 0x7a, ++ 0xc6, 0xe8, 0xdc, 0x12, 0x34, 0xbf, 0xd8, 0xd7, 0xfb, 0x94, 0x3a, 0x22, ++ 0x03, 0x72, 0x68, 0x9a, 0x62, 0x27, 0x3d, 0x41, 0xea, 0xe5, 0x77, 0x32, ++ 0xf9, 0x2f, 0x8b, 0xf0, 0x66, 0xaa, 0xc0, 0x9b, 0x3b, 0x85, 0x3e, 0x3e, ++ 0x2d, 0x82, 0xc3, 0x77, 0x0e, 0x73, 0x26, 0xe0, 0x77, 0x77, 0x59, 0x58, ++ 0xa4, 0x01, 0x48, 0x69, 0x5a, 0x59, 0x43, 0x11, 0xc9, 0xa9, 0xa5, 0x61, ++ 0x51, 0x28, 0xff, 0x71, 0x2d, 0xa1, 0xf6, 0x5b, 0x96, 0xdd, 0xf9, 0x95, ++ 0xaa, 0xb7, 0xdb, 0x3c, 0x0a, 0xec, 0x7b, 0x9b, 0xd2, 0x91, 0x8a, 0x9d, ++ 0x7c, 0x89, 0xbe, 0x1e, 0xee, 0x5f, 0xf2, 0x6e, 0x49, 0xec, 0xda, 0x4f, ++ 0x5d, 0x92, 0xa0, 0xc3, 0x54, 0xa1, 0x1f, 0xa6, 0x30, 0x97, 0x0d, 0xd6, ++ 0x5d, 0xfd, 0x5a, 0xda, 0xe6, 0xf5, 0xf0, 0xca, 0xdc, 0x03, 0xf6, 0x31, ++ 0x9f, 0xf8, 0x91, 0xa5, 0x38, 0x9f, 0xf4, 0x63, 0x0b, 0xda, 0x3d, 0x8b, ++ 0x5f, 0x0d, 0x6f, 0x51, 0x22, 0x03, 0x70, 0x61, 0x76, 0x57, 0x9e, 0x01, ++ 0xbe, 0xab, 0x99, 0xd8, 0x3f, 0x7f, 0x3d, 0xea, 0xa4, 0x47, 0x81, 0xaf, ++ 0x00, 0x81, 0xb5, 0x85, 0xf9, 0x13, 0x88, 0x8e, 0x81, 0xdf, 0x28, 0x20, ++ 0xf3, 0x36, 0x25, 0x8d, 0xad, 0x30, 0x02, 0xde, 0x55, 0xf7, 0x05, 0xfd, ++ 0x0b, 0xea, 0xfb, 0xb7, 0x4c, 0xaa, 0x30, 0x02, 0xde, 0x57, 0x27, 0xf9, ++ 0x17, 0x18, 0xa0, 0xde, 0x96, 0x54, 0xc5, 0xeb, 0x83, 0xfc, 0x27, 0xb0, ++ 0x7e, 0x21, 0x69, 0x25, 0xaf, 0xe7, 0xfb, 0x17, 0xa8, 0x50, 0x8f, 0x49, ++ 0x5e, 0xc3, 0xeb, 0x68, 0x08, 0x02, 0x62, 0x39, 0x92, 0x1f, 0xaa, 0xf0, ++ 0x40, 0xff, 0x5f, 0x46, 0x09, 0xb9, 0xee, 0xf4, 0xcf, 0x44, 0xfc, 0xa9, ++ 0x7e, 0x25, 0xcd, 0xb0, 0x3e, 0x68, 0xbd, 0xd6, 0x64, 0xce, 0xaf, 0xbe, ++ 0x0c, 0xe7, 0xed, 0xbe, 0x4c, 0x64, 0xb3, 0x26, 0x22, 0xbc, 0xd3, 0xfd, ++ 0xa9, 0x38, 0x4f, 0xd9, 0xae, 0x23, 0x49, 0xea, 0xc3, 0x1b, 0xa8, 0xbd, ++ 0x5c, 0xa7, 0xfc, 0x8e, 0xc5, 0x87, 0xee, 0xff, 0x77, 0x49, 0xbc, 0xff, ++ 0xc5, 0x65, 0x42, 0x1f, 0x89, 0x60, 0xeb, 0x10, 0x6e, 0xb0, 0x4d, 0x9e, ++ 0x48, 0x80, 0xff, 0xbe, 0xe6, 0xb4, 0x2d, 0xd8, 0xfe, 0xc1, 0xa4, 0x68, ++ 0xde, 0xbf, 0x1d, 0xfa, 0x29, 0x0c, 0xf4, 0x23, 0xe1, 0x28, 0xfb, 0x93, ++ 0xe3, 0x2e, 0x41, 0x79, 0x8b, 0x7c, 0x38, 0x0c, 0xf8, 0x70, 0x10, 0x1f, ++ 0x6d, 0x4c, 0xe2, 0xf2, 0x12, 0xc6, 0x59, 0x4d, 0xe3, 0xa4, 0x00, 0xfc, ++ 0xb1, 0xbf, 0x89, 0xfd, 0xf3, 0x70, 0xdf, 0x60, 0xbf, 0x8c, 0x62, 0xbf, ++ 0x8c, 0xdc, 0x4e, 0xdd, 0x4c, 0xed, 0xb1, 0xdf, 0xa8, 0x1c, 0xe2, 0xfb, ++ 0x05, 0x46, 0x58, 0xc7, 0xbe, 0x8b, 0xd0, 0x3e, 0x31, 0x30, 0x6f, 0x3d, ++ 0x7e, 0xec, 0x15, 0xf8, 0xb1, 0xb8, 0x1e, 0x18, 0x21, 0xe9, 0x67, 0xc9, ++ 0x84, 0x47, 0xa3, 0x22, 0xb8, 0x5e, 0xc8, 0x0a, 0xb5, 0xeb, 0x88, 0x49, ++ 0xe6, 0xf0, 0xb3, 0x26, 0x47, 0xf1, 0x75, 0x76, 0xee, 0x47, 0x6f, 0x85, ++ 0xc6, 0xa9, 0x17, 0x70, 0xec, 0x0f, 0x70, 0xcf, 0xbe, 0xf6, 0x75, 0xbf, ++ 0x2f, 0xe6, 0xf3, 0x5d, 0xaf, 0x3b, 0x68, 0xbf, 0x5c, 0x2a, 0xbe, 0x6f, ++ 0xca, 0xd8, 0x12, 0xbc, 0x1e, 0xb0, 0x2c, 0x35, 0xfd, 0x7c, 0xb9, 0x4a, ++ 0xf7, 0x5d, 0x31, 0x10, 0x20, 0xae, 0x33, 0x3a, 0x99, 0xbe, 0x5b, 0x1b, ++ 0xce, 0x2c, 0xf4, 0x9c, 0x6d, 0xe9, 0xfc, 0x2e, 0x31, 0x87, 0xeb, 0xa3, ++ 0xa8, 0xa7, 0x56, 0x09, 0x7d, 0x9a, 0x79, 0x46, 0x92, 0x53, 0xa1, 0x52, ++ 0x70, 0x8d, 0xaa, 0x75, 0x3e, 0x93, 0x03, 0xdf, 0x37, 0x28, 0x2e, 0xaf, ++ 0x35, 0x78, 0x7d, 0xb7, 0x16, 0x8a, 0xf5, 0xd9, 0xc5, 0xfa, 0xec, 0x7c, ++ 0x7d, 0x5e, 0x0d, 0x9e, 0xb2, 0xc3, 0x1d, 0x09, 0x93, 0x6d, 0x5d, 0xf1, ++ 0xb7, 0x13, 0xee, 0x9d, 0xfd, 0x65, 0xe5, 0x8b, 0xfe, 0x34, 0x74, 0x1d, ++ 0xaa, 0x3f, 0xa4, 0x8f, 0xee, 0xf6, 0x23, 0x2c, 0xf9, 0x3b, 0xde, 0x0f, ++ 0x39, 0x4f, 0x1d, 0x3c, 0x3b, 0xe1, 0xac, 0x9b, 0x9f, 0x84, 0x27, 0xd2, ++ 0x33, 0x7d, 0x97, 0xa5, 0xc5, 0x47, 0x39, 0xcf, 0x0b, 0x82, 0x3e, 0xbb, ++ 0xd0, 0x75, 0xe2, 0x75, 0x8e, 0x57, 0xc2, 0xbf, 0xab, 0xfa, 0x09, 0xec, ++ 0x23, 0xea, 0x27, 0x0e, 0x2d, 0x3e, 0x57, 0x35, 0x26, 0x1a, 0xe6, 0x64, ++ 0x05, 0xbe, 0x6b, 0xc2, 0xbd, 0x2c, 0x0a, 0xf8, 0xe7, 0xd2, 0x93, 0x85, ++ 0x9d, 0xd7, 0x9f, 0xf5, 0x47, 0xfe, 0xed, 0x29, 0xe5, 0x7e, 0x54, 0xcf, ++ 0x2e, 0xb3, 0xb3, 0xde, 0x41, 0x7e, 0xbd, 0xac, 0xe4, 0xb8, 0x90, 0x7e, ++ 0x3d, 0x7a, 0xae, 0xb7, 0xf3, 0xda, 0xa3, 0x4c, 0x4c, 0x21, 0xbd, 0x48, ++ 0xeb, 0x67, 0x68, 0x8f, 0x73, 0xfa, 0x5c, 0xa8, 0x9f, 0x9e, 0x65, 0xce, ++ 0x6d, 0xd0, 0xef, 0x30, 0x9d, 0xde, 0xd1, 0x0e, 0xfb, 0xb9, 0xcb, 0x1a, ++ 0xf8, 0x2e, 0x20, 0x4f, 0xb4, 0xf5, 0x9f, 0x08, 0x3a, 0xe8, 0xea, 0x37, ++ 0xea, 0x48, 0xc0, 0xf9, 0x15, 0x9a, 0x4b, 0x5f, 0x70, 0x38, 0x19, 0x1b, ++ 0x9b, 0xfc, 0x14, 0xf1, 0xf7, 0xc2, 0x9e, 0xa5, 0xcb, 0x13, 0xa1, 0x7e, ++ 0x4b, 0xf2, 0x36, 0xe2, 0xd7, 0x85, 0xfd, 0x4a, 0xcf, 0xa3, 0x6b, 0xe6, ++ 0xb6, 0xe4, 0xed, 0xbc, 0x9e, 0x59, 0x7a, 0x3e, 0x09, 0xeb, 0x4f, 0x6d, ++ 0xe7, 0xed, 0x47, 0xb9, 0x5e, 0x40, 0xfe, 0xce, 0x3c, 0xdb, 0x2b, 0x46, ++ 0x0f, 0x09, 0xe8, 0x0f, 0x13, 0x92, 0x1d, 0x5c, 0xff, 0x28, 0x33, 0x30, ++ 0xc4, 0x23, 0xb3, 0x7a, 0xb7, 0x13, 0xe5, 0xa4, 0x84, 0x67, 0x77, 0x65, ++ 0xa1, 0xd9, 0x50, 0x1b, 0x4a, 0x6f, 0xbd, 0xa3, 0x93, 0x9e, 0xf9, 0x79, ++ 0x46, 0xb1, 0x90, 0xcf, 0xc5, 0xd2, 0x8e, 0xf7, 0x1b, 0x35, 0x76, 0x7c, ++ 0x7b, 0xa4, 0xc5, 0xa3, 0x02, 0x5c, 0xdb, 0x51, 0x9e, 0xc2, 0x7a, 0xe7, ++ 0x24, 0xbb, 0xa7, 0x23, 0xfc, 0x6b, 0x22, 0x5a, 0x67, 0xa2, 0x0a, 0x7c, ++ 0x5f, 0xc4, 0x27, 0x26, 0xd4, 0x87, 0x14, 0x17, 0xe8, 0x1b, 0xe8, 0x17, ++ 0x71, 0xd8, 0xd9, 0x74, 0x98, 0xa7, 0xd2, 0xba, 0xbe, 0x9c, 0xf4, 0xc0, ++ 0x25, 0x4e, 0x8b, 0x91, 0xe0, 0x29, 0xfc, 0x54, 0xb0, 0xf6, 0x4b, 0xd0, ++ 0xcf, 0xab, 0xaf, 0x3d, 0xf3, 0xb3, 0x7e, 0x7c, 0x98, 0x72, 0x9c, 0xc7, ++ 0x10, 0x41, 0xff, 0x35, 0xaf, 0x7d, 0xfb, 0xcd, 0x5f, 0x51, 0x8e, 0x7e, ++ 0x69, 0x75, 0xa2, 0x1b, 0x70, 0x48, 0xf3, 0xa3, 0xcb, 0x51, 0xbf, 0x1a, ++ 0xd2, 0xfc, 0xa7, 0x6f, 0xb9, 0xbc, 0xb5, 0xd2, 0x39, 0x95, 0x9c, 0xf7, ++ 0x10, 0xf4, 0x37, 0xc2, 0xf3, 0xe2, 0x26, 0x33, 0xcd, 0x7f, 0x48, 0x73, ++ 0xc6, 0x7c, 0x6c, 0x3f, 0xec, 0xfd, 0xe6, 0x64, 0xc4, 0x8f, 0x11, 0xc7, ++ 0x5a, 0xea, 0x91, 0x1d, 0xb4, 0xef, 0x79, 0xa9, 0x9f, 0x3b, 0xf8, 0xdc, ++ 0x8a, 0x9d, 0x54, 0x2e, 0x65, 0x5e, 0xbb, 0x7e, 0xd1, 0x09, 0x8f, 0x2f, ++ 0x4c, 0x0c, 0xf5, 0x4b, 0x80, 0xc7, 0xff, 0xe1, 0xf0, 0xb8, 0xb8, 0x00, ++ 0xfd, 0x8a, 0x6d, 0x71, 0x87, 0xd6, 0xf8, 0x49, 0x4f, 0xeb, 0xcf, 0xfd, ++ 0x98, 0xe2, 0x7b, 0xd0, 0xcb, 0xd3, 0x91, 0xce, 0xcf, 0xb1, 0x1e, 0x4e, ++ 0x3c, 0x57, 0x68, 0xb7, 0xf1, 0x7e, 0xf4, 0xfe, 0xcd, 0xa3, 0x15, 0xb0, ++ 0x3e, 0x78, 0x3e, 0xa2, 0x03, 0x66, 0x10, 0xa4, 0x37, 0x8f, 0xba, 0x60, ++ 0x01, 0x06, 0x12, 0xa8, 0x97, 0xb0, 0x28, 0x4d, 0xbd, 0xcc, 0xd2, 0x47, ++ 0xd3, 0x7e, 0x8c, 0x3d, 0x51, 0xf3, 0xfe, 0xa6, 0xf8, 0x0c, 0xcd, 0xfb, ++ 0xf1, 0x8e, 0x3c, 0x4d, 0xfd, 0x96, 0xf4, 0x21, 0x9a, 0xf6, 0xb7, 0x39, ++ 0x4b, 0x34, 0xf5, 0xdb, 0x8b, 0xc7, 0x6b, 0xda, 0x57, 0xb8, 0x2a, 0x34, ++ 0xf5, 0xbc, 0x96, 0x06, 0x4d, 0xfb, 0x82, 0x03, 0x4d, 0xda, 0xf7, 0x87, ++ 0x1d, 0xb4, 0x0f, 0x05, 0xc7, 0xca, 0xcb, 0x50, 0x9f, 0x77, 0xfa, 0xdc, ++ 0xf5, 0x58, 0xde, 0xd8, 0xba, 0xa1, 0xac, 0xa7, 0x83, 0x75, 0xf1, 0xeb, ++ 0x16, 0xfa, 0xbd, 0xf5, 0xf8, 0x7c, 0xd8, 0xc5, 0xda, 0xa2, 0x16, 0xd6, ++ 0xd5, 0xbf, 0xcb, 0x96, 0xb8, 0xe9, 0x3c, 0xc0, 0x8c, 0xfb, 0xa2, 0x06, ++ 0x9d, 0x0f, 0x94, 0xf8, 0x88, 0x1e, 0xdb, 0x0c, 0x4e, 0x47, 0xb0, 0x1f, ++ 0xf7, 0xd1, 0x5e, 0xee, 0x17, 0x70, 0x9f, 0xde, 0x52, 0x00, 0xec, 0x00, ++ 0xec, 0x91, 0x96, 0x8e, 0x18, 0xdc, 0xaf, 0x31, 0xb3, 0x1e, 0x52, 0x23, ++ 0x71, 0x5f, 0x3a, 0x18, 0xf9, 0xbd, 0x1a, 0x4d, 0xfe, 0x5f, 0x0c, 0x43, ++ 0x39, 0x3f, 0x43, 0x25, 0xbd, 0xb7, 0xd1, 0xc8, 0x48, 0x7f, 0x6c, 0x9c, ++ 0x9a, 0xed, 0x45, 0xdf, 0xdf, 0x51, 0xc5, 0xff, 0xe2, 0x5f, 0x91, 0x4f, ++ 0xcd, 0x88, 0x20, 0x7e, 0x32, 0x02, 0x34, 0x5c, 0x5a, 0x37, 0x9e, 0x81, ++ 0x2a, 0xb8, 0x4f, 0x6e, 0xcd, 0xba, 0x4b, 0xd8, 0x62, 0xdd, 0x3e, 0xdd, ++ 0xad, 0xa9, 0x8f, 0xb1, 0xff, 0x44, 0xd3, 0xfe, 0xa6, 0xf8, 0x55, 0x9a, ++ 0xf7, 0xe3, 0x1d, 0x0f, 0xe8, 0xf6, 0x69, 0xa3, 0xa6, 0x7e, 0x9b, 0xf3, ++ 0x51, 0xdd, 0x3e, 0x6d, 0xd6, 0xed, 0xd3, 0x33, 0x9a, 0xf7, 0x23, 0x3e, ++ 0xf7, 0xd7, 0x23, 0x19, 0x8d, 0x6a, 0xf5, 0xa8, 0x36, 0x98, 0xff, 0xd0, ++ 0xa3, 0x1b, 0xca, 0x70, 0x5f, 0x86, 0x1d, 0xf3, 0xcc, 0x40, 0x7a, 0x29, ++ 0x6c, 0x71, 0xd7, 0x13, 0x0b, 0xd9, 0x57, 0xfb, 0x26, 0x96, 0x2d, 0x60, ++ 0x57, 0xa1, 0x3f, 0xeb, 0x8d, 0xba, 0x78, 0x2a, 0xf7, 0xd5, 0x39, 0xc8, ++ 0x1f, 0xb5, 0xbf, 0x2e, 0x9d, 0xca, 0x03, 0x75, 0x4e, 0x7a, 0xfe, 0x76, ++ 0x5d, 0x31, 0x95, 0xef, 0xd4, 0xb9, 0xa8, 0xfc, 0x4b, 0xdd, 0x38, 0x2a, ++ 0x7d, 0x75, 0xe5, 0x54, 0x36, 0xd4, 0x35, 0x50, 0xfb, 0x5d, 0x75, 0x4d, ++ 0x54, 0x02, 0x04, 0x07, 0xa0, 0xbc, 0x88, 0x8d, 0x11, 0xf2, 0x07, 0xea, ++ 0x68, 0xe7, 0xb7, 0x19, 0xfc, 0xd5, 0x78, 0xe2, 0x7a, 0xfa, 0xa9, 0x6f, ++ 0x88, 0x4f, 0xb6, 0xf5, 0xf0, 0xb7, 0x61, 0xfd, 0x3e, 0xf6, 0x8f, 0x8a, ++ 0xd1, 0x50, 0x3f, 0x9c, 0xc2, 0x88, 0xbf, 0x59, 0xa1, 0x4f, 0xa4, 0xc7, ++ 0x73, 0x29, 0xae, 0xca, 0x14, 0xa8, 0x5f, 0x48, 0xe6, 0xcf, 0xdb, 0xc3, ++ 0xac, 0xeb, 0x50, 0x0e, 0x34, 0x18, 0x5c, 0x79, 0xa8, 0x5f, 0xff, 0xfb, ++ 0xa9, 0xff, 0x6c, 0x34, 0x0e, 0x60, 0xec, 0xfe, 0x55, 0xe5, 0xf1, 0xf6, ++ 0x28, 0x5e, 0xb7, 0x40, 0x9d, 0x36, 0x1b, 0x0d, 0x33, 0xcf, 0x7f, 0x36, ++ 0xba, 0x86, 0x33, 0xf6, 0x1c, 0x8a, 0x8c, 0xa1, 0x54, 0xaf, 0xc0, 0x7a, ++ 0x7b, 0x38, 0x7f, 0x7f, 0xe1, 0xa9, 0xff, 0x90, 0x7e, 0x2d, 0xcf, 0x9b, ++ 0x27, 0x07, 0xce, 0x9b, 0xff, 0x9d, 0x1c, 0xe2, 0xbc, 0xf9, 0xb9, 0x53, ++ 0x0e, 0x1b, 0xfa, 0x59, 0x0e, 0x5d, 0x4c, 0xb3, 0xe1, 0xba, 0x0e, 0x09, ++ 0xbf, 0x92, 0x8b, 0xe5, 0x85, 0xcd, 0x86, 0xb2, 0xc4, 0x98, 0x17, 0x86, ++ 0x72, 0xf1, 0xa8, 0x4e, 0x8f, 0x90, 0xe5, 0xa7, 0xd6, 0x12, 0x53, 0x4a, ++ 0x1c, 0xce, 0xdf, 0x39, 0x05, 0xf5, 0x08, 0xcf, 0xcd, 0x61, 0x6c, 0x1b, ++ 0xf0, 0x8b, 0x89, 0x0a, 0xb7, 0x47, 0x3b, 0xf5, 0xc0, 0x14, 0x2e, 0xcf, ++ 0xdb, 0x6f, 0x33, 0x93, 0xbd, 0x73, 0xd8, 0xe0, 0x9a, 0x8f, 0x78, 0x0e, ++ 0x7c, 0xfa, 0x49, 0x84, 0x57, 0x42, 0x4a, 0xcf, 0x89, 0x28, 0x57, 0xda, ++ 0x6d, 0x1d, 0x09, 0x08, 0x87, 0xfe, 0x29, 0x91, 0xbc, 0x1e, 0xd7, 0xf1, ++ 0xa4, 0xe2, 0x0c, 0xaa, 0x87, 0xf1, 0x75, 0xc6, 0xa5, 0xd8, 0x26, 0x76, ++ 0xb3, 0xce, 0xbe, 0x38, 0x1f, 0xfd, 0x3a, 0x6f, 0x48, 0x11, 0xe7, 0x0c, ++ 0x2d, 0xae, 0x01, 0x28, 0x7f, 0x65, 0xfd, 0x70, 0x85, 0xab, 0x0a, 0xe5, ++ 0xc4, 0xe1, 0x12, 0xd7, 0x40, 0x9c, 0xcf, 0xa1, 0x72, 0x33, 0xd1, 0x8f, ++ 0xa7, 0xdc, 0xe6, 0x1d, 0x88, 0x4c, 0xce, 0xe8, 0x2a, 0x9a, 0x12, 0xe4, ++ 0x6f, 0x79, 0x34, 0x25, 0x8c, 0xbe, 0x9b, 0x6c, 0xe2, 0x74, 0xc6, 0xee, ++ 0x52, 0xbd, 0xdb, 0x42, 0xd8, 0x69, 0x2f, 0xa5, 0x70, 0x7d, 0x9f, 0xf6, ++ 0x0d, 0xed, 0xb9, 0x3b, 0x23, 0x48, 0x0f, 0x3f, 0x6c, 0x60, 0x8b, 0x76, ++ 0x85, 0x80, 0xe3, 0xbb, 0x29, 0x5c, 0xce, 0x9d, 0xe9, 0x11, 0xda, 0xff, ++ 0xe2, 0x13, 0xf0, 0x2b, 0x9d, 0x64, 0xa3, 0xfe, 0xda, 0x57, 0x84, 0xd3, ++ 0x79, 0x6f, 0x7b, 0x79, 0x1a, 0xe9, 0x41, 0xed, 0xb5, 0x00, 0x25, 0xa0, ++ 0x8f, 0xf6, 0x53, 0xb5, 0x67, 0x77, 0xd3, 0x7b, 0xb3, 0x3c, 0x0a, 0xa3, ++ 0x73, 0xcd, 0x69, 0x82, 0x4f, 0x3d, 0xd7, 0xbc, 0xfc, 0x1f, 0x47, 0xa0, ++ 0xfd, 0x27, 0x2b, 0x22, 0x9c, 0xc4, 0xc3, 0xed, 0x83, 0x48, 0x3e, 0xdd, ++ 0x25, 0x1a, 0xcf, 0x88, 0xb1, 0x90, 0xde, 0x32, 0x63, 0xe2, 0x80, 0x52, ++ 0x94, 0x4b, 0xd3, 0xc4, 0xf9, 0xd8, 0x4c, 0x9b, 0xb1, 0x17, 0x1d, 0x93, ++ 0x19, 0xa3, 0x4c, 0x76, 0xe8, 0x67, 0x9e, 0x35, 0x6f, 0x0d, 0x8a, 0xff, ++ 0x05, 0xb1, 0x15, 0xa6, 0x28, 0xa8, 0x2f, 0xea, 0x7f, 0xf7, 0x1a, 0x2c, ++ 0x97, 0xa4, 0x6c, 0x34, 0x45, 0x43, 0x59, 0x99, 0xf5, 0xfc, 0x1a, 0x54, ++ 0x1f, 0xab, 0x80, 0xb4, 0x8a, 0xc8, 0x5e, 0xf2, 0xff, 0xb9, 0x0e, 0xe6, ++ 0x35, 0x6b, 0xa5, 0xea, 0xe0, 0xf6, 0x93, 0x90, 0x6b, 0xae, 0xa5, 0xd7, ++ 0x14, 0x8f, 0x21, 0xf1, 0x10, 0xe1, 0x88, 0x78, 0x0a, 0xf0, 0x25, 0xbb, ++ 0xf0, 0x3d, 0x01, 0x6f, 0xf9, 0xdd, 0x7b, 0x02, 0x9e, 0xb3, 0x52, 0xc4, ++ 0x39, 0x6d, 0x36, 0xcb, 0xbe, 0xa4, 0x3d, 0xf7, 0x99, 0x8b, 0x78, 0xd2, ++ 0x3a, 0xe3, 0xcf, 0xa9, 0xdd, 0xf8, 0xe7, 0xb5, 0xef, 0x85, 0xde, 0xf6, ++ 0x81, 0x89, 0x8f, 0xbb, 0xf4, 0xe9, 0x30, 0x6f, 0xb0, 0x3f, 0x49, 0x8e, ++ 0x7b, 0x48, 0xcc, 0xe3, 0xb0, 0x89, 0xb9, 0x14, 0xd4, 0xe3, 0xee, 0xb2, ++ 0x11, 0x7e, 0xe4, 0x4c, 0x3d, 0x7f, 0x5f, 0x11, 0xac, 0x3f, 0xa7, 0xd9, ++ 0x6e, 0xa0, 0x73, 0x7b, 0xc9, 0xc7, 0x7d, 0x8c, 0xfc, 0xf6, 0x45, 0x9f, ++ 0xbb, 0x89, 0xcf, 0xdd, 0xd8, 0xea, 0xdf, 0x7e, 0x84, 0x11, 0x9e, 0x37, ++ 0x21, 0x9d, 0x5c, 0x49, 0x4e, 0x4d, 0xf2, 0xac, 0x22, 0xf9, 0x30, 0xe4, ++ 0x6b, 0x90, 0x3f, 0xc8, 0x17, 0x2f, 0xba, 0x3f, 0x39, 0x42, 0x7c, 0x70, ++ 0x91, 0xe0, 0x83, 0xb5, 0xc4, 0xbf, 0xf6, 0xd5, 0xad, 0xa4, 0xfa, 0xfe, ++ 0x3a, 0x0f, 0x95, 0x07, 0xea, 0xd6, 0x09, 0x3e, 0xb8, 0x81, 0xde, 0xbf, ++ 0x53, 0xb7, 0x49, 0xf0, 0x41, 0xaf, 0xe0, 0x83, 0x4f, 0xd3, 0xf3, 0xe6, ++ 0xba, 0xa9, 0x54, 0xbe, 0x56, 0xe7, 0x16, 0x7c, 0x90, 0x9f, 0xab, 0x4e, ++ 0x14, 0xf8, 0xb4, 0x32, 0xde, 0xbd, 0x0e, 0xf9, 0x99, 0x3c, 0xbf, 0x9c, ++ 0x6c, 0x71, 0x87, 0x21, 0xbc, 0xfe, 0xf8, 0xa8, 0x99, 0xa9, 0x78, 0x2e, ++ 0xd1, 0x6c, 0x26, 0x3c, 0x05, 0x0a, 0x78, 0xf2, 0xb1, 0x58, 0x8c, 0x97, ++ 0x31, 0xdb, 0xd7, 0x3b, 0xba, 0xc6, 0xcd, 0xe8, 0xf9, 0x6d, 0xe7, 0xfe, ++ 0xeb, 0xce, 0x79, 0x37, 0xc4, 0xbb, 0x1e, 0xc1, 0xf1, 0x3a, 0xe3, 0x64, ++ 0x50, 0x3f, 0xbb, 0xa1, 0x7b, 0xfc, 0x39, 0xc4, 0x1c, 0x36, 0xe4, 0x27, ++ 0x3b, 0xb6, 0x4e, 0x24, 0xfe, 0x71, 0xc8, 0xe1, 0xb0, 0xa1, 0xde, 0xfa, ++ 0x5c, 0xca, 0xa4, 0x89, 0xc8, 0xaf, 0x0f, 0xb9, 0x1c, 0xb6, 0x30, 0xa8, ++ 0xff, 0x61, 0xeb, 0x24, 0xfe, 0xde, 0xed, 0xb0, 0x99, 0xa1, 0xbe, 0x33, ++ 0x65, 0x32, 0x7f, 0xef, 0x71, 0xd8, 0xc2, 0xa1, 0xde, 0xb0, 0x55, 0xd4, ++ 0xbd, 0x8c, 0x0e, 0xb5, 0x77, 0x6f, 0xbd, 0x93, 0xf8, 0x4f, 0x09, 0x53, ++ 0xf6, 0x21, 0x3d, 0x94, 0x59, 0x12, 0x47, 0x03, 0xbb, 0x06, 0xf9, 0x58, ++ 0xb2, 0x0f, 0xe9, 0xe0, 0xa6, 0xf8, 0xd9, 0xa3, 0x91, 0x0e, 0x52, 0x52, ++ 0x1c, 0x84, 0x0f, 0xe3, 0x1d, 0xab, 0xf6, 0x61, 0xfd, 0x96, 0xf4, 0xcd, ++ 0xc6, 0x18, 0x07, 0x7a, 0x43, 0xf3, 0x56, 0xe3, 0x77, 0xa5, 0xb1, 0x15, ++ 0x46, 0xfc, 0x6e, 0x74, 0xff, 0xbb, 0x57, 0xe3, 0x77, 0x63, 0x53, 0x36, ++ 0x1a, 0x83, 0xbf, 0x1b, 0x97, 0xf5, 0xfc, 0x6a, 0xac, 0xdf, 0xea, 0xdc, ++ 0x6c, 0x44, 0x7d, 0x30, 0x05, 0xf9, 0x56, 0x5c, 0xa0, 0x1f, 0x59, 0x97, ++ 0xef, 0x25, 0x7f, 0x45, 0x3b, 0x01, 0xf1, 0x34, 0xb7, 0xb9, 0x9c, 0xf8, ++ 0x78, 0x4e, 0x53, 0x39, 0xf1, 0x71, 0x09, 0x97, 0xd2, 0xc9, 0x15, 0xf7, ++ 0xa3, 0x9f, 0xae, 0xa6, 0x49, 0xb1, 0x2b, 0x38, 0x8f, 0xc9, 0x4a, 0xe7, ++ 0x61, 0xbd, 0x02, 0x3a, 0x44, 0xf5, 0x45, 0xa0, 0x16, 0xe0, 0xb3, 0xfb, ++ 0xb6, 0xce, 0x8b, 0x5e, 0x05, 0xdf, 0xd5, 0x60, 0x7d, 0x28, 0xd5, 0x7f, ++ 0xb5, 0x2a, 0x34, 0xdf, 0x3d, 0x98, 0x12, 0x42, 0xbe, 0x7c, 0x28, 0xe8, ++ 0x14, 0xe5, 0x66, 0x05, 0x7c, 0xf7, 0x21, 0xd0, 0xcf, 0x2e, 0xa8, 0x67, ++ 0xe0, 0xfa, 0xc8, 0x7f, 0x38, 0xdb, 0x36, 0x9b, 0xfa, 0x73, 0xdb, 0x50, ++ 0xbe, 0xe6, 0xa6, 0x70, 0x39, 0x59, 0x20, 0xe4, 0xe6, 0x5c, 0x51, 0x2e, ++ 0x12, 0xcf, 0x3f, 0xb5, 0xba, 0xde, 0x47, 0xba, 0xfc, 0x38, 0x45, 0xd8, ++ 0x63, 0x5d, 0xe9, 0xfa, 0x13, 0x41, 0xb7, 0x0b, 0xf8, 0x3c, 0xba, 0xd0, ++ 0xb5, 0xf6, 0xbd, 0xa0, 0x6b, 0xbf, 0x94, 0x0f, 0x85, 0x1d, 0x09, 0x58, ++ 0xaf, 0x62, 0x1b, 0xc8, 0x4f, 0x78, 0xa5, 0xf8, 0xae, 0xc5, 0xc1, 0xf6, ++ 0x5b, 0x22, 0xc6, 0x49, 0x34, 0x50, 0xfc, 0x85, 0x3e, 0x4e, 0xa2, 0x92, ++ 0xf9, 0x78, 0x7f, 0x0d, 0xba, 0x38, 0x0b, 0xe6, 0x37, 0xd1, 0x79, 0x6c, ++ 0x53, 0xd0, 0x73, 0xe2, 0x47, 0xc2, 0xfe, 0xe8, 0xc1, 0xf9, 0xde, 0x54, ++ 0x64, 0xd6, 0x80, 0x9f, 0xdf, 0x76, 0xcf, 0xcf, 0xfe, 0x8d, 0xf0, 0xbf, ++ 0xcc, 0xba, 0xb5, 0xef, 0xc5, 0xba, 0x17, 0x33, 0x2f, 0xc5, 0xb5, 0xe9, ++ 0xd7, 0xc1, 0xdc, 0x71, 0x44, 0x5b, 0x4b, 0xad, 0x87, 0x69, 0x3f, 0xbb, ++ 0xae, 0xc7, 0x1f, 0x7a, 0x3d, 0x5d, 0xd6, 0xc1, 0xed, 0x77, 0x19, 0xc7, ++ 0x22, 0xfd, 0xf2, 0xa0, 0x07, 0xd9, 0x06, 0x16, 0x21, 0x1f, 0xb4, 0x31, ++ 0xf4, 0xdf, 0x04, 0xf3, 0x89, 0x23, 0x97, 0xe1, 0x13, 0x7a, 0x7e, 0xf4, ++ 0x5d, 0xf1, 0xb9, 0xcb, 0xf0, 0x9b, 0xa4, 0x81, 0x21, 0xf8, 0x8d, 0x8c, ++ 0xcf, 0xd2, 0x97, 0x52, 0x9f, 0x83, 0xba, 0x07, 0xe3, 0xf3, 0x3c, 0xaf, ++ 0x85, 0x93, 0x9f, 0xfe, 0xa4, 0xc3, 0x9d, 0x8d, 0xfd, 0xb4, 0x97, 0x76, ++ 0x7c, 0x63, 0x40, 0xfb, 0x2c, 0xd6, 0x4f, 0x78, 0xe6, 0xe9, 0xe7, 0x76, ++ 0xe2, 0x73, 0xc5, 0xc4, 0xcf, 0xe9, 0xe1, 0x49, 0x2a, 0xee, 0xdb, 0x29, ++ 0x83, 0xe7, 0x0f, 0xa8, 0x17, 0x0d, 0xdf, 0xf6, 0x24, 0xf1, 0x9d, 0x36, ++ 0x14, 0x0e, 0x40, 0x8f, 0x85, 0x50, 0x47, 0xbe, 0xe3, 0xed, 0x5b, 0x3e, ++ 0x18, 0xbf, 0x63, 0xe9, 0x1c, 0x7f, 0xda, 0x15, 0x2e, 0x17, 0x25, 0xdd, ++ 0x83, 0x3e, 0x48, 0xe5, 0x88, 0x81, 0x5c, 0x1e, 0x75, 0x2d, 0x39, 0x5d, ++ 0xc9, 0xb8, 0xc6, 0xf6, 0xcd, 0xdf, 0x26, 0x90, 0x1f, 0xeb, 0x0a, 0xf8, ++ 0xde, 0x1d, 0x1c, 0xc6, 0xa8, 0xc3, 0xfd, 0x1e, 0xe4, 0xf7, 0xc5, 0x11, ++ 0xa4, 0xf2, 0xb4, 0x2a, 0xac, 0x45, 0x01, 0xfd, 0xaf, 0xb5, 0xa4, 0x17, ++ 0xe9, 0x11, 0xad, 0x03, 0x4c, 0x46, 0x2c, 0xbf, 0x6b, 0x3b, 0xb1, 0x75, ++ 0x40, 0x2a, 0xf5, 0xaf, 0xb7, 0x17, 0x5b, 0xfb, 0x14, 0x5b, 0xf8, 0xb8, ++ 0x63, 0xc7, 0x61, 0xd9, 0x64, 0x72, 0x6f, 0x9a, 0x8d, 0x76, 0xd2, 0x10, ++ 0x33, 0xd9, 0x49, 0xef, 0x8a, 0x78, 0xc0, 0x09, 0x11, 0x3c, 0x7e, 0xea, ++ 0x5d, 0x3c, 0x1f, 0x86, 0x76, 0x13, 0x8e, 0x5f, 0x8c, 0x45, 0xf9, 0xa5, ++ 0xb7, 0x37, 0x5b, 0x0f, 0x4e, 0x2f, 0x75, 0xe4, 0x74, 0xb5, 0x3b, 0x61, ++ 0x9d, 0xa3, 0x71, 0x9d, 0x95, 0x9f, 0x19, 0xee, 0xc7, 0x67, 0xd7, 0x6a, ++ 0x87, 0x56, 0xae, 0xfc, 0x86, 0x19, 0x63, 0x40, 0x6e, 0xaf, 0xbc, 0xc8, ++ 0x8c, 0x05, 0x57, 0x63, 0x97, 0x32, 0x15, 0xd9, 0x45, 0xfe, 0x51, 0xe7, ++ 0x9b, 0x58, 0x16, 0x7d, 0xee, 0x8b, 0xce, 0x71, 0xa0, 0xfd, 0x29, 0xf5, ++ 0x07, 0x61, 0x9f, 0x5e, 0x21, 0x0e, 0xa9, 0xb8, 0x83, 0xeb, 0x0b, 0xa3, ++ 0x2e, 0xb2, 0x74, 0x63, 0x21, 0xfa, 0x99, 0x7a, 0xd0, 0xf9, 0x8d, 0x52, ++ 0xfc, 0x27, 0x6e, 0xb7, 0x8a, 0x52, 0x9e, 0x8b, 0x0c, 0xe7, 0x53, 0x60, ++ 0x33, 0x0d, 0x56, 0xaf, 0x29, 0x49, 0x13, 0x87, 0x14, 0x6f, 0x84, 0x72, ++ 0xba, 0xea, 0x1f, 0x8c, 0xf5, 0x36, 0xe6, 0xa3, 0x73, 0x12, 0xbd, 0x3d, ++ 0xfb, 0x96, 0xf0, 0x43, 0x81, 0x5d, 0xfb, 0x0b, 0xc4, 0xdb, 0x35, 0x22, ++ 0x3e, 0x09, 0x76, 0x24, 0x06, 0xf1, 0x77, 0xcc, 0x4f, 0x3f, 0x9a, 0xf9, ++ 0x33, 0xe2, 0x03, 0xe1, 0xa4, 0x0f, 0x75, 0xda, 0xb5, 0xbb, 0x0d, 0x14, ++ 0x5f, 0xd0, 0x68, 0x74, 0xf5, 0x1c, 0x81, 0x76, 0xed, 0xca, 0x81, 0xce, ++ 0x55, 0x50, 0xff, 0xd4, 0x17, 0xf7, 0xeb, 0x57, 0xa1, 0xac, 0xb1, 0x7f, ++ 0x43, 0x70, 0x93, 0xf4, 0x5b, 0xb9, 0xf2, 0x3c, 0xc1, 0x53, 0xd6, 0x5b, ++ 0x85, 0xdf, 0x77, 0x43, 0x18, 0xc8, 0x1f, 0x28, 0x2b, 0xff, 0xa3, 0x92, ++ 0x1c, 0xaa, 0x64, 0x6c, 0x1d, 0xed, 0x1b, 0x7b, 0xc3, 0xb4, 0x2c, 0x48, ++ 0x2e, 0xb2, 0x86, 0xaf, 0x3a, 0xe1, 0x9f, 0x0b, 0x7c, 0xaf, 0x02, 0x01, ++ 0x48, 0x76, 0xd6, 0xc8, 0x49, 0x2e, 0x68, 0x57, 0x21, 0xec, 0x0f, 0xe6, ++ 0x79, 0x9d, 0xd7, 0x85, 0xdd, 0x05, 0x16, 0xc5, 0x24, 0x17, 0xf4, 0x5b, ++ 0x11, 0x27, 0xda, 0xb3, 0x87, 0xf9, 0xfb, 0x01, 0xf2, 0xfd, 0x23, 0xfc, ++ 0xfd, 0x40, 0xd9, 0xdf, 0xf9, 0x89, 0xf4, 0xbe, 0x8f, 0xac, 0x8b, 0xfe, ++ 0x32, 0x64, 0xfd, 0x4f, 0xbc, 0x9e, 0x28, 0xc7, 0x6b, 0xe5, 0xf5, 0x6c, ++ 0x59, 0x0f, 0xe7, 0xfd, 0xd9, 0x78, 0xfb, 0x97, 0x06, 0x36, 0x4c, 0xf2, ++ 0x64, 0x05, 0xf8, 0xfd, 0x9e, 0x81, 0x42, 0x3e, 0xe6, 0xb1, 0x3c, 0x11, ++ 0x97, 0xb3, 0x77, 0xe0, 0xe5, 0xe3, 0x51, 0xb4, 0xef, 0x85, 0x7c, 0x98, ++ 0xf5, 0x8c, 0xea, 0x31, 0xe5, 0xe2, 0xfe, 0x8c, 0x8f, 0xf8, 0x33, 0xd2, ++ 0x77, 0x83, 0x42, 0xb1, 0x73, 0x95, 0xf7, 0x86, 0x91, 0xbf, 0xfb, 0x4c, ++ 0x74, 0x43, 0xce, 0xf2, 0x20, 0x7b, 0x45, 0xc6, 0xaf, 0x94, 0x97, 0xd9, ++ 0x5c, 0xa8, 0xff, 0x55, 0xbd, 0x98, 0xb6, 0x45, 0x15, 0xf1, 0x3c, 0xa8, ++ 0x7f, 0xfc, 0xcb, 0xc1, 0xed, 0x98, 0x31, 0xaa, 0x95, 0xce, 0x27, 0xce, ++ 0x3d, 0xc8, 0xf9, 0x7e, 0x77, 0xfa, 0xdb, 0x82, 0x95, 0xaf, 0x6a, 0xf6, ++ 0xb3, 0xcb, 0x7b, 0x55, 0xe1, 0xf6, 0x38, 0x1e, 0xdc, 0xc1, 0x78, 0x67, ++ 0x1f, 0xea, 0xbd, 0x99, 0xec, 0x8b, 0x14, 0x1f, 0x9d, 0x9b, 0x7f, 0x2a, ++ 0xf8, 0x5d, 0x2f, 0xe0, 0xad, 0xc5, 0xd1, 0x81, 0x78, 0xb1, 0xd8, 0x64, ++ 0xe6, 0x42, 0x7b, 0x35, 0xf6, 0x25, 0xe0, 0xcf, 0xb8, 0xc7, 0x9f, 0xfb, ++ 0x88, 0x1f, 0x2f, 0x78, 0x89, 0xfb, 0x7f, 0xab, 0x1e, 0x7d, 0x93, 0xe4, ++ 0xde, 0x1c, 0xd5, 0x41, 0xfe, 0xdc, 0xb1, 0x59, 0xee, 0x2f, 0x10, 0x6f, ++ 0xdb, 0x6c, 0x3e, 0xf2, 0x2b, 0x2e, 0x58, 0xf9, 0x1a, 0xcd, 0xeb, 0x9b, ++ 0x0c, 0xa1, 0x37, 0xd8, 0x3b, 0xb2, 0x82, 0xe1, 0x79, 0xb6, 0x2b, 0xfc, ++ 0xbf, 0xba, 0x02, 0xfc, 0xbf, 0xfa, 0x21, 0xe1, 0xaf, 0xf7, 0x3b, 0x2f, ++ 0xb1, 0xee, 0xa3, 0xf5, 0x2e, 0xb9, 0xc6, 0xb8, 0xb6, 0x36, 0x1b, 0x3f, ++ 0x17, 0x75, 0x8a, 0x7d, 0x3a, 0x6e, 0x70, 0x0c, 0x16, 0xf0, 0x8a, 0x48, ++ 0x45, 0xff, 0xf9, 0x7c, 0x5f, 0x6a, 0x94, 0x8a, 0x41, 0xc7, 0xbe, 0x5e, ++ 0x3c, 0x5e, 0xe9, 0x9d, 0x22, 0xb4, 0x8b, 0xce, 0xd5, 0xda, 0x18, 0xee, ++ 0xfb, 0xf4, 0xe5, 0x7f, 0xcb, 0x71, 0x87, 0xf0, 0xfb, 0xea, 0xed, 0x81, ++ 0x19, 0x38, 0x66, 0x5c, 0x00, 0x5e, 0x7d, 0x52, 0x85, 0x1e, 0x14, 0x80, ++ 0xef, 0x00, 0x1c, 0xef, 0x32, 0xf0, 0xd5, 0xbe, 0xff, 0x9e, 0xe1, 0xdb, ++ 0xdb, 0xe8, 0x37, 0x39, 0xf1, 0x1c, 0xf5, 0x28, 0xa3, 0x7e, 0x06, 0xfb, ++ 0x8e, 0x9b, 0x82, 0xe3, 0x62, 0x46, 0xa4, 0x72, 0xbc, 0xec, 0xd9, 0xc4, ++ 0xcf, 0x8d, 0xf4, 0xf1, 0x5e, 0x23, 0x52, 0x6d, 0xdc, 0xef, 0x2d, 0xce, ++ 0x67, 0xaa, 0x26, 0xbe, 0x33, 0x1c, 0xcf, 0x67, 0x24, 0x3d, 0x8c, 0x8a, ++ 0x60, 0x0d, 0xe8, 0x6f, 0x07, 0xbc, 0x76, 0x0a, 0xbc, 0x76, 0x22, 0x5e, ++ 0x4b, 0xfc, 0x0d, 0x9c, 0xd3, 0xc0, 0x77, 0x21, 0xe8, 0x2b, 0x80, 0xbf, ++ 0x5a, 0xb8, 0x8e, 0x4e, 0xed, 0x82, 0xb7, 0xe3, 0xae, 0x00, 0xd7, 0x71, ++ 0x3f, 0x24, 0x5c, 0x1b, 0x41, 0x1f, 0xa6, 0x73, 0xcd, 0xdd, 0xe1, 0xe4, ++ 0x4f, 0xd1, 0xc3, 0x79, 0xa9, 0x80, 0xab, 0x84, 0xf7, 0xbd, 0x57, 0x80, ++ 0xf3, 0xbd, 0xdf, 0x13, 0x9c, 0xef, 0x4d, 0x75, 0x68, 0xfc, 0x11, 0x12, ++ 0xde, 0xdd, 0xc9, 0x27, 0xfd, 0xfe, 0xc8, 0x79, 0x87, 0xa0, 0xd3, 0xa2, ++ 0xeb, 0xa1, 0xd3, 0x4b, 0x69, 0xdc, 0x4e, 0x64, 0x46, 0x3f, 0xc5, 0x99, ++ 0xea, 0xf7, 0xbd, 0xbe, 0x2b, 0x3d, 0xad, 0xbd, 0xc2, 0xbe, 0xaf, 0xfd, ++ 0x21, 0xf7, 0x5d, 0x0f, 0x37, 0x7d, 0x59, 0x29, 0xce, 0x3b, 0xf5, 0xcf, ++ 0xb7, 0xa5, 0x76, 0xcb, 0xef, 0xbe, 0x13, 0x38, 0xfe, 0x6f, 0xf3, 0xa7, ++ 0xcf, 0xa8, 0xdd, 0xab, 0x79, 0x3f, 0x6b, 0xe5, 0x41, 0xcd, 0xfb, 0xd9, ++ 0x9e, 0xf7, 0x34, 0xf5, 0xe1, 0x7e, 0x5f, 0x19, 0xa2, 0xb9, 0xf4, 0x8f, ++ 0x8f, 0x3c, 0xd5, 0xf1, 0x26, 0xd6, 0xaf, 0xd7, 0xcf, 0xde, 0x9d, 0x7f, ++ 0x7d, 0xc2, 0x0b, 0x0b, 0x0d, 0x78, 0xfe, 0x56, 0xec, 0xe3, 0xfe, 0xfd, ++ 0x05, 0xe9, 0xee, 0x7f, 0xa5, 0x02, 0x9c, 0xdf, 0x35, 0x78, 0xeb, 0x6d, ++ 0x00, 0xd7, 0x1b, 0x8f, 0x35, 0xa8, 0x74, 0x1e, 0xe6, 0xcd, 0xa3, 0x73, ++ 0xc0, 0xe5, 0x62, 0x8e, 0xe7, 0x87, 0xff, 0xf3, 0x93, 0x9f, 0x01, 0xde, ++ 0x9c, 0x67, 0x66, 0xf2, 0x7f, 0xb6, 0xec, 0xcd, 0x30, 0x3a, 0xb2, 0xbb, ++ 0xe2, 0x41, 0xc9, 0x05, 0x95, 0xb9, 0x82, 0xf4, 0xc4, 0x12, 0x4b, 0x94, ++ 0x11, 0xf5, 0xa9, 0x12, 0xd0, 0x94, 0x43, 0xe1, 0xcd, 0x25, 0x81, 0x37, ++ 0x14, 0x0f, 0x04, 0xf4, 0x3e, 0xd5, 0xc2, 0xc2, 0x62, 0x81, 0xce, 0xa7, ++ 0x4e, 0x55, 0x28, 0xfe, 0x69, 0x2a, 0xe3, 0xf1, 0xd4, 0x50, 0xb6, 0xb8, ++ 0xe1, 0xfd, 0x04, 0x23, 0x6b, 0x31, 0x43, 0xbd, 0xc2, 0x6a, 0x6c, 0x31, ++ 0xd3, 0xb9, 0x1f, 0xcf, 0x77, 0x98, 0xc2, 0xa7, 0xc9, 0xcc, 0x46, 0xe6, ++ 0xc1, 0xf7, 0x2c, 0x36, 0x86, 0xec, 0xe0, 0xc9, 0xf8, 0x10, 0xe6, 0xab, ++ 0xba, 0x54, 0x8a, 0x67, 0x9b, 0x52, 0xcc, 0xcf, 0x0b, 0xef, 0xb2, 0x36, ++ 0x84, 0xa1, 0x3c, 0xbd, 0xf3, 0xc0, 0x7d, 0x67, 0x7f, 0x06, 0xef, 0xd9, ++ 0x6a, 0x4f, 0x11, 0x8f, 0xd7, 0x96, 0xf9, 0x6b, 0x1f, 0x1b, 0xae, 0xe5, ++ 0x1c, 0xf0, 0x52, 0x2a, 0xa7, 0xf3, 0x76, 0x45, 0x9c, 0x2b, 0x2b, 0x61, ++ 0x4e, 0x8c, 0x6f, 0xd5, 0x7f, 0xf7, 0x7e, 0x2a, 0xf7, 0x97, 0x4e, 0x50, ++ 0x57, 0xa9, 0x18, 0xff, 0xd2, 0xf1, 0x1e, 0x23, 0xbd, 0x5b, 0xd2, 0x1d, ++ 0xac, 0xef, 0x80, 0x39, 0x9f, 0xe7, 0x67, 0x0c, 0xc5, 0x75, 0xb2, 0xb0, ++ 0x96, 0xb4, 0x48, 0xd4, 0x9f, 0x37, 0x96, 0x61, 0xfb, 0xca, 0xc3, 0x0e, ++ 0x82, 0x4b, 0x4d, 0xf1, 0xaa, 0x1c, 0xdc, 0xc7, 0x9a, 0xd1, 0xca, 0x67, ++ 0xe6, 0x9c, 0x80, 0x7d, 0x53, 0xb3, 0xf2, 0x6b, 0xd2, 0xd3, 0xc7, 0xa8, ++ 0x3b, 0xea, 0xb1, 0xfd, 0xb9, 0xa3, 0xdc, 0x35, 0x7e, 0x63, 0xab, 0x47, ++ 0x45, 0x7b, 0x25, 0xe0, 0xbf, 0xf4, 0xcf, 0x44, 0xba, 0xbc, 0x92, 0x1d, ++ 0x24, 0xe7, 0x7d, 0xac, 0xae, 0x85, 0xf0, 0xe9, 0x93, 0xba, 0x03, 0x54, ++ 0xbe, 0x3b, 0xf2, 0x4f, 0x45, 0xa8, 0x67, 0xf8, 0xeb, 0x7c, 0x21, 0xfd, ++ 0x97, 0xd7, 0xeb, 0x2f, 0x90, 0x7e, 0x02, 0xe9, 0x37, 0x90, 0x7c, 0xe0, ++ 0xd3, 0x7b, 0xcb, 0x7a, 0x23, 0x5e, 0x66, 0xa4, 0x09, 0x3d, 0xd0, 0xa2, ++ 0xf4, 0x43, 0xbe, 0xc0, 0x8c, 0xbc, 0x94, 0xfc, 0x32, 0x37, 0xad, 0x8b, ++ 0x5c, 0x2d, 0x48, 0xbb, 0xbc, 0x3e, 0xa8, 0x7d, 0xff, 0x3d, 0xf3, 0xd7, ++ 0xab, 0xc5, 0xf3, 0xca, 0x78, 0x2e, 0x17, 0xf5, 0xf8, 0xad, 0xc7, 0x6b, ++ 0x89, 0xcf, 0xf0, 0x59, 0x91, 0x02, 0xe3, 0xde, 0x05, 0xfa, 0x1e, 0xca, ++ 0xd5, 0x69, 0xcc, 0x93, 0x5d, 0x09, 0x7c, 0x76, 0xea, 0xc2, 0x0d, 0x61, ++ 0xc3, 0x94, 0xeb, 0xc7, 0xeb, 0x25, 0xd6, 0xcf, 0x13, 0x58, 0x88, 0x3c, ++ 0x95, 0x6b, 0xe7, 0xe7, 0x0e, 0xda, 0x47, 0xb5, 0x4c, 0x25, 0xfb, 0x40, ++ 0xc6, 0x2b, 0xc8, 0x7d, 0x58, 0x90, 0xd6, 0x45, 0x2e, 0x2e, 0xb9, 0xc2, ++ 0xbe, 0x2d, 0xf9, 0x21, 0xf7, 0xad, 0xab, 0x5c, 0xfb, 0x7c, 0xe6, 0xf5, ++ 0xc9, 0x35, 0xa6, 0xc9, 0xeb, 0xb8, 0xbf, 0x2b, 0xbe, 0x3e, 0x90, 0x76, ++ 0x79, 0x7d, 0x40, 0xfb, 0xfe, 0x7b, 0x5e, 0x77, 0x50, 0xfe, 0xcc, 0x4c, ++ 0xd5, 0x10, 0xc8, 0x17, 0xc1, 0x78, 0x62, 0x8c, 0x6b, 0x6c, 0xf7, 0xf2, ++ 0x7c, 0xc8, 0x45, 0x89, 0x1b, 0x22, 0x29, 0x38, 0xb3, 0xb8, 0x23, 0x12, ++ 0xf5, 0xc6, 0xc5, 0x7b, 0x54, 0xc2, 0x43, 0x66, 0x74, 0x19, 0xfb, 0x00, ++ 0xbe, 0x2e, 0x14, 0xf8, 0xda, 0xca, 0x5a, 0x3e, 0x40, 0x7c, 0x5c, 0x38, ++ 0x7c, 0x21, 0xe5, 0xd1, 0x2d, 0x7a, 0x3c, 0x74, 0x5c, 0x71, 0xb5, 0x68, ++ 0xbf, 0xc4, 0xda, 0x68, 0xc2, 0x75, 0x2e, 0xd9, 0xaa, 0x6d, 0x57, 0x2d, ++ 0xe2, 0x8a, 0x2b, 0x77, 0x68, 0xfd, 0xa2, 0xd5, 0xc3, 0x6f, 0x3a, 0x89, ++ 0xfd, 0x56, 0xeb, 0xe2, 0x79, 0x76, 0xa6, 0x89, 0xf8, 0xe1, 0x7c, 0x96, ++ 0xcf, 0xe3, 0x2e, 0xb4, 0xfa, 0xa9, 0xbe, 0x6c, 0xab, 0x63, 0x1a, 0x7f, ++ 0x65, 0xdb, 0xc5, 0x3a, 0xf2, 0x07, 0xbc, 0xf4, 0xbb, 0xd6, 0x87, 0x3d, ++ 0xfd, 0x83, 0xec, 0xff, 0xae, 0x78, 0xbb, 0xf7, 0x0a, 0xfb, 0xb7, 0xf7, ++ 0x87, 0xdc, 0x3f, 0x3d, 0xde, 0xaa, 0xb6, 0xad, 0x94, 0x57, 0x75, 0xad, ++ 0x78, 0xfb, 0xd3, 0x41, 0xae, 0x0f, 0x70, 0xde, 0x92, 0x1f, 0x4f, 0x47, ++ 0xde, 0x04, 0xe3, 0x4e, 0x7f, 0xd5, 0xec, 0xf5, 0xe0, 0xf9, 0x68, 0x91, ++ 0x83, 0xfb, 0x37, 0x15, 0x6f, 0x3d, 0x9e, 0xb7, 0xb5, 0x7f, 0xcb, 0xc8, ++ 0x7f, 0x34, 0x47, 0xf8, 0x39, 0xbb, 0xcb, 0x4b, 0x97, 0xf1, 0x06, 0x43, ++ 0x0e, 0x7b, 0xeb, 0x79, 0xbc, 0x81, 0x4b, 0xc5, 0x3c, 0xd1, 0xc1, 0x07, ++ 0xca, 0xcb, 0xf0, 0xb8, 0xa2, 0xe0, 0x9d, 0x5a, 0xd2, 0x47, 0xba, 0x3d, ++ 0xb7, 0x92, 0xf9, 0x55, 0x22, 0x7e, 0xe8, 0x6a, 0xf9, 0x9a, 0xf4, 0xeb, ++ 0x0d, 0x3e, 0x55, 0x4b, 0x7a, 0x96, 0xd3, 0x67, 0x27, 0x7d, 0x68, 0xe8, ++ 0x85, 0x86, 0x37, 0x51, 0x3e, 0x7e, 0x57, 0xfe, 0x6e, 0x29, 0x0f, 0x73, ++ 0x63, 0x38, 0xdc, 0x0a, 0xfd, 0xe5, 0xa4, 0xe7, 0xb5, 0x85, 0xb5, 0x14, ++ 0x7d, 0x88, 0x7a, 0xc2, 0xcb, 0xe1, 0x21, 0xf5, 0x84, 0x1e, 0xe9, 0x5c, ++ 0x4f, 0x98, 0xe4, 0x99, 0x1d, 0xc6, 0xf3, 0x0d, 0xbb, 0x9c, 0x07, 0xf6, ++ 0x48, 0xc7, 0xf3, 0x40, 0xc1, 0xff, 0x0d, 0x16, 0x57, 0x18, 0xc2, 0x69, ++ 0x8c, 0xda, 0xfa, 0xeb, 0x3b, 0x10, 0x7f, 0x7c, 0x2a, 0xf9, 0xf7, 0x56, ++ 0xfc, 0xfc, 0xfd, 0x3f, 0x3c, 0xe6, 0xb8, 0xb2, 0xdd, 0x5f, 0x63, 0x3f, ++ 0x4f, 0x7a, 0x43, 0x77, 0xfa, 0x7f, 0x8d, 0x81, 0xe7, 0x5d, 0xe4, 0x97, ++ 0x39, 0x28, 0xce, 0x0f, 0xed, 0x29, 0xf4, 0xef, 0x49, 0x7f, 0x9f, 0xbe, ++ 0x7d, 0xf1, 0xa0, 0xd2, 0xfe, 0xe9, 0x71, 0xe4, 0xaf, 0xf6, 0xb9, 0x70, ++ 0x3e, 0x9b, 0xf8, 0x7c, 0xba, 0xdb, 0x9f, 0x9a, 0x95, 0x5f, 0x69, 0xfc, ++ 0x8b, 0xdd, 0x8d, 0x5f, 0xb3, 0xa7, 0xc8, 0x3e, 0x27, 0x88, 0x0e, 0x66, ++ 0xa4, 0x2b, 0x12, 0xcf, 0xed, 0x27, 0x2c, 0x81, 0xfd, 0xbd, 0x5a, 0x3c, ++ 0x18, 0xd1, 0x31, 0x55, 0xa3, 0xff, 0xfc, 0xff, 0x6e, 0x57, 0x4c, 0x50, ++ 0x41, 0xb5, 0x04, 0xf9, 0x99, 0xad, 0x78, 0xb9, 0xfe, 0xca, 0xb8, 0x1e, ++ 0x3b, 0x9d, 0xf9, 0xa8, 0x9c, 0xc9, 0x3a, 0xa8, 0x74, 0x33, 0x1e, 0x7f, ++ 0x3f, 0x87, 0x39, 0xa9, 0x9c, 0x27, 0xf2, 0x98, 0xdf, 0xce, 0x70, 0x57, ++ 0xa4, 0x53, 0x3c, 0x4c, 0x47, 0x2f, 0x8a, 0x9f, 0x7c, 0xf1, 0x7f, 0xb2, ++ 0x10, 0x6f, 0xce, 0x8e, 0x1c, 0xb6, 0x01, 0x63, 0xed, 0xbe, 0x2f, 0x3d, ++ 0xae, 0x3d, 0xcf, 0x41, 0xe3, 0xb7, 0xef, 0xfe, 0x9f, 0x04, 0x8c, 0x83, ++ 0xb9, 0x12, 0x5f, 0xd8, 0x10, 0xef, 0x9a, 0x97, 0x1e, 0xe2, 0x3c, 0xe8, ++ 0x2f, 0x25, 0x2a, 0x9d, 0xb7, 0xb0, 0x53, 0x8f, 0x91, 0x9c, 0xa8, 0x10, ++ 0xb7, 0x30, 0xb0, 0xd1, 0xfc, 0x1c, 0xed, 0x5f, 0x8e, 0x44, 0xa2, 0x9b, ++ 0x00, 0x5f, 0xec, 0xbd, 0x59, 0xf2, 0x45, 0x3c, 0x9f, 0xcd, 0xfe, 0xcc, ++ 0xc0, 0xe3, 0x49, 0x16, 0x2b, 0xde, 0x81, 0xd0, 0xb4, 0xc9, 0x6f, 0x20, ++ 0xd2, 0xca, 0x9e, 0x9f, 0xe8, 0x55, 0xb1, 0xde, 0xc8, 0xdf, 0x67, 0x57, ++ 0x45, 0x79, 0x15, 0xa8, 0x67, 0x0f, 0x09, 0xe7, 0xef, 0xef, 0x8e, 0xf2, ++ 0xa2, 0x1f, 0x7d, 0x06, 0xf3, 0x13, 0x3d, 0xce, 0x62, 0x8c, 0xf8, 0xdd, ++ 0x6c, 0xc6, 0xf9, 0xde, 0x5c, 0xe6, 0xe2, 0xf9, 0x0e, 0xac, 0x23, 0x09, ++ 0xf5, 0xb0, 0xf9, 0xcd, 0x16, 0x1e, 0xef, 0xcf, 0xfc, 0x29, 0xc8, 0xdf, ++ 0x73, 0xba, 0xb1, 0x7f, 0x5a, 0x04, 0x9d, 0xe7, 0x26, 0x71, 0x7e, 0x9e, ++ 0x5b, 0xaa, 0xf5, 0x53, 0xac, 0x49, 0xe7, 0x7c, 0xfc, 0x64, 0x46, 0xe9, ++ 0x67, 0x48, 0x4f, 0x67, 0xd2, 0x5d, 0x6b, 0xb1, 0xcc, 0x8d, 0xf6, 0xad, ++ 0x7f, 0xb8, 0x90, 0xfc, 0xf6, 0x0c, 0xed, 0x87, 0x93, 0x43, 0x7e, 0x42, ++ 0xe7, 0x8d, 0xf2, 0xbb, 0xc8, 0x41, 0xa5, 0x0f, 0x62, 0xbb, 0x9d, 0x0a, ++ 0x8f, 0x4f, 0xf7, 0xec, 0x31, 0x53, 0x7c, 0x04, 0x7c, 0xd1, 0xab, 0x3c, ++ 0x28, 0xae, 0xff, 0xed, 0x8c, 0xb2, 0x5f, 0x61, 0xbb, 0x47, 0x11, 0xf6, ++ 0x45, 0xdd, 0xc3, 0x15, 0xbe, 0xd3, 0xe4, 0xcd, 0x06, 0xe8, 0xc9, 0xc3, ++ 0xe7, 0x8f, 0x36, 0x17, 0xf9, 0xdf, 0xe1, 0x41, 0x31, 0x8d, 0x4b, 0xf5, ++ 0xdf, 0x3f, 0x3d, 0x61, 0xf2, 0x6a, 0x2b, 0xf9, 0xf8, 0x3d, 0xa8, 0xf7, ++ 0x46, 0x0e, 0x72, 0x3f, 0x85, 0xfb, 0x9a, 0x6b, 0x62, 0xcc, 0x8a, 0xf3, ++ 0x7f, 0xc2, 0xec, 0xdd, 0x42, 0xfa, 0x69, 0x6d, 0x02, 0xfa, 0x2b, 0x17, ++ 0x3e, 0x69, 0x36, 0xa0, 0xde, 0xf0, 0x11, 0x88, 0x5b, 0xcc, 0x43, 0xf9, ++ 0x6b, 0x9d, 0x85, 0xca, 0xbf, 0x81, 0x1d, 0x8c, 0xe5, 0xa7, 0x60, 0x07, ++ 0x63, 0xf9, 0x19, 0xd8, 0xc1, 0x58, 0xfe, 0x1d, 0xec, 0x60, 0x2c, 0xe7, ++ 0x5f, 0xc8, 0x03, 0x61, 0xc1, 0xd8, 0xd8, 0x0c, 0x57, 0x33, 0xc7, 0xef, ++ 0xd0, 0xf9, 0x59, 0xbb, 0x05, 0x3c, 0x3b, 0xc7, 0xdf, 0x63, 0xa2, 0xf1, ++ 0x4f, 0x66, 0xb8, 0x09, 0xbe, 0x9d, 0xfb, 0xfd, 0x32, 0xf3, 0xe2, 0xa1, ++ 0xce, 0xce, 0xa8, 0x8e, 0xbe, 0xd1, 0x97, 0xc1, 0xb7, 0xee, 0xf9, 0x8c, ++ 0x47, 0xd8, 0x83, 0xa1, 0xe3, 0xb9, 0x9e, 0x15, 0xf3, 0xc8, 0x69, 0x34, ++ 0x92, 0x7c, 0xcf, 0x69, 0xf2, 0x47, 0x2e, 0x08, 0x6a, 0xf7, 0x76, 0xba, ++ 0x89, 0xde, 0x67, 0xef, 0xfe, 0x9c, 0xf2, 0x4f, 0xdb, 0xec, 0x9d, 0xf0, ++ 0x75, 0x29, 0xb0, 0xe4, 0x09, 0x06, 0x5e, 0x7f, 0xfb, 0xe9, 0x79, 0x93, ++ 0x57, 0x67, 0xe1, 0xfc, 0x5d, 0x9f, 0xe1, 0xba, 0x81, 0xbe, 0xff, 0x82, ++ 0x65, 0x4e, 0xd3, 0xfb, 0xbf, 0xc2, 0xfc, 0x1f, 0xe8, 0x9f, 0xe2, 0x0e, ++ 0xda, 0x95, 0x8e, 0xdf, 0x90, 0x1d, 0xa0, 0x5b, 0x87, 0x1e, 0x0e, 0x72, ++ 0x5d, 0x3b, 0xa3, 0x7c, 0xeb, 0xf1, 0xfb, 0x9d, 0xbb, 0x93, 0x70, 0x25, ++ 0xc0, 0x6f, 0x18, 0xa7, 0x1b, 0xc4, 0x23, 0x25, 0xd4, 0x7a, 0x57, 0xd1, ++ 0x7c, 0x6f, 0x37, 0x77, 0x14, 0x62, 0x5e, 0xcb, 0xed, 0x97, 0xd4, 0x90, ++ 0x71, 0xc6, 0x27, 0x33, 0x4a, 0x08, 0xce, 0x3f, 0x97, 0xf8, 0x26, 0xe1, ++ 0x24, 0xf6, 0xeb, 0x7a, 0xe9, 0xba, 0xf3, 0xfc, 0x5b, 0xe0, 0x29, 0x93, ++ 0xf7, 0x77, 0x20, 0xef, 0x74, 0xa0, 0x1c, 0xba, 0x18, 0x89, 0xfa, 0x5e, ++ 0x85, 0x38, 0xdf, 0x6f, 0x6a, 0x4c, 0x79, 0x17, 0xd7, 0xe7, 0x39, 0xa0, ++ 0xb2, 0x81, 0x0e, 0xc2, 0x5f, 0x0d, 0xdd, 0xc5, 0x66, 0xf0, 0xfd, 0x91, ++ 0x65, 0xf6, 0x1e, 0x53, 0x39, 0xee, 0xd3, 0xce, 0x3d, 0x27, 0x52, 0xe6, ++ 0x59, 0x69, 0x5f, 0x52, 0xe6, 0x43, 0x7b, 0x63, 0xc6, 0x40, 0x8d, 0xff, ++ 0x31, 0x7b, 0xc8, 0xb7, 0xff, 0xfd, 0x70, 0x2c, 0xb5, 0xb7, 0xe3, 0x50, ++ 0x77, 0xb2, 0xcd, 0x63, 0x30, 0xfe, 0x64, 0x9a, 0x65, 0xef, 0x1f, 0x71, ++ 0x49, 0x33, 0xec, 0x9f, 0x8d, 0xc1, 0xf8, 0x93, 0x59, 0xf1, 0xca, 0x7e, ++ 0x2c, 0x67, 0x3b, 0x12, 0xc7, 0x62, 0xdc, 0x89, 0x8c, 0x8f, 0x9f, 0x9b, ++ 0x5e, 0xb2, 0x1f, 0x49, 0xe9, 0x56, 0x67, 0x05, 0xe9, 0x69, 0x25, 0xc8, ++ 0x5c, 0x82, 0xe4, 0x41, 0x99, 0x25, 0x02, 0x0f, 0x05, 0x3b, 0xeb, 0x63, ++ 0xec, 0x31, 0x9a, 0xfa, 0x4d, 0xf1, 0xfd, 0x34, 0xed, 0xc7, 0x3b, 0x92, ++ 0x35, 0xef, 0x6f, 0x49, 0xcf, 0xd4, 0xbc, 0x97, 0xe3, 0xde, 0xea, 0x2c, ++ 0xd0, 0xb4, 0xcb, 0x8d, 0xee, 0x48, 0x42, 0xfb, 0x0c, 0xd6, 0x41, 0xf4, ++ 0xc0, 0xb6, 0xa9, 0x14, 0xa7, 0x97, 0xbd, 0xfb, 0xf0, 0xcd, 0x99, 0x50, ++ 0x9f, 0xb0, 0x7d, 0x8a, 0x13, 0xd5, 0x92, 0x9d, 0xe2, 0xfd, 0x84, 0x5d, ++ 0x65, 0x5e, 0xdc, 0x8f, 0x76, 0x80, 0xa7, 0x09, 0x14, 0xa8, 0x53, 0xc5, ++ 0x0f, 0xfc, 0xe6, 0x61, 0xec, 0x4c, 0xa7, 0xff, 0x57, 0xee, 0x79, 0x6a, ++ 0xbf, 0xcb, 0x71, 0x0d, 0xfa, 0x7f, 0x37, 0x7a, 0xbf, 0xe4, 0xb3, 0x4b, ++ 0x9b, 0x2d, 0x45, 0xc8, 0x67, 0xaf, 0xd6, 0x0e, 0xd0, 0xef, 0x4f, 0x7e, ++ 0x86, 0xd6, 0x2e, 0xe8, 0x0e, 0x6f, 0x3a, 0xe9, 0x42, 0x71, 0x70, 0xbc, ++ 0x39, 0xa8, 0xb2, 0x6d, 0x21, 0xf0, 0x06, 0x23, 0x52, 0x39, 0x1e, 0xf2, ++ 0x72, 0xc2, 0x21, 0x9e, 0x3f, 0x76, 0xad, 0xfc, 0xec, 0x0b, 0xe4, 0x67, ++ 0x31, 0x01, 0xfa, 0xe8, 0x2c, 0x75, 0x7e, 0xb9, 0x5c, 0x93, 0xf3, 0xdd, ++ 0xe5, 0xe8, 0xa7, 0xff, 0xb3, 0xca, 0x28, 0x1f, 0x4f, 0xe4, 0xf5, 0x2d, ++ 0xc0, 0xdf, 0xd5, 0x00, 0xbe, 0xb3, 0x79, 0x9b, 0xef, 0xef, 0x13, 0x4b, ++ 0xcf, 0x3d, 0xa8, 0xe7, 0x62, 0x7e, 0xa9, 0x0b, 0xfa, 0x5f, 0x92, 0x21, ++ 0xf4, 0xa7, 0xca, 0xbd, 0xf7, 0xf7, 0x29, 0x0c, 0xbc, 0x67, 0x2b, 0x3e, ++ 0xd3, 0xb4, 0x67, 0xf7, 0x2a, 0x6b, 0x34, 0xf5, 0xd5, 0x89, 0xda, 0xfa, ++ 0x83, 0x25, 0x6b, 0x82, 0xbf, 0xef, 0x8e, 0x2f, 0x2e, 0xd8, 0x34, 0xdb, ++ 0xe4, 0xa6, 0xfc, 0x4f, 0xc5, 0xe5, 0x0d, 0xc1, 0x1f, 0xe4, 0x7c, 0xc6, ++ 0xbc, 0x11, 0x4e, 0x71, 0x7d, 0xb7, 0x61, 0xbc, 0x0a, 0x3c, 0xaa, 0x2e, ++ 0x7c, 0xcf, 0x88, 0xe7, 0xb0, 0xb7, 0x75, 0x23, 0x47, 0x25, 0xff, 0xb9, ++ 0x53, 0x65, 0xb5, 0xa1, 0xde, 0xdf, 0x93, 0xc1, 0xfd, 0xfc, 0xb7, 0xbe, ++ 0x11, 0x4e, 0x71, 0x30, 0xd7, 0xda, 0xef, 0x47, 0x00, 0x4b, 0x8a, 0x33, ++ 0x7c, 0x89, 0xcb, 0xd1, 0x8f, 0x7a, 0xfa, 0x8c, 0xc1, 0xfb, 0xee, 0x11, ++ 0xfd, 0x9f, 0x2d, 0xda, 0xf8, 0xf3, 0x6f, 0xf0, 0x7c, 0xf4, 0x65, 0x46, ++ 0x71, 0x9f, 0x67, 0xa3, 0x38, 0xff, 0xcf, 0x69, 0x3c, 0x69, 0x30, 0xa0, ++ 0x1c, 0xec, 0xc1, 0xf1, 0x25, 0xc7, 0xee, 0x37, 0xa0, 0x5c, 0x69, 0x5f, ++ 0x14, 0xe1, 0xc1, 0xb8, 0xfe, 0x9a, 0xc5, 0x36, 0x8a, 0x07, 0xcd, 0x4d, ++ 0xea, 0xf8, 0xc0, 0x02, 0x5b, 0xbf, 0xee, 0x99, 0x03, 0x8f, 0x58, 0x00, ++ 0xdf, 0x3e, 0xc6, 0x24, 0xc8, 0x20, 0xb9, 0xda, 0x8e, 0x46, 0x11, 0xd4, ++ 0x37, 0x66, 0x1c, 0x20, 0xb9, 0x7a, 0xcb, 0x1b, 0xe1, 0x2d, 0x86, 0xeb, ++ 0x58, 0xcf, 0x46, 0x3c, 0x97, 0x40, 0x39, 0x58, 0xca, 0xe9, 0x7c, 0x26, ++ 0xe2, 0x8d, 0x90, 0x2f, 0xe8, 0x63, 0xaf, 0xb9, 0x9f, 0x75, 0xca, 0x1b, ++ 0xe4, 0x0b, 0xb8, 0x7e, 0xac, 0x1f, 0x78, 0xe6, 0x4f, 0x87, 0x1f, 0x81, ++ 0x79, 0xd7, 0x1c, 0xe4, 0x74, 0x8e, 0x11, 0x76, 0x7a, 0xfb, 0x7e, 0x5a, ++ 0x90, 0x7d, 0xcf, 0x1e, 0xe7, 0x74, 0x69, 0x81, 0x1f, 0x1e, 0xa7, 0xa4, ++ 0xa3, 0xef, 0x7d, 0x1b, 0x4c, 0xd6, 0xcb, 0xd2, 0x79, 0x03, 0xc5, 0xdd, ++ 0x5c, 0x2d, 0x7d, 0xef, 0x40, 0x7a, 0x8e, 0xb8, 0x2c, 0x3d, 0x1f, 0xba, ++ 0x05, 0xf6, 0xa7, 0xe6, 0x65, 0x7e, 0x9f, 0xc5, 0xb9, 0xe6, 0x81, 0x94, ++ 0x17, 0xdb, 0x9d, 0x3c, 0xaf, 0xd9, 0xa4, 0x12, 0x1d, 0xca, 0x7a, 0x5b, ++ 0xb3, 0x3a, 0x0e, 0xf1, 0x56, 0x9f, 0x7f, 0x2e, 0xe1, 0xca, 0x5c, 0x4e, ++ 0xa2, 0x4f, 0x79, 0x6f, 0xd4, 0xb2, 0x11, 0xff, 0x9c, 0x88, 0x72, 0x73, ++ 0xd9, 0x1e, 0x23, 0x0f, 0x12, 0xe9, 0x6e, 0x9c, 0x75, 0x2a, 0x73, 0x04, ++ 0x8d, 0xb3, 0xf3, 0x35, 0xf3, 0x22, 0xca, 0x73, 0x13, 0xf3, 0x6f, 0x97, ++ 0xf2, 0x7a, 0xcf, 0x3f, 0xa2, 0x4b, 0xb2, 0x78, 0xb9, 0x2a, 0x84, 0xdc, ++ 0x03, 0x39, 0x1d, 0x16, 0x8b, 0x72, 0xba, 0x42, 0x21, 0xbb, 0xf2, 0xc8, ++ 0x9e, 0xde, 0xa5, 0x08, 0xa7, 0x23, 0x0a, 0x6b, 0x71, 0x50, 0xde, 0x16, ++ 0x8f, 0x53, 0x9e, 0xc4, 0xbb, 0xc3, 0xe7, 0x56, 0xba, 0xaf, 0x24, 0x3e, ++ 0x9d, 0xe2, 0x93, 0xa5, 0x7d, 0x29, 0xed, 0xca, 0x29, 0x7b, 0xa6, 0x0c, ++ 0x44, 0xbd, 0xf2, 0x83, 0xc6, 0x39, 0x47, 0x60, 0xe7, 0xd8, 0xa7, 0x19, ++ 0xc9, 0x84, 0xe7, 0x77, 0x30, 0x0f, 0xe9, 0xc1, 0x47, 0xa2, 0xca, 0x07, ++ 0xa0, 0x5f, 0x62, 0x82, 0x88, 0x0f, 0x38, 0x12, 0xd5, 0xd1, 0x8a, 0x7c, ++ 0xf9, 0xc8, 0x88, 0x08, 0x05, 0xcf, 0xfb, 0xa1, 0xff, 0xd5, 0xd8, 0xbf, ++ 0x5c, 0xd7, 0x91, 0xb0, 0xf2, 0x01, 0xfc, 0xde, 0x09, 0x19, 0x97, 0x3c, ++ 0xe8, 0xba, 0xee, 0x89, 0x1b, 0xa3, 0xde, 0x5b, 0x72, 0x0b, 0x9e, 0x6f, ++ 0x4f, 0x67, 0x76, 0xb4, 0x2b, 0x6f, 0x57, 0xb9, 0x9e, 0xcb, 0x5e, 0xe7, ++ 0xf4, 0x29, 0xf9, 0x5e, 0x8d, 0xe2, 0x8b, 0xc6, 0x79, 0xbe, 0x9d, 0x31, ++ 0xf1, 0xab, 0x0c, 0x3c, 0x2f, 0x5e, 0xf9, 0x0b, 0xe1, 0x57, 0x15, 0x70, ++ 0x33, 0xf2, 0x38, 0xc4, 0xab, 0xd5, 0x73, 0x3b, 0xed, 0xd9, 0xa7, 0x15, ++ 0x7e, 0x1f, 0x8a, 0x93, 0xeb, 0xff, 0xd5, 0xc3, 0xcf, 0xfc, 0xfa, 0x0e, ++ 0xcc, 0x93, 0x03, 0xbb, 0x5b, 0x81, 0xf9, 0xcc, 0x69, 0xda, 0x4b, 0xf7, ++ 0xfe, 0xe8, 0xed, 0xec, 0x4e, 0x7b, 0xe7, 0xff, 0xd1, 0x9f, 0xda, 0xd5, ++ 0x5e, 0x2a, 0x8f, 0x18, 0x54, 0x14, 0xf0, 0x93, 0xeb, 0xed, 0xa6, 0x4e, ++ 0x3d, 0x5d, 0xea, 0x7b, 0xdb, 0x78, 0x9c, 0xfc, 0x9b, 0x23, 0x7e, 0xdb, ++ 0xb6, 0x14, 0xea, 0x2b, 0xb6, 0x45, 0x10, 0x1c, 0x4f, 0x3f, 0x69, 0xf6, ++ 0x20, 0x1f, 0x3f, 0xbd, 0xc5, 0x4c, 0xf6, 0xcf, 0xe9, 0xe8, 0x8e, 0x63, ++ 0xcb, 0xb1, 0xbe, 0x2b, 0xdb, 0xe9, 0xa1, 0xd1, 0x9c, 0x9a, 0x7b, 0xd1, ++ 0x16, 0x1a, 0x1c, 0x1f, 0xa2, 0xfc, 0x61, 0x6f, 0x87, 0xd1, 0x7d, 0x1e, ++ 0x27, 0x9f, 0x30, 0xb7, 0xe0, 0xf9, 0xee, 0xe2, 0xa7, 0x32, 0xb6, 0xa0, ++ 0x3d, 0x75, 0x72, 0x80, 0xe3, 0xd9, 0x1d, 0xe8, 0x0f, 0x7c, 0x36, 0x8e, ++ 0xee, 0x19, 0x60, 0x6e, 0xfe, 0xfd, 0x6d, 0x82, 0x1e, 0x91, 0xbe, 0x1c, ++ 0xa0, 0x7a, 0xa8, 0xbf, 0xb3, 0x91, 0x1e, 0xb1, 0xf8, 0x85, 0x3e, 0xc4, ++ 0xc7, 0xe4, 0xfe, 0x9d, 0x7a, 0x22, 0x9c, 0xf2, 0xe8, 0x4f, 0x1f, 0x98, ++ 0xd4, 0x13, 0xfd, 0x65, 0xad, 0x86, 0xe7, 0x29, 0x8f, 0x87, 0xa9, 0x56, ++ 0x0f, 0xf2, 0xe3, 0xa5, 0x5b, 0xc2, 0x49, 0x0f, 0x5c, 0x69, 0x77, 0x67, ++ 0xe3, 0xfa, 0xcb, 0x7e, 0x77, 0xdb, 0x1d, 0x05, 0x38, 0xfe, 0xfb, 0x71, ++ 0x0c, 0xd7, 0xd3, 0xde, 0xfc, 0x02, 0xf9, 0x2b, 0x03, 0xfb, 0x1b, 0x5a, ++ 0xbe, 0x9f, 0x6b, 0x4e, 0xe6, 0x7c, 0xa0, 0x53, 0xde, 0xf2, 0xb8, 0xdb, ++ 0x59, 0x18, 0x77, 0x9b, 0x4c, 0x71, 0xb7, 0x05, 0x83, 0xe2, 0x30, 0x5e, ++ 0x55, 0xde, 0xbb, 0xc8, 0xe3, 0x6e, 0xf3, 0x55, 0xc5, 0x45, 0x79, 0x07, ++ 0x0f, 0x85, 0xce, 0x23, 0x1f, 0x3d, 0x48, 0x9c, 0xab, 0x4a, 0xff, 0x49, ++ 0x0c, 0xb3, 0xc4, 0x23, 0x1d, 0xba, 0x19, 0xad, 0xb7, 0xfd, 0xa1, 0xb4, ++ 0x2d, 0x68, 0xef, 0x4c, 0x1f, 0x24, 0xf2, 0x9f, 0x59, 0x87, 0xc8, 0x97, ++ 0x94, 0xf8, 0x76, 0xac, 0xfa, 0x55, 0xf2, 0x9f, 0x98, 0x79, 0xbc, 0x5f, ++ 0x78, 0xe8, 0x73, 0xec, 0xf2, 0x41, 0x3c, 0xaf, 0x78, 0x81, 0xe5, 0x6b, ++ 0x8d, 0xff, 0xa6, 0x7a, 0xe5, 0xb7, 0x1a, 0xbf, 0x4a, 0x75, 0x16, 0x23, ++ 0xb9, 0x9b, 0x5f, 0xef, 0x28, 0xb8, 0x1b, 0xca, 0xe5, 0x02, 0xce, 0x55, ++ 0x49, 0xe5, 0x93, 0x10, 0x7e, 0x4b, 0x1a, 0x36, 0xbe, 0xf8, 0x0e, 0xc1, ++ 0xe5, 0xf1, 0x1f, 0x7f, 0x8c, 0xe3, 0x1e, 0xb0, 0x92, 0xdf, 0x86, 0xbd, ++ 0xc3, 0xe1, 0xa7, 0xb7, 0x67, 0x16, 0x58, 0xbe, 0x12, 0xf4, 0xb4, 0x59, ++ 0xa3, 0x07, 0x9f, 0x78, 0xf4, 0x43, 0x8a, 0x37, 0x39, 0xb1, 0x3b, 0x33, ++ 0x07, 0xf7, 0x6d, 0x8e, 0xea, 0x3b, 0x81, 0xf7, 0x71, 0xb5, 0xd9, 0x7c, ++ 0x9f, 0xfc, 0x0c, 0xca, 0x5d, 0x07, 0x0e, 0xd1, 0xbe, 0xe8, 0xe7, 0xdb, ++ 0xe5, 0xdc, 0x5e, 0xe1, 0x7c, 0xa5, 0x12, 0xd7, 0x11, 0x83, 0xf1, 0x2e, ++ 0xe5, 0x8b, 0x07, 0xd1, 0xb9, 0x30, 0xa7, 0xf7, 0xe3, 0xeb, 0xb3, 0x09, ++ 0x7e, 0xd2, 0x9f, 0xdb, 0x7e, 0x3a, 0xb4, 0xbd, 0x25, 0xe7, 0x29, 0xfb, ++ 0x97, 0xf3, 0x93, 0xfd, 0xcb, 0x76, 0xff, 0x25, 0xf6, 0xeb, 0xac, 0xc9, ++ 0x97, 0x83, 0xf2, 0xb9, 0x7f, 0xba, 0x43, 0x93, 0x87, 0x7d, 0x36, 0xd2, ++ 0x97, 0x13, 0x65, 0xc5, 0xe7, 0xfc, 0x1c, 0xea, 0x6c, 0x34, 0xd4, 0x83, ++ 0xf0, 0xe6, 0xfb, 0x3a, 0xdf, 0xb9, 0x4b, 0xf8, 0x79, 0x8e, 0x1a, 0x56, ++ 0xdd, 0x63, 0x02, 0xfc, 0x6b, 0x6d, 0x78, 0x38, 0xcc, 0x1d, 0xcc, 0x47, ++ 0xaf, 0xf1, 0x5c, 0x47, 0xce, 0x57, 0xc6, 0x95, 0xca, 0x3c, 0xda, 0x4d, ++ 0x83, 0x84, 0x3f, 0x7b, 0x00, 0x1b, 0xd0, 0x4d, 0xfe, 0xed, 0xe3, 0x88, ++ 0x27, 0x95, 0x5d, 0xf3, 0x6f, 0xe9, 0x79, 0x77, 0xf9, 0xb7, 0x9d, 0xf9, ++ 0xb6, 0xff, 0xe0, 0xf9, 0xb6, 0x32, 0xbf, 0xb6, 0xb0, 0xcc, 0x50, 0x1b, ++ 0x9c, 0x67, 0x2b, 0xf9, 0x61, 0x61, 0x26, 0x3c, 0xcf, 0xc2, 0x73, 0x7f, ++ 0xad, 0x7c, 0x2f, 0xcc, 0xd5, 0xb6, 0xef, 0x8e, 0x3f, 0x0e, 0xce, 0xe4, ++ 0x7e, 0x95, 0xc2, 0x98, 0xd0, 0xf9, 0xae, 0x7f, 0x1e, 0xc4, 0xdf, 0xd7, ++ 0xb3, 0x16, 0x7e, 0xff, 0xa0, 0x90, 0x8b, 0xc3, 0x04, 0xdc, 0xe5, 0xbd, ++ 0x5f, 0x52, 0x4f, 0xa9, 0x16, 0x7c, 0x5b, 0xe6, 0x79, 0x0e, 0x6b, 0xe6, ++ 0x71, 0x9b, 0xc3, 0x44, 0xde, 0x0e, 0x70, 0x01, 0xca, 0x73, 0xed, 0x72, ++ 0xbf, 0x5b, 0x7c, 0x26, 0xc9, 0x55, 0x79, 0x3f, 0x9f, 0x02, 0x7d, 0x4d, ++ 0x8f, 0x0e, 0x95, 0x2f, 0xec, 0xa3, 0x79, 0x8c, 0x64, 0x1d, 0x54, 0xba, ++ 0x98, 0xdd, 0x88, 0x25, 0x80, 0x9f, 0xca, 0xd1, 0xac, 0x9c, 0xca, 0xb1, ++ 0xac, 0x96, 0xca, 0x71, 0x6c, 0x03, 0x95, 0x37, 0xb3, 0x06, 0x2a, 0x6f, ++ 0x65, 0x3e, 0x2a, 0xd9, 0xa0, 0x16, 0x11, 0xef, 0x79, 0x2f, 0xcf, 0x33, ++ 0x1d, 0xbf, 0xd0, 0x80, 0xf2, 0xb5, 0xf0, 0x8e, 0xd0, 0x7a, 0x71, 0xfb, ++ 0x15, 0xe1, 0xe0, 0xa1, 0xfb, 0x03, 0xaf, 0x15, 0x0e, 0x63, 0x19, 0xbf, ++ 0xe7, 0xaf, 0x0b, 0x3c, 0xfa, 0xa7, 0x13, 0x7e, 0xeb, 0xe1, 0xa1, 0xcf, ++ 0xd7, 0x1c, 0xc1, 0xfc, 0x74, 0x71, 0xc9, 0x28, 0x44, 0xdc, 0x64, 0xb4, ++ 0x83, 0x1d, 0x14, 0xdf, 0x5a, 0xc6, 0x5c, 0x54, 0x1f, 0x73, 0x95, 0x70, ++ 0x28, 0xf6, 0xbb, 0x8d, 0x3c, 0xbf, 0x57, 0x07, 0x8f, 0xb2, 0xd0, 0x78, ++ 0x71, 0x41, 0xc0, 0x63, 0x15, 0xca, 0xce, 0xa2, 0xc0, 0x3e, 0x65, 0x67, ++ 0x3a, 0xe8, 0xb9, 0xdc, 0x2f, 0x30, 0xc4, 0xe2, 0x91, 0xff, 0xeb, 0xf7, ++ 0x51, 0x3e, 0x2f, 0x8c, 0x28, 0x3d, 0xef, 0xb0, 0xe3, 0x7d, 0x30, 0xab, ++ 0xa6, 0x50, 0x1e, 0x77, 0x41, 0xe9, 0xf2, 0x64, 0xa8, 0xa7, 0x66, 0xfe, ++ 0x6a, 0x0a, 0xe5, 0x79, 0x0f, 0x2b, 0x7d, 0x01, 0xf3, 0xbc, 0xd3, 0x9f, ++ 0x7d, 0x98, 0xbf, 0xcf, 0x2d, 0x2d, 0x08, 0x73, 0xc2, 0xb8, 0xab, 0x1e, ++ 0x99, 0x82, 0xf9, 0x8c, 0x6e, 0x11, 0x37, 0xed, 0x16, 0xf1, 0xd2, 0xcc, ++ 0x9d, 0xa7, 0xb9, 0x1f, 0xcb, 0xbd, 0xea, 0x1e, 0xba, 0x6f, 0xcc, 0x3d, ++ 0xc0, 0xea, 0xc4, 0x75, 0xca, 0xbc, 0x70, 0x35, 0x99, 0x9f, 0xaf, 0xee, ++ 0xb1, 0xbb, 0x7b, 0x66, 0xc2, 0x7c, 0x13, 0xc6, 0xf9, 0xd6, 0x70, 0x48, ++ 0x97, 0xf6, 0x9e, 0x0a, 0x74, 0xdc, 0xea, 0x0b, 0x63, 0x18, 0xef, 0xbf, ++ 0xd6, 0xc4, 0xdb, 0xcb, 0xfb, 0x6c, 0xe4, 0xfa, 0xe4, 0x3d, 0x37, 0xbb, ++ 0x76, 0x65, 0x2e, 0x57, 0x92, 0xae, 0x3c, 0x0f, 0x18, 0x67, 0x00, 0x8e, ++ 0xe3, 0x5e, 0x35, 0x90, 0xf2, 0xe3, 0xdc, 0xbb, 0x15, 0xe7, 0xe5, 0xc6, ++ 0x0b, 0x4f, 0x72, 0x27, 0x65, 0xa2, 0xde, 0x85, 0x49, 0xf1, 0x40, 0x17, ++ 0xfd, 0x84, 0x1c, 0x6e, 0xdd, 0x95, 0x99, 0x89, 0xfb, 0x94, 0x9d, 0x29, ++ 0xe2, 0x7e, 0x62, 0x13, 0x0b, 0x10, 0x8e, 0xd3, 0x92, 0xca, 0xb3, 0xb1, ++ 0x7f, 0x99, 0x17, 0x9d, 0x2d, 0xf6, 0xa5, 0xbb, 0x72, 0x4a, 0xa6, 0x2b, ++ 0x13, 0xdb, 0xeb, 0x9f, 0xcb, 0xbc, 0xec, 0x91, 0x99, 0xee, 0x3c, 0x1c, ++ 0xbf, 0x26, 0xe2, 0x22, 0xe5, 0x9b, 0xb5, 0xe5, 0xbd, 0xbf, 0xc6, 0x9f, ++ 0xd8, 0x35, 0x4f, 0xbd, 0xde, 0xc5, 0xbc, 0x26, 0xe2, 0x2b, 0xda, 0xfc, ++ 0xf4, 0xf6, 0xf9, 0x26, 0xba, 0xcf, 0xa9, 0xb0, 0xdc, 0x5d, 0x8f, 0x21, ++ 0xca, 0x37, 0x4e, 0xef, 0x18, 0x8c, 0xfa, 0x31, 0xf4, 0x3b, 0x1c, 0xc7, ++ 0xad, 0x31, 0xf9, 0x13, 0xf2, 0x54, 0x8c, 0x42, 0xe6, 0xf9, 0xef, 0xfa, ++ 0x7c, 0xef, 0x3d, 0xaf, 0x1d, 0xd4, 0xe4, 0xb7, 0x4b, 0x3a, 0xeb, 0xcc, ++ 0x6f, 0x3f, 0xc7, 0xf3, 0xdb, 0x03, 0xf4, 0xf5, 0xe8, 0x72, 0x16, 0x94, ++ 0xdf, 0x2e, 0xe9, 0x46, 0xd2, 0xdd, 0x50, 0xcc, 0x6f, 0x8f, 0xc4, 0x7a, ++ 0xc6, 0x7c, 0x6c, 0x37, 0xe2, 0xfd, 0x63, 0x94, 0xdf, 0x3e, 0xea, 0x98, ++ 0x5f, 0xe4, 0xb7, 0x7f, 0xa8, 0xcd, 0x6f, 0x77, 0xfd, 0xf3, 0xba, 0xf2, ++ 0xdb, 0x4f, 0x8a, 0xfb, 0xde, 0x4e, 0x5a, 0xf8, 0x7d, 0x49, 0xf2, 0x3e, ++ 0xa9, 0x65, 0xbb, 0xf9, 0xf9, 0xef, 0x32, 0x85, 0xdf, 0x27, 0xb5, 0xec, ++ 0x39, 0x7e, 0x9f, 0x94, 0xb4, 0x0b, 0x17, 0x89, 0xf5, 0x55, 0x1d, 0xdc, ++ 0xb6, 0x06, 0xcf, 0xf9, 0x16, 0x3d, 0x3e, 0x97, 0xee, 0xa3, 0x62, 0xe2, ++ 0x1e, 0x54, 0x07, 0xfc, 0x04, 0xdb, 0x85, 0xf2, 0x5e, 0x52, 0x7d, 0x1e, ++ 0x4c, 0x0d, 0xda, 0x83, 0xa4, 0x37, 0xb7, 0x90, 0xde, 0xa5, 0xcf, 0x87, ++ 0xa9, 0x79, 0xbc, 0x8c, 0xec, 0xc1, 0x1a, 0x9d, 0x1e, 0x5d, 0x9d, 0x29, ++ 0xec, 0x41, 0x21, 0xcf, 0x98, 0xd0, 0xff, 0x16, 0x8a, 0x6f, 0x71, 0x1d, ++ 0x56, 0xb2, 0xcf, 0x4c, 0xa4, 0x77, 0x2e, 0x7b, 0x62, 0xb9, 0xd3, 0x8e, ++ 0x75, 0x41, 0x57, 0x6c, 0xc7, 0x0e, 0x3a, 0x77, 0x93, 0xed, 0xd9, 0xe3, ++ 0x31, 0x84, 0x0b, 0x92, 0xce, 0x16, 0xaf, 0x53, 0x48, 0x7f, 0x95, 0xf0, ++ 0xcb, 0xdd, 0x6e, 0x76, 0xd1, 0x3d, 0xc6, 0xdb, 0x7b, 0x93, 0xde, 0x0a, ++ 0xfa, 0xb6, 0xc8, 0x63, 0xf6, 0x72, 0x7b, 0x1b, 0x70, 0x05, 0xe3, 0xe1, ++ 0x77, 0x46, 0x75, 0x24, 0xa1, 0x9e, 0xbc, 0x73, 0x4f, 0xba, 0x13, 0x38, ++ 0x2c, 0x7b, 0xa5, 0xdb, 0xfb, 0xa7, 0x77, 0xe8, 0xee, 0x9f, 0x7e, 0x4a, ++ 0x73, 0xff, 0xf4, 0x39, 0xfc, 0x0f, 0xf5, 0xb4, 0x53, 0x06, 0x2f, 0xf6, ++ 0x33, 0x98, 0xa5, 0xff, 0x12, 0xef, 0x25, 0x2e, 0x3a, 0x65, 0x74, 0x7a, ++ 0x1d, 0x81, 0xfb, 0x98, 0xaf, 0x74, 0xef, 0xb0, 0x84, 0xbf, 0x59, 0xec, ++ 0xd7, 0xb5, 0xde, 0x43, 0xac, 0xbf, 0xef, 0x59, 0xe6, 0x3f, 0xe8, 0xef, ++ 0x23, 0x5e, 0x2b, 0xee, 0x23, 0x1e, 0xd1, 0xcd, 0x7d, 0xc4, 0x66, 0xb5, ++ 0x59, 0x25, 0xfd, 0xe1, 0x6b, 0xa3, 0xe6, 0x5e, 0xe2, 0x1b, 0xc5, 0x3a, ++ 0x8b, 0x1d, 0xcc, 0x8b, 0xf7, 0xfc, 0x0e, 0x6d, 0x35, 0x6a, 0xf6, 0xbf, ++ 0xd8, 0xbf, 0x81, 0xa1, 0x3e, 0x14, 0x7e, 0xd8, 0xa8, 0xf1, 0x23, 0x98, ++ 0x1d, 0xda, 0x7a, 0x83, 0xc4, 0x07, 0x71, 0xbf, 0x48, 0x57, 0x78, 0x5b, ++ 0x3b, 0xe1, 0x69, 0x26, 0x78, 0xa6, 0xd0, 0x3d, 0xcf, 0x45, 0xba, 0x7b, ++ 0x9e, 0x25, 0x9c, 0x3a, 0xef, 0x79, 0xee, 0x6f, 0x25, 0xbc, 0x1f, 0x7a, ++ 0xf0, 0x05, 0x15, 0xf9, 0xc1, 0xb5, 0xde, 0xf7, 0xfd, 0x43, 0xdf, 0xef, ++ 0x7d, 0xa5, 0xfb, 0xbc, 0xf5, 0xf7, 0x74, 0xeb, 0xef, 0xe5, 0xee, 0xee, ++ 0x9e, 0x6f, 0xb9, 0xef, 0x79, 0x2d, 0xcb, 0x34, 0xed, 0xf5, 0xfb, 0x5e, ++ 0x70, 0xe0, 0xa7, 0xda, 0x7b, 0xa8, 0xc5, 0x7e, 0x7b, 0xe0, 0xe7, 0xbb, ++ 0xdc, 0xef, 0xb6, 0x4c, 0xe1, 0xdf, 0x15, 0xfb, 0xfd, 0x35, 0x5e, 0x80, ++ 0x06, 0x74, 0xf8, 0x97, 0xc8, 0x53, 0x0f, 0x22, 0x59, 0x4e, 0x88, 0xe0, ++ 0x7c, 0xad, 0xd3, 0xae, 0x1f, 0x1e, 0x46, 0x76, 0xd6, 0xbb, 0x8e, 0x98, ++ 0x32, 0x1b, 0xd2, 0xbf, 0x90, 0x53, 0xe5, 0x42, 0x4e, 0x81, 0x15, 0xc7, ++ 0xeb, 0x02, 0x5f, 0x9c, 0x3e, 0x1e, 0x47, 0x90, 0x7f, 0x94, 0xdf, 0x5f, ++ 0x51, 0xe8, 0xe7, 0xf1, 0x04, 0x83, 0x4f, 0x85, 0xce, 0x0f, 0xba, 0xbd, ++ 0x58, 0xd1, 0x9c, 0xef, 0x76, 0xbd, 0xb7, 0x98, 0xe7, 0x19, 0x0f, 0xbb, ++ 0xc8, 0xe3, 0xf4, 0xf4, 0xe7, 0xfe, 0x32, 0x6f, 0xa8, 0xc2, 0x15, 0xae, ++ 0xbd, 0xbf, 0xa1, 0x9b, 0x3c, 0x22, 0xe9, 0xc7, 0x01, 0x3d, 0x9e, 0x99, ++ 0x50, 0x8f, 0x37, 0xf0, 0xfb, 0xec, 0x42, 0xdc, 0x73, 0xbc, 0x49, 0x4d, ++ 0x0e, 0xce, 0x23, 0x72, 0x93, 0x7f, 0x67, 0xb2, 0xc5, 0x97, 0x80, 0xf8, ++ 0x6c, 0x4b, 0x74, 0xc7, 0x67, 0x15, 0x05, 0xf2, 0x8d, 0x46, 0x61, 0x5e, ++ 0x91, 0x42, 0xf6, 0xa0, 0x10, 0x4a, 0x51, 0x3f, 0xc2, 0x38, 0xcf, 0x76, ++ 0x4c, 0xb2, 0xed, 0x8b, 0xf9, 0xa3, 0x91, 0x3f, 0xc2, 0x3c, 0x19, 0x98, ++ 0xbe, 0xdd, 0x3f, 0x98, 0x9b, 0xbb, 0xf8, 0x6f, 0x60, 0x96, 0x3b, 0x31, ++ 0x0b, 0xe4, 0xc9, 0x71, 0xc5, 0xbe, 0xa6, 0x00, 0xbe, 0xfd, 0xcb, 0xd0, ++ 0x33, 0x09, 0x28, 0x9f, 0xcc, 0x78, 0xae, 0x9d, 0x4f, 0xe7, 0xbe, 0xc9, ++ 0xf8, 0x5e, 0x7f, 0x3f, 0xbf, 0xdf, 0xe0, 0x20, 0xfd, 0xc2, 0xf3, 0x53, ++ 0x85, 0xec, 0x87, 0x33, 0xd8, 0xd9, 0x90, 0x20, 0x7a, 0x5d, 0x17, 0x26, ++ 0xf2, 0x1a, 0x75, 0x7f, 0xbf, 0x40, 0xd8, 0x53, 0xf2, 0xef, 0x17, 0x1c, ++ 0x87, 0x2e, 0x16, 0x01, 0xdf, 0x9e, 0xd1, 0xc4, 0xf3, 0xa8, 0x97, 0xc6, ++ 0xb7, 0x0a, 0x3b, 0x8c, 0xdf, 0xdf, 0x3a, 0xb7, 0xbf, 0x95, 0xee, 0x7f, ++ 0x62, 0xae, 0x02, 0x27, 0xb7, 0xc3, 0xa5, 0x7d, 0xd5, 0x4f, 0xbd, 0x16, ++ 0xb9, 0x79, 0xa5, 0xf8, 0xa2, 0xa5, 0xf1, 0xa7, 0x35, 0x76, 0x2e, 0xdb, ++ 0x11, 0x73, 0x55, 0xe7, 0x89, 0x81, 0x75, 0xf3, 0xfe, 0x8f, 0x3f, 0x10, ++ 0x41, 0xf2, 0xe6, 0xf8, 0x03, 0x03, 0xc8, 0xcf, 0x17, 0xe8, 0xbf, 0x8d, ++ 0xec, 0xfe, 0x19, 0xb5, 0xda, 0x38, 0xe3, 0x59, 0x2b, 0x3f, 0xd2, 0xe0, ++ 0xdf, 0x6c, 0xcf, 0x67, 0x9a, 0xf7, 0xfe, 0xd8, 0x8e, 0xb0, 0x7e, 0xb0, ++ 0x7e, 0xff, 0x8b, 0x7d, 0xc6, 0x4e, 0x03, 0xf8, 0x9d, 0xdd, 0x6d, 0x1e, ++ 0x8c, 0x74, 0x06, 0xfb, 0x36, 0x35, 0x2b, 0xc8, 0x0e, 0xf6, 0x3f, 0x94, ++ 0x36, 0x9a, 0xeb, 0x01, 0x57, 0x5a, 0xe7, 0x19, 0x9a, 0xc7, 0x31, 0x11, ++ 0x27, 0x2a, 0xd7, 0xf9, 0x49, 0xdd, 0x51, 0xaa, 0xfb, 0xeb, 0xfc, 0xba, ++ 0x78, 0x1e, 0x8f, 0xc6, 0x2e, 0x95, 0xa5, 0xe9, 0x0d, 0x46, 0xf7, 0xe4, ++ 0x74, 0x28, 0x3d, 0x9c, 0xa1, 0xfc, 0x2c, 0x9f, 0x66, 0x71, 0xbd, 0xfd, ++ 0x98, 0xc8, 0x83, 0x3c, 0x26, 0xf2, 0x20, 0x8f, 0x89, 0xbc, 0xc5, 0x63, ++ 0x22, 0x4f, 0xf1, 0x98, 0xc8, 0x53, 0x94, 0xf9, 0xa3, 0xc7, 0x14, 0xe6, ++ 0xc2, 0x78, 0x8a, 0xe9, 0x4a, 0xf9, 0x93, 0xb3, 0x15, 0xca, 0x1f, 0xbd, ++ 0x07, 0xf1, 0xaf, 0x66, 0x49, 0x47, 0x0e, 0xe6, 0xdb, 0xd5, 0xe4, 0xfa, ++ 0x67, 0x2a, 0x2a, 0xe5, 0x8f, 0xae, 0xc4, 0xf5, 0x87, 0xc8, 0x1f, 0xcd, ++ 0xc1, 0xbc, 0xf7, 0x5d, 0x59, 0x77, 0xfe, 0x08, 0xf5, 0xf8, 0x53, 0x3d, ++ 0x3c, 0x74, 0x2f, 0xc9, 0xef, 0x77, 0x4c, 0xe6, 0x75, 0x13, 0xa7, 0x8f, ++ 0x57, 0xb2, 0x46, 0x11, 0x3d, 0x78, 0xfb, 0xba, 0xef, 0xc3, 0x7e, 0xbe, ++ 0x50, 0xd4, 0x16, 0xc2, 0xe7, 0x97, 0x15, 0x3a, 0x4f, 0x65, 0x2e, 0xbf, ++ 0x69, 0xe2, 0x65, 0xf2, 0x4b, 0x1f, 0xc8, 0xe2, 0xe7, 0x0b, 0xeb, 0x75, ++ 0xe5, 0xd6, 0x2c, 0xce, 0xcf, 0x5e, 0x11, 0xe5, 0x18, 0xf5, 0xc1, 0x54, ++ 0xca, 0xfb, 0xd9, 0x64, 0xa6, 0xbc, 0x1f, 0x18, 0xc7, 0x65, 0x08, 0x3a, ++ 0xff, 0xd7, 0xe7, 0x67, 0xe5, 0xbf, 0x6e, 0x6e, 0x41, 0xbe, 0x21, 0xfd, ++ 0x30, 0x4f, 0x64, 0x25, 0xf2, 0x73, 0xcf, 0x64, 0xee, 0x5f, 0x89, 0xfd, ++ 0xa5, 0x99, 0xe7, 0x6d, 0xf9, 0x7d, 0x09, 0x98, 0xe7, 0x85, 0xf1, 0x3e, ++ 0x78, 0x6f, 0x06, 0x3b, 0xcc, 0x5c, 0x3c, 0x0f, 0x8c, 0xdf, 0xdf, 0x27, ++ 0xf7, 0xe1, 0x09, 0xb1, 0x0f, 0x74, 0x91, 0x7e, 0x61, 0x20, 0x4f, 0xac, ++ 0xea, 0xe0, 0xf1, 0x4f, 0x90, 0x8f, 0x8c, 0xcd, 0x72, 0x6f, 0xc6, 0xf5, ++ 0xcb, 0xfc, 0xa5, 0xaa, 0xc8, 0xbd, 0x14, 0x37, 0xf1, 0x42, 0x96, 0x83, ++ 0xbe, 0x83, 0xf9, 0xd2, 0xfa, 0x81, 0x1f, 0xac, 0x56, 0x08, 0xce, 0x5d, ++ 0xfc, 0x70, 0xcf, 0xe0, 0xfe, 0xe8, 0xf3, 0xdf, 0xbb, 0x5b, 0xff, 0xd9, ++ 0xf9, 0xbe, 0xdf, 0x64, 0x25, 0x06, 0xf2, 0xa7, 0x82, 0xf2, 0xa6, 0x5e, ++ 0xc0, 0x79, 0xc8, 0x75, 0xcb, 0x79, 0x04, 0xfa, 0xb9, 0x3c, 0x5e, 0x4b, ++ 0x7f, 0x52, 0xc0, 0xdf, 0xb5, 0x36, 0x15, 0xe9, 0x44, 0xde, 0x4f, 0x9b, ++ 0xaf, 0x2a, 0xb3, 0x26, 0x86, 0xf8, 0xfe, 0x03, 0xb1, 0x6f, 0x55, 0x49, ++ 0xe5, 0x7b, 0x71, 0x1d, 0x4b, 0x6a, 0xb9, 0xbf, 0xad, 0xd3, 0x1e, 0x57, ++ 0x36, 0xfc, 0xf8, 0x63, 0xdc, 0xaf, 0x83, 0x56, 0xe2, 0x73, 0xdd, 0x7d, ++ 0xaf, 0x5f, 0x67, 0xd5, 0x6b, 0x07, 0x09, 0x1e, 0xb0, 0xce, 0x99, 0xb8, ++ 0xbe, 0xa0, 0x75, 0xbe, 0x9b, 0x15, 0xe4, 0x17, 0x3c, 0xbb, 0xe7, 0xc3, ++ 0xdf, 0x20, 0xa8, 0xaf, 0x77, 0x7d, 0xd7, 0x9a, 0xc7, 0x6c, 0xee, 0xc1, ++ 0xef, 0x43, 0xec, 0xea, 0x8f, 0x86, 0x0d, 0x0d, 0xd2, 0xa3, 0xcc, 0xf2, ++ 0xfb, 0xfe, 0xda, 0x7b, 0xc6, 0xcc, 0xf8, 0xf7, 0x10, 0x60, 0xbc, 0x46, ++ 0x61, 0x7f, 0x34, 0x0a, 0xfb, 0xa3, 0x29, 0x4c, 0xfc, 0xbd, 0x1a, 0x9d, ++ 0x3d, 0xda, 0xe8, 0xe3, 0xf1, 0x3c, 0x8d, 0xf1, 0x26, 0x8a, 0xd7, 0x61, ++ 0xe2, 0xef, 0x2b, 0x48, 0xf9, 0xbb, 0xe2, 0x3d, 0x1e, 0xdf, 0xb3, 0x22, ++ 0x91, 0xd1, 0x7b, 0x9c, 0x1f, 0xd2, 0x81, 0xe2, 0xdf, 0x4f, 0xf2, 0xa0, ++ 0xf3, 0xbe, 0x28, 0x05, 0xe4, 0x1c, 0xe0, 0xc3, 0x19, 0xbb, 0xfb, 0x02, ++ 0xc2, 0x8f, 0xb9, 0x97, 0x93, 0x7c, 0x50, 0x6f, 0xb0, 0x3a, 0x11, 0x9f, ++ 0x77, 0xbd, 0x7d, 0xb3, 0xb0, 0xab, 0xb8, 0xbc, 0x29, 0x12, 0xf2, 0xa5, ++ 0x08, 0xfb, 0xc1, 0x75, 0x64, 0xf5, 0x24, 0xb9, 0x53, 0x28, 0xc6, 0x1d, ++ 0x6c, 0xa9, 0x25, 0xbd, 0x76, 0x08, 0xf3, 0x08, 0x3f, 0x8b, 0xf0, 0x47, ++ 0x3c, 0xb0, 0x5f, 0x63, 0x8f, 0xfd, 0x5f, 0x0d, 0xf6, 0x2d, 0x39, 0x10, ++ 0x68, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 usem_int_table_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xfb, 0x51, ++ 0xcf, 0xc0, 0xf0, 0x03, 0x8a, 0xd7, 0x98, 0x33, 0x30, 0x38, 0x5a, 0x31, ++ 0x30, 0xe4, 0x59, 0x33, 0x30, 0x5c, 0x07, 0xe2, 0x30, 0x73, 0x84, 0xdc, ++ 0x4b, 0x71, 0x04, 0x9b, 0x9a, 0xf8, 0xa7, 0x3c, 0x65, 0xfa, 0x37, 0x48, ++ 0x32, 0x30, 0x6c, 0x02, 0xe2, 0x2d, 0x40, 0xbc, 0x4d, 0x92, 0x74, 0xfd, ++ 0xb7, 0xb4, 0x10, 0xec, 0xbd, 0xaa, 0x0c, 0x0c, 0xb7, 0x81, 0xfc, 0x6e, ++ 0x20, 0xfd, 0x5d, 0x9d, 0x81, 0x61, 0x17, 0x90, 0x7d, 0x07, 0x88, 0x2f, ++ 0x83, 0xf8, 0x40, 0xcc, 0xac, 0xc6, 0xc0, 0x20, 0x0e, 0xe4, 0xab, 0x00, ++ 0x69, 0x3f, 0x20, 0xd6, 0x07, 0xe2, 0xbb, 0x40, 0x7e, 0x9a, 0x1a, 0x6e, ++ 0xf3, 0xef, 0x69, 0xe1, 0xb7, 0x7f, 0x9b, 0x06, 0x2a, 0xff, 0x1d, 0x1a, ++ 0xff, 0x92, 0x3a, 0x7e, 0xfd, 0x99, 0x9a, 0xf8, 0xe5, 0xdf, 0x11, 0x90, ++ 0xc7, 0x86, 0x1f, 0xdb, 0x91, 0x1f, 0x1f, 0xea, 0xf6, 0xb4, 0x49, 0x27, ++ 0xb4, 0xc2, 0x07, 0xd0, 0xd2, 0xf5, 0x4e, 0x13, 0x06, 0x86, 0x0b, 0xa6, ++ 0x0c, 0x0c, 0x22, 0xd0, 0xb4, 0xbf, 0x17, 0x49, 0x5e, 0x0d, 0x28, 0xb6, ++ 0xcb, 0x04, 0xc2, 0x9e, 0xab, 0x07, 0x4c, 0x7b, 0x66, 0x40, 0x3e, 0x8e, ++ 0x7c, 0x31, 0x0f, 0x28, 0xbf, 0x11, 0x28, 0x6f, 0x64, 0x8e, 0xdf, 0x7e, ++ 0x05, 0x66, 0x54, 0xbe, 0x00, 0x2f, 0xa6, 0x9a, 0x6f, 0x4c, 0x08, 0xf6, ++ 0x04, 0x21, 0x54, 0xb9, 0xc3, 0xc2, 0x98, 0xea, 0xb9, 0x44, 0x19, 0x18, ++ 0x00, 0x65, 0x83, 0x84, 0x86, 0xd8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 usem_pram_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe5, 0x7d, ++ 0x0d, 0x78, 0x54, 0xd5, 0xb5, 0xf6, 0x3e, 0x73, 0xce, 0x9c, 0x99, 0x64, ++ 0x4e, 0x26, 0x93, 0x10, 0xc2, 0x40, 0x02, 0x4e, 0x7e, 0xd0, 0xa8, 0x09, ++ 0x8e, 0x10, 0x30, 0x26, 0x13, 0x72, 0x26, 0x3f, 0x24, 0x24, 0x01, 0xc3, ++ 0x4f, 0x69, 0x5a, 0x69, 0x9d, 0xa0, 0x45, 0xda, 0x82, 0x22, 0xda, 0x5e, ++ 0x6f, 0x2f, 0x5f, 0x19, 0x7e, 0x1a, 0x22, 0x45, 0xc5, 0x16, 0xad, 0xda, ++ 0xde, 0xde, 0x81, 0x2a, 0x4f, 0xdb, 0xeb, 0x73, 0x9f, 0x60, 0xa9, 0xe5, ++ 0x86, 0x44, 0x26, 0x10, 0x10, 0x0d, 0x3f, 0x11, 0xad, 0xde, 0x7e, 0xb6, ++ 0xdf, 0x8d, 0xda, 0x8b, 0xa1, 0x0d, 0x38, 0xc1, 0x60, 0xe9, 0xf7, 0x60, ++ 0xf9, 0xf6, 0x5a, 0x7b, 0xef, 0xcc, 0x9c, 0x93, 0x99, 0x04, 0xd4, 0xef, ++ 0xde, 0xef, 0x07, 0x1f, 0x9f, 0x93, 0x73, 0xce, 0x3e, 0x7b, 0xaf, 0xbd, ++ 0xf6, 0x5a, 0x6b, 0xbf, 0x6b, 0xed, 0xb5, 0xf7, 0x58, 0xc9, 0x44, 0xe2, ++ 0xaa, 0x20, 0xe4, 0x0a, 0xfc, 0xa3, 0x57, 0xdf, 0x64, 0x42, 0xe8, 0xa3, ++ 0x91, 0xab, 0x78, 0x5e, 0x69, 0x27, 0x41, 0xc7, 0x2d, 0x84, 0xa4, 0xd9, ++ 0xf7, 0xf6, 0xce, 0xc8, 0x20, 0x64, 0x9e, 0x26, 0x7b, 0x6b, 0x3d, 0x84, ++ 0x4c, 0xb2, 0xb7, 0xf4, 0x90, 0x62, 0x42, 0xca, 0x89, 0xcd, 0x63, 0xcb, ++ 0x21, 0xa4, 0x5b, 0xfa, 0x4d, 0xef, 0x0c, 0x7a, 0x7f, 0x34, 0xc5, 0xea, ++ 0xb5, 0x11, 0xf8, 0xf7, 0x00, 0x21, 0x73, 0x08, 0x59, 0x67, 0xa7, 0x7f, ++ 0xd2, 0xf2, 0x47, 0x2f, 0xd2, 0x2b, 0xfd, 0xfe, 0xe8, 0x5f, 0x2d, 0x21, ++ 0x22, 0x11, 0x52, 0x23, 0x37, 0x12, 0x09, 0xbe, 0xb7, 0x4b, 0xbc, 0xbc, ++ 0xae, 0x2d, 0xc8, 0x24, 0xa4, 0x9a, 0xb0, 0x7f, 0x73, 0x2f, 0x92, 0x6a, ++ 0x5a, 0x8c, 0x54, 0xbb, 0xef, 0x6d, 0x24, 0x33, 0x08, 0xa9, 0x72, 0xd1, ++ 0x52, 0x76, 0xf6, 0xee, 0x0a, 0x2b, 0x4f, 0x08, 0x2d, 0x5f, 0x46, 0x58, ++ 0xfd, 0xba, 0xdd, 0xf8, 0xbe, 0x8c, 0x6c, 0x1f, 0x92, 0x9d, 0x70, 0x17, ++ 0x91, 0x9b, 0x8a, 0x68, 0x7d, 0x97, 0x55, 0xe3, 0x7b, 0x77, 0xed, 0x07, ++ 0xc4, 0x09, 0xe5, 0x62, 0x9e, 0x43, 0x3f, 0xe0, 0x0f, 0xca, 0x83, 0xeb, ++ 0x49, 0x4a, 0xc6, 0x19, 0x07, 0xfd, 0xfb, 0x36, 0x72, 0xdb, 0x15, 0x99, ++ 0x5e, 0x95, 0x09, 0x84, 0xdc, 0x1e, 0xe5, 0x8b, 0xf9, 0x4a, 0x48, 0x10, ++ 0xf9, 0xd6, 0xc1, 0xbf, 0x57, 0x48, 0xd3, 0x0c, 0xb8, 0x27, 0xe4, 0x45, ++ 0x6c, 0x3f, 0x5d, 0xf0, 0xb1, 0xae, 0x9f, 0xb8, 0x69, 0xbf, 0x33, 0x4a, ++ 0x88, 0xb7, 0x96, 0x76, 0x70, 0x52, 0x9d, 0xde, 0x0d, 0x7c, 0x29, 0xab, ++ 0x56, 0x3d, 0x36, 0x7a, 0xdf, 0x5d, 0x33, 0x67, 0x72, 0xbf, 0x46, 0xc8, ++ 0x0f, 0xcf, 0xb5, 0x67, 0x91, 0x42, 0xfa, 0x79, 0x68, 0x35, 0xf2, 0x31, ++ 0x83, 0xf3, 0xb1, 0xfb, 0xdc, 0x4b, 0xef, 0xdc, 0x47, 0xbf, 0xf7, 0xd5, ++ 0x11, 0xaf, 0x8d, 0xde, 0x1f, 0xb0, 0x7a, 0x27, 0x37, 0x15, 0x8e, 0xa6, ++ 0xc7, 0x57, 0x97, 0x9e, 0x44, 0x68, 0x3d, 0x4f, 0x34, 0x1d, 0x72, 0x60, ++ 0x3d, 0x84, 0xfc, 0xed, 0x4a, 0x26, 0xaf, 0x27, 0x8f, 0x90, 0xce, 0xa6, ++ 0xdc, 0xd4, 0x40, 0x9c, 0xef, 0xc4, 0xf5, 0xf1, 0x0d, 0x2e, 0x42, 0x6c, ++ 0xd1, 0xfb, 0x1d, 0x3a, 0xa9, 0x6b, 0xd7, 0x46, 0x97, 0x7b, 0x09, 0x06, ++ 0x73, 0x36, 0x54, 0xbf, 0x1c, 0xe9, 0x2c, 0xe3, 0xbc, 0xfc, 0xa1, 0x44, ++ 0x9a, 0xdb, 0xb1, 0xdd, 0x66, 0x1c, 0xa7, 0x03, 0x9c, 0xfe, 0x1e, 0xfd, ++ 0x90, 0xa3, 0xbf, 0x10, 0xde, 0x87, 0x1d, 0x16, 0xda, 0x8f, 0xe0, 0x90, ++ 0x85, 0x3c, 0x4f, 0xab, 0xe8, 0x1c, 0xac, 0x4c, 0x06, 0x7a, 0x37, 0xe9, ++ 0x96, 0x30, 0x3c, 0xef, 0x1c, 0x54, 0x43, 0xc0, 0x0f, 0xe2, 0x6e, 0xcf, ++ 0x5a, 0x54, 0x34, 0x9a, 0xfe, 0x03, 0x43, 0x2b, 0x66, 0x62, 0xbf, 0x02, ++ 0xab, 0x0d, 0xed, 0xfe, 0x60, 0x90, 0xf6, 0x57, 0x83, 0xfe, 0xbd, 0xe8, ++ 0x98, 0x47, 0xeb, 0xb9, 0x30, 0x68, 0x71, 0xc9, 0x74, 0x5c, 0x9f, 0xe0, ++ 0xcf, 0x0f, 0x04, 0xda, 0x1d, 0x2e, 0xf8, 0x6e, 0x20, 0x1d, 0xc7, 0xf3, ++ 0xf1, 0x0d, 0xf4, 0xef, 0x1b, 0x12, 0xf3, 0xe3, 0xf1, 0xb9, 0xdf, 0xc8, ++ 0x0d, 0x68, 0x50, 0xce, 0x6e, 0xe4, 0xc7, 0xe0, 0x85, 0x63, 0x79, 0x74, ++ 0xdc, 0x3a, 0x77, 0x2a, 0x5e, 0xe8, 0xd7, 0x78, 0xfc, 0xfc, 0x01, 0x6f, ++ 0x47, 0xdc, 0xa7, 0x7b, 0xc3, 0x55, 0x2e, 0x5a, 0xaf, 0x2f, 0xe2, 0x95, ++ 0x40, 0x8f, 0xd2, 0x07, 0x09, 0x99, 0x90, 0x03, 0x7a, 0xd1, 0x79, 0xd8, ++ 0x09, 0xe3, 0xdb, 0x48, 0x50, 0x2f, 0x7c, 0x4d, 0x95, 0x49, 0xd3, 0x59, ++ 0x3f, 0xbc, 0xb2, 0x07, 0xde, 0x1f, 0x97, 0x41, 0x3e, 0x7c, 0xae, 0x30, ++ 0xf6, 0x63, 0x84, 0x1e, 0xa0, 0xef, 0x06, 0xa0, 0xd3, 0x8d, 0xd7, 0xa7, ++ 0x79, 0x7b, 0x4f, 0xc1, 0x38, 0x62, 0xff, 0x36, 0x25, 0x5d, 0x4f, 0xe9, ++ 0xbd, 0x50, 0xa2, 0x60, 0x3d, 0xbb, 0xf5, 0x4d, 0x7e, 0x05, 0xeb, 0xbb, ++ 0x1c, 0x96, 0x41, 0x1e, 0x57, 0x33, 0x79, 0xca, 0xf0, 0x04, 0x36, 0x5a, ++ 0x81, 0xff, 0xf7, 0x10, 0x6f, 0xd0, 0x03, 0xf5, 0x12, 0xec, 0xf7, 0x4f, ++ 0x79, 0xff, 0x7f, 0xc2, 0xeb, 0x13, 0xed, 0x74, 0x0e, 0xa6, 0xfb, 0x15, ++ 0xa0, 0xaf, 0x99, 0x78, 0x41, 0x4d, 0x6a, 0xe4, 0xf5, 0xdd, 0xf0, 0xbd, ++ 0x6f, 0x15, 0xa3, 0x7f, 0xda, 0xc3, 0x6b, 0x25, 0xe0, 0xdf, 0x75, 0xeb, ++ 0xfb, 0xf1, 0x1a, 0xe2, 0x74, 0xee, 0x80, 0xef, 0x69, 0x81, 0xec, 0xb5, ++ 0x11, 0x09, 0xf8, 0x36, 0xf5, 0xa1, 0x30, 0x5e, 0x77, 0x6e, 0xfc, 0x7d, ++ 0x37, 0xd0, 0x97, 0xba, 0x85, 0x24, 0x81, 0x2d, 0x78, 0xa2, 0xda, 0x92, ++ 0x06, 0xdf, 0x3d, 0x31, 0x6f, 0x4a, 0x12, 0xbc, 0x77, 0x36, 0x51, 0xc5, ++ 0xa7, 0xf6, 0xc0, 0xe7, 0x75, 0x3d, 0xd0, 0x43, 0xfb, 0xb3, 0xb3, 0x5a, ++ 0x41, 0x3a, 0x77, 0x0e, 0x52, 0xfe, 0xd3, 0x72, 0xce, 0xa0, 0xcb, 0x0b, ++ 0x7a, 0xed, 0x0c, 0x7a, 0xf8, 0xd5, 0xeb, 0x85, 0xf2, 0x07, 0x39, 0x3f, ++ 0x0e, 0xf0, 0x76, 0xbb, 0x38, 0x1d, 0xce, 0xa0, 0xce, 0xcb, 0xad, 0x2d, ++ 0x84, 0x72, 0xce, 0x60, 0x10, 0xaf, 0x21, 0xde, 0x4f, 0xe2, 0x59, 0x83, ++ 0x72, 0xb7, 0x8e, 0xcb, 0xdd, 0x41, 0x6b, 0xe0, 0x26, 0xe0, 0x7b, 0xc6, ++ 0x20, 0x71, 0x13, 0xaa, 0xcf, 0x07, 0xce, 0xd7, 0x4f, 0x86, 0x76, 0x45, ++ 0xfd, 0xe6, 0xf2, 0x7b, 0x9e, 0xfd, 0x9f, 0xb3, 0xe0, 0xfd, 0xc4, 0x41, ++ 0xf2, 0xae, 0x75, 0x06, 0x5c, 0xc3, 0x2d, 0xd0, 0xde, 0x0d, 0xd0, 0x0f, ++ 0x27, 0xdc, 0xf7, 0xb5, 0x48, 0x68, 0xa7, 0x42, 0xa8, 0x47, 0xfa, 0x65, ++ 0x0b, 0x21, 0x05, 0x51, 0x3b, 0x95, 0x71, 0xa9, 0x69, 0xfe, 0x1d, 0x1e, ++ 0xb8, 0xab, 0x41, 0x3d, 0x12, 0x76, 0xa0, 0x6c, 0x50, 0xb5, 0x48, 0xa9, ++ 0xb1, 0x7a, 0x56, 0x8d, 0x7a, 0xb0, 0x93, 0xeb, 0x41, 0xf5, 0x60, 0x18, ++ 0xe5, 0x84, 0xea, 0xd9, 0x61, 0x0b, 0xe5, 0x53, 0xf0, 0x1c, 0xd5, 0x33, ++ 0x2a, 0x5f, 0x07, 0x9a, 0x2c, 0x38, 0xde, 0xcf, 0x45, 0x54, 0xb4, 0xc3, ++ 0xa4, 0x20, 0x9c, 0xb5, 0x28, 0x65, 0xb4, 0x1e, 0x75, 0x0e, 0xad, 0x9c, ++ 0x09, 0xfc, 0x16, 0xfa, 0x34, 0xda, 0x7e, 0xfc, 0xbf, 0xa1, 0x5f, 0x3b, ++ 0x69, 0x3f, 0x02, 0x71, 0xec, 0x9a, 0x68, 0x4f, 0xe8, 0x9b, 0xf9, 0xfd, ++ 0xb8, 0xfa, 0xe6, 0x0a, 0xa2, 0xbe, 0x75, 0x52, 0x7d, 0x0b, 0x02, 0x3f, ++ 0x9b, 0x2c, 0x49, 0xf9, 0xa0, 0x7f, 0x6d, 0x16, 0xd4, 0x13, 0x77, 0x75, ++ 0x7b, 0x37, 0xd3, 0x97, 0xd5, 0xa8, 0x6f, 0x19, 0xf7, 0x30, 0x7a, 0x26, ++ 0x2d, 0x0f, 0xa1, 0x1e, 0x8c, 0xa7, 0x77, 0x3b, 0x3d, 0x2e, 0xbf, 0x02, ++ 0xf5, 0x37, 0x33, 0x3d, 0xed, 0x1c, 0x7c, 0x6f, 0xa3, 0x0d, 0xc6, 0x63, ++ 0x39, 0xe1, 0x76, 0xe2, 0x72, 0x37, 0xdc, 0xfb, 0x1e, 0x66, 0x7a, 0x6d, ++ 0xd6, 0x33, 0xb3, 0x1e, 0xa6, 0xfa, 0xfa, 0x50, 0x3f, 0x73, 0xb6, 0x44, ++ 0x08, 0x5c, 0x3d, 0x9b, 0x1b, 0x51, 0xae, 0x69, 0x2b, 0x49, 0xa8, 0x7f, ++ 0x09, 0xf4, 0xb0, 0x13, 0xf4, 0xb0, 0xf8, 0xff, 0x1f, 0x3d, 0xac, 0x82, ++ 0x79, 0x9c, 0xea, 0x5d, 0x9a, 0x76, 0x6b, 0x8f, 0x8b, 0xf6, 0x7b, 0x7e, ++ 0x84, 0x30, 0x3c, 0xa4, 0x3d, 0xd1, 0x03, 0xf3, 0x78, 0x4d, 0xb6, 0x8d, ++ 0xcd, 0xe3, 0x53, 0xdf, 0xbe, 0xf3, 0x7e, 0x7a, 0x7f, 0xcc, 0xea, 0x40, ++ 0xfe, 0x1f, 0x9b, 0x48, 0x1f, 0x16, 0xc3, 0xbd, 0x8c, 0x7a, 0xd7, 0x9d, ++ 0xb3, 0x35, 0x7b, 0x1d, 0x7d, 0x3f, 0x3f, 0x43, 0xc2, 0xf7, 0x84, 0xac, ++ 0x42, 0xfd, 0xae, 0x15, 0x78, 0x09, 0x1e, 0x51, 0xfd, 0xf1, 0xf7, 0x4b, ++ 0x64, 0x4e, 0x3a, 0x94, 0x7b, 0x7f, 0x47, 0x15, 0xfd, 0xfe, 0xd5, 0x01, ++ 0xe2, 0x85, 0x57, 0xaf, 0x66, 0xcb, 0x58, 0xdf, 0xe1, 0x41, 0xc2, 0xf4, ++ 0x98, 0xeb, 0x67, 0x2d, 0xef, 0xef, 0x61, 0xfe, 0xfe, 0xc2, 0x25, 0x12, ++ 0x02, 0xfd, 0xac, 0x00, 0x48, 0x42, 0x9f, 0x7f, 0x7c, 0x36, 0x32, 0xcd, ++ 0x4e, 0x5f, 0x7d, 0x68, 0xb9, 0x5c, 0x44, 0x72, 0xe9, 0x7c, 0x2c, 0xf8, ++ 0xc5, 0x71, 0x46, 0x0d, 0xd7, 0xff, 0x57, 0x33, 0x64, 0x1d, 0xec, 0xc6, ++ 0xe1, 0xf5, 0x29, 0x21, 0x92, 0x83, 0xf5, 0x85, 0x41, 0xde, 0x5e, 0x7d, ++ 0xd8, 0x16, 0x92, 0x69, 0x7b, 0x17, 0xf2, 0xf3, 0x5e, 0x08, 0x13, 0xc0, ++ 0x7f, 0x91, 0xeb, 0xd7, 0xd1, 0xf7, 0x3d, 0xae, 0x8f, 0x52, 0x62, 0xf5, ++ 0x73, 0x80, 0xcb, 0xef, 0x9f, 0xb8, 0xfc, 0x0e, 0x72, 0x3c, 0xb1, 0xe3, ++ 0xe6, 0xa6, 0x45, 0x12, 0xe5, 0xef, 0xab, 0xf9, 0x79, 0xa8, 0x5f, 0x17, ++ 0xf2, 0x3f, 0x9a, 0x46, 0x28, 0xab, 0xef, 0xcf, 0xfb, 0xcb, 0x19, 0xb8, ++ 0x12, 0x12, 0xb6, 0x02, 0x5e, 0x32, 0xd7, 0x23, 0xbe, 0x7f, 0xd5, 0x1d, ++ 0xf8, 0xb2, 0x44, 0x71, 0xd5, 0x40, 0xe8, 0x7d, 0x27, 0x8c, 0xe7, 0xb9, ++ 0x7d, 0x1f, 0xcd, 0x80, 0x2b, 0x71, 0x4f, 0x40, 0xdc, 0x35, 0x1e, 0x3e, ++ 0xf3, 0x09, 0x1c, 0x16, 0xe9, 0xdb, 0x0c, 0x38, 0x84, 0x54, 0x53, 0x39, ++ 0x99, 0x13, 0x95, 0x93, 0x49, 0x91, 0xbe, 0xc3, 0xc0, 0x37, 0xdf, 0x30, ++ 0xc3, 0x63, 0xa4, 0x6e, 0x0d, 0x8e, 0x4b, 0xb9, 0x8b, 0xf1, 0xa5, 0xfb, ++ 0xe2, 0x5b, 0x59, 0xf0, 0x5d, 0x07, 0xe7, 0x5b, 0xd7, 0x50, 0x5f, 0x16, ++ 0xda, 0xc7, 0x3a, 0x63, 0x3d, 0x5d, 0xd6, 0xfe, 0xe5, 0x4d, 0xac, 0x7e, ++ 0xfc, 0xde, 0xe7, 0x62, 0xe3, 0x2a, 0xe8, 0x79, 0x99, 0xf7, 0xeb, 0x69, ++ 0x49, 0x22, 0x0c, 0x27, 0xb2, 0xf1, 0xf3, 0xf1, 0xef, 0xe7, 0x2a, 0x7d, ++ 0x13, 0x6e, 0xa1, 0x74, 0xcc, 0x3d, 0x26, 0x7b, 0x37, 0xd2, 0x47, 0x73, ++ 0x07, 0xfa, 0xab, 0x49, 0x1c, 0x3b, 0xb4, 0x5b, 0x4a, 0x43, 0x79, 0xad, ++ 0xb8, 0x64, 0x94, 0xd7, 0xae, 0x8b, 0x47, 0x65, 0xe0, 0x0b, 0xa5, 0x57, ++ 0x06, 0x7a, 0xcb, 0x23, 0x7d, 0x32, 0xb3, 0xe3, 0x4c, 0xce, 0x7c, 0x5c, ++ 0xce, 0xca, 0x23, 0xa7, 0x0d, 0xf6, 0x5d, 0xb4, 0xdf, 0x15, 0x39, 0xdd, ++ 0x00, 0xed, 0x5f, 0x18, 0x60, 0xf6, 0x2a, 0x11, 0x5f, 0x85, 0xfc, 0x1c, ++ 0xe2, 0xe3, 0xfc, 0xb2, 0xd0, 0x57, 0x12, 0x72, 0xdc, 0x42, 0xe5, 0xe5, ++ 0x08, 0xa5, 0x7f, 0xdb, 0x18, 0xdf, 0xd7, 0xb8, 0x64, 0x03, 0xdd, 0x42, ++ 0xff, 0xaa, 0xec, 0x0e, 0x03, 0x5e, 0xaf, 0xb8, 0x94, 0x6e, 0xc2, 0xff, ++ 0x46, 0x7a, 0x4b, 0x95, 0x30, 0xf2, 0xab, 0x14, 0xf8, 0xe5, 0x49, 0xcc, ++ 0xaf, 0xf5, 0x52, 0x3a, 0xd6, 0x5f, 0x36, 0xf0, 0xe9, 0xf8, 0x65, 0xb6, ++ 0x2b, 0xa2, 0xde, 0x2e, 0xe0, 0x63, 0xe1, 0x68, 0xba, 0x08, 0x08, 0xb5, ++ 0xa0, 0x5b, 0xfe, 0x3f, 0x9f, 0xaf, 0x9d, 0xf0, 0x07, 0xf3, 0x5f, 0x8e, ++ 0x82, 0x9e, 0x92, 0xfe, 0xbd, 0x72, 0x53, 0x0a, 0xcc, 0x27, 0x1a, 0xda, ++ 0x93, 0xb2, 0x6a, 0x89, 0xe1, 0x72, 0xde, 0xcf, 0x46, 0xf8, 0x96, 0x36, ++ 0x55, 0x27, 0xf4, 0xca, 0x23, 0xa1, 0x9f, 0x57, 0xef, 0x93, 0x42, 0xb5, ++ 0x80, 0x37, 0xbc, 0x3f, 0x43, 0x3f, 0xf1, 0x42, 0xb1, 0xcd, 0x03, 0x76, ++ 0x68, 0x92, 0xe7, 0x09, 0xa5, 0x3f, 0x46, 0xde, 0xea, 0xf9, 0xf7, 0x23, ++ 0x7c, 0xdc, 0xa0, 0x63, 0x3f, 0xbb, 0x67, 0xbf, 0x9d, 0x05, 0xe5, 0xba, ++ 0xa6, 0x6f, 0xcc, 0x86, 0x71, 0x98, 0xef, 0x79, 0xdb, 0xb1, 0x8e, 0xf2, ++ 0xff, 0x28, 0xd7, 0x9b, 0x8e, 0x0d, 0x75, 0x58, 0xae, 0xec, 0x12, 0x79, ++ 0xf4, 0x56, 0x18, 0x97, 0x7c, 0xa6, 0x67, 0x73, 0x79, 0x5f, 0x7a, 0x38, ++ 0xdf, 0x0e, 0x71, 0xbb, 0x71, 0x90, 0xcf, 0x9b, 0x6f, 0x6d, 0x08, 0xe0, ++ 0xf5, 0xcd, 0x0d, 0xab, 0xf0, 0x7a, 0x7a, 0xc3, 0x5a, 0xbc, 0xbe, 0x7a, ++ 0xe9, 0x45, 0x0d, 0xc6, 0xaf, 0xb7, 0x20, 0x0f, 0xe7, 0xaf, 0x3a, 0xa5, ++ 0x5d, 0x89, 0xe7, 0x57, 0x95, 0x0e, 0x1a, 0xe5, 0xe6, 0x65, 0x0f, 0xc5, ++ 0x3b, 0xb4, 0x7c, 0xc3, 0xe0, 0x8a, 0xed, 0xb7, 0xd2, 0x7e, 0x1f, 0xbf, ++ 0x64, 0x41, 0xfb, 0x7c, 0xbc, 0x20, 0x6f, 0x4c, 0xbc, 0x22, 0xec, 0x87, ++ 0x28, 0xf7, 0x8a, 0xfb, 0x67, 0x55, 0xc0, 0xb7, 0xc6, 0x01, 0x4a, 0x6e, ++ 0xce, 0xe8, 0xf2, 0x66, 0x79, 0x2d, 0x23, 0x52, 0x3b, 0xe0, 0xbf, 0x32, ++ 0xef, 0xeb, 0x0a, 0xa1, 0xf6, 0x72, 0x41, 0xf1, 0x2e, 0x2d, 0x16, 0xc7, ++ 0x1c, 0x38, 0x97, 0x59, 0x04, 0xf5, 0x1e, 0x90, 0xfe, 0xb0, 0x64, 0x96, ++ 0x27, 0x31, 0x1d, 0x65, 0xbe, 0x3e, 0xec, 0xe7, 0x82, 0xf0, 0xef, 0x14, ++ 0x4f, 0x4a, 0xe2, 0x72, 0x27, 0x94, 0xbe, 0xc6, 0x59, 0xe8, 0xa7, 0x32, ++ 0xfd, 0x2a, 0xf3, 0xbe, 0x5b, 0xad, 0xd3, 0xf6, 0x6a, 0x0b, 0x77, 0x35, ++ 0xa2, 0x5c, 0x0c, 0x2b, 0x16, 0x90, 0x8b, 0xc6, 0xc2, 0xbd, 0x7c, 0x7c, ++ 0x5d, 0x38, 0x1e, 0x0b, 0xc4, 0x7c, 0x56, 0x2c, 0xd7, 0x85, 0x80, 0x9e, ++ 0xc1, 0x0b, 0x48, 0x67, 0x6f, 0xa1, 0x3c, 0x11, 0xe8, 0xdb, 0x66, 0x91, ++ 0x51, 0x2e, 0x17, 0x78, 0x6c, 0x88, 0x67, 0x13, 0xb6, 0x3f, 0xac, 0x90, ++ 0x30, 0xe8, 0x97, 0x12, 0xc6, 0x71, 0x3a, 0x4e, 0xeb, 0x01, 0xb9, 0x38, ++ 0x41, 0xed, 0x1e, 0x7b, 0xde, 0xc7, 0xee, 0x69, 0xbd, 0xf0, 0xbe, 0x3b, ++ 0xc7, 0xa6, 0x79, 0x81, 0x9f, 0x6e, 0x11, 0x8f, 0x58, 0x65, 0x90, 0x8f, ++ 0xc6, 0xfc, 0x59, 0xc7, 0xbd, 0x94, 0xee, 0x5e, 0xb7, 0x8c, 0xf8, 0xb2, ++ 0xf7, 0x52, 0xa5, 0x92, 0x46, 0xef, 0x4f, 0xc0, 0xfc, 0xea, 0x89, 0xca, ++ 0x67, 0x19, 0x97, 0xcf, 0x13, 0x30, 0xee, 0x20, 0xc7, 0x21, 0x19, 0xe7, ++ 0x3f, 0x81, 0x97, 0x45, 0x7d, 0x5d, 0x97, 0x72, 0x1f, 0x2d, 0xa6, 0xed, ++ 0x9d, 0x08, 0x59, 0xe3, 0x7e, 0xdf, 0x54, 0x6d, 0xd4, 0xc7, 0x3b, 0xdc, ++ 0x0e, 0xc3, 0x7d, 0x75, 0xf6, 0x04, 0xc3, 0xfd, 0x89, 0xc1, 0x99, 0x6f, ++ 0x36, 0x41, 0x7b, 0x94, 0x7e, 0xc0, 0x73, 0x24, 0xb8, 0xda, 0x40, 0x7f, ++ 0x17, 0xd8, 0x7b, 0x68, 0xcf, 0x25, 0xe1, 0xfc, 0x7f, 0xf4, 0x72, 0xf5, ++ 0xe0, 0xfd, 0x50, 0x2e, 0x64, 0xa4, 0xcb, 0x4c, 0x47, 0xef, 0xa5, 0xdc, ++ 0x27, 0x97, 0xd2, 0x7a, 0x8f, 0xef, 0x93, 0x51, 0x4e, 0xab, 0xdd, 0x46, ++ 0xba, 0xaa, 0x2e, 0xbe, 0x79, 0x1c, 0xe2, 0x38, 0x0d, 0xd4, 0xbe, 0x00, ++ 0xdf, 0x5e, 0xd6, 0x15, 0x1d, 0xfa, 0x7d, 0x62, 0x5f, 0x4a, 0x68, 0x23, ++ 0x95, 0xcb, 0x97, 0x0b, 0x5f, 0x77, 0x00, 0x6e, 0xa0, 0xff, 0xb4, 0x05, ++ 0xb4, 0x9d, 0x2a, 0xc2, 0xc6, 0xb7, 0x32, 0xc3, 0x58, 0xcf, 0xf1, 0xc1, ++ 0xf7, 0xbe, 0x0f, 0x76, 0xea, 0x82, 0x5d, 0x46, 0x3b, 0x57, 0xf9, 0xd7, ++ 0x43, 0x5b, 0x00, 0x5e, 0x9d, 0x2a, 0x7e, 0xb0, 0x07, 0xf8, 0x7c, 0x80, ++ 0x48, 0xc8, 0xa7, 0xf2, 0x73, 0xbb, 0x65, 0xa8, 0x6f, 0x59, 0xc8, 0xf8, ++ 0xfd, 0xd2, 0xe5, 0x46, 0xfe, 0xac, 0x59, 0x3a, 0xc1, 0x64, 0xff, 0x8d, ++ 0xf1, 0xa5, 0x2a, 0x0f, 0x8b, 0x13, 0xcd, 0xf5, 0x0e, 0x61, 0x7d, 0xa5, ++ 0x10, 0xff, 0xa1, 0xf7, 0x95, 0x9a, 0x31, 0x2e, 0x34, 0x17, 0x8c, 0x41, ++ 0x4c, 0xbd, 0xe5, 0xa6, 0xb8, 0x50, 0xa9, 0x87, 0xc5, 0x85, 0x4a, 0x21, ++ 0x2e, 0x24, 0xca, 0xe5, 0x90, 0x51, 0x76, 0x9f, 0xde, 0x63, 0xfb, 0xe6, ++ 0x79, 0xdd, 0xac, 0xdf, 0x09, 0xf5, 0xdf, 0x42, 0x56, 0x41, 0x3c, 0x85, ++ 0x44, 0x16, 0x8f, 0x83, 0x5b, 0x36, 0xf1, 0xf8, 0x8a, 0xd1, 0xde, 0x12, ++ 0x65, 0xa7, 0x04, 0xf2, 0x50, 0xca, 0xdb, 0xef, 0xb0, 0xb6, 0x3b, 0x80, ++ 0x2e, 0xdf, 0xad, 0xcc, 0x7e, 0x91, 0x48, 0x7a, 0xdc, 0x78, 0x95, 0xd9, ++ 0x8e, 0x10, 0xf2, 0x20, 0xca, 0x95, 0xe0, 0x23, 0x71, 0x05, 0x49, 0xc6, ++ 0x1c, 0xe8, 0x3f, 0x2f, 0x63, 0xb6, 0x7f, 0x9c, 0x2f, 0x6d, 0x74, 0x38, ++ 0xae, 0xe0, 0x3c, 0x10, 0xe4, 0xf8, 0xc5, 0x13, 0x57, 0xdf, 0xcd, 0xdf, ++ 0x67, 0x73, 0x7d, 0x9f, 0x37, 0x40, 0xed, 0x66, 0x06, 0x8c, 0x97, 0xec, ++ 0x02, 0xbb, 0x71, 0xfc, 0x12, 0xd1, 0x40, 0x1f, 0x4f, 0x51, 0x79, 0x67, ++ 0x2d, 0xf7, 0x5f, 0x89, 0x95, 0xdb, 0x86, 0x81, 0x76, 0x94, 0x4b, 0x5a, ++ 0x1e, 0x46, 0x90, 0x96, 0xf7, 0xa2, 0xfe, 0x36, 0x4d, 0x66, 0xfa, 0xdb, ++ 0x9d, 0x53, 0xab, 0xa4, 0x31, 0xfb, 0x19, 0x57, 0xdf, 0xcd, 0x7a, 0x30, ++ 0x40, 0x82, 0x4f, 0x15, 0xd3, 0x71, 0x3d, 0x9e, 0x9f, 0xf7, 0xe4, 0x52, ++ 0xfa, 0x5d, 0xef, 0x3e, 0x61, 0x07, 0x2c, 0x3a, 0xea, 0xd5, 0x3e, 0x86, ++ 0x7b, 0x4f, 0x0c, 0xae, 0x43, 0x79, 0xbd, 0x40, 0xe5, 0x15, 0xd8, 0x3e, ++ 0x5a, 0xef, 0x4f, 0x6b, 0xb1, 0xf3, 0xfe, 0x7f, 0x96, 0xbe, 0x9b, 0xf5, ++ 0x7c, 0x44, 0xff, 0x47, 0xe9, 0x3b, 0xb3, 0x5b, 0xc7, 0x87, 0x2d, 0xd8, ++ 0x9f, 0xaa, 0x8b, 0x0a, 0xd6, 0xd3, 0x70, 0x99, 0xe0, 0x3c, 0x6e, 0xd6, ++ 0xff, 0x13, 0xdc, 0x7f, 0x7b, 0x59, 0x7f, 0x53, 0xf3, 0xc2, 0x7c, 0x58, ++ 0xf8, 0x3e, 0xfa, 0xc7, 0xe4, 0x53, 0xeb, 0x3b, 0xf3, 0x43, 0x0e, 0x0c, ++ 0x10, 0x6c, 0xbf, 0xfc, 0xdc, 0x7b, 0x32, 0xed, 0xf9, 0xe7, 0xa6, 0xef, ++ 0x42, 0xcf, 0x85, 0xde, 0x5e, 0xb3, 0xbe, 0xff, 0x27, 0xe9, 0xb9, 0xf9, ++ 0xf9, 0xb7, 0x2d, 0x1c, 0xf7, 0x27, 0xd0, 0xd3, 0xa8, 0xfe, 0x07, 0xb1, ++ 0xdc, 0xe6, 0x14, 0x52, 0x00, 0x71, 0xb6, 0x0e, 0x29, 0xd9, 0xbb, 0x29, ++ 0x07, 0xf4, 0x9d, 0xc5, 0x7d, 0xcc, 0xe5, 0x27, 0xc8, 0x22, 0x1e, 0x6b, ++ 0x0f, 0xfe, 0x91, 0xf6, 0xab, 0x85, 0x0a, 0x4b, 0x2a, 0x65, 0xf5, 0x1a, ++ 0xd2, 0x3f, 0x0d, 0xe4, 0x61, 0xe2, 0x64, 0x0f, 0xd6, 0x77, 0x9f, 0xa5, ++ 0x3f, 0x13, 0xee, 0x3f, 0x24, 0x91, 0xcc, 0x9b, 0x65, 0xc0, 0xcf, 0x64, ++ 0x3f, 0xcc, 0xbf, 0x92, 0x4e, 0xc8, 0xc3, 0x94, 0x24, 0xc9, 0xe3, 0x22, ++ 0xcb, 0x67, 0x12, 0xf2, 0xb8, 0x1c, 0xb0, 0xcb, 0xb4, 0x3e, 0x69, 0x20, ++ 0xfc, 0x57, 0x89, 0xf2, 0x99, 0x3c, 0x44, 0x3c, 0x80, 0x07, 0x6f, 0x90, ++ 0x02, 0x0e, 0x78, 0x6e, 0xa3, 0x7c, 0xd2, 0x68, 0x79, 0xa2, 0x9c, 0x46, ++ 0x9c, 0x48, 0xfd, 0x37, 0xe4, 0xd7, 0x42, 0xae, 0x74, 0x0b, 0xed, 0x5a, ++ 0x18, 0xe3, 0xf0, 0x25, 0xd6, 0xc1, 0x7e, 0xc1, 0x77, 0x9c, 0x3f, 0x96, ++ 0xbb, 0xce, 0xdc, 0x4c, 0xeb, 0x25, 0x61, 0xe9, 0xca, 0xcd, 0xd1, 0x7e, ++ 0xee, 0xb1, 0x86, 0xb2, 0xbc, 0x1a, 0xf4, 0x33, 0xf4, 0xe3, 0xfb, 0x20, ++ 0x6e, 0xf5, 0x8c, 0xea, 0x7d, 0x3e, 0x0e, 0xdf, 0x2d, 0x9f, 0xb2, 0x9f, ++ 0x60, 0x7e, 0x90, 0x9f, 0x16, 0xc6, 0xcf, 0xa0, 0x25, 0xd9, 0xfb, 0x7c, ++ 0x1c, 0xbc, 0x35, 0xff, 0xda, 0xeb, 0x7f, 0x2b, 0x99, 0x5e, 0xcb, 0x80, ++ 0x8f, 0xb7, 0x8c, 0xe6, 0xa3, 0x34, 0x48, 0xf9, 0x07, 0x7c, 0x50, 0xfe, ++ 0x76, 0x05, 0xfc, 0xc4, 0x32, 0x37, 0x93, 0x2f, 0xf9, 0x43, 0x55, 0x87, ++ 0x38, 0x0d, 0x91, 0xed, 0xa1, 0xe9, 0x71, 0xe8, 0x58, 0xc3, 0xe9, 0x78, ++ 0x5c, 0xd6, 0x6f, 0xa3, 0xc8, 0x86, 0xc8, 0x55, 0xed, 0xc8, 0x9f, 0x03, ++ 0x30, 0xfe, 0x1a, 0xf0, 0x2f, 0x83, 0x7c, 0x3b, 0x46, 0xbe, 0xe6, 0xc9, ++ 0x2a, 0xd2, 0x25, 0x37, 0x90, 0xb5, 0x38, 0xbf, 0x90, 0xb0, 0x05, 0xec, ++ 0xc8, 0x78, 0xe3, 0x61, 0x55, 0x88, 0x22, 0xc3, 0x38, 0xf6, 0x5d, 0x41, ++ 0xbb, 0xdb, 0xca, 0xe9, 0xb3, 0xd1, 0xe7, 0xda, 0xcc, 0xc4, 0xe3, 0x25, ++ 0x37, 0x78, 0x23, 0x61, 0x3a, 0x4e, 0xe4, 0x43, 0x36, 0x4e, 0x07, 0xe6, ++ 0x1b, 0xe5, 0x72, 0x3d, 0xa7, 0xff, 0x41, 0x4e, 0x17, 0x98, 0x27, 0xa8, ++ 0xbf, 0x14, 0xea, 0xa7, 0xfc, 0x92, 0xff, 0xac, 0xae, 0x8d, 0x37, 0x4f, ++ 0x6c, 0x17, 0xfc, 0xe7, 0xfc, 0x32, 0x97, 0x3f, 0xf0, 0x25, 0xd6, 0x7f, ++ 0x51, 0x7e, 0xab, 0xcc, 0xf4, 0x29, 0x78, 0xed, 0xe3, 0xb6, 0x6c, 0x52, ++ 0x5e, 0xe2, 0x71, 0x13, 0xf2, 0x2e, 0x0d, 0x1e, 0x4d, 0x34, 0x7e, 0x6b, ++ 0x43, 0x71, 0xf4, 0x7b, 0x8e, 0x6c, 0xe1, 0xfd, 0x0d, 0x4a, 0x57, 0xa3, ++ 0x0f, 0xf3, 0xb8, 0x5c, 0xca, 0x55, 0x74, 0xdc, 0xa0, 0x7f, 0x35, 0x46, ++ 0x3e, 0x6e, 0xe6, 0xfd, 0x5a, 0xce, 0xeb, 0xbd, 0x4b, 0xd2, 0xff, 0x1e, ++ 0xe4, 0xe1, 0x06, 0xa9, 0xe9, 0x1f, 0xe0, 0x4a, 0xaa, 0xfb, 0x50, 0xff, ++ 0x40, 0xc6, 0xa1, 0xdc, 0xcd, 0x44, 0xff, 0x6f, 0xfc, 0xfd, 0x06, 0xd0, ++ 0x53, 0x52, 0x67, 0x7c, 0x4f, 0x9f, 0x6f, 0xc2, 0xef, 0x9a, 0xfb, 0x70, ++ 0x7d, 0x4a, 0x3c, 0x3f, 0x2c, 0xe9, 0x5b, 0x64, 0xf6, 0xbe, 0x15, 0xbf, ++ 0xd3, 0x8d, 0xef, 0xa9, 0x1c, 0xb6, 0xc1, 0x73, 0x2a, 0x2f, 0x44, 0x9e, ++ 0x09, 0xcf, 0x19, 0x3f, 0xa9, 0x9c, 0x10, 0x3b, 0xbd, 0x6f, 0xdd, 0x75, ++ 0xf7, 0x97, 0x81, 0xaf, 0xf4, 0xfb, 0xc7, 0xb0, 0x7e, 0x72, 0xda, 0xf0, ++ 0xbd, 0x15, 0x0c, 0x44, 0x3a, 0xbb, 0x4a, 0x33, 0xd9, 0xf5, 0x59, 0x90, ++ 0x3b, 0xee, 0x9f, 0x6e, 0x6e, 0xd6, 0x91, 0xaf, 0x2a, 0x59, 0xcb, 0xfd, ++ 0x67, 0x36, 0x9f, 0xcd, 0xe5, 0xf3, 0x99, 0xfd, 0xaf, 0x6c, 0x1e, 0xbc, ++ 0xe0, 0x52, 0x31, 0xae, 0xa5, 0x24, 0xe9, 0xa1, 0x30, 0xbd, 0xa6, 0xbb, ++ 0xc2, 0x3a, 0xc4, 0x03, 0x27, 0x90, 0xbe, 0x20, 0xf8, 0x63, 0xcb, 0x96, ++ 0xca, 0x06, 0x3b, 0xdf, 0x6c, 0x9a, 0x5f, 0xbe, 0x7c, 0x8f, 0x71, 0xfe, ++ 0x5d, 0xbe, 0x3a, 0xcb, 0x70, 0xff, 0xd5, 0x87, 0xf2, 0x0c, 0xf7, 0x81, ++ 0xf5, 0x37, 0x1b, 0xea, 0x5b, 0xb1, 0x65, 0x96, 0xe1, 0xfe, 0x9e, 0xed, ++ 0x65, 0x86, 0xfb, 0x95, 0x3b, 0xab, 0x0c, 0xdf, 0xaf, 0xfa, 0x49, 0x83, ++ 0xe1, 0xfd, 0x37, 0x9e, 0x5b, 0x62, 0xb8, 0x5f, 0xfd, 0xc2, 0x9d, 0x71, ++ 0xd7, 0x37, 0xc5, 0x7c, 0xf7, 0x88, 0xe5, 0xdd, 0xd5, 0x4d, 0xb4, 0x5f, ++ 0x9b, 0xe1, 0x55, 0x0c, 0x5e, 0x54, 0xa2, 0xeb, 0x97, 0x16, 0x86, 0xc7, ++ 0x8c, 0xdf, 0x51, 0xf1, 0xf3, 0x28, 0x73, 0xa0, 0x1c, 0xc1, 0x50, 0x84, ++ 0x59, 0x4e, 0x15, 0xd3, 0xfa, 0x67, 0xff, 0x88, 0xfe, 0xac, 0x33, 0xcc, ++ 0xb7, 0x87, 0x82, 0x39, 0x19, 0x00, 0x15, 0xf4, 0x1c, 0x45, 0x43, 0xfc, ++ 0x1f, 0xd4, 0xfb, 0xf2, 0x33, 0xa3, 0x78, 0xa0, 0xca, 0xb3, 0xb2, 0x31, ++ 0xde, 0xfc, 0x2b, 0xe8, 0x51, 0x78, 0x39, 0x3f, 0xe9, 0xaf, 0x82, 0x71, ++ 0xd3, 0x15, 0x63, 0x39, 0x85, 0xaf, 0xd7, 0x6a, 0xde, 0x08, 0xc6, 0x61, ++ 0xcc, 0xeb, 0xb5, 0x8a, 0x67, 0x1e, 0xce, 0xef, 0x66, 0x7a, 0xdf, 0x91, ++ 0x53, 0x32, 0xc0, 0x2e, 0xd1, 0xba, 0x3d, 0xb8, 0x4e, 0xab, 0x5d, 0xdd, ++ 0x7c, 0x3a, 0x6e, 0xff, 0xa8, 0x25, 0xbc, 0xaa, 0xfe, 0xf1, 0xf6, 0xfc, ++ 0xd0, 0xcf, 0xbc, 0xc4, 0xfd, 0x9a, 0x5b, 0x1c, 0x91, 0x81, 0xbc, 0xab, ++ 0xed, 0x57, 0x94, 0x4e, 0x23, 0xee, 0x11, 0xeb, 0xe4, 0x0b, 0x58, 0x51, ++ 0x52, 0x9a, 0xf3, 0x1c, 0xfa, 0x63, 0x0b, 0x80, 0x3e, 0x98, 0x9f, 0x8b, ++ 0x19, 0xde, 0xb1, 0xd3, 0xff, 0xd8, 0x3c, 0xcb, 0xf8, 0xdf, 0xc0, 0xcb, ++ 0x37, 0x3d, 0xe4, 0xb2, 0x02, 0x3e, 0x6e, 0xaa, 0x36, 0xd2, 0xd9, 0xc0, ++ 0x71, 0x14, 0xd5, 0x43, 0x05, 0xec, 0x44, 0x69, 0x81, 0xe9, 0x3d, 0xd0, ++ 0x39, 0x03, 0xca, 0x19, 0xf1, 0x52, 0x0f, 0x97, 0x47, 0x4d, 0xe1, 0xeb, ++ 0xe5, 0x73, 0xc8, 0x1c, 0x1c, 0x07, 0xae, 0xb7, 0x8b, 0x84, 0xde, 0xd6, ++ 0xb0, 0x38, 0x07, 0x71, 0xc5, 0x5f, 0x47, 0xaf, 0xbf, 0x44, 0x0b, 0xcd, ++ 0xc2, 0xf6, 0x51, 0xfe, 0xc4, 0xf3, 0xd7, 0x0a, 0xf2, 0x92, 0xe1, 0xbb, ++ 0x05, 0x6d, 0xc4, 0x63, 0xa3, 0xf8, 0xe4, 0x91, 0xd9, 0x1b, 0x5d, 0x95, ++ 0x80, 0xf3, 0x75, 0xab, 0xb7, 0x8e, 0x96, 0xae, 0xf2, 0xf2, 0x78, 0x93, ++ 0x2e, 0x23, 0x9e, 0xbd, 0xae, 0x80, 0xdd, 0x37, 0x56, 0xb3, 0xf8, 0x53, ++ 0x7d, 0xa0, 0x0f, 0xe3, 0x80, 0x8d, 0xf7, 0x84, 0x36, 0xc2, 0x75, 0xca, ++ 0xaa, 0xb0, 0x82, 0x74, 0x98, 0xf8, 0xfa, 0xac, 0x27, 0x94, 0x86, 0xd8, ++ 0x80, 0xf3, 0x37, 0x8b, 0xf3, 0x2b, 0x4b, 0xf0, 0x95, 0xf3, 0x51, 0xd8, ++ 0xf1, 0x29, 0xab, 0x8d, 0xe3, 0xd8, 0x58, 0x6c, 0xe4, 0xd7, 0x42, 0xce, ++ 0x4f, 0x33, 0x9f, 0x17, 0x72, 0x3e, 0x2e, 0x34, 0xf1, 0xb1, 0x0b, 0xfe, ++ 0xa0, 0x7c, 0x99, 0x9d, 0x80, 0x8f, 0x0b, 0x38, 0x1e, 0xb5, 0xcf, 0xe6, ++ 0xfe, 0xdd, 0x70, 0x7a, 0x5c, 0xbf, 0xf1, 0x59, 0x1e, 0x1f, 0x13, 0xf2, ++ 0xa3, 0x98, 0xe6, 0x35, 0x61, 0x3f, 0x46, 0xe6, 0x37, 0x2e, 0xbf, 0x8f, ++ 0x83, 0x1d, 0x07, 0x9c, 0xe7, 0xe2, 0x38, 0x85, 0xcf, 0x7b, 0x89, 0xf4, ++ 0xc8, 0x9f, 0xdf, 0xb2, 0xc3, 0x0f, 0xf1, 0xd6, 0x0c, 0xab, 0x61, 0xfd, ++ 0x62, 0x1e, 0xef, 0x6b, 0x69, 0x3e, 0x5b, 0xef, 0x28, 0xcd, 0x90, 0x11, ++ 0xf7, 0x97, 0xba, 0xdf, 0x30, 0xc4, 0x99, 0x4b, 0x47, 0xe2, 0xa3, 0xba, ++ 0x56, 0x33, 0x27, 0x2a, 0x9f, 0x5d, 0x03, 0xcc, 0xff, 0x68, 0x75, 0x9f, ++ 0x96, 0x61, 0x9c, 0x1a, 0xf2, 0x19, 0xce, 0xdf, 0xc2, 0xf9, 0x23, 0xe2, ++ 0x7f, 0x07, 0xf8, 0xba, 0x91, 0x99, 0xae, 0xa3, 0xd3, 0x82, 0xd9, 0x80, ++ 0x8f, 0x8e, 0x5d, 0x0c, 0x66, 0xaf, 0x2b, 0x86, 0xf8, 0x8f, 0x84, 0x72, ++ 0xd2, 0x79, 0xeb, 0x03, 0xd9, 0x2c, 0x5f, 0x80, 0xc7, 0x73, 0x79, 0x7b, ++ 0xaf, 0x0c, 0x05, 0xd1, 0x7f, 0x3b, 0x36, 0x30, 0xf6, 0xfa, 0xa2, 0xc0, ++ 0xf9, 0x66, 0xb9, 0x29, 0xf5, 0x86, 0x70, 0x9d, 0xb1, 0x74, 0xa0, 0x5d, ++ 0x86, 0xfe, 0xd6, 0x45, 0xe8, 0x1c, 0x44, 0xbb, 0x3e, 0x2f, 0xfc, 0x0b, ++ 0xd9, 0x53, 0x84, 0x71, 0x69, 0x05, 0xe8, 0x69, 0x74, 0xaf, 0x50, 0x30, ++ 0x5e, 0xe6, 0x6e, 0x51, 0x20, 0xbe, 0x5c, 0xe7, 0xde, 0x55, 0x05, 0xfc, ++ 0xf0, 0x91, 0xd0, 0x66, 0x27, 0xc4, 0xd5, 0x3c, 0x92, 0x37, 0x0c, 0x7c, ++ 0x2c, 0x64, 0xfa, 0xbb, 0x8a, 0xfe, 0x17, 0xab, 0xbf, 0x82, 0xde, 0xda, ++ 0xc1, 0x80, 0x02, 0xfa, 0x5e, 0xeb, 0x31, 0xfa, 0x35, 0x3e, 0x2e, 0x6f, ++ 0x35, 0x6e, 0xd3, 0xf3, 0xfc, 0x5a, 0x94, 0x37, 0x9f, 0x49, 0xde, 0x36, ++ 0x09, 0x39, 0x9b, 0x4e, 0xa6, 0xc7, 0xca, 0x99, 0x88, 0x5b, 0xab, 0x43, ++ 0xb9, 0x5c, 0x5f, 0xe3, 0xcb, 0x59, 0x27, 0xe7, 0xc7, 0xbf, 0xf3, 0x38, ++ 0xeb, 0x1f, 0x78, 0x7c, 0xfa, 0x1d, 0xbe, 0xae, 0xf7, 0xbb, 0x0d, 0x1e, ++ 0xbc, 0xbe, 0xb2, 0xa1, 0x00, 0x9f, 0x1f, 0xd9, 0xe0, 0xc5, 0xfb, 0xb7, ++ 0x37, 0x94, 0xe0, 0xfd, 0x6f, 0x21, 0xce, 0x4b, 0xef, 0xdf, 0xe0, 0x71, ++ 0xdc, 0xd7, 0x37, 0x34, 0xe1, 0xfd, 0xa9, 0x0d, 0xcd, 0x78, 0xdf, 0xcb, ++ 0xe3, 0xb4, 0x42, 0x8e, 0xb7, 0xf2, 0xf5, 0x94, 0x1a, 0xb9, 0x13, 0xe3, ++ 0x8b, 0x0d, 0xde, 0x80, 0xdd, 0x15, 0x23, 0x4f, 0x0d, 0x9c, 0x6e, 0x14, ++ 0x7d, 0xc0, 0x21, 0x85, 0xf1, 0xe3, 0xaf, 0xb6, 0x69, 0xfb, 0x15, 0x90, ++ 0xaf, 0xd3, 0x23, 0x7a, 0x42, 0xd0, 0x5e, 0x2c, 0x6e, 0xcc, 0xd9, 0xbd, ++ 0x8d, 0xf2, 0xc5, 0xf6, 0x5d, 0x12, 0x00, 0x5c, 0x69, 0x3b, 0xf4, 0xaf, ++ 0xca, 0xf5, 0x54, 0xfe, 0x1b, 0xea, 0x72, 0xac, 0x2b, 0xa1, 0xbd, 0x60, ++ 0xbb, 0x32, 0x0b, 0xe4, 0x31, 0xfc, 0xaf, 0x4a, 0x1e, 0x3c, 0x6f, 0xbc, ++ 0xd5, 0x7a, 0x77, 0x9c, 0xf6, 0x45, 0x3b, 0x89, 0xda, 0x37, 0xdb, 0xb7, ++ 0x25, 0x75, 0x46, 0x3f, 0xb8, 0x54, 0xc4, 0xd1, 0x07, 0x02, 0x41, 0xe8, ++ 0xe7, 0xa4, 0x81, 0x40, 0x18, 0xe8, 0x2b, 0x75, 0xab, 0x9e, 0x78, 0x71, ++ 0xe1, 0xee, 0xc9, 0x2b, 0xdd, 0x20, 0x4f, 0xad, 0x67, 0x03, 0x6e, 0x90, ++ 0xa7, 0xd6, 0xc9, 0x7b, 0x64, 0xe6, 0xaf, 0xb3, 0x78, 0xb8, 0xca, 0xe5, ++ 0x54, 0x94, 0x2f, 0x75, 0xef, 0x36, 0xe8, 0xa1, 0xca, 0xe9, 0xee, 0xa0, ++ 0xcf, 0x81, 0xde, 0x8e, 0x71, 0xf4, 0xe0, 0x00, 0xe7, 0x9b, 0x28, 0xe7, ++ 0x53, 0xc2, 0xb2, 0x4b, 0x4b, 0xdc, 0x3f, 0x9f, 0x29, 0x5e, 0xbe, 0x45, ++ 0x8a, 0xef, 0xb7, 0x26, 0x5b, 0x19, 0xae, 0x75, 0xf2, 0xf5, 0x55, 0x6a, ++ 0x33, 0x15, 0xd0, 0x33, 0x10, 0x51, 0xa0, 0x7f, 0x12, 0x15, 0x1b, 0xd0, ++ 0x2f, 0x4d, 0x63, 0x71, 0x0b, 0x87, 0x37, 0xc0, 0xed, 0xb2, 0x71, 0x1e, ++ 0x4f, 0x2b, 0x69, 0x6a, 0x02, 0xbb, 0xa4, 0x65, 0x10, 0x6f, 0x2d, 0x98, ++ 0x37, 0xad, 0xdf, 0x0d, 0x72, 0x23, 0x97, 0xcc, 0x3b, 0x0b, 0xf3, 0x2c, ++ 0x29, 0x8c, 0xb1, 0xdb, 0xe0, 0xf7, 0x98, 0xfd, 0xff, 0xd8, 0x7b, 0x19, ++ 0xa7, 0xae, 0x60, 0x4a, 0x3a, 0x5c, 0xcd, 0xe5, 0x18, 0x7f, 0x35, 0x2e, ++ 0x42, 0x6d, 0xb7, 0x32, 0xfa, 0x1e, 0xe3, 0x71, 0x0e, 0xc1, 0x5f, 0x8d, ++ 0xf3, 0xb7, 0xd4, 0x73, 0xec, 0xdf, 0xc0, 0xae, 0x3e, 0xe6, 0x65, 0xf1, ++ 0x98, 0xc7, 0x32, 0xd8, 0xba, 0xec, 0x85, 0x92, 0x15, 0x88, 0xcb, 0x4a, ++ 0xb9, 0x5f, 0x60, 0x23, 0x3b, 0xb0, 0x7c, 0x32, 0x69, 0xc7, 0xeb, 0x66, ++ 0xae, 0x67, 0x17, 0x4a, 0x4e, 0x13, 0xd0, 0x7b, 0x59, 0xa1, 0xb8, 0x39, ++ 0x03, 0xe8, 0xb1, 0x87, 0x82, 0xf4, 0x7b, 0xa7, 0xc9, 0xbe, 0x2b, 0x9a, ++ 0x91, 0xdf, 0x12, 0xe5, 0xc9, 0x72, 0xc0, 0xd7, 0x03, 0x8a, 0xc1, 0xdf, ++ 0x90, 0x4a, 0x98, 0x9d, 0xb7, 0x83, 0xbf, 0x0e, 0x7e, 0x0c, 0xc7, 0x2f, ++ 0x51, 0x3f, 0x2f, 0x40, 0xae, 0x00, 0xf3, 0xaf, 0x12, 0x4f, 0x6d, 0xb1, ++ 0x1a, 0xfd, 0x31, 0x71, 0x1d, 0x50, 0x2c, 0x28, 0x0f, 0x2e, 0xab, 0x29, ++ 0x9f, 0xee, 0xff, 0x7a, 0xfe, 0x1d, 0xfd, 0x5c, 0xf9, 0x27, 0xfc, 0xc4, ++ 0x11, 0x9c, 0x77, 0xf8, 0xeb, 0x04, 0xd6, 0x63, 0x44, 0x3e, 0xa1, 0x28, ++ 0xff, 0x8a, 0x29, 0xde, 0xa4, 0x66, 0xb3, 0x75, 0x18, 0x73, 0xbd, 0x77, ++ 0x58, 0x19, 0xdf, 0x2b, 0xac, 0x1c, 0x1f, 0x0b, 0x3c, 0xe1, 0x33, 0xb7, ++ 0x93, 0x14, 0x04, 0x7e, 0xaa, 0xd4, 0x9f, 0x4a, 0x92, 0x46, 0xd7, 0x93, ++ 0xa8, 0x3d, 0x32, 0x30, 0x73, 0x9c, 0xb8, 0xf5, 0x46, 0x6c, 0xff, 0x94, ++ 0xe2, 0x62, 0xfe, 0x04, 0xcf, 0x07, 0xa2, 0x6e, 0xb9, 0x64, 0xf0, 0x4f, ++ 0xec, 0xba, 0x3b, 0x76, 0xbd, 0x7f, 0xe4, 0x7b, 0xb7, 0xc5, 0xa0, 0xa7, ++ 0xa3, 0xe9, 0x66, 0xfc, 0xf9, 0xbc, 0xe9, 0x5d, 0x40, 0x1d, 0x52, 0xb8, ++ 0x2e, 0x14, 0x76, 0xb8, 0x84, 0xe1, 0xc9, 0x45, 0x1e, 0x8a, 0x27, 0xe9, ++ 0x9f, 0x8b, 0x34, 0x26, 0xa7, 0x27, 0xfd, 0x52, 0x68, 0x13, 0xca, 0xa9, ++ 0x6e, 0xf0, 0xb7, 0xea, 0x4a, 0x6a, 0xcf, 0xa2, 0x5d, 0xa2, 0xfe, 0x88, ++ 0x3a, 0x87, 0xe3, 0x74, 0x4a, 0x7f, 0x1b, 0xd4, 0x4b, 0xeb, 0x79, 0x7d, ++ 0xb2, 0xf8, 0x6e, 0xc4, 0x9e, 0x58, 0xae, 0xdc, 0x32, 0xba, 0x9e, 0xa6, ++ 0x6a, 0x86, 0x7b, 0x48, 0xf0, 0x97, 0xf3, 0x63, 0xe3, 0x07, 0x4d, 0x54, ++ 0x5c, 0x0a, 0x66, 0x42, 0xbd, 0xec, 0x7b, 0x5a, 0xb4, 0xfb, 0x4a, 0x3c, ++ 0x3a, 0xb8, 0xdd, 0x6a, 0x2a, 0x79, 0x60, 0xa1, 0xe6, 0x84, 0x7b, 0x5d, ++ 0x7a, 0x1a, 0xf0, 0x5e, 0x61, 0x0c, 0x3e, 0x00, 0xbe, 0xe6, 0xdb, 0x8c, ++ 0x7c, 0x36, 0xd9, 0xbf, 0xea, 0x51, 0x76, 0xcf, 0x68, 0x6f, 0xe7, 0x51, ++ 0xf9, 0xdd, 0x4f, 0xdb, 0xa9, 0x93, 0xd7, 0x36, 0x42, 0xc8, 0xbb, 0xf6, ++ 0x89, 0x15, 0xfb, 0x5e, 0x45, 0x72, 0x84, 0x1f, 0xe2, 0x89, 0x5b, 0xef, ++ 0x71, 0xf8, 0xe3, 0x76, 0x40, 0x7f, 0x46, 0xbc, 0x42, 0xbc, 0x2c, 0x8f, ++ 0xa3, 0x2a, 0xe8, 0x69, 0x44, 0xbe, 0x67, 0x48, 0x24, 0x94, 0x03, 0xf4, ++ 0x1b, 0xe9, 0x98, 0x97, 0x6d, 0xf2, 0xc3, 0x32, 0xcc, 0xfd, 0xd8, 0x81, ++ 0xe3, 0x78, 0x48, 0xa1, 0xf3, 0x08, 0x1d, 0xaf, 0x43, 0x74, 0x1c, 0x77, ++ 0xa0, 0x7f, 0x1c, 0xdf, 0x9f, 0x12, 0x7e, 0x5e, 0x45, 0xce, 0x30, 0xfa, ++ 0x53, 0xc2, 0xdf, 0x23, 0xdc, 0xdf, 0x73, 0xd1, 0xff, 0x62, 0xf1, 0x58, ++ 0x39, 0x2f, 0xef, 0x7f, 0xc8, 0xa3, 0x00, 0xfe, 0xf5, 0xdb, 0x4d, 0x71, ++ 0xe6, 0x91, 0xfc, 0x63, 0x82, 0xfe, 0x54, 0x05, 0x31, 0xd2, 0x5b, 0xce, ++ 0xfd, 0xbe, 0x72, 0x93, 0xdf, 0x27, 0xf4, 0xfd, 0x25, 0x61, 0x2f, 0x85, ++ 0x5f, 0xcb, 0xed, 0xe1, 0x1d, 0xc2, 0x9f, 0x2a, 0x1f, 0x7b, 0x7d, 0xb9, ++ 0xc7, 0x94, 0x4f, 0x57, 0x4d, 0x09, 0x6f, 0xbf, 0x06, 0x3d, 0x20, 0x40, ++ 0x15, 0xac, 0x37, 0x91, 0x11, 0x3e, 0x19, 0xe4, 0xab, 0x3b, 0xe7, 0xfa, ++ 0xf6, 0x30, 0xe5, 0xeb, 0x1d, 0xde, 0x24, 0xb6, 0xde, 0x42, 0xe9, 0x54, ++ 0x84, 0x3d, 0x47, 0x3e, 0x31, 0x9c, 0xbd, 0x90, 0x97, 0xbf, 0xc3, 0xa3, ++ 0xa2, 0xfc, 0xfb, 0x34, 0xb6, 0x7e, 0xd1, 0x38, 0x4e, 0xdc, 0xc2, 0x57, ++ 0xc2, 0xd6, 0x0d, 0x4e, 0xd9, 0x25, 0x36, 0x1f, 0x04, 0xc9, 0x9b, 0x24, ++ 0x26, 0x3f, 0xbc, 0xca, 0xc3, 0xec, 0xb5, 0x66, 0x92, 0x8b, 0x6c, 0x4f, ++ 0x53, 0x35, 0xac, 0x03, 0x69, 0x8a, 0xe4, 0x0d, 0x91, 0xd1, 0xf2, 0x5a, ++ 0xcd, 0xfd, 0x39, 0xf8, 0x7e, 0x3d, 0x65, 0x45, 0x75, 0x3e, 0xf5, 0xc9, ++ 0x67, 0xc6, 0xcb, 0x2f, 0xef, 0x83, 0xd0, 0x2a, 0x29, 0xa7, 0x34, 0x3c, ++ 0x9b, 0x93, 0x78, 0x7c, 0x75, 0x6f, 0xa4, 0x0a, 0x86, 0xe7, 0x6a, 0xc7, ++ 0x97, 0x98, 0x70, 0xf6, 0xa9, 0xc8, 0x7b, 0x98, 0xd7, 0x75, 0xa1, 0x50, ++ 0xc2, 0x75, 0x9f, 0xee, 0x9c, 0x8f, 0xd1, 0x3f, 0x10, 0xeb, 0x3b, 0x51, ++ 0xfe, 0x1d, 0xc5, 0x7c, 0x14, 0x5f, 0xc9, 0x47, 0xe8, 0xaf, 0x8c, 0xe4, ++ 0x6d, 0xf1, 0xfa, 0x16, 0x8a, 0xfa, 0x4a, 0x0e, 0xe3, 0x7a, 0xcd, 0xf7, ++ 0x5c, 0x87, 0x31, 0x4f, 0xe4, 0x24, 0xac, 0xe3, 0xd2, 0xef, 0x4f, 0x2a, ++ 0x11, 0x0d, 0xfc, 0x90, 0xf9, 0x02, 0x5f, 0x51, 0x8e, 0x86, 0x05, 0x3f, ++ 0x73, 0x20, 0x4f, 0x82, 0xd5, 0x17, 0xe6, 0x7e, 0xd5, 0x29, 0xfb, 0x1b, ++ 0x0e, 0xb0, 0x9b, 0x22, 0xef, 0xa4, 0xcb, 0x27, 0xd7, 0xc5, 0x8b, 0x73, ++ 0x56, 0xc8, 0x2c, 0xce, 0x2c, 0xae, 0x37, 0xa9, 0x6c, 0xde, 0x99, 0xa3, ++ 0x32, 0x3c, 0x27, 0xee, 0xc5, 0xf8, 0x8e, 0xc8, 0x93, 0x7c, 0xbc, 0x98, ++ 0xf9, 0xe1, 0xdf, 0x31, 0x8c, 0xbb, 0xb9, 0x7e, 0x28, 0xdf, 0x8c, 0xf1, ++ 0xc1, 0x70, 0xe1, 0x58, 0xfe, 0x68, 0xa3, 0x89, 0xcf, 0xd3, 0x54, 0x3e, ++ 0xef, 0x71, 0xbc, 0xd1, 0x19, 0x19, 0x1b, 0xd7, 0x8a, 0x7e, 0x9a, 0xf9, ++ 0x60, 0xee, 0xa7, 0xf9, 0x3b, 0xa7, 0xca, 0xe2, 0x65, 0xf7, 0x58, 0xf5, ++ 0x9b, 0xd5, 0xd9, 0xd1, 0x76, 0xc4, 0x7c, 0x67, 0x2e, 0xbf, 0xc8, 0x1e, ++ 0x3f, 0x2f, 0xc7, 0x5f, 0x62, 0x8c, 0x4f, 0x9a, 0xf3, 0x72, 0xee, 0xb1, ++ 0x06, 0x4a, 0x55, 0xca, 0xcf, 0x2a, 0x45, 0xda, 0x92, 0xea, 0x41, 0xbb, ++ 0x86, 0xfa, 0x74, 0xe8, 0xb2, 0x86, 0x38, 0xe6, 0x42, 0xe4, 0xd0, 0x16, ++ 0x18, 0xd6, 0x23, 0xc3, 0x2c, 0x3e, 0x5a, 0x4e, 0xe4, 0x90, 0x8d, 0xcd, ++ 0x0b, 0x8d, 0xb0, 0x6e, 0x27, 0xf4, 0x46, 0xc8, 0xbf, 0x99, 0x8e, 0xf1, ++ 0xda, 0x2f, 0x1f, 0xee, 0x47, 0x7f, 0xdc, 0x7f, 0x29, 0x52, 0x0d, 0xf2, ++ 0x77, 0x87, 0xaf, 0x1b, 0xed, 0xea, 0x02, 0x6a, 0x57, 0x27, 0xc4, 0xb1, ++ 0xab, 0xf3, 0xe4, 0xc1, 0x2d, 0x13, 0x40, 0x7f, 0xbd, 0x6c, 0x7f, 0xc7, ++ 0xa9, 0xdf, 0xf7, 0x55, 0xe3, 0xbd, 0x26, 0x61, 0x3e, 0xac, 0x5e, 0x9e, ++ 0xa7, 0x4c, 0x00, 0x39, 0x70, 0xc5, 0x8f, 0x57, 0xcd, 0xe5, 0x72, 0x32, ++ 0x7a, 0x3d, 0x4f, 0xd8, 0x55, 0x97, 0x02, 0xb8, 0xc1, 0x1c, 0x6f, 0x9b, ++ 0xcb, 0xf5, 0x6e, 0xae, 0x49, 0x1e, 0x02, 0xea, 0x08, 0x0e, 0xba, 0xed, ++ 0x4a, 0xde, 0xf8, 0xe3, 0x94, 0x48, 0x1e, 0x2e, 0x44, 0x2e, 0x3c, 0x18, ++ 0x2f, 0x8e, 0x2a, 0xae, 0x55, 0x09, 0xc6, 0xf7, 0x3e, 0x62, 0xe2, 0x6f, ++ 0xa7, 0x31, 0xfe, 0x6c, 0xae, 0x47, 0xc4, 0x83, 0x88, 0xdc, 0x99, 0x0d, ++ 0xfa, 0x2c, 0xfc, 0x5f, 0x73, 0xb9, 0x36, 0x95, 0xad, 0x7b, 0x1c, 0x29, ++ 0xba, 0x97, 0xc4, 0xe6, 0x55, 0x09, 0x7b, 0xa0, 0x96, 0xb4, 0x6b, 0x10, ++ 0x17, 0xef, 0x2d, 0x19, 0x7b, 0xbe, 0x30, 0xe7, 0x0f, 0xfa, 0x89, 0x31, ++ 0x4f, 0xac, 0xca, 0x6e, 0x5c, 0x8f, 0x7d, 0x4a, 0xd1, 0x1f, 0x01, 0x79, ++ 0x8c, 0xe2, 0xa4, 0x16, 0xe6, 0xaf, 0x96, 0xb4, 0xa0, 0xbf, 0xba, 0xb0, ++ 0x90, 0xef, 0x0b, 0x2a, 0xba, 0x17, 0xfd, 0x53, 0xe1, 0x57, 0xb7, 0xde, ++ 0xbe, 0x17, 0xf3, 0xb9, 0x44, 0xbe, 0x96, 0xf0, 0x4f, 0xcd, 0x74, 0xf7, ++ 0x4e, 0x7e, 0x11, 0xf3, 0x79, 0xc6, 0xa3, 0x5b, 0xf8, 0xf1, 0xc7, 0x6d, ++ 0x32, 0x5b, 0x87, 0xa0, 0x7e, 0xbb, 0x07, 0xfd, 0x76, 0x8a, 0xfb, 0xe2, ++ 0x7c, 0xf7, 0x8a, 0x8d, 0xf1, 0xeb, 0x57, 0x8a, 0xbe, 0x0b, 0xf4, 0x75, ++ 0x8b, 0x55, 0x77, 0xb7, 0xc0, 0x3a, 0x63, 0x91, 0xcd, 0xfb, 0x7c, 0x9c, ++ 0x71, 0x18, 0xb0, 0x31, 0xfd, 0xee, 0x4d, 0xb0, 0xde, 0xfa, 0x07, 0x58, ++ 0xf8, 0x98, 0x8d, 0xfd, 0x40, 0x3e, 0x98, 0xe7, 0x1b, 0xe1, 0xc7, 0x8a, ++ 0x7d, 0x4a, 0x93, 0xdc, 0x4c, 0x6f, 0x1b, 0xb8, 0x1f, 0x5b, 0x56, 0xd8, ++ 0x82, 0xfa, 0x98, 0xe6, 0xa6, 0x7e, 0x2b, 0xf0, 0xcd, 0xcb, 0xfc, 0x56, ++ 0x32, 0x68, 0xf4, 0x53, 0x17, 0x6a, 0x7d, 0x59, 0x30, 0xfe, 0xe6, 0xf9, ++ 0x4e, 0x1e, 0xe6, 0x7e, 0xed, 0x55, 0xfa, 0xad, 0x5b, 0x93, 0x98, 0x1c, ++ 0x05, 0x5c, 0xc4, 0xee, 0xa6, 0xef, 0x93, 0x14, 0x0a, 0x4d, 0xe9, 0xfc, ++ 0xf7, 0xa4, 0x5c, 0x79, 0x18, 0xf8, 0xb1, 0x35, 0x8d, 0xa0, 0x3f, 0x70, ++ 0x32, 0x4d, 0x0d, 0xed, 0x8e, 0x13, 0x6f, 0x78, 0x9b, 0xcb, 0x5b, 0x8d, ++ 0xbc, 0xda, 0x20, 0x6f, 0xe5, 0x1c, 0x97, 0xa8, 0xd5, 0xfd, 0x1a, 0xc4, ++ 0x03, 0x4e, 0x0e, 0xb3, 0x38, 0x5e, 0xa2, 0x71, 0xdb, 0x66, 0xc2, 0xe9, ++ 0xb9, 0x05, 0xc4, 0x6f, 0x73, 0xc2, 0x35, 0xe2, 0x07, 0x7e, 0xd0, 0x7b, ++ 0xdd, 0x86, 0xd7, 0x08, 0xe6, 0x67, 0x7f, 0xbf, 0x68, 0x65, 0x6e, 0xbc, ++ 0xfa, 0x76, 0xb7, 0x29, 0x71, 0xe7, 0xa5, 0x3f, 0xf3, 0x71, 0x5b, 0x2c, ++ 0xf2, 0xb5, 0xeb, 0x58, 0x3c, 0xf2, 0xbe, 0x42, 0x15, 0xe3, 0xc2, 0x93, ++ 0xea, 0xde, 0x3d, 0x8a, 0x72, 0xda, 0xc8, 0xe5, 0x74, 0x81, 0x0d, 0xfb, ++ 0xdd, 0x5b, 0xa4, 0xe0, 0xb8, 0xf4, 0xde, 0x9e, 0xd3, 0x0e, 0xeb, 0x9a, ++ 0xbd, 0x45, 0x76, 0xcc, 0x47, 0xe9, 0x2e, 0xfa, 0xcd, 0xef, 0x21, 0x5f, ++ 0xbb, 0xbc, 0x44, 0x32, 0xe4, 0x97, 0x08, 0xf9, 0x2d, 0x07, 0x5c, 0x0d, ++ 0xf5, 0xdb, 0x59, 0xbc, 0xf3, 0x3e, 0x37, 0xb3, 0xc3, 0xbd, 0x1a, 0xc7, ++ 0x2f, 0x3c, 0x6f, 0x64, 0x0d, 0x1f, 0xd3, 0x93, 0xfb, 0xde, 0x77, 0xc6, ++ 0xe6, 0x8d, 0x2c, 0x11, 0x72, 0xdf, 0xc8, 0xe3, 0xe4, 0x26, 0xfc, 0x44, ++ 0xcd, 0x48, 0xdc, 0x75, 0x1c, 0x91, 0x47, 0x7c, 0xbe, 0x91, 0xc5, 0x85, ++ 0xef, 0x13, 0xfd, 0xdd, 0xbf, 0x77, 0x0b, 0xe8, 0x5d, 0x03, 0x97, 0x9b, ++ 0xee, 0x8b, 0x2b, 0xdd, 0xa8, 0x9f, 0xfb, 0x59, 0x7e, 0x5e, 0x6b, 0x51, ++ 0x0b, 0xc6, 0x8b, 0xba, 0x27, 0xbf, 0xa5, 0xc2, 0xfd, 0x1a, 0xf7, 0x19, ++ 0x15, 0xee, 0xcd, 0xb8, 0x42, 0x8c, 0xeb, 0x7d, 0x25, 0xbf, 0x62, 0xf9, ++ 0x91, 0x7c, 0x5c, 0xd7, 0x40, 0x3c, 0x9e, 0xca, 0xfb, 0xcb, 0x99, 0x37, ++ 0x5b, 0x3d, 0xf4, 0x7e, 0x71, 0xf8, 0x76, 0x2b, 0xc4, 0x3b, 0x45, 0x7c, ++ 0x76, 0xd4, 0x3a, 0x14, 0x5f, 0x4f, 0xa9, 0x65, 0xdd, 0x27, 0xb5, 0x6e, ++ 0x86, 0xaf, 0x8f, 0x66, 0x3a, 0x48, 0x72, 0x06, 0xf0, 0x4b, 0x0e, 0x49, ++ 0xc0, 0xb7, 0x70, 0x12, 0x49, 0x86, 0xfc, 0x33, 0xb7, 0x35, 0x94, 0x44, ++ 0xef, 0x1b, 0x94, 0xfe, 0x69, 0x80, 0x5b, 0x1c, 0x26, 0xbc, 0x78, 0xfe, ++ 0xd7, 0x7b, 0xb3, 0x41, 0xbf, 0x8f, 0xcc, 0xf8, 0x40, 0x81, 0x76, 0xaf, ++ 0x2b, 0x79, 0xb7, 0x15, 0xfa, 0x31, 0xa5, 0x64, 0x2f, 0xc6, 0xfb, 0xb3, ++ 0xf6, 0xef, 0xed, 0x49, 0xa7, 0xf5, 0x2c, 0x2c, 0x20, 0x5e, 0xdd, 0x33, ++ 0x9a, 0x9e, 0x1a, 0x3e, 0x3f, 0xdd, 0x97, 0xc1, 0xf2, 0x85, 0xee, 0xf3, ++ 0x86, 0x82, 0xb0, 0xef, 0xec, 0xdc, 0x65, 0xb6, 0x9f, 0xa2, 0xf2, 0xd7, ++ 0x6f, 0x54, 0xc1, 0xb4, 0x36, 0x7a, 0x5d, 0x46, 0x27, 0x80, 0x43, 0xc4, ++ 0xba, 0x8e, 0xe2, 0xe6, 0xeb, 0x22, 0x7c, 0x7d, 0x82, 0x5c, 0xbe, 0x22, ++ 0xc5, 0x8e, 0x5b, 0x83, 0x12, 0xb0, 0x83, 0xfd, 0x6d, 0x2d, 0x79, 0xc3, ++ 0x09, 0xf4, 0x2e, 0xe6, 0x7c, 0xcb, 0xdd, 0x27, 0xb7, 0x80, 0x7c, 0x57, ++ 0xff, 0x7a, 0xd6, 0x57, 0x40, 0x4e, 0xc8, 0xed, 0x36, 0xd7, 0x74, 0xda, ++ 0xe0, 0x39, 0xd7, 0x6f, 0x9d, 0xd7, 0x6b, 0xec, 0xfd, 0xbd, 0xac, 0xde, ++ 0xb9, 0x01, 0x5a, 0xbe, 0xa1, 0x70, 0x6f, 0xf6, 0xca, 0xa2, 0xd1, 0xf6, ++ 0x65, 0x44, 0x7f, 0x0a, 0xff, 0xb2, 0x21, 0x40, 0xe9, 0x39, 0x39, 0xff, ++ 0x37, 0xd9, 0x80, 0xdb, 0xde, 0xa0, 0x76, 0xd7, 0x03, 0xed, 0x72, 0xbb, ++ 0x65, 0xf6, 0x97, 0xcc, 0xf3, 0xaa, 0x39, 0x2f, 0xc6, 0xdc, 0xef, 0x4c, ++ 0x65, 0x51, 0x9d, 0x6d, 0x36, 0x8c, 0xf7, 0x8f, 0xdd, 0x39, 0x31, 0x72, ++ 0x46, 0xed, 0xc0, 0x0a, 0xa0, 0x7f, 0xcd, 0xd3, 0x76, 0xcc, 0xe3, 0x4a, ++ 0xdb, 0xff, 0xba, 0x2a, 0x83, 0x7d, 0xa3, 0xf8, 0xbd, 0x56, 0x8a, 0xca, ++ 0xd1, 0x1a, 0x2e, 0x47, 0x0d, 0x1a, 0xb3, 0x7f, 0xad, 0x45, 0x24, 0xb4, ++ 0x49, 0x02, 0xf9, 0x3b, 0xd3, 0x58, 0x06, 0x7a, 0xf7, 0x2a, 0xcb, 0x37, ++ 0x9c, 0xb4, 0xff, 0x5d, 0x96, 0x3f, 0x6a, 0x9a, 0x1f, 0x7a, 0xf9, 0xbc, ++ 0x21, 0xe6, 0xe3, 0xde, 0xc9, 0xef, 0xa1, 0xfe, 0x9c, 0xdf, 0xc7, 0xf5, ++ 0x25, 0x68, 0x91, 0x62, 0xe3, 0x49, 0x5a, 0x49, 0x64, 0x29, 0x8c, 0x8b, ++ 0xe0, 0x4f, 0xa7, 0xc9, 0xde, 0xf8, 0xec, 0xf1, 0xe3, 0x26, 0xef, 0xd8, ++ 0x18, 0x5e, 0x2d, 0xd7, 0xd8, 0x7b, 0x8d, 0xda, 0x6f, 0x58, 0xd7, 0x36, ++ 0xbf, 0xaf, 0xe4, 0xfe, 0x54, 0x15, 0x5c, 0x63, 0xe6, 0x85, 0x07, 0x6d, ++ 0x0c, 0xf7, 0x8a, 0xeb, 0x35, 0xe4, 0x21, 0x3c, 0xf5, 0x5d, 0xaa, 0xff, ++ 0xdd, 0xdb, 0x0f, 0xb9, 0xef, 0x46, 0x3b, 0xa5, 0x21, 0x6e, 0x5f, 0xb3, ++ 0x7f, 0x6f, 0x01, 0xac, 0xd9, 0x64, 0xee, 0xdb, 0x5b, 0xcd, 0xed, 0x05, ++ 0xfa, 0x65, 0x32, 0xef, 0xe7, 0x24, 0xe2, 0x41, 0x3b, 0xb5, 0x50, 0xb3, ++ 0xb3, 0xf5, 0x03, 0x93, 0x9c, 0x5b, 0x4b, 0x76, 0x85, 0x01, 0x3e, 0x8b, ++ 0x79, 0x1a, 0x1c, 0x72, 0x25, 0x33, 0x6a, 0x47, 0xe4, 0xd8, 0x38, 0x44, ++ 0x1c, 0x3f, 0x8c, 0x04, 0xf5, 0x37, 0xf3, 0x63, 0xf2, 0xbe, 0xe8, 0xfc, ++ 0x4e, 0xc0, 0xae, 0x54, 0xb9, 0x59, 0xfc, 0xd5, 0x2c, 0x27, 0x69, 0x25, ++ 0xd4, 0xee, 0xe0, 0x20, 0x50, 0xee, 0xc5, 0xac, 0xfb, 0x9a, 0xe5, 0xb6, ++ 0x41, 0x0b, 0xb8, 0x61, 0x3d, 0x9b, 0xea, 0xcf, 0x59, 0xb6, 0xfe, 0x49, ++ 0xe7, 0x2b, 0x88, 0x4f, 0xc8, 0x8d, 0x5e, 0x1c, 0x4f, 0x2e, 0x9f, 0x16, ++ 0xfa, 0x1f, 0xcc, 0x7f, 0x0e, 0xaf, 0x51, 0x3e, 0xad, 0x05, 0xaa, 0x01, ++ 0xaf, 0x98, 0xe9, 0xf8, 0xa9, 0xcd, 0x88, 0xff, 0xc5, 0xfc, 0x9c, 0xe6, ++ 0xee, 0x47, 0xfa, 0x16, 0x6a, 0xed, 0xd9, 0xd0, 0xfe, 0x24, 0x77, 0x3f, ++ 0xfa, 0x5b, 0xd4, 0xbe, 0x67, 0xc3, 0x55, 0xc8, 0x99, 0xb0, 0xd7, 0x23, ++ 0xf2, 0x57, 0x74, 0x5b, 0x3d, 0xd8, 0x77, 0x90, 0x6b, 0x58, 0x22, 0x3f, ++ 0x59, 0x32, 0x2b, 0x19, 0xec, 0x60, 0x83, 0x9b, 0xe1, 0x14, 0x62, 0x8a, ++ 0xa7, 0xf7, 0xba, 0xc7, 0xf6, 0x37, 0x7a, 0x4c, 0xf2, 0x78, 0xd2, 0xc5, ++ 0xfc, 0xab, 0x86, 0x12, 0x92, 0xec, 0x4a, 0x05, 0x7d, 0x67, 0x71, 0xa7, ++ 0xde, 0x47, 0xd3, 0x77, 0x39, 0x62, 0xe2, 0x72, 0xff, 0x64, 0x0d, 0x74, ++ 0xd8, 0x62, 0xe2, 0xeb, 0xce, 0xc2, 0x2f, 0xd6, 0xbb, 0x9c, 0x60, 0x67, ++ 0x58, 0xfe, 0x56, 0x29, 0x35, 0x5f, 0xd6, 0xbc, 0x68, 0x3c, 0x53, 0xc4, ++ 0x4d, 0xc5, 0x7a, 0x9f, 0x88, 0x93, 0x8e, 0x8a, 0x67, 0x16, 0x76, 0x63, ++ 0x7e, 0x97, 0x55, 0xe4, 0x5d, 0xf0, 0xf5, 0xbf, 0x51, 0x79, 0x3f, 0x09, ++ 0xd6, 0x1d, 0xc5, 0x55, 0xc4, 0x33, 0x6d, 0x9b, 0xda, 0x15, 0x2f, 0x5f, ++ 0x2f, 0x41, 0x3c, 0xd6, 0xc8, 0xe3, 0x70, 0xc3, 0x33, 0xc7, 0x89, 0x87, ++ 0xb2, 0xf8, 0x03, 0xc5, 0x67, 0xbf, 0xb5, 0x4d, 0x1c, 0x1f, 0x9f, 0xed, ++ 0xe1, 0x7e, 0xe6, 0x00, 0x18, 0x0f, 0x7a, 0x5d, 0x65, 0x73, 0xe1, 0x55, ++ 0x83, 0x7c, 0x14, 0x4a, 0x6a, 0x6f, 0x52, 0x7c, 0xdc, 0x76, 0x90, 0xfb, ++ 0x6d, 0xd7, 0xa2, 0x9f, 0xc7, 0x64, 0xf8, 0x8e, 0xb5, 0xf3, 0x27, 0x93, ++ 0x7c, 0x89, 0xe7, 0x51, 0x3c, 0xcc, 0xf4, 0x60, 0x52, 0xc9, 0xde, 0x9e, ++ 0x58, 0x3c, 0x5c, 0xde, 0x46, 0x79, 0x43, 0xc7, 0x49, 0x6d, 0x23, 0xd3, ++ 0x48, 0x6a, 0x62, 0xb9, 0x5b, 0x38, 0x62, 0xf7, 0x7e, 0x65, 0x90, 0xaf, ++ 0x11, 0x7c, 0x3c, 0x0e, 0x2e, 0x16, 0xf2, 0x75, 0x51, 0xd6, 0xff, 0x66, ++ 0x9b, 0x98, 0xb8, 0x5c, 0x03, 0xa7, 0x23, 0xd1, 0xfb, 0xd6, 0x22, 0x5b, ++ 0x33, 0xe4, 0x5b, 0xd1, 0x72, 0x64, 0x52, 0x2a, 0xbb, 0xde, 0x40, 0xaf, ++ 0x3d, 0x33, 0xf6, 0x66, 0x5b, 0xe8, 0xf3, 0xd7, 0x00, 0x7f, 0xc5, 0xd0, ++ 0xd1, 0xfb, 0xcc, 0x7e, 0xec, 0xc7, 0x1f, 0x54, 0xb6, 0xcf, 0xa6, 0xf7, ++ 0xe2, 0xca, 0x5c, 0xc0, 0x07, 0xa7, 0x14, 0x3d, 0xd5, 0x3e, 0xf1, 0xea, ++ 0xe5, 0xc7, 0xac, 0x4f, 0xf6, 0xd9, 0xba, 0x67, 0x23, 0xd5, 0xbf, 0xae, ++ 0x6c, 0x3b, 0xce, 0xcf, 0x5d, 0x6e, 0x86, 0x43, 0x5e, 0x87, 0x92, 0x31, ++ 0xf2, 0xb4, 0x4e, 0x0d, 0x5c, 0x67, 0x9f, 0x8d, 0x10, 0x44, 0x27, 0xe9, ++ 0xdc, 0xc8, 0x09, 0x39, 0x07, 0xa3, 0x59, 0x7d, 0x75, 0xfb, 0xc4, 0xee, ++ 0x72, 0xf4, 0x3f, 0xd4, 0x14, 0x33, 0x3f, 0x6c, 0x87, 0x57, 0x93, 0x61, ++ 0x9d, 0x8f, 0xc9, 0xcd, 0x23, 0x6a, 0x3f, 0xe6, 0xe3, 0xdc, 0x45, 0x6b, ++ 0xb7, 0xd1, 0x76, 0x0e, 0x6b, 0x72, 0xe6, 0x0a, 0x7a, 0x3f, 0xd3, 0xce, ++ 0xe4, 0xf1, 0x70, 0xd0, 0x1a, 0x37, 0xff, 0x79, 0xa6, 0x9d, 0xe1, 0xe7, ++ 0x75, 0x6a, 0xd3, 0x4c, 0xa0, 0x93, 0xb4, 0xaf, 0x45, 0x3d, 0x6b, 0x91, ++ 0xe4, 0x26, 0xd0, 0x7f, 0xe2, 0xbd, 0xba, 0xf8, 0xdc, 0xe6, 0x8e, 0xf8, ++ 0x79, 0xa5, 0x55, 0xd1, 0xfa, 0xe7, 0x62, 0xfd, 0xfb, 0x68, 0xfd, 0x80, ++ 0x1b, 0xbc, 0x3c, 0xfe, 0x4e, 0x5c, 0x99, 0x71, 0xe3, 0xed, 0xbc, 0xdf, ++ 0x61, 0x42, 0xea, 0x40, 0x5f, 0x1e, 0x4b, 0x33, 0xfa, 0x9b, 0x3e, 0x3b, ++ 0x9b, 0xf7, 0xe6, 0x46, 0xeb, 0xaf, 0x8f, 0xad, 0x1f, 0xf3, 0xb3, 0x66, ++ 0xe3, 0xf3, 0x05, 0x38, 0xce, 0x2f, 0xb0, 0xe7, 0x05, 0x76, 0xa6, 0x17, ++ 0xfe, 0x3c, 0x96, 0xd7, 0x26, 0xf8, 0x28, 0xea, 0x5d, 0x1a, 0xad, 0x6f, ++ 0x29, 0xd6, 0xb7, 0x9f, 0x7d, 0x97, 0x6f, 0xe7, 0xeb, 0x06, 0x9c, 0x6e, ++ 0x81, 0xf3, 0xcd, 0xf9, 0x4f, 0x35, 0x49, 0x6c, 0x3c, 0xa2, 0xfb, 0xfa, ++ 0x08, 0xda, 0xcd, 0x52, 0x8a, 0xc3, 0xf1, 0x7c, 0x85, 0x48, 0xe8, 0x30, ++ 0xdc, 0xfb, 0x09, 0xdf, 0x97, 0x29, 0x31, 0x9c, 0xde, 0x95, 0xc2, 0xf6, ++ 0x31, 0x75, 0x59, 0x87, 0xf0, 0x9c, 0x85, 0xee, 0x4f, 0x3e, 0x7e, 0x07, ++ 0xf6, 0x6b, 0x2a, 0x8a, 0x11, 0xdf, 0xdb, 0xb8, 0xec, 0x28, 0x97, 0xf7, ++ 0xc8, 0x50, 0xae, 0x34, 0xfb, 0x82, 0x23, 0xf6, 0xdc, 0x81, 0x72, 0xfe, ++ 0xbe, 0x7b, 0xd8, 0xb8, 0xae, 0xaa, 0x73, 0xbc, 0x73, 0x90, 0xf0, 0x7c, ++ 0x0d, 0x5e, 0x9f, 0x3f, 0x41, 0x9c, 0x4b, 0xe0, 0xf8, 0x0e, 0x5e, 0x3e, ++ 0xba, 0x0e, 0xcc, 0xf6, 0x29, 0x4e, 0x1a, 0x60, 0xfb, 0x12, 0x2b, 0x5c, ++ 0xfc, 0x9c, 0x88, 0xb4, 0x6f, 0xa3, 0x5f, 0x2d, 0xf4, 0x7c, 0xeb, 0x27, ++ 0x6b, 0x19, 0x9e, 0x9f, 0xca, 0xf7, 0xaf, 0x65, 0xef, 0x91, 0x63, 0xe9, ++ 0x51, 0x38, 0x3d, 0xa5, 0xca, 0xfb, 0xdf, 0xdc, 0x0b, 0xfd, 0x8f, 0x10, ++ 0x17, 0xc6, 0x59, 0xc3, 0xbf, 0x73, 0xe4, 0xd0, 0x7e, 0xeb, 0xc7, 0x64, ++ 0x6f, 0x12, 0x94, 0x36, 0xf9, 0x19, 0x3e, 0x8e, 0x6b, 0xcb, 0x39, 0x6e, ++ 0x4d, 0x84, 0xef, 0x8f, 0x4a, 0x81, 0xe7, 0xc2, 0x2c, 0xbe, 0x69, 0xc0, ++ 0xf9, 0x47, 0x33, 0xff, 0x59, 0x06, 0x1c, 0x5a, 0x1a, 0x66, 0xeb, 0x4c, ++ 0x15, 0x1c, 0xd7, 0x57, 0x28, 0xa1, 0x2c, 0x98, 0x1f, 0x6a, 0xb3, 0x59, ++ 0x3c, 0xaa, 0xe3, 0x62, 0x5f, 0x16, 0xe2, 0xf9, 0x8f, 0x33, 0x71, 0xbe, ++ 0xb8, 0x4e, 0xd9, 0x85, 0xfd, 0x9e, 0xa2, 0x0c, 0x61, 0x9e, 0xc4, 0x3c, ++ 0x13, 0xfe, 0xcf, 0x1a, 0x20, 0xe8, 0x37, 0xf8, 0xa9, 0xdf, 0xa0, 0xc7, ++ 0xc1, 0x2d, 0x35, 0x72, 0x76, 0x35, 0xec, 0xcf, 0x2d, 0xf5, 0xb0, 0xfd, ++ 0xb5, 0xa5, 0x5e, 0x56, 0xbe, 0x8b, 0xb6, 0x1f, 0xa4, 0xe5, 0x2b, 0x2f, ++ 0xfe, 0xa0, 0x07, 0xe0, 0xfa, 0x68, 0x7c, 0x6f, 0xc4, 0x29, 0xe5, 0x9e, ++ 0xa1, 0x2a, 0x34, 0x23, 0x26, 0xdc, 0x7f, 0xcd, 0x78, 0x3a, 0x9b, 0xc5, ++ 0xa5, 0x2a, 0x4c, 0x7e, 0x82, 0x90, 0x07, 0xca, 0x0f, 0xdc, 0x37, 0xdf, ++ 0xa1, 0x3c, 0x68, 0x07, 0x3e, 0xe4, 0x66, 0x5b, 0x98, 0x7f, 0x30, 0xd5, ++ 0xb2, 0x1c, 0xf8, 0x46, 0xac, 0xcc, 0x3f, 0xd8, 0xea, 0xfa, 0x96, 0x1d, ++ 0xfd, 0x03, 0xfa, 0x1e, 0xfc, 0x83, 0x0a, 0xee, 0x1f, 0x54, 0x5c, 0x8e, ++ 0x64, 0x81, 0x7f, 0x60, 0xee, 0x8f, 0x90, 0xaf, 0xdc, 0xcb, 0x1f, 0xa3, ++ 0x7f, 0xd0, 0x3d, 0xf4, 0x31, 0xf2, 0x39, 0xfc, 0xc9, 0x9e, 0x2c, 0xb0, ++ 0xcb, 0x22, 0x8f, 0x5c, 0xe0, 0x7a, 0x51, 0x3e, 0x53, 0xf1, 0x1f, 0x01, ++ 0x3d, 0x2e, 0x37, 0xe1, 0x7c, 0x9b, 0xc0, 0xf9, 0xc3, 0x6b, 0x09, 0xe0, ++ 0xfc, 0x0a, 0xc5, 0x88, 0xf3, 0x6d, 0x5c, 0xce, 0x2a, 0x38, 0xce, 0xef, ++ 0x80, 0xf5, 0x2e, 0x90, 0xd7, 0xb3, 0x99, 0xc7, 0x73, 0x68, 0x3f, 0x0e, ++ 0x0a, 0x9c, 0x3f, 0xec, 0x32, 0xe0, 0xfc, 0x52, 0xce, 0x87, 0x83, 0xa0, ++ 0x8f, 0x31, 0x38, 0xff, 0xe0, 0x59, 0xb6, 0xaf, 0xb2, 0x2b, 0x3b, 0xd7, ++ 0x80, 0xf3, 0x47, 0xfc, 0xc8, 0x4f, 0x89, 0xf3, 0x7d, 0x49, 0xcc, 0xee, ++ 0x08, 0x1c, 0x5f, 0xcb, 0xf1, 0x82, 0x78, 0xff, 0x21, 0xb7, 0xe3, 0x66, ++ 0x7c, 0x6f, 0x7e, 0x7f, 0xad, 0xf8, 0x9e, 0x70, 0xfc, 0x1e, 0xc5, 0xc5, ++ 0x46, 0xb9, 0xed, 0xde, 0x9e, 0x8b, 0xeb, 0x2a, 0xa5, 0x2e, 0x3b, 0xca, ++ 0x6d, 0xf9, 0x40, 0x60, 0xf8, 0x01, 0xfa, 0x2a, 0x73, 0x78, 0xed, 0x1f, ++ 0x9f, 0x00, 0x7e, 0xbb, 0x1d, 0x5e, 0xf8, 0xcc, 0xc6, 0xc7, 0x65, 0xdc, ++ 0xfc, 0x4f, 0x13, 0xde, 0x9f, 0x44, 0x22, 0x87, 0x53, 0x41, 0x6f, 0xf2, ++ 0x59, 0xbe, 0x51, 0x5a, 0xb6, 0x0b, 0xf5, 0xa4, 0x82, 0xea, 0x49, 0x6d, ++ 0x3c, 0x7d, 0x30, 0xe3, 0xff, 0x6c, 0x36, 0x6e, 0x55, 0x4a, 0x8b, 0xc8, ++ 0x8b, 0x1b, 0x13, 0xe7, 0x57, 0x68, 0x2e, 0xc4, 0xd9, 0x8a, 0x52, 0x7b, ++ 0x55, 0x38, 0xdf, 0xac, 0x57, 0x75, 0xf9, 0xb6, 0x31, 0xfd, 0xd2, 0xac, ++ 0x24, 0x23, 0x0e, 0xf3, 0x0b, 0xbb, 0xa9, 0x3c, 0x10, 0x44, 0xbb, 0xa9, ++ 0x3c, 0x10, 0x06, 0xfd, 0xf1, 0x5f, 0x66, 0xf9, 0x33, 0xdd, 0x9f, 0x7c, ++ 0xdb, 0x1d, 0x7b, 0x9e, 0xc3, 0x56, 0x6e, 0xff, 0x85, 0x3d, 0x17, 0xfa, ++ 0x78, 0xf0, 0x93, 0x8f, 0x79, 0x1e, 0x8d, 0x49, 0xae, 0x95, 0x8f, 0x1c, ++ 0xb1, 0xfb, 0x8a, 0x0f, 0x66, 0x33, 0x1c, 0xf2, 0x33, 0x25, 0x82, 0xfa, ++ 0x7b, 0xf0, 0xf2, 0xcc, 0xe4, 0xd8, 0x38, 0x95, 0x19, 0xe7, 0x1f, 0xe4, ++ 0x38, 0xbf, 0x82, 0xe3, 0xfc, 0x8a, 0xcb, 0x4c, 0x4f, 0x0e, 0x8e, 0xc6, ++ 0xf9, 0xb7, 0x25, 0xc5, 0xe0, 0x36, 0xe7, 0xe5, 0x65, 0x88, 0xf3, 0xaf, ++ 0x36, 0x9f, 0x40, 0xf8, 0xaf, 0xb5, 0x26, 0xff, 0xf5, 0x5d, 0xbb, 0xd1, ++ 0x7f, 0x4d, 0x24, 0xd7, 0xff, 0xc1, 0xe7, 0xf3, 0x28, 0x3f, 0x87, 0x36, ++ 0x23, 0x9e, 0x55, 0x86, 0xd8, 0x7c, 0xca, 0xf9, 0xa9, 0x70, 0x3c, 0x6b, ++ 0x03, 0x1c, 0x79, 0x0b, 0xce, 0xa3, 0xb8, 0x3f, 0x5e, 0xe8, 0xf1, 0x28, ++ 0xbe, 0x5a, 0x3f, 0x32, 0xcc, 0x93, 0x7e, 0x8e, 0xef, 0x0e, 0x2a, 0x57, ++ 0x8d, 0x67, 0x9b, 0x93, 0x66, 0x27, 0x2e, 0x57, 0x31, 0x0e, 0x9e, 0xdd, ++ 0xfa, 0x89, 0xda, 0x8c, 0xfc, 0xe7, 0x78, 0xb6, 0x42, 0xe0, 0xd9, 0xbf, ++ 0x45, 0xb2, 0x62, 0xf1, 0x2c, 0xd1, 0x18, 0x0e, 0x3b, 0xf8, 0xcc, 0x25, ++ 0xec, 0xc7, 0xc1, 0x34, 0x86, 0x63, 0xcd, 0x38, 0x2c, 0x31, 0xee, 0x60, ++ 0xf7, 0x7e, 0x4d, 0xe2, 0xeb, 0x30, 0x46, 0x3c, 0x21, 0xea, 0xe9, 0x48, ++ 0x21, 0xd9, 0x18, 0x9f, 0x93, 0xde, 0x46, 0xbe, 0x75, 0x59, 0xff, 0x12, ++ 0x17, 0x8f, 0x08, 0xfc, 0x61, 0xc6, 0x1d, 0xc4, 0x84, 0x37, 0x46, 0xea, ++ 0x05, 0x9c, 0x02, 0x78, 0x60, 0xf8, 0x82, 0x03, 0xf6, 0xc1, 0x76, 0x1c, ++ 0x93, 0xf9, 0xbe, 0xba, 0xcf, 0x8a, 0x43, 0x22, 0x72, 0x2c, 0xee, 0x10, ++ 0xdf, 0x75, 0xa5, 0xe8, 0xe8, 0xcf, 0x0b, 0x5c, 0xb2, 0xf5, 0x93, 0x33, ++ 0x88, 0x33, 0xb6, 0x0e, 0x11, 0x3c, 0x39, 0x41, 0xe0, 0x12, 0x8a, 0x37, ++ 0x0e, 0x83, 0x3f, 0xa7, 0xd3, 0xf9, 0x3b, 0xc9, 0x13, 0xa5, 0x5f, 0xe0, ++ 0x13, 0x81, 0x37, 0x46, 0xfa, 0xa1, 0xb0, 0xbc, 0xd1, 0x2e, 0x17, 0xb7, ++ 0xff, 0x09, 0xe2, 0xa0, 0x9f, 0x37, 0x3e, 0x11, 0xb8, 0xc4, 0xcc, 0x9f, ++ 0x83, 0x56, 0x86, 0x5b, 0x3a, 0x2e, 0xbe, 0xf5, 0x99, 0xf0, 0x8a, 0x19, ++ 0x9f, 0x98, 0xe9, 0x9d, 0xb7, 0x6b, 0x47, 0x4f, 0x2a, 0x2d, 0x37, 0x3f, ++ 0x7f, 0x08, 0xed, 0x50, 0x87, 0xb7, 0x0f, 0xf7, 0x99, 0x77, 0x0d, 0xe7, ++ 0x66, 0x00, 0x1f, 0xc6, 0xc7, 0x2d, 0x7e, 0x5c, 0x87, 0x1f, 0x89, 0x53, ++ 0x72, 0xfc, 0x71, 0xad, 0xb8, 0x25, 0x11, 0x5e, 0x49, 0x84, 0x33, 0x0e, ++ 0x02, 0x8e, 0xd1, 0xa2, 0x38, 0xc6, 0x8c, 0x5f, 0xcc, 0xfc, 0xcc, 0xcd, ++ 0x26, 0x2d, 0x10, 0xf7, 0x17, 0xb8, 0x26, 0x91, 0xde, 0x42, 0xb9, 0x7b, ++ 0x9d, 0x51, 0xbc, 0x93, 0xa8, 0x1c, 0xb5, 0xdb, 0x88, 0x83, 0x12, 0xd6, ++ 0x73, 0x39, 0x72, 0xad, 0x38, 0xe8, 0x4c, 0xd2, 0x98, 0x38, 0x88, 0x10, ++ 0x26, 0x37, 0x2c, 0x3f, 0x28, 0x11, 0x3e, 0xd9, 0xea, 0x75, 0x69, 0xb1, ++ 0xf9, 0xaa, 0x62, 0x3e, 0xe9, 0xce, 0xbe, 0xf0, 0x0e, 0xee, 0x2b, 0x1f, ++ 0x50, 0xf1, 0x7c, 0x84, 0xee, 0xb3, 0xcc, 0x7e, 0x26, 0xc2, 0x47, 0x87, ++ 0x4c, 0x7a, 0x77, 0x10, 0xec, 0x85, 0x16, 0x9d, 0xaf, 0x12, 0xf2, 0x65, ++ 0x80, 0x9d, 0xf3, 0x21, 0x70, 0x54, 0xa2, 0x72, 0x57, 0x8b, 0x9f, 0xc4, ++ 0x3c, 0xe2, 0x4b, 0x62, 0xf3, 0x44, 0xa2, 0xf5, 0xc9, 0xac, 0x64, 0x86, ++ 0xb3, 0x1e, 0xc9, 0x65, 0xfe, 0xb2, 0xf9, 0x7d, 0x34, 0xdf, 0xc4, 0x88, ++ 0xa3, 0x48, 0x46, 0x11, 0xca, 0xf3, 0xfd, 0x7c, 0xdf, 0x65, 0x22, 0x5c, ++ 0x45, 0x48, 0xc4, 0xc9, 0xe2, 0x54, 0x41, 0x7c, 0xbe, 0x8c, 0xfb, 0x9b, ++ 0x18, 0x1b, 0x9c, 0xc3, 0xf3, 0x0d, 0x28, 0xa9, 0x4d, 0xf9, 0x24, 0x1f, ++ 0xe6, 0x85, 0x26, 0x3b, 0x1b, 0xaf, 0x93, 0xb3, 0x25, 0xf4, 0x03, 0x16, ++ 0xc1, 0x73, 0x2a, 0x4f, 0xfe, 0x6a, 0xb6, 0x3e, 0x74, 0xba, 0x88, 0xd9, ++ 0xeb, 0x93, 0x7e, 0x1b, 0xda, 0xef, 0xe3, 0xe7, 0x59, 0x3e, 0x62, 0x77, ++ 0x0a, 0x8b, 0xb3, 0x9e, 0xbc, 0x35, 0xc9, 0xbb, 0x9b, 0x92, 0x70, 0x1e, ++ 0xea, 0xa5, 0xf3, 0xf0, 0xe9, 0xa4, 0xbe, 0x62, 0x98, 0xf7, 0x67, 0x88, ++ 0x7e, 0xa6, 0xb3, 0x7e, 0x2e, 0x70, 0x84, 0x57, 0xe3, 0xfa, 0xf8, 0xac, ++ 0x9b, 0x2d, 0xc1, 0x9c, 0xd1, 0xfa, 0xfd, 0x48, 0x32, 0xa7, 0x23, 0x5d, ++ 0xc3, 0x75, 0xb6, 0x06, 0x8e, 0x3f, 0x61, 0x9d, 0x30, 0x6b, 0xe6, 0xe8, ++ 0xfd, 0x04, 0xcf, 0x24, 0xe7, 0x20, 0x9f, 0x20, 0x4f, 0x3e, 0x8b, 0x96, ++ 0xdb, 0x62, 0xe9, 0xfb, 0x7e, 0x2e, 0x7d, 0x94, 0x64, 0x61, 0xeb, 0xaa, ++ 0x66, 0xbe, 0xfe, 0x99, 0xd3, 0x03, 0x8c, 0xb1, 0xc5, 0xf0, 0xa1, 0x31, ++ 0xdf, 0xae, 0x27, 0x51, 0xf9, 0x4f, 0xba, 0x89, 0xad, 0x4f, 0x75, 0x55, ++ 0xdb, 0x30, 0x1f, 0x27, 0x09, 0x96, 0xd2, 0x69, 0xbd, 0xdb, 0x0a, 0x72, ++ 0x53, 0xe2, 0xc9, 0x91, 0xe8, 0x97, 0xf9, 0xf9, 0x4f, 0x93, 0x99, 0xff, ++ 0x7d, 0x7a, 0x6a, 0x04, 0xe7, 0xb1, 0x53, 0x3c, 0xbf, 0x77, 0x8d, 0x22, ++ 0x05, 0x09, 0x73, 0xb0, 0xb0, 0x9f, 0xca, 0x84, 0x29, 0xbb, 0xb6, 0xd1, ++ 0xa2, 0x5f, 0x4e, 0x66, 0xe7, 0xd5, 0x9c, 0xfa, 0xf5, 0xeb, 0x18, 0x27, ++ 0x3a, 0x91, 0xc6, 0xf9, 0xa0, 0x4b, 0x98, 0xc7, 0x70, 0x12, 0x6c, 0x21, ++ 0xc4, 0xfb, 0x5c, 0x5a, 0x08, 0xf6, 0x65, 0xd2, 0xef, 0xad, 0xcb, 0xc6, ++ 0xc8, 0xfb, 0xe8, 0xf3, 0xd7, 0x16, 0xb0, 0xf5, 0x32, 0x42, 0x24, 0x58, ++ 0x47, 0x83, 0x3f, 0x72, 0x47, 0xf3, 0x7b, 0x49, 0x9d, 0x8c, 0xfd, 0x5e, ++ 0xe2, 0xda, 0xfe, 0x00, 0xe8, 0xe3, 0xe9, 0xba, 0x37, 0x1c, 0x70, 0xfe, ++ 0xe4, 0xc2, 0x61, 0x0b, 0x01, 0xbd, 0x5b, 0xe2, 0x2a, 0xbd, 0x17, 0x9e, ++ 0x77, 0xa7, 0x30, 0x39, 0x06, 0x3e, 0x03, 0x6e, 0x5a, 0x52, 0xfd, 0xc5, ++ 0x6f, 0xc2, 0xf3, 0xc6, 0x46, 0xe3, 0x78, 0x1c, 0x49, 0xce, 0x65, 0xe7, ++ 0xc8, 0x28, 0x6c, 0x3c, 0x60, 0xfc, 0xb2, 0x66, 0x8e, 0x6e, 0x97, 0xce, ++ 0x7e, 0x01, 0x35, 0x33, 0x86, 0xff, 0xbe, 0xdf, 0xfc, 0x9d, 0x14, 0x33, ++ 0xaf, 0x88, 0xbc, 0x15, 0x7b, 0x82, 0x3c, 0xbe, 0x44, 0xfd, 0x96, 0x62, ++ 0xed, 0xaf, 0x1c, 0x8d, 0x3b, 0x4e, 0x2a, 0xd9, 0xb5, 0x03, 0xf6, 0xc7, ++ 0x34, 0x15, 0xb3, 0x73, 0x2f, 0x1a, 0x3c, 0x24, 0x08, 0xeb, 0xbc, 0x0d, ++ 0x5e, 0x12, 0xce, 0xe1, 0xf2, 0x85, 0xf9, 0x34, 0x3d, 0xf9, 0x6c, 0x5f, ++ 0x10, 0xd7, 0xaf, 0xb4, 0x92, 0x5d, 0x6d, 0xb9, 0x10, 0xa7, 0x1c, 0x56, ++ 0xd8, 0xfa, 0xb3, 0x69, 0x3e, 0x29, 0xa3, 0x63, 0x95, 0x9d, 0x0e, 0x71, ++ 0x73, 0x36, 0x3e, 0x27, 0x67, 0xcb, 0xe8, 0xd7, 0x95, 0x95, 0x30, 0x5c, ++ 0x5f, 0xc6, 0x71, 0x7d, 0x83, 0xde, 0x82, 0xeb, 0x7a, 0x8d, 0x8f, 0xf6, ++ 0x6c, 0xcf, 0x85, 0xf7, 0x72, 0x76, 0x8d, 0xdf, 0xc3, 0xd7, 0x47, 0x63, ++ 0xf8, 0x47, 0xf6, 0xb3, 0x38, 0xdc, 0x22, 0x93, 0x9c, 0xa7, 0x98, 0xe2, ++ 0xfc, 0x65, 0x5e, 0x53, 0x7e, 0x20, 0xcf, 0xeb, 0xeb, 0x2a, 0x78, 0xce, ++ 0x05, 0xf2, 0xf3, 0x48, 0x3a, 0x97, 0x9f, 0x99, 0x12, 0xea, 0xd1, 0xeb, ++ 0x92, 0xe7, 0xd1, 0xdc, 0x98, 0xf9, 0xa8, 0x3e, 0x59, 0xe4, 0x1f, 0x11, ++ 0x8f, 0x35, 0x46, 0x3e, 0x46, 0xe4, 0x81, 0x8f, 0xaf, 0x99, 0xef, 0x89, ++ 0xf8, 0x69, 0xe6, 0x93, 0x59, 0x2e, 0xcc, 0xfc, 0x3e, 0x99, 0x62, 0xe2, ++ 0x57, 0x02, 0xfe, 0x27, 0xe2, 0x77, 0x59, 0x89, 0xff, 0xbf, 0x94, 0xbf, ++ 0xe7, 0xac, 0x36, 0x2b, 0xc8, 0x6d, 0xb7, 0xf5, 0x83, 0x6c, 0xee, 0x0f, ++ 0x11, 0x39, 0xc6, 0x9e, 0x98, 0xf9, 0x76, 0x4e, 0xf3, 0xa4, 0x80, 0x9d, ++ 0x38, 0x3d, 0xcc, 0xe6, 0x9b, 0x13, 0x53, 0x3d, 0x5f, 0xc1, 0x73, 0xb0, ++ 0xa8, 0x1e, 0xe3, 0x39, 0x9e, 0x5c, 0x1f, 0xa2, 0xe3, 0x40, 0xf5, 0xc1, ++ 0x19, 0xab, 0xcf, 0x6f, 0x4f, 0x03, 0x7d, 0xa6, 0x72, 0x66, 0x85, 0x7a, ++ 0x1a, 0x75, 0x49, 0x4f, 0x02, 0xfd, 0xdb, 0xb7, 0xf5, 0x01, 0xec, 0x37, ++ 0xe8, 0xa9, 0x33, 0xaa, 0x47, 0x66, 0xfe, 0x8f, 0xd2, 0x3f, 0xfa, 0xbf, ++ 0x22, 0xe8, 0xcd, 0x1b, 0xad, 0x47, 0xe6, 0xbc, 0xb1, 0x4f, 0xab, 0x7f, ++ 0xdf, 0x01, 0x7b, 0x0e, 0xf1, 0x82, 0x64, 0x0f, 0xf2, 0x4f, 0xd8, 0xd3, ++ 0x46, 0xe2, 0xfa, 0x4a, 0xec, 0x3e, 0x56, 0xb1, 0x9e, 0xde, 0x9d, 0xd3, ++ 0xda, 0x04, 0xfb, 0xcf, 0x1b, 0x06, 0x2c, 0x78, 0xde, 0x4f, 0xc7, 0xf0, ++ 0x8b, 0xca, 0x0a, 0xd8, 0xd7, 0x5a, 0x27, 0xe1, 0xb4, 0xa6, 0x91, 0x3e, ++ 0xa4, 0x57, 0x6b, 0x63, 0x79, 0x11, 0xd7, 0x3f, 0xfb, 0x30, 0x81, 0xbc, ++ 0xf5, 0x47, 0xa7, 0x12, 0x2f, 0xd8, 0x2b, 0xad, 0x8d, 0xe5, 0x49, 0xd0, ++ 0xf7, 0x98, 0x27, 0x21, 0x70, 0xbd, 0x38, 0xbf, 0x91, 0xbe, 0xd7, 0x59, ++ 0x5e, 0x88, 0xf1, 0x9c, 0xa5, 0x14, 0xaf, 0x31, 0xcf, 0x67, 0xf1, 0x60, ++ 0x25, 0xae, 0x2f, 0xf4, 0xf0, 0x73, 0x8f, 0x46, 0xfc, 0x0b, 0x22, 0xe4, ++ 0xd2, 0xb8, 0xbf, 0xa5, 0x15, 0x9e, 0x4c, 0x8e, 0xee, 0x87, 0x6a, 0xbb, ++ 0x18, 0xc2, 0xf8, 0x4c, 0x47, 0x82, 0xfd, 0x2e, 0xe2, 0x6a, 0xf6, 0x17, ++ 0xcc, 0xd7, 0x23, 0x87, 0x7e, 0xf1, 0xcd, 0xbd, 0x90, 0x5f, 0x91, 0xaf, ++ 0xba, 0x00, 0x52, 0x94, 0x0f, 0x87, 0xed, 0x50, 0xdf, 0xf7, 0x0b, 0x0f, ++ 0xd5, 0x61, 0x3e, 0x5b, 0x9d, 0xe4, 0x82, 0x75, 0xb7, 0x23, 0x1f, 0xb7, ++ 0x6f, 0x86, 0xf3, 0x8e, 0x16, 0x17, 0xbe, 0x17, 0x37, 0xbf, 0xe7, 0xc0, ++ 0xb9, 0xa7, 0xbc, 0xd0, 0x8f, 0x03, 0xd6, 0x1d, 0xde, 0x74, 0xb0, 0x0f, ++ 0x9b, 0xd8, 0xbc, 0x95, 0x74, 0x43, 0xe1, 0xd4, 0x15, 0x63, 0xe0, 0xa3, ++ 0x40, 0x9d, 0xbf, 0x2e, 0x67, 0x46, 0xe2, 0x7c, 0x92, 0xd5, 0x0e, 0x1e, ++ 0xf7, 0xef, 0xfe, 0xfa, 0xee, 0x47, 0x60, 0x7d, 0x7b, 0x50, 0xf5, 0x82, ++ 0xff, 0x52, 0xcf, 0xfd, 0x8e, 0x06, 0x65, 0x47, 0xf3, 0x0a, 0x3a, 0x9e, ++ 0x3d, 0xf3, 0x25, 0xef, 0x46, 0xfa, 0xbc, 0xe7, 0xc6, 0x27, 0xd6, 0x1e, ++ 0x82, 0x38, 0xeb, 0x59, 0x15, 0x38, 0x4e, 0x7a, 0x2f, 0xee, 0xc9, 0x06, ++ 0x3f, 0xe3, 0xb5, 0x67, 0xec, 0xe8, 0x7f, 0x1e, 0xf9, 0x78, 0xcf, 0x4f, ++ 0x30, 0x9f, 0x64, 0x50, 0x9d, 0x03, 0xfd, 0x1d, 0xa1, 0x7f, 0xba, 0xc6, ++ 0xde, 0x9f, 0x7f, 0xe9, 0x18, 0xd8, 0x99, 0xc5, 0x05, 0x8b, 0x8b, 0xa1, ++ 0x9d, 0x24, 0x85, 0xec, 0x00, 0x79, 0xba, 0x6e, 0xb8, 0xfd, 0x1d, 0x38, ++ 0x17, 0xa1, 0x61, 0x40, 0x9d, 0x0d, 0xf6, 0x67, 0x71, 0xdd, 0x2e, 0xfb, ++ 0xd7, 0x80, 0x4f, 0x75, 0xbf, 0xb2, 0x4f, 0x07, 0xff, 0x63, 0xd8, 0x53, ++ 0x03, 0xe3, 0x99, 0x9d, 0x1c, 0xd0, 0x1d, 0x54, 0x1e, 0xb3, 0x0a, 0x73, ++ 0xbe, 0x97, 0x01, 0xed, 0x78, 0x89, 0x57, 0x47, 0xbe, 0xf6, 0x11, 0xe0, ++ 0xab, 0xc8, 0x43, 0x10, 0xb8, 0x5e, 0xf8, 0x93, 0x1d, 0xf3, 0x73, 0x52, ++ 0x48, 0x0c, 0x5f, 0x4f, 0x0f, 0xe7, 0xa6, 0x60, 0x3c, 0xb2, 0x8e, 0xe7, ++ 0x2b, 0xcc, 0x97, 0x9b, 0xc0, 0x3f, 0x3e, 0xed, 0x9a, 0x9e, 0x82, 0x71, ++ 0xc8, 0x3a, 0x96, 0xa7, 0x60, 0xe6, 0xd7, 0x62, 0xc0, 0xe9, 0xa9, 0x40, ++ 0x5f, 0xce, 0xd4, 0x95, 0x71, 0xe6, 0xef, 0xdc, 0xba, 0xbf, 0x6c, 0x08, ++ 0x40, 0xdc, 0xf7, 0x46, 0x5b, 0x73, 0x3c, 0x7e, 0x07, 0x38, 0xbf, 0x93, ++ 0xfe, 0xbc, 0x72, 0x37, 0xf4, 0x37, 0xe9, 0xc7, 0x76, 0x17, 0xc0, 0xeb, ++ 0xa4, 0x04, 0x79, 0x98, 0x79, 0x0e, 0x1e, 0x8f, 0x73, 0x5f, 0x5d, 0x7c, ++ 0x44, 0xe0, 0x19, 0xca, 0x57, 0xbb, 0x35, 0x26, 0xee, 0x47, 0xf1, 0xfe, ++ 0xd7, 0x1c, 0x31, 0x71, 0x97, 0x6b, 0x6d, 0xff, 0x4e, 0xc8, 0xd9, 0x9e, ++ 0x0d, 0x71, 0x8a, 0xc0, 0xfd, 0x50, 0x4f, 0x19, 0x8f, 0x8f, 0x94, 0xf3, ++ 0xf8, 0x48, 0x22, 0xba, 0x4a, 0xc7, 0x89, 0x5b, 0x50, 0x39, 0x42, 0x3e, ++ 0x2d, 0x86, 0xb8, 0xc5, 0x2d, 0xec, 0x7a, 0x03, 0xbd, 0xf6, 0xd4, 0xe7, ++ 0x4c, 0x35, 0xc4, 0x2d, 0x88, 0xee, 0x06, 0x3b, 0x7b, 0x1a, 0xd6, 0xe1, ++ 0x00, 0x8f, 0x29, 0x8b, 0x36, 0x38, 0x60, 0x1d, 0xee, 0x1c, 0x8b, 0x5f, ++ 0x24, 0x92, 0xdf, 0xc5, 0xf9, 0x7b, 0xee, 0x3c, 0x14, 0x63, 0xef, 0x7a, ++ 0xad, 0x7a, 0x36, 0xf8, 0xb9, 0x3d, 0x37, 0xbe, 0x8d, 0x7e, 0xd2, 0xff, ++ 0x2e, 0xf9, 0x1d, 0x91, 0xb3, 0xba, 0x5f, 0xb5, 0xc1, 0xf9, 0x59, 0xdb, ++ 0x0a, 0x17, 0x4f, 0x04, 0xfb, 0x17, 0x23, 0xc7, 0xcf, 0x00, 0xfd, 0xd7, ++ 0x2a, 0xc7, 0x66, 0xfe, 0x75, 0xcc, 0xcf, 0x4b, 0x21, 0x5a, 0x54, 0x9e, ++ 0x85, 0x1c, 0x8f, 0x96, 0x4b, 0x09, 0xfd, 0x51, 0x21, 0xdf, 0x89, 0xc6, ++ 0x03, 0xca, 0x81, 0x3f, 0x2a, 0xe4, 0x3c, 0x51, 0xb9, 0xd3, 0xf3, 0x6f, ++ 0x88, 0x2b, 0xff, 0xd1, 0x7a, 0x86, 0xc6, 0xd4, 0x83, 0x2f, 0x38, 0x18, ++ 0x7e, 0x09, 0x38, 0xd8, 0xfc, 0x52, 0x4e, 0x74, 0x17, 0xd8, 0xe1, 0x79, ++ 0x59, 0xef, 0xa0, 0xdf, 0xfa, 0x0a, 0xb7, 0xc7, 0x23, 0x72, 0x92, 0xd2, ++ 0x77, 0xe7, 0xfd, 0xd4, 0xee, 0x04, 0x9f, 0xb7, 0xe3, 0x7a, 0x79, 0xd7, ++ 0x45, 0x15, 0xcf, 0x59, 0xef, 0x7a, 0x6e, 0xd5, 0xcf, 0x60, 0xde, 0xe8, ++ 0x19, 0xae, 0x74, 0x9d, 0xc1, 0x79, 0xdc, 0xef, 0x5a, 0x42, 0xe9, 0xba, ++ 0x11, 0xfc, 0x87, 0x42, 0x1c, 0x9f, 0x1e, 0x25, 0x26, 0x4e, 0xf8, 0x27, ++ 0x87, 0xf0, 0x1f, 0x8c, 0x79, 0xbd, 0xff, 0xe2, 0xfa, 0x63, 0xba, 0x9f, ++ 0xcd, 0xb3, 0x9a, 0x9f, 0xf2, 0xfb, 0x16, 0x3e, 0x4f, 0xdc, 0x94, 0xf3, ++ 0x5c, 0x32, 0xcc, 0xe7, 0xb7, 0xf0, 0x7d, 0x13, 0x33, 0x3a, 0xd5, 0xb8, ++ 0xf3, 0x32, 0x87, 0x10, 0xa4, 0x30, 0xe3, 0x75, 0x0b, 0x40, 0xff, 0xc2, ++ 0x7d, 0xc6, 0x72, 0xda, 0xc8, 0x3e, 0xf4, 0x76, 0x0b, 0xac, 0x03, 0xde, ++ 0xf4, 0x82, 0xe9, 0x3d, 0xdf, 0x3f, 0x6d, 0xce, 0x83, 0xfc, 0xbd, 0xc3, ++ 0xb4, 0xcf, 0xc9, 0x34, 0xdf, 0xda, 0x2f, 0x8e, 0xed, 0xf7, 0xfe, 0x12, ++ 0xe6, 0x27, 0x0a, 0x25, 0x5e, 0xe0, 0x79, 0xbe, 0xff, 0xc2, 0xcf, 0x0d, ++ 0x6c, 0xe7, 0xe7, 0x06, 0xbe, 0x08, 0xfb, 0x59, 0xe9, 0x75, 0x1f, 0xec, ++ 0x67, 0xa5, 0xcf, 0x5f, 0x82, 0xfd, 0xac, 0xf4, 0x7e, 0x3f, 0xdf, 0xcf, ++ 0x4a, 0xb2, 0xaf, 0xee, 0x7c, 0x78, 0x71, 0xae, 0x93, 0xca, 0xf9, 0xd0, ++ 0x36, 0x39, 0x64, 0x88, 0x87, 0x8a, 0x7d, 0xde, 0x1d, 0x70, 0x6e, 0x12, ++ 0xe0, 0x01, 0xb7, 0xca, 0xce, 0x9b, 0x73, 0x51, 0xb4, 0x05, 0xf9, 0x28, ++ 0x1c, 0x2f, 0x5a, 0x1c, 0x3e, 0xbb, 0x4a, 0xc7, 0x55, 0xfd, 0x13, 0xc1, ++ 0x7c, 0x94, 0x6f, 0x9d, 0xed, 0x43, 0x79, 0xd8, 0xce, 0xe7, 0x59, 0x33, ++ 0x8e, 0x11, 0xe7, 0x3a, 0x9a, 0xe9, 0x52, 0xa3, 0x7c, 0x54, 0x20, 0x4e, ++ 0xd5, 0x35, 0x35, 0xd0, 0xdc, 0x54, 0xc8, 0x07, 0x0c, 0xe4, 0x66, 0xf6, ++ 0xa4, 0x5d, 0xdb, 0x62, 0xf0, 0xb4, 0xa6, 0x31, 0xb9, 0x68, 0xe5, 0x7e, ++ 0x5b, 0xf0, 0x22, 0x09, 0x3d, 0x2f, 0x45, 0xcb, 0x9f, 0xb8, 0x48, 0xf6, ++ 0x6c, 0x63, 0x71, 0xb6, 0xa0, 0x0c, 0xb8, 0x03, 0xfe, 0xa2, 0x22, 0x5c, ++ 0x3f, 0x40, 0x10, 0xc7, 0xd5, 0x17, 0x6f, 0x45, 0xff, 0x0b, 0x70, 0x20, ++ 0xe0, 0x32, 0x3c, 0x67, 0x2c, 0x17, 0xf6, 0xa5, 0xbe, 0x84, 0x78, 0xae, ++ 0x7e, 0x78, 0xce, 0xbd, 0x0c, 0xb7, 0xe8, 0xa3, 0x70, 0xdc, 0x08, 0xdf, ++ 0x64, 0xe4, 0x13, 0xc3, 0xe7, 0xc5, 0xaf, 0xe3, 0xf9, 0xcc, 0xf5, 0x03, ++ 0xf1, 0xe5, 0x2d, 0x9a, 0xc7, 0xd4, 0xdc, 0x93, 0x1f, 0xb3, 0xff, 0xa0, ++ 0x71, 0x38, 0xd0, 0xc8, 0xf1, 0x91, 0x2b, 0xf6, 0x7c, 0x04, 0xd5, 0x24, ++ 0x57, 0xe6, 0x7a, 0xd2, 0x8a, 0x25, 0x1c, 0x97, 0x05, 0x05, 0x3c, 0xde, ++ 0xc3, 0xd7, 0x3f, 0xc4, 0x78, 0x6e, 0x5e, 0xdb, 0x87, 0xf9, 0x1e, 0xbd, ++ 0xc5, 0x36, 0x0f, 0xc4, 0x17, 0xcc, 0x38, 0xd1, 0x8c, 0xf3, 0xd5, 0x62, ++ 0xb6, 0x5f, 0x4c, 0xb9, 0x9d, 0xed, 0x5b, 0xad, 0xbf, 0x48, 0x30, 0x3f, ++ 0x1e, 0x05, 0x26, 0x33, 0x7a, 0x0e, 0x9b, 0xca, 0xf3, 0x79, 0x3b, 0x5c, ++ 0x01, 0x2f, 0xc4, 0x31, 0x1b, 0xbc, 0x26, 0xdc, 0xcb, 0xcf, 0x91, 0x2a, ++ 0x2f, 0x30, 0xe2, 0x79, 0x33, 0xde, 0x57, 0x07, 0x54, 0x13, 0xde, 0x0f, ++ 0xb2, 0xf9, 0x70, 0x13, 0x1b, 0xcf, 0x93, 0xe7, 0x09, 0xfa, 0x51, 0xcf, ++ 0xef, 0x64, 0xf1, 0x81, 0x03, 0x6e, 0x0f, 0x93, 0x3f, 0x12, 0x42, 0xbf, ++ 0xa7, 0xc2, 0x6d, 0xb9, 0x75, 0x9b, 0x07, 0xd6, 0xa9, 0xd8, 0x3e, 0xcc, ++ 0xd2, 0x61, 0x82, 0xf1, 0x92, 0xd2, 0x01, 0x0f, 0xee, 0xab, 0xae, 0x18, ++ 0x24, 0xe1, 0xeb, 0x67, 0xe0, 0x79, 0xc3, 0x6d, 0x78, 0x9e, 0x90, 0x89, ++ 0x7f, 0x15, 0x10, 0xea, 0x4d, 0x87, 0x7a, 0x3c, 0x3d, 0x13, 0x21, 0x9e, ++ 0xa7, 0x90, 0x2d, 0x70, 0x8e, 0x4c, 0xa6, 0xbd, 0x45, 0x07, 0x3d, 0x50, ++ 0xdd, 0x6b, 0x71, 0xdf, 0x0d, 0xe4, 0x31, 0x4c, 0x60, 0x72, 0x64, 0x8f, ++ 0xe5, 0xaf, 0x9a, 0x7c, 0x7c, 0x33, 0xa8, 0x40, 0x05, 0x8f, 0xab, 0x89, ++ 0xdf, 0xa7, 0x98, 0x64, 0xdf, 0x8b, 0x72, 0x10, 0x33, 0x7e, 0x63, 0xae, ++ 0x87, 0xa9, 0x5c, 0xee, 0xc4, 0xfa, 0x96, 0x9f, 0xd7, 0xef, 0x1f, 0x64, ++ 0x79, 0x6d, 0x66, 0x39, 0x48, 0xb3, 0x0f, 0x61, 0x3c, 0xbe, 0x72, 0x58, ++ 0xc3, 0xf3, 0x9e, 0xcd, 0xe3, 0x6e, 0x1e, 0xd7, 0x4a, 0x2d, 0xf2, 0xfe, ++ 0xe3, 0xb0, 0x3f, 0xe3, 0x62, 0xb2, 0x77, 0x13, 0x8c, 0xb3, 0x9d, 0x8d, ++ 0xb3, 0x18, 0x47, 0x55, 0xee, 0x94, 0x61, 0x1f, 0x07, 0x51, 0xd8, 0x78, ++ 0x89, 0xf5, 0x2f, 0x73, 0xfc, 0xb5, 0xcc, 0xb4, 0x3f, 0xce, 0x4c, 0x97, ++ 0x38, 0x17, 0x61, 0xbd, 0x66, 0xda, 0x2f, 0xc6, 0x71, 0x7c, 0x25, 0xa7, ++ 0xae, 0x2d, 0x69, 0xaf, 0xe1, 0x7c, 0xda, 0x4a, 0x6e, 0x67, 0x46, 0xe6, ++ 0x6d, 0x7b, 0x1e, 0x5f, 0xc7, 0x62, 0xe7, 0x99, 0x1e, 0x18, 0x1c, 0x7b, ++ 0x1d, 0xeb, 0x80, 0x8b, 0x9d, 0xef, 0x47, 0x5c, 0x8b, 0xc7, 0xb1, 0x7b, ++ 0x9b, 0x98, 0xff, 0xcd, 0xcf, 0x11, 0x28, 0x2b, 0x21, 0xc9, 0x80, 0x73, ++ 0xca, 0x06, 0x09, 0x93, 0xaf, 0x47, 0x2d, 0x21, 0x47, 0x4e, 0x6c, 0xf9, ++ 0x90, 0x61, 0xff, 0xb8, 0x73, 0x70, 0x59, 0x3d, 0x9e, 0xc7, 0xe8, 0x72, ++ 0x55, 0x43, 0x9c, 0xad, 0x8c, 0xb0, 0xf5, 0x4a, 0x7d, 0x80, 0xe0, 0xfa, ++ 0xa5, 0x4e, 0xf6, 0xca, 0x81, 0x98, 0x7e, 0x89, 0x75, 0x10, 0x95, 0xc7, ++ 0xc5, 0x54, 0x89, 0xf5, 0x4b, 0xf0, 0xc9, 0x4c, 0xdf, 0x5d, 0xc3, 0x46, ++ 0x7f, 0xe8, 0x2b, 0x41, 0xe3, 0xbe, 0x87, 0x3b, 0x1f, 0x36, 0xee, 0xd3, ++ 0xf8, 0xd2, 0xda, 0x2c, 0xc3, 0xfb, 0xda, 0x55, 0x79, 0x86, 0xf7, 0x35, ++ 0x9e, 0x9b, 0x0d, 0xf7, 0x5f, 0x74, 0x1b, 0xcf, 0x09, 0xfa, 0x42, 0xc0, ++ 0x78, 0x4e, 0xd0, 0x92, 0xe6, 0x2a, 0x43, 0xf9, 0x45, 0x4d, 0xc6, 0x73, ++ 0x82, 0xee, 0xa8, 0x33, 0x9e, 0x13, 0xd4, 0xa0, 0xdf, 0x69, 0xd2, 0x5f, ++ 0xdd, 0x20, 0xdf, 0x5d, 0x52, 0xdf, 0x0f, 0xa1, 0xff, 0x16, 0xc7, 0xef, ++ 0xf3, 0xc6, 0x8a, 0x07, 0x97, 0x8f, 0xb7, 0x6e, 0x1c, 0x64, 0xe7, 0x06, ++ 0xa1, 0x1f, 0x18, 0x67, 0xbf, 0x8b, 0x79, 0x5f, 0xdb, 0x07, 0x9a, 0xc0, ++ 0x0b, 0x46, 0x3d, 0xe8, 0x09, 0xfa, 0xd9, 0xb9, 0x3a, 0x03, 0x9e, 0x9d, ++ 0x7e, 0x7a, 0x7f, 0x88, 0x78, 0x15, 0x74, 0x70, 0xf9, 0xf9, 0x41, 0x35, ++ 0x84, 0x95, 0xab, 0x71, 0xb3, 0xf5, 0x96, 0xea, 0x8c, 0xf8, 0xfe, 0xbc, ++ 0xb0, 0x83, 0xe6, 0xf5, 0x0a, 0x71, 0xfe, 0x5f, 0xd9, 0x60, 0x1f, 0xca, ++ 0x41, 0xb9, 0xe9, 0xbc, 0xbf, 0x52, 0xf7, 0xbc, 0xb8, 0xe7, 0x79, 0xbe, ++ 0xa7, 0x71, 0xbc, 0x20, 0xce, 0xbf, 0x48, 0x70, 0xce, 0xc5, 0xa8, 0xf9, ++ 0xfb, 0x6a, 0xfb, 0xc7, 0xd7, 0x99, 0xc6, 0xed, 0x1f, 0x6f, 0xb7, 0x94, ++ 0xf4, 0x1d, 0x76, 0xe6, 0x24, 0xee, 0xdf, 0xd5, 0xf6, 0x6b, 0x24, 0x8f, ++ 0x0b, 0xce, 0x1d, 0xa4, 0xfc, 0xe8, 0x83, 0x47, 0x93, 0xd9, 0x7b, 0x8d, ++ 0xea, 0xdb, 0x96, 0xb4, 0x02, 0x3c, 0xe7, 0x22, 0xc3, 0x5e, 0x29, 0xa5, ++ 0x4c, 0x8c, 0xc6, 0x3b, 0x89, 0x3e, 0xeb, 0xaa, 0xf2, 0xce, 0xba, 0x79, ++ 0x1c, 0x9f, 0xe8, 0x4b, 0xae, 0xea, 0xdc, 0xd2, 0x0c, 0xbb, 0x87, 0xe9, ++ 0xbf, 0xce, 0xf0, 0xd1, 0x16, 0x49, 0x0f, 0xc1, 0x39, 0x79, 0xe6, 0x75, ++ 0x53, 0x95, 0xcf, 0xa7, 0x93, 0x22, 0xec, 0xbc, 0x0b, 0x1f, 0x3f, 0xef, ++ 0x22, 0x69, 0x0b, 0xd1, 0x0b, 0x29, 0x8b, 0x82, 0x95, 0x04, 0xd7, 0xf1, ++ 0x83, 0xb9, 0xf6, 0xd0, 0x66, 0x09, 0xf2, 0xc6, 0xd9, 0x7e, 0xd2, 0xd6, ++ 0x1b, 0x2d, 0x38, 0xff, 0xb4, 0x0e, 0xe9, 0x3b, 0xe0, 0x77, 0x2d, 0xda, ++ 0x6e, 0x54, 0x70, 0x3f, 0x63, 0x8d, 0xac, 0x61, 0x79, 0x35, 0x9b, 0xcd, ++ 0x4f, 0x3e, 0xc8, 0xb1, 0x87, 0x7c, 0x89, 0xd7, 0xf4, 0x66, 0xc3, 0x39, ++ 0x1d, 0xee, 0x4d, 0x2e, 0xd0, 0x13, 0xf5, 0x27, 0xec, 0x7d, 0xa2, 0xfe, ++ 0x74, 0x4e, 0x56, 0x9b, 0xe3, 0xf9, 0x0b, 0xc5, 0x29, 0x4c, 0xee, 0x4f, ++ 0x29, 0x4d, 0x85, 0x29, 0x28, 0x1f, 0xba, 0x9b, 0xad, 0x47, 0x84, 0xf0, ++ 0xdc, 0x33, 0x91, 0x7f, 0x9b, 0x28, 0xef, 0x96, 0x02, 0x47, 0x17, 0xda, ++ 0x6d, 0x22, 0xf0, 0x01, 0x1b, 0xbf, 0xef, 0xc1, 0x7a, 0x4a, 0x1c, 0xfd, ++ 0xf5, 0xa7, 0x30, 0xbf, 0xd8, 0x57, 0x28, 0x85, 0xac, 0x90, 0x47, 0xba, ++ 0x94, 0x84, 0xac, 0x63, 0xf8, 0x95, 0x9d, 0x6e, 0x4b, 0xdc, 0x78, 0xc6, ++ 0x4d, 0x29, 0xdc, 0x5f, 0xbe, 0x7c, 0x05, 0xcf, 0xb3, 0x53, 0xc5, 0xf9, ++ 0x7a, 0x59, 0xec, 0x7c, 0xbd, 0x6e, 0xd3, 0xb9, 0x95, 0x37, 0xf1, 0x7e, ++ 0x1e, 0x4a, 0xb1, 0xe3, 0xb5, 0x3b, 0x67, 0x0f, 0xdb, 0xa7, 0x6a, 0x3a, ++ 0x1f, 0xbd, 0xde, 0xb3, 0x92, 0xc4, 0xe2, 0x59, 0x71, 0xce, 0x8f, 0x1a, ++ 0x79, 0x0f, 0xe3, 0x4c, 0x27, 0xc7, 0x39, 0x5f, 0x44, 0xac, 0x3f, 0x6d, ++ 0xe7, 0xfb, 0x97, 0xab, 0x2e, 0x5a, 0x9a, 0xe2, 0xd1, 0xff, 0x61, 0x8a, ++ 0x82, 0x74, 0x3c, 0xaf, 0x59, 0xe3, 0xf6, 0xef, 0x5b, 0x9c, 0xde, 0xce, ++ 0x69, 0x5e, 0x3c, 0x57, 0xb5, 0xf5, 0x49, 0x0b, 0x9e, 0xa3, 0xef, 0x73, ++ 0xb7, 0x4e, 0xc1, 0xfd, 0xdd, 0x29, 0x5f, 0x23, 0x2c, 0xde, 0xc5, 0xe8, ++ 0xaf, 0xe7, 0x7a, 0xea, 0x73, 0x87, 0x36, 0x93, 0x14, 0x5c, 0xa7, 0x7e, ++ 0x1a, 0x7e, 0x27, 0x44, 0x2d, 0xb1, 0x41, 0x2c, 0x8f, 0x9c, 0xbc, 0xb1, ++ 0x05, 0xcf, 0x85, 0xdd, 0x0e, 0x79, 0x73, 0x39, 0xd1, 0xfe, 0xa5, 0x88, ++ 0x75, 0xeb, 0x9d, 0x87, 0xea, 0xf2, 0x8a, 0xd9, 0xf9, 0xf3, 0x10, 0xef, ++ 0xa9, 0x1d, 0x60, 0x79, 0xe5, 0x0b, 0x4b, 0x76, 0xf1, 0x3c, 0x92, 0x7e, ++ 0xdc, 0xaf, 0x68, 0xfe, 0x9d, 0x92, 0xd2, 0xba, 0x80, 0x0e, 0xf3, 0xf2, ++ 0xc2, 0xc6, 0xf0, 0x66, 0xc4, 0x3f, 0x5e, 0x8f, 0x1f, 0x7f, 0xb7, 0x84, ++ 0x78, 0x37, 0xe2, 0xef, 0xa8, 0x8c, 0xda, 0x57, 0xa9, 0x21, 0xee, 0xea, ++ 0x1c, 0x66, 0x72, 0xdf, 0xf9, 0x73, 0x6f, 0x37, 0xfe, 0x0e, 0x88, 0x5b, ++ 0xe0, 0x46, 0xbd, 0xb1, 0x26, 0x33, 0x7a, 0x3e, 0x58, 0xf9, 0xd0, 0xa1, ++ 0x2d, 0xb0, 0x04, 0x63, 0x3e, 0x1f, 0xcc, 0x7c, 0xbe, 0x90, 0xf0, 0xcb, ++ 0x54, 0x13, 0xae, 0x14, 0xfe, 0x58, 0x03, 0x09, 0x1d, 0x56, 0xa4, 0xd1, ++ 0x71, 0xe6, 0x44, 0xfe, 0xd8, 0x63, 0x29, 0x1c, 0x8f, 0xdc, 0x48, 0xfd, ++ 0x31, 0x3a, 0xfe, 0x77, 0xd9, 0x58, 0x3e, 0xad, 0x6f, 0xbd, 0x54, 0x02, ++ 0x4e, 0x63, 0xd2, 0x7a, 0x69, 0x32, 0xd8, 0xaf, 0x1f, 0xf1, 0x71, 0x7a, ++ 0xb3, 0x3c, 0x80, 0xe7, 0xb4, 0xb4, 0x26, 0xd8, 0x67, 0x77, 0x69, 0xa4, ++ 0x5c, 0x18, 0xf7, 0x33, 0x75, 0xe6, 0x04, 0xdc, 0xde, 0x31, 0xca, 0xdf, ++ 0x94, 0x22, 0xb3, 0x7d, 0x79, 0x97, 0xd9, 0xf9, 0x1e, 0xaa, 0x9d, 0xe5, ++ 0x71, 0x8d, 0x5c, 0x79, 0xfe, 0x8b, 0x90, 0xeb, 0x59, 0x4e, 0x1b, 0x96, ++ 0x2f, 0x71, 0x32, 0xbd, 0xa8, 0xb8, 0xf2, 0x42, 0xd6, 0x58, 0xf3, 0x67, ++ 0xa9, 0x2f, 0x40, 0xa0, 0x3f, 0xd4, 0xbe, 0xc4, 0xcd, 0x0f, 0x7b, 0x31, ++ 0x85, 0xed, 0x47, 0x54, 0xc3, 0xec, 0x9c, 0x0a, 0xb5, 0xed, 0xbd, 0xea, ++ 0x78, 0xfa, 0x2c, 0xf4, 0x70, 0x9d, 0xda, 0xb4, 0x0f, 0xec, 0xc7, 0x16, ++ 0x69, 0x6d, 0x28, 0x09, 0xed, 0xc0, 0xd5, 0x9f, 0x5f, 0x79, 0x8b, 0xfc, ++ 0xd9, 0xed, 0xcd, 0x65, 0x4d, 0x3f, 0x9c, 0x42, 0xfb, 0xff, 0x9a, 0xf5, ++ 0x47, 0x1e, 0xd0, 0x8f, 0xcd, 0x01, 0xe3, 0xef, 0x4b, 0x89, 0xeb, 0x6b, ++ 0x5a, 0xc0, 0x8e, 0xfc, 0x77, 0x1f, 0x72, 0x80, 0xbf, 0x79, 0x3e, 0x39, ++ 0x70, 0x1c, 0xe8, 0x86, 0x78, 0x37, 0xec, 0x23, 0xec, 0x8c, 0xbc, 0x68, ++ 0x47, 0x7b, 0x6a, 0xe2, 0xbb, 0xb9, 0x9e, 0xb5, 0x4e, 0xc6, 0x77, 0xd5, ++ 0xc3, 0xde, 0x93, 0x7f, 0xd3, 0x3d, 0x8b, 0x63, 0xe2, 0x24, 0x75, 0x4e, ++ 0x89, 0xcf, 0x1f, 0xfa, 0x5b, 0x40, 0xd7, 0x4c, 0xab, 0xfe, 0x36, 0xb4, ++ 0xf3, 0x48, 0x65, 0xfc, 0x75, 0xc8, 0x4c, 0xa5, 0xf2, 0x1d, 0x78, 0x5f, ++ 0xa9, 0x35, 0xfd, 0x01, 0xae, 0x9d, 0x91, 0xdd, 0x18, 0x3f, 0x4e, 0x4e, ++ 0xd6, 0xff, 0x07, 0x7c, 0x5f, 0xae, 0xe8, 0xff, 0x0e, 0xcf, 0xff, 0xc9, ++ 0xaa, 0xf7, 0x33, 0x3b, 0x5d, 0xed, 0x3a, 0x53, 0x10, 0xdd, 0xd7, 0x90, ++ 0x68, 0x9c, 0x61, 0xe1, 0xe2, 0x4c, 0x41, 0x2c, 0xbf, 0x3e, 0x1b, 0x9f, ++ 0x33, 0xec, 0x4d, 0x43, 0x6c, 0x9c, 0xf5, 0x80, 0x76, 0x8d, 0xe3, 0xec, ++ 0xa4, 0xd7, 0x2f, 0xc1, 0xdc, 0x42, 0x9f, 0xf7, 0x97, 0xc7, 0x5f, 0x6f, ++ 0xff, 0x11, 0x97, 0x27, 0xaa, 0x67, 0x98, 0xaf, 0x20, 0xf6, 0xbd, 0xf8, ++ 0xdc, 0x44, 0x8f, 0x37, 0x7f, 0x89, 0xf2, 0x74, 0xfc, 0x65, 0x27, 0xe6, ++ 0xb5, 0x07, 0x9b, 0x20, 0xaf, 0xf3, 0xe4, 0x14, 0x0b, 0xd9, 0x1d, 0x63, ++ 0xe7, 0xc4, 0x79, 0x05, 0xad, 0x11, 0xe6, 0x17, 0x5e, 0x78, 0x48, 0xda, ++ 0xcd, 0xfc, 0x42, 0x82, 0xf7, 0x3f, 0xff, 0x7a, 0xce, 0x6e, 0x58, 0xdf, ++ 0x5d, 0x3a, 0x8d, 0xeb, 0x31, 0xdf, 0x77, 0x71, 0xf7, 0x43, 0xc6, 0xfd, ++ 0xd0, 0xa2, 0xdd, 0x39, 0xa9, 0x7c, 0xfc, 0xc7, 0xd1, 0xcf, 0x36, 0x5e, ++ 0x6e, 0x73, 0x2a, 0xd3, 0xcf, 0x1f, 0xa4, 0xb2, 0x78, 0xd8, 0x55, 0xeb, ++ 0x67, 0x06, 0xab, 0x47, 0xe8, 0xa9, 0xaa, 0xb0, 0xeb, 0x5d, 0x2e, 0x26, ++ 0x5f, 0xef, 0xa7, 0xb2, 0xab, 0x2d, 0x4d, 0x12, 0xf9, 0xeb, 0xd3, 0x81, ++ 0x0f, 0x54, 0x0f, 0xfb, 0x53, 0xae, 0x6d, 0x7c, 0x9e, 0x5a, 0x92, 0xf7, ++ 0xd9, 0xe5, 0x43, 0xe8, 0x83, 0xea, 0x35, 0xe6, 0xe7, 0x6d, 0xe3, 0xfa, ++ 0x22, 0xec, 0x15, 0xa5, 0xb3, 0xd4, 0xc9, 0xec, 0x45, 0x20, 0xf9, 0xda, ++ 0xe8, 0xcc, 0x2c, 0xfd, 0x1c, 0xe4, 0x58, 0xec, 0x3f, 0x90, 0x1d, 0x92, ++ 0x21, 0x1e, 0xbe, 0xc0, 0xc9, 0xe3, 0x95, 0x5c, 0x7f, 0x4f, 0x29, 0xfa, ++ 0x42, 0xa0, 0x93, 0xea, 0xef, 0x1d, 0x28, 0x5f, 0x89, 0xf5, 0x77, 0x89, ++ 0x93, 0xe9, 0xef, 0x17, 0x9c, 0x46, 0xfd, 0x5d, 0xe6, 0x64, 0xfa, 0xfb, ++ 0x45, 0x27, 0xd3, 0xdf, 0x66, 0xe7, 0x67, 0xd0, 0xdf, 0x0f, 0xb8, 0xfe, ++ 0xf8, 0x79, 0x1c, 0x9f, 0x1c, 0x37, 0xda, 0x1d, 0x8a, 0x8b, 0xef, 0x81, ++ 0xfa, 0xeb, 0x15, 0x89, 0xef, 0xe7, 0x26, 0x7f, 0x94, 0x62, 0xfc, 0x8f, ++ 0xfa, 0x81, 0x00, 0xd1, 0xd9, 0x64, 0xf9, 0x5c, 0x2c, 0x6e, 0xa0, 0xf8, ++ 0x55, 0xc7, 0xfd, 0x1b, 0x6f, 0x1a, 0xeb, 0x7b, 0x8b, 0x8f, 0x17, 0xb5, ++ 0x63, 0xf7, 0x43, 0xbd, 0x6f, 0x41, 0xfb, 0xb4, 0x3f, 0x9b, 0xff, 0x3b, ++ 0xe3, 0x1f, 0xf0, 0xf1, 0xc5, 0x38, 0x7a, 0x29, 0xf8, 0x28, 0xdb, 0x5a, ++ 0xdc, 0xb0, 0xff, 0x35, 0xd1, 0x3c, 0xb7, 0xc0, 0xc9, 0xe6, 0x19, 0xbf, ++ 0x8d, 0xed, 0xaf, 0x20, 0xc7, 0x68, 0xfb, 0x45, 0x86, 0xfe, 0x7c, 0x17, ++ 0xf8, 0x37, 0xd2, 0x9f, 0x20, 0xf5, 0xec, 0xe2, 0xf7, 0x27, 0x18, 0xb7, ++ 0x3f, 0x7d, 0xc6, 0xfa, 0x62, 0xfa, 0xf3, 0x08, 0xd4, 0x2b, 0xfa, 0x53, ++ 0x71, 0xe5, 0xf8, 0x98, 0xfa, 0xe8, 0x13, 0xfa, 0xe8, 0x0a, 0xcb, 0x30, ++ 0x6f, 0xfb, 0x94, 0xf8, 0xf3, 0x42, 0xaf, 0x93, 0xcd, 0xdb, 0x1f, 0x3a, ++ 0xf4, 0x27, 0xa1, 0x7e, 0xb3, 0x7c, 0x89, 0xeb, 0x3f, 0x72, 0x7d, 0x48, ++ 0xb4, 0x0f, 0xe6, 0x94, 0x52, 0xf9, 0x8f, 0xc0, 0xef, 0x52, 0x85, 0xd9, ++ 0x41, 0xa2, 0x85, 0xfb, 0xe5, 0x98, 0xfe, 0x95, 0x16, 0xb4, 0x88, 0x7e, ++ 0x07, 0x2c, 0xb1, 0x71, 0xb6, 0x81, 0xf8, 0x76, 0xf2, 0x17, 0xce, 0x11, ++ 0xfb, 0xf0, 0x0b, 0x94, 0xbf, 0x9d, 0x6c, 0xdf, 0x0e, 0x95, 0xeb, 0x5f, ++ 0xc2, 0xfd, 0x5d, 0x13, 0x5c, 0xcb, 0x70, 0x9f, 0xd7, 0x47, 0xcc, 0x6e, ++ 0xbe, 0xf5, 0xc9, 0x7a, 0x6b, 0x1a, 0x6d, 0xa7, 0x39, 0xe3, 0x89, 0xef, ++ 0xc1, 0xf5, 0x1d, 0x67, 0x1a, 0xd2, 0xdb, 0x32, 0x94, 0xeb, 0x84, 0x61, ++ 0xe8, 0x2f, 0x67, 0xfb, 0x1f, 0x5b, 0x27, 0xb3, 0x73, 0xd3, 0x5a, 0x25, ++ 0xe3, 0xf9, 0x69, 0xef, 0xf0, 0xf6, 0x6e, 0xe2, 0xf6, 0xe9, 0x1a, 0xf4, ++ 0xfb, 0xad, 0x5c, 0xf9, 0xd3, 0xeb, 0xc7, 0x67, 0xb5, 0x0b, 0x94, 0x3f, ++ 0x27, 0x84, 0xfd, 0x4c, 0xca, 0xbb, 0x36, 0xbb, 0x34, 0xfb, 0x73, 0x68, ++ 0x7f, 0xe9, 0x34, 0x82, 0xf8, 0xb8, 0x75, 0x97, 0x8a, 0xe7, 0x6c, 0x09, ++ 0xbd, 0xb9, 0x0b, 0xc6, 0x96, 0x9d, 0x77, 0xa0, 0x43, 0x1e, 0xc5, 0x57, ++ 0xe9, 0xbd, 0x85, 0xde, 0x0f, 0x81, 0xd3, 0x0d, 0xf6, 0x2a, 0x9b, 0x10, ++ 0xf7, 0x4c, 0x2c, 0x17, 0x54, 0xf1, 0x3c, 0x04, 0xfd, 0x3f, 0x98, 0x3d, ++ 0xd2, 0xcf, 0xc0, 0x95, 0xda, 0xa1, 0x0f, 0xb8, 0x1d, 0x1a, 0x80, 0x2b, ++ 0xb5, 0x43, 0x67, 0x3f, 0x8b, 0x1d, 0x3a, 0xec, 0x64, 0x76, 0xa8, 0x8d, ++ 0xca, 0x50, 0x1f, 0xc8, 0xa1, 0x12, 0x62, 0xf9, 0xbd, 0xdc, 0x9f, 0xaa, ++ 0xe7, 0x7d, 0x2d, 0x2d, 0x38, 0x6c, 0x88, 0xdb, 0x09, 0x7f, 0xaa, 0x73, ++ 0x60, 0xb7, 0x16, 0x84, 0xbc, 0xc1, 0x02, 0xb6, 0x1f, 0x35, 0x51, 0xbb, ++ 0x61, 0xf0, 0x37, 0x20, 0x71, 0x25, 0xc1, 0xef, 0x56, 0x89, 0xab, 0xff, ++ 0xc9, 0x15, 0x76, 0x70, 0x02, 0x36, 0x53, 0x5c, 0x07, 0x71, 0x54, 0xf1, ++ 0x3b, 0x7a, 0x9d, 0xd0, 0xbe, 0x06, 0xed, 0x59, 0xf0, 0x77, 0x7e, 0x5e, ++ 0x23, 0x32, 0xae, 0xc3, 0x9b, 0xeb, 0x6b, 0x9d, 0xca, 0xe7, 0xfd, 0x14, ++ 0x2e, 0xcf, 0x93, 0x57, 0xa2, 0x7f, 0x65, 0xfe, 0x1d, 0xbd, 0x2a, 0x77, ++ 0x68, 0xfb, 0x4c, 0x5a, 0x8f, 0xef, 0xd8, 0xdd, 0x6c, 0x9f, 0xd5, 0xe5, ++ 0xbb, 0xc9, 0xb2, 0x22, 0xc0, 0x27, 0x01, 0x02, 0xe7, 0x6d, 0xaa, 0xf4, ++ 0x0a, 0xf9, 0x9b, 0x82, 0xee, 0x69, 0xa9, 0xd7, 0x93, 0xd8, 0xdf, 0x23, ++ 0x56, 0x89, 0xa4, 0xcc, 0x2b, 0x8c, 0xda, 0x91, 0xaa, 0x08, 0x09, 0x57, ++ 0x14, 0x23, 0xbe, 0xc1, 0xfd, 0x5c, 0x50, 0x8f, 0x87, 0xd7, 0x13, 0x28, ++ 0x82, 0xf9, 0x3e, 0x4d, 0x81, 0xf5, 0xbe, 0xd7, 0x12, 0xfc, 0x1e, 0xd3, ++ 0x93, 0x72, 0x60, 0x7a, 0x6a, 0x4c, 0xfd, 0x7e, 0x62, 0xc4, 0x2b, 0x74, ++ 0xfc, 0xaf, 0x4f, 0x9d, 0x8d, 0xe3, 0x7f, 0x03, 0x94, 0xa3, 0xe3, 0x5f, ++ 0x90, 0xca, 0xe6, 0xa1, 0x1b, 0xe1, 0xf9, 0x59, 0x27, 0xb3, 0x7f, 0x4f, ++ 0xca, 0x4d, 0x85, 0xf0, 0x3c, 0x90, 0xc1, 0x96, 0xa0, 0x69, 0xf9, 0x22, ++ 0x5e, 0x7e, 0x46, 0xea, 0xe7, 0x20, 0x27, 0x9b, 0x09, 0xfb, 0xfd, 0x5d, ++ 0x90, 0xdf, 0xd8, 0xf5, 0xea, 0xdd, 0xdc, 0x3e, 0x74, 0x4c, 0x0c, 0x94, ++ 0x43, 0x3b, 0xd5, 0x3f, 0x5f, 0xd4, 0x33, 0x85, 0x7e, 0xb2, 0xba, 0xbd, ++ 0x05, 0xcf, 0x39, 0xae, 0xb8, 0x2e, 0xf2, 0xd1, 0x29, 0xc8, 0xbf, 0xcd, ++ 0x52, 0x71, 0x3d, 0xb0, 0xf5, 0x51, 0xe3, 0x3c, 0xf2, 0x1c, 0xff, 0xfe, ++ 0x40, 0xaa, 0x88, 0xdf, 0x5d, 0x1b, 0x8e, 0xa0, 0xf6, 0xaf, 0x3e, 0x15, ++ 0xe9, 0x63, 0xf6, 0x2f, 0xe8, 0x66, 0xbf, 0x33, 0xda, 0x32, 0x39, 0xf7, ++ 0x31, 0x06, 0x1f, 0xa9, 0x83, 0x99, 0x19, 0x3d, 0xbf, 0xb6, 0xda, 0xb5, ++ 0x08, 0xcf, 0xe7, 0xfa, 0xc6, 0x0b, 0x39, 0x33, 0xe1, 0xbc, 0x2b, 0x95, ++ 0xdb, 0xe7, 0x79, 0xee, 0x6e, 0x75, 0x05, 0x8c, 0x6b, 0xa4, 0x3f, 0x6e, ++ 0xbe, 0xe9, 0x57, 0x46, 0xec, 0x20, 0xb5, 0xde, 0x86, 0x79, 0x2a, 0xfe, ++ 0x39, 0x2f, 0xf7, 0xa7, 0x32, 0x5c, 0x4b, 0xf5, 0xf8, 0xab, 0x7c, 0xfc, ++ 0xee, 0x02, 0x3a, 0x5f, 0x9c, 0xa8, 0x07, 0x52, 0x67, 0xff, 0xd7, 0xd9, ++ 0x47, 0x61, 0x87, 0x02, 0x0a, 0xb3, 0x37, 0xd4, 0x6f, 0x0a, 0x82, 0xdf, ++ 0xb4, 0xec, 0xd2, 0xda, 0x23, 0x30, 0x4d, 0x35, 0x93, 0x27, 0x6a, 0x60, ++ 0x7d, 0x83, 0xca, 0xe5, 0xdf, 0x01, 0x9d, 0x5f, 0xb6, 0xef, 0x3d, 0xc2, ++ 0x7e, 0x7a, 0x30, 0x38, 0x05, 0xda, 0xa5, 0xf2, 0xf8, 0x70, 0x2a, 0xb3, ++ 0x47, 0x7f, 0x9f, 0xca, 0xec, 0xd1, 0x77, 0x52, 0x99, 0x3d, 0xfa, 0x87, ++ 0xcf, 0x22, 0x67, 0xf7, 0xa6, 0x92, 0x31, 0xf1, 0xa7, 0xc0, 0xe1, 0x02, ++ 0x7f, 0x53, 0x3b, 0xbf, 0x2d, 0x95, 0xe1, 0x4f, 0x8f, 0xf3, 0xf3, 0x99, ++ 0x37, 0x76, 0xf2, 0xfa, 0x02, 0xce, 0x6b, 0x9c, 0x37, 0xbe, 0xf4, 0x39, ++ 0xb4, 0x4f, 0xf1, 0xc6, 0xcf, 0x50, 0x5f, 0x39, 0x1f, 0x12, 0xe1, 0xdb, ++ 0x5f, 0x70, 0xb9, 0xfa, 0x65, 0xaa, 0x88, 0xfb, 0xe9, 0xbf, 0x04, 0xfe, ++ 0x2f, 0xb4, 0xeb, 0xff, 0x9c, 0x1a, 0x8b, 0x37, 0x0a, 0x8f, 0xfd, 0x11, ++ 0xf2, 0xe4, 0xa2, 0x78, 0xa3, 0x5b, 0xe6, 0x78, 0x43, 0x89, 0x8d, 0x67, ++ 0xfb, 0x28, 0xfe, 0xe2, 0x79, 0x75, 0xf7, 0x58, 0xe6, 0x44, 0xf5, 0x44, ++ 0x8d, 0xc4, 0xc7, 0x21, 0xf3, 0x53, 0x47, 0x70, 0x48, 0x07, 0x8e, 0xf7, ++ 0x76, 0x86, 0x43, 0xe6, 0x8f, 0xd0, 0xed, 0x1d, 0x08, 0x81, 0x1e, 0x4e, ++ 0xe1, 0xfa, 0xfe, 0x3b, 0x66, 0x8f, 0x5b, 0xd4, 0xfe, 0x7b, 0xf0, 0x1c, ++ 0xdc, 0x74, 0x46, 0xb7, 0x94, 0xce, 0xc6, 0xf1, 0x28, 0xef, 0xc7, 0xbb, ++ 0x52, 0x4a, 0xdc, 0xf8, 0xe6, 0xb1, 0x68, 0x7b, 0xc7, 0xb0, 0xbd, 0xf5, ++ 0xac, 0x3d, 0xd9, 0x71, 0x2b, 0xfb, 0xdd, 0x0f, 0x61, 0x57, 0xac, 0x12, ++ 0xb6, 0x23, 0xe2, 0xc3, 0xf3, 0xd3, 0xd9, 0x77, 0xa2, 0x9d, 0x79, 0xfc, ++ 0x2a, 0x70, 0xaa, 0xb9, 0x9d, 0xdf, 0x46, 0xdb, 0xf9, 0x2d, 0xb6, 0xf3, ++ 0x90, 0xd8, 0x07, 0xac, 0xbf, 0x05, 0xf7, 0xbe, 0x28, 0x5f, 0xc3, 0xb1, ++ 0x7c, 0x05, 0xfb, 0x62, 0x99, 0x13, 0xc3, 0x4f, 0x8e, 0xeb, 0x12, 0xe1, ++ 0xb8, 0x18, 0xfe, 0xbd, 0x87, 0x76, 0xa0, 0x8d, 0xb5, 0x33, 0xc2, 0xbf, ++ 0x40, 0x7c, 0x3b, 0xbb, 0xcc, 0x25, 0x0b, 0x39, 0x19, 0x48, 0x1d, 0x43, ++ 0x3e, 0xce, 0x71, 0xf9, 0x38, 0x1f, 0x95, 0x8f, 0xf3, 0x5c, 0x3e, 0x3e, ++ 0x4c, 0x45, 0x7c, 0xc2, 0xc6, 0xe1, 0xae, 0x09, 0xc6, 0xfd, 0xe5, 0xc3, ++ 0x5c, 0xaf, 0x1e, 0xe1, 0x7c, 0x12, 0xe3, 0x65, 0xa6, 0xbf, 0x95, 0xbf, ++ 0x1f, 0xe1, 0x87, 0xe7, 0xd8, 0x73, 0xb1, 0xb8, 0xd6, 0x57, 0x90, 0xb6, ++ 0xac, 0x19, 0xe2, 0x96, 0x6d, 0xb2, 0xd7, 0xe2, 0x19, 0x2d, 0x6f, 0xf4, ++ 0x5f, 0x3e, 0xe0, 0xdd, 0xff, 0x05, 0xcc, 0x52, 0xb1, 0xef, 0x00, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0b, 0xe5, 0x7d, 0x0b, 0x60, 0x14, 0xd5, 0xb9, 0xf0, 0x99, 0x9d, ++ 0xd9, 0xd9, 0x4d, 0xb2, 0x9b, 0x4c, 0xde, 0x1b, 0x48, 0xc2, 0x26, 0x80, ++ 0x0d, 0x1a, 0x70, 0x09, 0x21, 0x06, 0x08, 0x3a, 0x79, 0xf2, 0x0a, 0x10, ++ 0x11, 0x10, 0x14, 0x61, 0x79, 0x85, 0xf0, 0x4a, 0x22, 0x62, 0xeb, 0xf3, ++ 0x67, 0x31, 0x21, 0x3c, 0xd5, 0xe8, 0x55, 0x6b, 0x5b, 0xb4, 0x0b, 0x82, ++ 0x62, 0x8b, 0x36, 0x60, 0xaa, 0x88, 0x01, 0x37, 0x20, 0x88, 0xef, 0xd0, ++ 0x2a, 0x68, 0xf5, 0xb6, 0x41, 0xac, 0xa0, 0x22, 0x59, 0x50, 0xeb, 0xda, ++ 0xda, 0xf2, 0x9f, 0xef, 0x3b, 0x67, 0xb2, 0x33, 0x9b, 0x5d, 0xc0, 0xda, ++ 0xf6, 0x7a, 0xff, 0x3f, 0xde, 0xde, 0xc3, 0x39, 0x73, 0x9e, 0xdf, 0xfb, ++ 0xfb, 0xce, 0x37, 0xb3, 0x45, 0x84, 0xfd, 0xc9, 0x27, 0xbd, 0x92, 0x3b, ++ 0x97, 0x90, 0xb1, 0x7e, 0xa2, 0x7a, 0x6d, 0x84, 0x9c, 0x83, 0xbf, 0xab, ++ 0x82, 0xa5, 0x55, 0x11, 0x08, 0x49, 0x26, 0x64, 0x99, 0x5c, 0x65, 0x55, ++ 0x86, 0xd2, 0x01, 0x65, 0xf5, 0xce, 0xaa, 0x81, 0x84, 0xb4, 0x97, 0x74, ++ 0x2e, 0xa9, 0x0a, 0xd3, 0xff, 0xb6, 0x04, 0xda, 0x9f, 0xf6, 0x9b, 0x9e, ++ 0xbe, 0xa9, 0x2c, 0xd9, 0x49, 0xfb, 0x7b, 0x68, 0x7b, 0x0a, 0x21, 0xc3, ++ 0x1d, 0xf4, 0xdf, 0x22, 0x21, 0xd7, 0xd5, 0xb4, 0x8b, 0x6e, 0xdd, 0xb8, ++ 0xe9, 0x9f, 0x7e, 0x3c, 0x4f, 0x0d, 0x33, 0xcf, 0x4f, 0x12, 0x4c, 0xb8, ++ 0x6e, 0xc3, 0x0c, 0xd7, 0x21, 0x67, 0x3e, 0x9d, 0xc6, 0x61, 0x72, 0x6d, ++ 0x25, 0x3d, 0xfb, 0x35, 0xc7, 0xcb, 0xb8, 0xde, 0xa8, 0x6c, 0xaf, 0x14, ++ 0x47, 0xfb, 0xbd, 0x79, 0x86, 0x28, 0x9b, 0x69, 0xbf, 0xeb, 0x26, 0x0b, ++ 0xaa, 0x97, 0x9e, 0xab, 0x82, 0x9f, 0xcb, 0x96, 0xc0, 0xce, 0x91, 0xa5, ++ 0x48, 0xd8, 0x5f, 0xe5, 0xfb, 0x1c, 0x25, 0x77, 0xce, 0x0b, 0x77, 0x8e, ++ 0x7c, 0xfe, 0x7c, 0xb4, 0x93, 0xa8, 0x2d, 0x74, 0x9e, 0xd1, 0x0a, 0x51, ++ 0x77, 0x86, 0xe9, 0x57, 0x08, 0xfb, 0x84, 0x79, 0xa2, 0xc3, 0xcf, 0x33, ++ 0x8d, 0xcf, 0x33, 0x86, 0xb0, 0x79, 0x42, 0x9f, 0xcf, 0xe0, 0xfb, 0x1a, ++ 0x55, 0x12, 0x7e, 0xfc, 0x08, 0x3e, 0xff, 0x34, 0xc7, 0x8e, 0xf2, 0x04, ++ 0x02, 0xfb, 0xd9, 0x64, 0x06, 0xf8, 0xe5, 0x99, 0xd5, 0x61, 0x0a, 0x1d, ++ 0xb7, 0x36, 0x02, 0x1e, 0x52, 0xa4, 0x92, 0x91, 0x80, 0xaf, 0x28, 0x0a, ++ 0x3a, 0x73, 0x1e, 0x21, 0x33, 0xe9, 0x58, 0x13, 0x9d, 0x60, 0x16, 0xe0, ++ 0x9c, 0x96, 0x0f, 0x8a, 0xee, 0x52, 0x78, 0xee, 0xa6, 0xe0, 0x70, 0xe4, ++ 0x01, 0x25, 0x78, 0x7a, 0x01, 0x5e, 0x4b, 0x6c, 0x6a, 0x19, 0xb4, 0x47, ++ 0x47, 0xab, 0xe5, 0x30, 0xff, 0x48, 0x49, 0xad, 0x80, 0xf2, 0x97, 0x66, ++ 0x75, 0x14, 0xe2, 0x9f, 0xf8, 0x08, 0x29, 0x20, 0x64, 0x02, 0xa7, 0x9f, ++ 0x09, 0x56, 0x9b, 0x4f, 0x8c, 0xa5, 0xff, 0x28, 0x34, 0x9f, 0xea, 0xb4, ++ 0xb2, 0xb6, 0x73, 0xd9, 0xf0, 0xff, 0x67, 0x28, 0x1f, 0x5f, 0x46, 0x88, ++ 0x40, 0x7c, 0xc2, 0xb9, 0xcb, 0xa0, 0xee, 0x15, 0x61, 0xfe, 0xe1, 0xce, ++ 0x43, 0xef, 0x0a, 0xb4, 0xff, 0x70, 0x6d, 0xdc, 0x49, 0x29, 0x64, 0x5c, ++ 0xba, 0xf2, 0x71, 0x0c, 0xaf, 0x8b, 0xb8, 0x2f, 0x84, 0xcf, 0x6e, 0xf3, ++ 0x4f, 0x9d, 0x36, 0x53, 0xcf, 0x73, 0x6a, 0xe5, 0x6e, 0x9b, 0xdb, 0x0a, ++ 0x70, 0x38, 0x1d, 0xed, 0x9e, 0x09, 0xfb, 0x6c, 0x70, 0x6c, 0xb6, 0x39, ++ 0x29, 0xbc, 0x5f, 0x75, 0xb7, 0x58, 0x5d, 0xb4, 0xfd, 0x64, 0x1c, 0x41, ++ 0x38, 0x76, 0xc5, 0xa8, 0x6e, 0x7c, 0xbe, 0x9b, 0xd4, 0xb4, 0xd0, 0x76, ++ 0x31, 0x46, 0xa8, 0x6f, 0xd1, 0xc1, 0x6f, 0xbe, 0xc2, 0xe0, 0x5d, 0xad, ++ 0x30, 0xbc, 0xbd, 0x25, 0xa9, 0xd5, 0x70, 0xfe, 0x09, 0x56, 0x75, 0x01, ++ 0x8c, 0x9b, 0x9c, 0x49, 0xf1, 0x44, 0xe7, 0x9d, 0x95, 0xd8, 0xb9, 0x5c, ++ 0x0f, 0xf7, 0x7a, 0x8e, 0xa7, 0x85, 0x9c, 0x6e, 0x67, 0xca, 0xac, 0x5f, ++ 0xe8, 0x3e, 0xab, 0xf9, 0xf3, 0x22, 0x49, 0xf0, 0xc4, 0xc0, 0x9e, 0x6c, ++ 0x87, 0x3e, 0x12, 0x81, 0x3f, 0x48, 0xf7, 0x5f, 0x3f, 0x13, 0xad, 0x8f, ++ 0x85, 0x7f, 0x51, 0xfe, 0x29, 0x3a, 0xa9, 0x4c, 0x9d, 0x96, 0x44, 0x71, ++ 0xb6, 0x46, 0x74, 0x99, 0x68, 0x5d, 0xce, 0x11, 0xc2, 0xf2, 0xe9, 0x9d, ++ 0x7c, 0xbf, 0x94, 0x4f, 0xef, 0x84, 0xfd, 0x12, 0x27, 0xe5, 0x53, 0x3b, ++ 0xa5, 0x0f, 0x39, 0x3c, 0x7d, 0x7c, 0xc5, 0xfb, 0x97, 0x47, 0xa0, 0xcb, ++ 0x3c, 0x7e, 0x9e, 0x32, 0x78, 0x1e, 0x66, 0xfc, 0xa5, 0x9c, 0xae, 0xcb, ++ 0x92, 0xda, 0x45, 0x42, 0xc7, 0x17, 0x71, 0x7e, 0x0b, 0xed, 0x37, 0x37, ++ 0x41, 0xc4, 0x7e, 0x0d, 0x2e, 0x32, 0x3a, 0xdc, 0x3c, 0x0f, 0x04, 0xe5, ++ 0xcb, 0x03, 0x48, 0x5f, 0x0a, 0xdb, 0x77, 0x9e, 0xb9, 0xea, 0x21, 0xa8, ++ 0xcf, 0x50, 0x0e, 0x97, 0xc7, 0xd3, 0xe6, 0xe2, 0xbb, 0x93, 0xa6, 0x92, ++ 0x24, 0x80, 0x87, 0x89, 0x58, 0xb2, 0x10, 0x4e, 0x56, 0x42, 0xe1, 0x24, ++ 0x71, 0x38, 0xd1, 0x6d, 0x12, 0xa8, 0x2f, 0xb3, 0xb2, 0xba, 0x14, 0xbd, ++ 0x84, 0xc4, 0xd1, 0x32, 0xd3, 0xe1, 0x5d, 0x3f, 0x08, 0xe0, 0xd7, 0x68, ++ 0x76, 0x39, 0x69, 0xfd, 0xc3, 0x93, 0x1f, 0x8a, 0x84, 0xd2, 0xd9, 0xd6, ++ 0x07, 0xce, 0x0a, 0x84, 0xca, 0x8b, 0xdd, 0x7e, 0x42, 0x12, 0xb3, 0x60, ++ 0x1e, 0x19, 0x66, 0x84, 0x3f, 0xd3, 0x39, 0xa1, 0xe7, 0x7c, 0xf4, 0x99, ++ 0x53, 0xd2, 0xd6, 0xa3, 0xa0, 0xb9, 0xf2, 0x24, 0x51, 0x2d, 0x94, 0x7e, ++ 0xaf, 0x2c, 0xf4, 0x4f, 0x22, 0xb1, 0x86, 0xf1, 0xe4, 0x1c, 0x9d, 0xcf, ++ 0xe6, 0xef, 0xf0, 0x08, 0x80, 0x3f, 0x2b, 0xf1, 0xc4, 0x5c, 0x8e, 0x64, ++ 0xfc, 0x76, 0xbf, 0x14, 0x9c, 0x15, 0xe7, 0x4b, 0xa5, 0xeb, 0xc2, 0x79, ++ 0xe4, 0x2f, 0x89, 0x17, 0xce, 0xa3, 0x3a, 0xdc, 0x95, 0x64, 0x10, 0x21, ++ 0xf1, 0xfe, 0xce, 0x5f, 0xd4, 0x61, 0xbb, 0xcd, 0x35, 0x0a, 0xcf, 0x45, ++ 0x6c, 0xc0, 0x6f, 0xc1, 0x73, 0x2e, 0x43, 0xfe, 0xd3, 0xf6, 0x25, 0xdb, ++ 0x3a, 0x1f, 0xbb, 0x97, 0xf6, 0x6f, 0xfb, 0x2a, 0xda, 0x75, 0x17, 0x9c, ++ 0xdb, 0x5f, 0xf1, 0x09, 0xdb, 0x0f, 0xf1, 0xd8, 0x81, 0xaf, 0xc5, 0x4a, ++ 0x17, 0xc8, 0x77, 0x42, 0x2c, 0xb8, 0x3f, 0x13, 0xfd, 0x0f, 0xf8, 0x6c, ++ 0x64, 0x80, 0xee, 0x37, 0x87, 0xef, 0x17, 0x16, 0xc9, 0xd7, 0xed, 0x9f, ++ 0xf4, 0x3c, 0xcf, 0x83, 0x62, 0xd5, 0x21, 0xc0, 0xc7, 0x2c, 0x2b, 0x51, ++ 0x63, 0xf3, 0x50, 0x3e, 0xbc, 0x02, 0xf5, 0xbe, 0x66, 0xda, 0x81, 0xc2, ++ 0xb1, 0x49, 0x11, 0xbc, 0x1e, 0xda, 0xaf, 0xe9, 0x81, 0x79, 0x6b, 0xb2, ++ 0x40, 0x5e, 0x6f, 0x90, 0x5c, 0xfd, 0x09, 0xd0, 0x39, 0xd9, 0x25, 0x50, ++ 0x3a, 0x1f, 0x41, 0xd7, 0xbd, 0x85, 0xca, 0x1d, 0xb9, 0x90, 0xd8, 0x14, ++ 0x5a, 0x97, 0x1d, 0xec, 0xfc, 0x4d, 0x77, 0x27, 0x6d, 0x8a, 0x11, 0xe0, ++ 0xb9, 0x44, 0x65, 0x21, 0x2d, 0xfd, 0xbe, 0x6f, 0x04, 0x0a, 0x87, 0x58, ++ 0x47, 0x75, 0xa5, 0x42, 0xcf, 0x21, 0xf3, 0xf1, 0x02, 0x05, 0x1c, 0x8c, ++ 0x17, 0x9c, 0x0a, 0x99, 0x91, 0x07, 0x74, 0xdb, 0x21, 0x12, 0x94, 0x0f, ++ 0x0e, 0x84, 0x87, 0xc6, 0x3f, 0xea, 0x8f, 0x88, 0xf0, 0xb1, 0x15, 0x55, ++ 0x0d, 0x01, 0xfa, 0x2a, 0x93, 0x88, 0xc7, 0x4a, 0xfb, 0x0b, 0x0e, 0x36, ++ 0xef, 0x95, 0xc4, 0x2f, 0x92, 0xbe, 0x80, 0x07, 0xaa, 0x08, 0x68, 0x59, ++ 0x42, 0x5c, 0x58, 0xde, 0x2b, 0xba, 0x3f, 0x06, 0xbe, 0xb1, 0xca, 0x14, ++ 0xaf, 0x74, 0xff, 0x56, 0x93, 0xd5, 0xbb, 0x52, 0x00, 0xfc, 0x55, 0xbd, ++ 0x3e, 0x1a, 0xe1, 0x5e, 0xa6, 0x7c, 0x9c, 0x13, 0x94, 0x67, 0x91, 0xe4, ++ 0x10, 0x40, 0xee, 0x63, 0x0d, 0xae, 0xe2, 0xf7, 0x97, 0x7b, 0xe5, 0xcb, ++ 0xc3, 0xf3, 0xd5, 0xdf, 0x82, 0x7c, 0xf3, 0x37, 0x26, 0x97, 0x99, 0x5e, ++ 0x9e, 0x9c, 0xcd, 0xe4, 0xce, 0x01, 0x7b, 0xe7, 0x0c, 0x3d, 0xdf, 0xaf, ++ 0x52, 0x98, 0xdc, 0x59, 0xc5, 0xc7, 0x11, 0x89, 0xf1, 0xd9, 0x32, 0x59, ++ 0x35, 0xc5, 0x9f, 0x87, 0xcf, 0xd7, 0xf2, 0x71, 0x97, 0x82, 0xf2, 0x01, ++ 0x7d, 0x4c, 0xc2, 0xf3, 0x71, 0x4b, 0x3c, 0x93, 0x07, 0x93, 0xef, 0xf2, ++ 0x36, 0xf5, 0xa2, 0xf0, 0x9b, 0x90, 0x20, 0xb8, 0x40, 0x0f, 0x97, 0x6f, ++ 0x9f, 0x2d, 0xf5, 0x76, 0x06, 0xfb, 0xa5, 0x72, 0x7d, 0xa7, 0xa4, 0xa8, ++ 0xf1, 0xf1, 0x30, 0xdf, 0x6e, 0xd7, 0x49, 0x6f, 0x12, 0x68, 0x1f, 0x19, ++ 0xf5, 0x7b, 0xd3, 0x7b, 0x64, 0x1a, 0xcc, 0x3f, 0x9b, 0xcb, 0xcf, 0x00, ++ 0x9f, 0xf7, 0x2f, 0xf1, 0x6c, 0x1f, 0xe9, 0xbc, 0x7e, 0x4c, 0xb0, 0x4f, ++ 0x0b, 0x07, 0x97, 0xcc, 0xf8, 0x6e, 0xb8, 0x64, 0xc2, 0xb9, 0x88, 0x9b, ++ 0xc1, 0x45, 0x8c, 0x19, 0xec, 0xf7, 0xd1, 0x75, 0x48, 0x6f, 0xbe, 0x8e, ++ 0x59, 0xc0, 0x75, 0xda, 0xb3, 0x99, 0x7c, 0xcc, 0xe6, 0xfb, 0xd2, 0xd6, ++ 0xe9, 0xc3, 0xe5, 0x1f, 0x95, 0xfb, 0x97, 0xc0, 0x3e, 0x27, 0x67, 0x7a, ++ 0xd3, 0xa1, 0xdf, 0xab, 0x66, 0xb6, 0xbf, 0xd0, 0x75, 0x07, 0x06, 0xd7, ++ 0x1d, 0x88, 0xeb, 0x2e, 0x61, 0xeb, 0x8e, 0x05, 0x39, 0x0f, 0xfc, 0xef, ++ 0x3c, 0xf4, 0x12, 0xc8, 0xf9, 0x22, 0x4e, 0xa7, 0x63, 0xfd, 0x6e, 0x02, ++ 0x76, 0x0f, 0xf0, 0xb0, 0xa9, 0x20, 0x28, 0xef, 0x65, 0xa7, 0x4f, 0xac, ++ 0xa7, 0xed, 0x45, 0x11, 0xe4, 0xfc, 0xf0, 0xe0, 0x3a, 0xc3, 0x71, 0x9d, ++ 0x7a, 0x86, 0xc7, 0x3d, 0x29, 0xea, 0x08, 0xd8, 0x27, 0xb5, 0x0b, 0x8a, ++ 0xa0, 0xbd, 0x3d, 0x5b, 0x41, 0x79, 0xf9, 0x66, 0x2f, 0x13, 0xd9, 0x4c, ++ 0xf9, 0x72, 0x76, 0x5a, 0xf6, 0x3d, 0x20, 0x36, 0xb5, 0x79, 0x76, 0xf2, ++ 0x73, 0xb6, 0x67, 0x35, 0x39, 0xe6, 0x50, 0x7c, 0xc9, 0x7e, 0xe2, 0xb2, ++ 0x20, 0x9d, 0xd7, 0xa0, 0xdc, 0x2b, 0xe2, 0xf2, 0xa5, 0x61, 0xb7, 0x9b, ++ 0xc0, 0x73, 0x4f, 0x2f, 0x2a, 0x33, 0x75, 0xe3, 0x65, 0xff, 0x1c, 0x2b, ++ 0xb1, 0xe1, 0x51, 0xfe, 0x71, 0x4e, 0xeb, 0x4f, 0xf9, 0xa8, 0xc9, 0x9f, ++ 0x1d, 0xe7, 0x0e, 0x83, 0x17, 0xad, 0x5c, 0xbf, 0x82, 0x89, 0x22, 0xe2, ++ 0x5c, 0x8a, 0xe3, 0x96, 0xf1, 0x71, 0xa1, 0xfd, 0x6c, 0x0f, 0xee, 0x8b, ++ 0x81, 0xf9, 0x37, 0x40, 0xff, 0x1f, 0x11, 0x32, 0x91, 0xeb, 0x1b, 0x7a, ++ 0x60, 0xdc, 0xdf, 0x58, 0xce, 0x3b, 0x0d, 0xfe, 0xcd, 0x31, 0x9d, 0xb4, ++ 0xdf, 0xee, 0x9c, 0xb9, 0x86, 0xfd, 0xe0, 0x73, 0xca, 0x47, 0x4d, 0x39, ++ 0x8f, 0xc5, 0x80, 0xbd, 0xd4, 0x96, 0x41, 0xf5, 0x00, 0xc8, 0xa9, 0x57, ++ 0x44, 0x94, 0x93, 0x4d, 0x76, 0x86, 0xc7, 0xa6, 0xb4, 0x6a, 0xa2, 0xb7, ++ 0x47, 0x4b, 0x1d, 0x3e, 0xf1, 0x63, 0x98, 0xe7, 0xdb, 0xb9, 0x64, 0x2a, ++ 0xc5, 0x5f, 0x91, 0xc3, 0x4d, 0x2e, 0xa1, 0xf0, 0x5d, 0xc7, 0xf7, 0x51, ++ 0xe4, 0xaa, 0xf6, 0x08, 0x49, 0xd8, 0xfe, 0x6c, 0x14, 0x9d, 0x67, 0x79, ++ 0xfc, 0x25, 0x08, 0x47, 0x39, 0xc7, 0x4d, 0x2a, 0x72, 0x01, 0x2e, 0x5e, ++ 0x52, 0x4d, 0xc7, 0xcb, 0x8a, 0x4f, 0x74, 0xd1, 0x7a, 0xa9, 0x9f, 0xf8, ++ 0xae, 0xca, 0x87, 0xfe, 0x54, 0xce, 0x0b, 0x6c, 0x3e, 0xa7, 0x5d, 0x3f, ++ 0x0f, 0x69, 0x81, 0x79, 0xe4, 0x5c, 0x46, 0x0f, 0xb2, 0xbf, 0x85, 0x00, ++ 0xfc, 0x76, 0x9f, 0x3c, 0x3f, 0x1c, 0x63, 0x72, 0x4c, 0x06, 0xf9, 0xad, ++ 0xf1, 0x25, 0xb5, 0xeb, 0x56, 0x00, 0x1d, 0x94, 0x29, 0x57, 0x97, 0xc5, ++ 0xd3, 0xf9, 0x17, 0x6d, 0xcf, 0xca, 0x13, 0xe9, 0xfc, 0x15, 0x8e, 0x76, ++ 0x79, 0x4e, 0x2e, 0xca, 0x6d, 0x0f, 0xd0, 0xc7, 0xce, 0x64, 0x75, 0x65, ++ 0xfc, 0xff, 0xa0, 0x3d, 0x37, 0x8d, 0x78, 0xcd, 0x80, 0xf7, 0x51, 0x99, ++ 0x4c, 0x0f, 0x4c, 0xa8, 0x15, 0xbc, 0x9b, 0x29, 0x7c, 0x9a, 0x42, 0xec, ++ 0x84, 0x9f, 0xc6, 0x33, 0x3e, 0x2c, 0x0c, 0xca, 0xbb, 0x9f, 0xe1, 0xbe, ++ 0x0b, 0x35, 0x3b, 0x41, 0xfd, 0x39, 0xd4, 0xcf, 0x63, 0x07, 0x3f, 0x0a, ++ 0xf0, 0x38, 0x8f, 0x1d, 0xbc, 0x05, 0x9e, 0x87, 0xb1, 0x83, 0xb7, 0x42, ++ 0x3b, 0x85, 0xd7, 0xe3, 0xf1, 0xcc, 0x0e, 0x7e, 0x02, 0xd6, 0xa1, 0x76, ++ 0xf0, 0xb6, 0xef, 0x03, 0xb7, 0x09, 0x0a, 0x93, 0xa3, 0xd4, 0x0e, 0xdd, ++ 0x01, 0xf3, 0xc6, 0x83, 0x71, 0x03, 0xf6, 0xd1, 0x1f, 0x98, 0x3d, 0x1a, ++ 0xba, 0xff, 0xdb, 0xf8, 0xf9, 0xd7, 0xd0, 0xb3, 0x76, 0x00, 0x5d, 0x4a, ++ 0x5e, 0x89, 0xd1, 0x39, 0xe3, 0xd3, 0xe1, 0x9c, 0x4f, 0xc7, 0x9e, 0xa4, ++ 0xfc, 0x92, 0xdb, 0x93, 0xfe, 0xdb, 0x28, 0xfd, 0x7b, 0x28, 0xfd, 0x9d, ++ 0xa5, 0x76, 0x93, 0x98, 0x15, 0x99, 0x9e, 0x7c, 0x17, 0xc9, 0x97, 0xc5, ++ 0x0f, 0x32, 0xbe, 0x6f, 0x70, 0xec, 0x43, 0xbe, 0x7b, 0x91, 0xf3, 0x45, ++ 0x1b, 0x5f, 0xbf, 0x2d, 0x47, 0xac, 0x04, 0x7c, 0xbe, 0x4a, 0x44, 0x45, ++ 0x14, 0x7a, 0xce, 0xd7, 0x94, 0xe1, 0x76, 0x80, 0x5c, 0x0f, 0xe5, 0x3f, ++ 0xf5, 0x5b, 0x23, 0x3d, 0x97, 0x3a, 0xbc, 0x1b, 0xf2, 0x80, 0x6f, 0x0e, ++ 0xcd, 0x75, 0xc1, 0xb6, 0x42, 0xf9, 0x51, 0xa6, 0x65, 0xf5, 0xc0, 0xe0, ++ 0xbe, 0x8f, 0x03, 0x1f, 0x0e, 0xd5, 0xc9, 0x27, 0x22, 0x48, 0xc8, 0x8f, ++ 0x17, 0xe0, 0x43, 0x98, 0xc7, 0x3d, 0x10, 0xec, 0x8c, 0x78, 0x49, 0xcd, ++ 0x05, 0x3e, 0x62, 0xeb, 0x7a, 0x0e, 0x89, 0xa8, 0x27, 0x22, 0xf1, 0x11, ++ 0xa5, 0x9b, 0x53, 0x80, 0xbf, 0x6e, 0xb8, 0x00, 0xb0, 0x75, 0xfb, 0xa7, ++ 0x74, 0xf3, 0x39, 0x3c, 0xa7, 0x7c, 0x76, 0xfa, 0xfb, 0xd0, 0xcb, 0x1a, ++ 0x4e, 0x1f, 0xd4, 0x0f, 0xf9, 0x1a, 0xe6, 0xeb, 0x1f, 0xcf, 0xe8, 0x67, ++ 0x76, 0x04, 0xff, 0xe2, 0x1f, 0xf1, 0xdd, 0x7e, 0xc0, 0x3f, 0xa0, 0x3f, ++ 0x99, 0xc1, 0xf4, 0x50, 0x66, 0xbc, 0x93, 0x8d, 0x23, 0x49, 0x32, 0xe8, ++ 0x17, 0x55, 0xcc, 0xc8, 0x04, 0xf9, 0x42, 0xe7, 0x35, 0x25, 0xd0, 0xf6, ++ 0xb7, 0xb8, 0x7f, 0x14, 0x69, 0xde, 0xa8, 0x84, 0x6e, 0xfe, 0x8b, 0x4a, ++ 0x80, 0xf3, 0xdc, 0xc2, 0xe6, 0x3d, 0x04, 0x46, 0xf6, 0xd0, 0x9e, 0xf3, ++ 0x8e, 0x4a, 0xa0, 0xf6, 0x47, 0x98, 0x79, 0xd2, 0xb8, 0x1c, 0xbf, 0x2e, ++ 0x82, 0xbf, 0x90, 0xc5, 0xfd, 0x12, 0x92, 0xdb, 0x6d, 0x9f, 0xa4, 0xc0, ++ 0x7a, 0x59, 0x9c, 0x6f, 0x76, 0x27, 0xab, 0x8e, 0x04, 0x1d, 0xdf, 0x14, ++ 0x71, 0xbb, 0xe5, 0x65, 0xc1, 0xa8, 0x97, 0x73, 0xba, 0xfd, 0x7d, 0xc6, ++ 0x3f, 0x49, 0x09, 0xac, 0x3f, 0x99, 0xd7, 0x3d, 0x6f, 0x56, 0x82, 0x0e, ++ 0x9e, 0x9a, 0x1d, 0x30, 0x9b, 0xcb, 0x07, 0x6d, 0x9e, 0xfe, 0x9c, 0xff, ++ 0x9c, 0x09, 0x0a, 0x1b, 0x5f, 0xc3, 0xc6, 0xc7, 0x43, 0x9d, 0x8e, 0xab, ++ 0xe0, 0xfe, 0x13, 0x85, 0x4b, 0x2e, 0xcc, 0x47, 0xac, 0xec, 0xf9, 0x85, ++ 0xfc, 0xa2, 0x7b, 0x14, 0x19, 0xc7, 0xcf, 0xe5, 0xfb, 0x12, 0xe2, 0x15, ++ 0x4d, 0xbf, 0x21, 0x5c, 0x47, 0x47, 0xf2, 0xbb, 0x82, 0x72, 0x70, 0x38, ++ 0xe2, 0xc1, 0xc5, 0xfa, 0x5f, 0xaa, 0x10, 0x0d, 0xef, 0x23, 0x71, 0x1f, ++ 0x95, 0x6c, 0x1f, 0x85, 0x0a, 0xc3, 0x7b, 0x68, 0xfc, 0x20, 0x12, 0x7e, ++ 0x34, 0xf8, 0x27, 0x6b, 0xe7, 0xcd, 0x61, 0xf3, 0x13, 0x4f, 0x37, 0xdc, ++ 0x46, 0xeb, 0xe9, 0x25, 0x12, 0xdc, 0xde, 0x8a, 0x63, 0xf6, 0xc5, 0x28, ++ 0x0e, 0x27, 0xd2, 0xc8, 0xe7, 0x09, 0x91, 0x07, 0x77, 0x4b, 0x1d, 0x56, ++ 0x25, 0xcc, 0x39, 0xaf, 0x8d, 0x77, 0x1a, 0xf8, 0xd9, 0xee, 0x32, 0xca, ++ 0x87, 0x48, 0xf1, 0x94, 0xbc, 0x20, 0x7c, 0x66, 0x22, 0x1c, 0xf2, 0xd9, ++ 0xbe, 0x23, 0xc5, 0x57, 0x0a, 0xf8, 0x79, 0x47, 0x70, 0xfb, 0x96, 0x8e, ++ 0x9b, 0x8f, 0x70, 0xb5, 0xb1, 0xfd, 0xde, 0xa3, 0x74, 0xb7, 0xd7, 0xe0, ++ 0x7c, 0xe9, 0x6c, 0xbe, 0xfa, 0x20, 0xbc, 0x17, 0x63, 0xbb, 0x83, 0xf5, ++ 0x8f, 0xe4, 0xf7, 0xd7, 0xf3, 0x7d, 0x55, 0x27, 0x74, 0x8f, 0x5b, 0x86, ++ 0xeb, 0x24, 0xb1, 0x71, 0xa1, 0xf1, 0x04, 0xad, 0x5c, 0xc2, 0xf7, 0xb7, ++ 0x30, 0x38, 0xee, 0x56, 0x5c, 0xaf, 0x1f, 0x1b, 0x97, 0x1c, 0xdc, 0xc7, ++ 0x1d, 0xd8, 0x3e, 0x9a, 0xb5, 0x7f, 0xdf, 0xf8, 0x5b, 0x32, 0xdf, 0xef, ++ 0x4f, 0x82, 0xeb, 0xae, 0xc1, 0xfd, 0xaa, 0xec, 0xfc, 0x81, 0xb8, 0x6e, ++ 0xb8, 0xac, 0xc7, 0xf6, 0x22, 0xb6, 0x6e, 0x24, 0xf9, 0x11, 0x88, 0x63, ++ 0xe7, 0x68, 0xe2, 0x70, 0xbe, 0x12, 0xfc, 0x62, 0x3a, 0x47, 0x7c, 0x80, ++ 0xe4, 0x48, 0x49, 0xe0, 0x35, 0x45, 0xbb, 0x46, 0xd1, 0x2e, 0xa9, 0x01, ++ 0xd5, 0x07, 0xfa, 0xa3, 0xe4, 0x4b, 0xd9, 0x09, 0x72, 0xba, 0x5c, 0xb4, ++ 0x79, 0x04, 0x2a, 0x8f, 0x25, 0xa7, 0x15, 0xfd, 0xe4, 0x28, 0x89, 0xa8, ++ 0xe0, 0xd7, 0xb6, 0x7f, 0xf5, 0x63, 0x47, 0x67, 0x2e, 0xd6, 0x7d, 0xa0, ++ 0xd7, 0x57, 0x47, 0x15, 0x5b, 0xc1, 0xef, 0x5c, 0x93, 0x25, 0xb9, 0x40, ++ 0x1f, 0x16, 0xdf, 0x27, 0x31, 0xff, 0xfa, 0x94, 0x09, 0xe5, 0x7d, 0x85, ++ 0xb8, 0x04, 0xe7, 0xd9, 0xa7, 0x68, 0x76, 0xee, 0x8d, 0x06, 0x3f, 0xda, ++ 0xa9, 0x38, 0x2b, 0xa3, 0x60, 0x1f, 0x56, 0x91, 0x38, 0x99, 0xff, 0x5f, ++ 0x39, 0x9e, 0x3e, 0xbf, 0x8a, 0xcb, 0xeb, 0x7d, 0xd6, 0x44, 0x13, 0xcc, ++ 0x37, 0x22, 0x83, 0xc5, 0x0b, 0xae, 0x72, 0x56, 0xa3, 0xbf, 0x4e, 0xbe, ++ 0x65, 0x7e, 0xb4, 0x4a, 0xff, 0x63, 0xf2, 0x5b, 0x45, 0xbd, 0x2c, 0xf3, ++ 0x71, 0x52, 0x7a, 0x3d, 0x11, 0xb0, 0x34, 0xfa, 0xdb, 0x32, 0xd9, 0x70, ++ 0x46, 0x1c, 0x84, 0x7a, 0x01, 0xed, 0xa8, 0x11, 0x7e, 0xa3, 0xff, 0x2d, ++ 0x3b, 0x2b, 0x4e, 0xc0, 0xfc, 0x32, 0xd1, 0x8d, 0xa3, 0xeb, 0x3e, 0x9f, ++ 0x60, 0x4f, 0x42, 0x7b, 0xaa, 0x1f, 0xe9, 0x7f, 0x8e, 0xf2, 0x8f, 0x25, ++ 0x47, 0x20, 0x16, 0xea, 0x5f, 0x94, 0x4b, 0xee, 0x3d, 0x80, 0x87, 0x31, ++ 0xce, 0x6a, 0xa5, 0x84, 0x9e, 0xc7, 0x92, 0xee, 0xb6, 0x82, 0x1c, 0xee, ++ 0x67, 0xf6, 0xf5, 0x86, 0x78, 0x42, 0x63, 0xba, 0xec, 0xf2, 0x00, 0x1b, ++ 0x3e, 0x50, 0x66, 0xcd, 0x02, 0x7f, 0xab, 0x99, 0xfa, 0xe7, 0x08, 0x07, ++ 0x35, 0xe1, 0xea, 0x81, 0x41, 0x3c, 0x59, 0x8a, 0x54, 0x02, 0x74, 0x48, ++ 0x71, 0x82, 0xfc, 0xd5, 0x5d, 0xda, 0x58, 0x99, 0x90, 0xc8, 0xf0, 0xf8, ++ 0x49, 0x82, 0x05, 0xcb, 0x12, 0x5e, 0xd7, 0x9e, 0x87, 0xe2, 0x7d, 0x48, ++ 0x62, 0x34, 0xe3, 0x7f, 0x62, 0xf5, 0x7c, 0x94, 0x03, 0x72, 0x42, 0x20, ++ 0x71, 0x94, 0x0e, 0x97, 0x92, 0xce, 0x4c, 0xa0, 0xc7, 0xe4, 0x34, 0x26, ++ 0x9f, 0x6a, 0x4d, 0x9d, 0x29, 0x50, 0xef, 0x22, 0xfe, 0x94, 0x24, 0x5a, ++ 0x36, 0x34, 0x4b, 0xa3, 0xc3, 0xf9, 0x3f, 0x1b, 0x79, 0xfc, 0x6c, 0xad, ++ 0x29, 0xbc, 0xbd, 0xf4, 0x4b, 0xf3, 0x98, 0x0f, 0x00, 0x0e, 0x12, 0xc4, ++ 0x0d, 0x2e, 0xc7, 0xb8, 0x80, 0xdb, 0xd2, 0x37, 0x18, 0x3f, 0xd0, 0xec, ++ 0x55, 0x2d, 0x8e, 0x10, 0xc9, 0x6e, 0xbd, 0x57, 0xac, 0xfa, 0x18, 0xe6, ++ 0x11, 0x14, 0xdf, 0x37, 0xd0, 0xbf, 0xa7, 0xfd, 0xeb, 0xc1, 0x7d, 0x48, ++ 0xe9, 0x4c, 0x4e, 0x6b, 0xa5, 0xb6, 0x8f, 0x99, 0x89, 0x8c, 0x7f, 0x1c, ++ 0x89, 0x56, 0x84, 0xcf, 0xde, 0x3b, 0x4a, 0xc9, 0x1c, 0x27, 0xe2, 0xe9, ++ 0x2c, 0xf0, 0x29, 0xc5, 0xd3, 0xa1, 0x2b, 0x00, 0x2a, 0x59, 0xf3, 0x14, ++ 0xc0, 0xd3, 0x2b, 0x59, 0x0f, 0xf5, 0x83, 0xb8, 0x94, 0x35, 0xeb, 0x81, ++ 0x24, 0xe0, 0xcf, 0xd1, 0x84, 0xd9, 0xa7, 0xe5, 0x74, 0x8c, 0x83, 0x96, ++ 0x0f, 0xd9, 0xdc, 0xdf, 0x24, 0xe8, 0xe4, 0xe1, 0x98, 0x7e, 0xb3, 0xd1, ++ 0x6e, 0x2a, 0xca, 0xac, 0x47, 0x7b, 0x6a, 0x75, 0x04, 0xbf, 0xf4, 0xc7, ++ 0x7c, 0x1f, 0x12, 0xa7, 0x93, 0x12, 0x9b, 0xdb, 0x94, 0x38, 0x14, 0xe2, ++ 0x5f, 0xcb, 0xac, 0x30, 0x5e, 0x52, 0xaa, 0xa2, 0xa1, 0xdc, 0x1b, 0x98, ++ 0x84, 0x25, 0xb5, 0x7b, 0xa5, 0x44, 0xda, 0x7f, 0x75, 0x3a, 0xab, 0x5f, ++ 0x08, 0x0f, 0xef, 0x72, 0xf9, 0x10, 0x69, 0xff, 0xa3, 0x40, 0x2f, 0x40, ++ 0xbc, 0x26, 0xbd, 0xfb, 0x1c, 0x09, 0x30, 0x3f, 0x7d, 0xee, 0x91, 0xf3, ++ 0x82, 0xe7, 0xd0, 0xed, 0x2f, 0x25, 0xdc, 0xfe, 0xcc, 0x89, 0x4c, 0x1f, ++ 0x69, 0xfb, 0x92, 0xfa, 0x71, 0xba, 0xcc, 0x31, 0xd2, 0xdd, 0x78, 0x4e, ++ 0x8f, 0x39, 0x89, 0x9a, 0xbf, 0x78, 0xd1, 0x74, 0x77, 0xe4, 0x62, 0xe8, ++ 0x2e, 0xf4, 0xbc, 0x63, 0xb2, 0x96, 0x8f, 0x1e, 0x40, 0x82, 0xfb, 0xd7, ++ 0xce, 0xab, 0x9d, 0x9f, 0x9e, 0xd7, 0x05, 0xe7, 0x2d, 0x97, 0xd8, 0xf9, ++ 0xb7, 0x2a, 0x6e, 0x15, 0xa6, 0xa0, 0x70, 0x1e, 0x0c, 0xed, 0x3d, 0xce, ++ 0x65, 0x0d, 0xaf, 0xf7, 0x33, 0x12, 0x4d, 0xdf, 0xf5, 0x3c, 0x0f, 0x25, ++ 0xf4, 0xbd, 0xf8, 0xf3, 0x7c, 0x87, 0x79, 0xa7, 0x26, 0x7e, 0x07, 0x38, ++ 0x1d, 0x18, 0xa9, 0x3a, 0x40, 0x9e, 0x34, 0x26, 0x53, 0xfa, 0xa4, 0x78, ++ 0x6a, 0x14, 0x58, 0xa9, 0xf5, 0x8f, 0xe6, 0x78, 0x6a, 0xe1, 0x74, 0xfa, ++ 0x5d, 0xe4, 0x44, 0xff, 0xef, 0x70, 0xbe, 0x62, 0x87, 0xf0, 0x12, 0xe8, ++ 0xc3, 0xab, 0xdc, 0xc7, 0x4a, 0x61, 0x99, 0xb2, 0xa2, 0xc1, 0xa0, 0x76, ++ 0x80, 0x1f, 0xe7, 0x01, 0xbd, 0x95, 0xe4, 0xde, 0x27, 0xcd, 0xa1, 0xf5, ++ 0xa6, 0x3b, 0xe6, 0xa2, 0xfc, 0x3c, 0x30, 0xb2, 0x1e, 0xf7, 0xbd, 0xda, ++ 0x6e, 0xdc, 0xaf, 0x56, 0x26, 0x70, 0x7c, 0x14, 0x65, 0xaa, 0xc8, 0x7f, ++ 0x8d, 0x9c, 0xff, 0xca, 0x09, 0xf3, 0x23, 0xb5, 0x7e, 0x6d, 0xfc, 0x5c, ++ 0xa1, 0xfc, 0x11, 0x3a, 0x5f, 0x28, 0x5f, 0x3f, 0x64, 0x53, 0x6f, 0x06, ++ 0xfa, 0x48, 0x48, 0x64, 0xfa, 0x32, 0xe8, 0xff, 0x75, 0x88, 0x7a, 0xff, ++ 0xaf, 0x84, 0xeb, 0xaf, 0x91, 0xd6, 0x9b, 0x0c, 0xf1, 0x8f, 0x91, 0xdc, ++ 0xff, 0x5b, 0xfd, 0x65, 0xb6, 0xcd, 0x43, 0x0f, 0x7a, 0x96, 0xea, 0xb5, ++ 0x7f, 0x89, 0xff, 0xf7, 0x0d, 0x7d, 0x02, 0x7e, 0x52, 0x7a, 0x89, 0x55, ++ 0xef, 0xff, 0x35, 0x5a, 0x4b, 0xb1, 0x7d, 0x75, 0x86, 0x3a, 0xfa, 0xf2, ++ 0x24, 0xd0, 0xc7, 0xa2, 0xeb, 0x2e, 0x82, 0xf0, 0x43, 0x7f, 0xd0, 0x23, ++ 0x88, 0xca, 0xd6, 0x30, 0xfe, 0xe0, 0xea, 0x0c, 0xd9, 0x77, 0x15, 0x7d, ++ 0x6e, 0x51, 0xc8, 0xe3, 0xb0, 0xbf, 0x52, 0xaa, 0x2f, 0x21, 0xfe, 0x62, ++ 0x51, 0x54, 0x72, 0xc9, 0xc0, 0x9e, 0x7e, 0xe1, 0x3e, 0x6b, 0x29, 0x81, ++ 0xb8, 0xc9, 0x59, 0x85, 0x3c, 0x0b, 0xfe, 0xd8, 0x85, 0xce, 0xf3, 0x78, ++ 0xa2, 0xd1, 0x2f, 0x94, 0xc0, 0x2f, 0xe4, 0xf3, 0xa3, 0x5f, 0xa8, 0xd4, ++ 0x93, 0x4e, 0x8c, 0xf7, 0x94, 0x12, 0xb0, 0x6b, 0xa0, 0xdd, 0x39, 0x10, ++ 0xe4, 0x8e, 0x4a, 0xdc, 0x76, 0xd0, 0x23, 0xd4, 0x2f, 0xd4, 0xc9, 0xa7, ++ 0xb3, 0xd6, 0x9b, 0x90, 0xdf, 0x43, 0xd7, 0xa3, 0x72, 0xeb, 0x69, 0xa0, ++ 0xa3, 0x46, 0x85, 0xf1, 0x71, 0xa8, 0x3f, 0x28, 0x72, 0x3e, 0xd7, 0xe4, ++ 0x6c, 0x28, 0x3d, 0x94, 0x3b, 0x18, 0xdd, 0x44, 0xd1, 0xad, 0x9b, 0x99, ++ 0xdc, 0x78, 0x2e, 0x31, 0xb9, 0x27, 0x5d, 0x7c, 0x77, 0xf9, 0x34, 0xaf, ++ 0x0c, 0x5c, 0x80, 0x6b, 0xc9, 0xca, 0x03, 0xe0, 0xaa, 0x4d, 0x09, 0xf8, ++ 0x25, 0x70, 0x79, 0x96, 0x27, 0x3a, 0xb1, 0x5f, 0x95, 0x6d, 0x47, 0x23, ++ 0x3c, 0xd7, 0xe6, 0x0f, 0xc5, 0x0f, 0x3d, 0xb9, 0x0a, 0xf1, 0x74, 0xb0, ++ 0x67, 0x58, 0xfc, 0x86, 0xda, 0x6b, 0xd4, 0x8e, 0x32, 0x53, 0x7b, 0x6d, ++ 0x9d, 0x10, 0x5c, 0x7f, 0x35, 0x87, 0x77, 0x24, 0x7c, 0xac, 0x06, 0x7d, ++ 0x1d, 0x86, 0x8f, 0xde, 0xee, 0x96, 0x6b, 0xa1, 0x71, 0xa2, 0x9b, 0x8c, ++ 0xf7, 0x2f, 0x8a, 0x87, 0x24, 0x15, 0xb0, 0xb8, 0x3e, 0x09, 0x03, 0x7f, ++ 0x91, 0xdb, 0x49, 0x6b, 0x28, 0xbf, 0xc0, 0xfd, 0xcd, 0x6a, 0xb3, 0xcb, ++ 0xa1, 0x00, 0x9d, 0x66, 0x14, 0xbd, 0xeb, 0x06, 0x7f, 0x3e, 0x43, 0xc6, ++ 0xfb, 0x08, 0x22, 0xd5, 0x3b, 0xae, 0xb6, 0xf7, 0x3c, 0xe7, 0x1a, 0x88, ++ 0x9f, 0x85, 0xd9, 0xdf, 0x17, 0x89, 0x09, 0x08, 0x57, 0x6b, 0xba, 0xc9, ++ 0x60, 0x9f, 0x11, 0x72, 0xa7, 0xc1, 0x7e, 0x8c, 0x74, 0x6e, 0xc2, 0xf7, ++ 0x65, 0xe6, 0xe7, 0x12, 0x00, 0x9e, 0x39, 0x7a, 0x78, 0x86, 0x9c, 0xbb, ++ 0x4c, 0xc1, 0x73, 0x83, 0x59, 0x0f, 0xf3, 0xc6, 0x9a, 0x5c, 0xc4, 0x47, ++ 0xf9, 0x22, 0x36, 0x93, 0xb8, 0x50, 0x60, 0xc5, 0x9a, 0x30, 0x0e, 0xab, ++ 0xf1, 0xb9, 0xc2, 0xf9, 0x5c, 0x93, 0x07, 0x36, 0x85, 0x8d, 0xab, 0x4c, ++ 0xea, 0xcb, 0xee, 0xf7, 0x44, 0x9b, 0x5f, 0xa4, 0xe7, 0x5f, 0x9f, 0x44, ++ 0xed, 0x69, 0x3a, 0x4f, 0x83, 0xba, 0x0f, 0xf5, 0xaa, 0x36, 0x3e, 0x8e, ++ 0x9f, 0xdf, 0x36, 0x92, 0xc5, 0x1b, 0x6d, 0x76, 0x9f, 0xa2, 0x84, 0x81, ++ 0xc3, 0xbd, 0x9c, 0xcf, 0x23, 0x9d, 0xb3, 0x59, 0x95, 0xe2, 0xcb, 0xe8, ++ 0xfe, 0xee, 0x55, 0x98, 0xfd, 0x2d, 0x8d, 0x34, 0x55, 0x79, 0x31, 0x1e, ++ 0xc5, 0xe2, 0xb5, 0x0a, 0x87, 0x9d, 0x58, 0x9c, 0x6f, 0x05, 0xbb, 0x7d, ++ 0x54, 0x52, 0x3c, 0x8b, 0x7b, 0xa9, 0x3b, 0x15, 0x7d, 0xdc, 0x4a, 0xe4, ++ 0xfb, 0x89, 0xb1, 0xd3, 0xfd, 0x9c, 0x47, 0x4e, 0xae, 0x0d, 0xd9, 0x4f, ++ 0x54, 0x4e, 0x67, 0x19, 0xec, 0x5f, 0xca, 0x52, 0x95, 0x78, 0xdd, 0xfe, ++ 0x4b, 0x92, 0x34, 0xbd, 0xd2, 0x81, 0xfc, 0x1d, 0x69, 0xbe, 0xbb, 0xb9, ++ 0x9c, 0x8f, 0xea, 0xe7, 0xc2, 0xf8, 0xad, 0xd5, 0xe6, 0xf2, 0xc1, 0xbd, ++ 0x56, 0x94, 0x5a, 0x5d, 0x00, 0x62, 0x31, 0x3a, 0xc7, 0x45, 0xe6, 0xea, ++ 0xda, 0xa3, 0xd5, 0x82, 0x21, 0x16, 0x1d, 0x1d, 0x36, 0x67, 0xc8, 0x61, ++ 0xef, 0x23, 0x6e, 0xe7, 0xeb, 0xdb, 0x25, 0xb5, 0x0a, 0xc6, 0xd9, 0x15, ++ 0x89, 0xc0, 0x3d, 0x99, 0x9d, 0xdb, 0xcb, 0x91, 0xe6, 0x8d, 0xb4, 0x8f, ++ 0x0b, 0xad, 0x37, 0x2d, 0x89, 0xe9, 0xd3, 0x1e, 0xeb, 0x39, 0xc3, 0xdb, ++ 0x15, 0x7d, 0x92, 0x18, 0xff, 0x49, 0x23, 0x77, 0x56, 0x81, 0x9c, 0x26, ++ 0x03, 0x25, 0xd2, 0x3f, 0x8c, 0x9e, 0x48, 0x48, 0x62, 0xf2, 0x25, 0x56, ++ 0xee, 0x74, 0x82, 0xbf, 0x4e, 0xe9, 0xd1, 0x1d, 0x6e, 0x3e, 0x92, 0x24, ++ 0x73, 0x7e, 0xfe, 0x37, 0xf1, 0x87, 0x66, 0x77, 0x17, 0xb7, 0x1e, 0xca, ++ 0xa6, 0xfb, 0x6d, 0xb0, 0x49, 0x2e, 0x01, 0xe4, 0x57, 0xe1, 0xc9, 0x0e, ++ 0xa7, 0x0e, 0x3e, 0x54, 0xaf, 0xcf, 0x4a, 0xd2, 0xc9, 0x7d, 0xd1, 0xe6, ++ 0x46, 0xf9, 0x26, 0x3a, 0xd9, 0xbd, 0xfb, 0x68, 0x0b, 0xf3, 0xb7, 0x0f, ++ 0x8c, 0x34, 0xde, 0x93, 0xcd, 0xe7, 0xf8, 0xfa, 0x80, 0xc3, 0x31, 0x92, ++ 0x5c, 0x28, 0xe2, 0xf0, 0xf8, 0x77, 0x9d, 0xf3, 0xbb, 0xe2, 0xaf, 0x24, ++ 0x89, 0xc9, 0x7d, 0x0d, 0x2e, 0xcd, 0x00, 0x17, 0x02, 0xfc, 0x75, 0x7f, ++ 0x63, 0x43, 0x18, 0x79, 0x49, 0xe1, 0xd3, 0x90, 0x94, 0xfc, 0xdd, 0xe1, ++ 0xb3, 0x96, 0xc3, 0xe5, 0xe9, 0x0b, 0xc0, 0x67, 0xd0, 0x7f, 0x18, 0x3e, ++ 0x17, 0xe2, 0xeb, 0x20, 0x9f, 0x79, 0xc9, 0xf1, 0x30, 0x70, 0x6c, 0xb0, ++ 0xcb, 0x69, 0x73, 0x0d, 0xfc, 0xdf, 0x8c, 0x76, 0x48, 0xb8, 0x7e, 0xd5, ++ 0xba, 0xf3, 0x46, 0xe2, 0x43, 0x8d, 0x3e, 0x20, 0x77, 0x03, 0xe1, 0xd0, ++ 0xac, 0x1a, 0xe2, 0x02, 0x72, 0x92, 0xa7, 0x83, 0xf9, 0x95, 0x37, 0x1b, ++ 0xf5, 0x9c, 0xb8, 0xc4, 0xc5, 0xe5, 0x33, 0xf9, 0x96, 0xc2, 0x2d, 0x9e, ++ 0xf7, 0x8f, 0xb7, 0x11, 0x5f, 0x4c, 0x6c, 0x70, 0x7e, 0xb9, 0xcc, 0x18, ++ 0x4f, 0x68, 0x4b, 0xe2, 0x71, 0x81, 0x28, 0x12, 0x05, 0xf0, 0x39, 0xeb, ++ 0x9a, 0x24, 0x40, 0x9e, 0x82, 0xc5, 0x34, 0x63, 0xb0, 0x92, 0x0d, 0x4b, ++ 0x34, 0x0b, 0xa0, 0x27, 0x52, 0x60, 0x9e, 0x41, 0x84, 0xdc, 0xc7, 0xe5, ++ 0x67, 0xa8, 0x1e, 0x4c, 0x56, 0x99, 0x9f, 0xdc, 0x9b, 0xd4, 0x0b, 0x4c, ++ 0xaf, 0xa4, 0xe3, 0xfe, 0x92, 0xf8, 0x3e, 0x42, 0xf5, 0x60, 0x1a, 0xf5, ++ 0x6b, 0x20, 0x1e, 0x03, 0x47, 0x04, 0x7f, 0xba, 0x37, 0xad, 0x5b, 0xc1, ++ 0x06, 0x21, 0x2a, 0xde, 0x83, 0x0b, 0x1e, 0x13, 0xfa, 0xcb, 0x0e, 0xe2, ++ 0x15, 0x60, 0xfe, 0x74, 0xd2, 0x89, 0x65, 0x1f, 0x48, 0x45, 0xa0, 0xf3, ++ 0x67, 0x91, 0x0e, 0xa1, 0x1f, 0xc5, 0xdf, 0x7d, 0xe5, 0xd5, 0x83, 0x41, ++ 0x7e, 0xbf, 0x13, 0x72, 0x8e, 0x0b, 0xd9, 0xa3, 0x5a, 0xa9, 0xd9, 0x1f, ++ 0x6b, 0xff, 0x43, 0xf0, 0xfe, 0xf4, 0x7f, 0x2f, 0xbc, 0x57, 0x96, 0xea, ++ 0xe0, 0x2d, 0x26, 0x7f, 0x3f, 0x78, 0xcf, 0xe7, 0x72, 0x27, 0x34, 0x9e, ++ 0x57, 0x04, 0xf1, 0xbc, 0x2c, 0x88, 0xe7, 0xf9, 0xf6, 0x03, 0x9f, 0xca, ++ 0xdf, 0x32, 0xfb, 0xa3, 0xfd, 0xef, 0x32, 0xc6, 0xf7, 0x1a, 0xb3, 0x58, ++ 0x3c, 0xaf, 0x5c, 0xac, 0x7c, 0x18, 0xef, 0x41, 0x9d, 0x32, 0xba, 0x1f, ++ 0x52, 0x4e, 0xe7, 0x7a, 0xc8, 0x73, 0xd2, 0xec, 0x4e, 0xd4, 0x79, 0x7d, ++ 0x83, 0x71, 0x3f, 0xeb, 0x99, 0xfb, 0x25, 0x88, 0xa3, 0x10, 0xe9, 0x24, ++ 0xc2, 0x09, 0xef, 0x86, 0x9c, 0x28, 0xcf, 0x32, 0x93, 0x51, 0xde, 0x30, ++ 0x3b, 0xe2, 0x2a, 0xbe, 0x7f, 0x39, 0x6b, 0x9e, 0x15, 0xee, 0xbd, 0x83, ++ 0xfe, 0x93, 0x4f, 0x64, 0xf6, 0x06, 0xb3, 0x97, 0x64, 0x4e, 0x07, 0x45, ++ 0x8e, 0x12, 0xf4, 0x5f, 0x1a, 0xbf, 0x3d, 0xbf, 0xdd, 0x71, 0xb1, 0x7e, ++ 0xd2, 0x5e, 0xe9, 0x00, 0xde, 0x5f, 0x6b, 0xfe, 0x51, 0x83, 0x7f, 0x0e, ++ 0xfa, 0x4b, 0xa1, 0xe3, 0x7c, 0x92, 0xef, 0x7d, 0x38, 0xbf, 0xcf, 0x2f, ++ 0x3b, 0x21, 0xdf, 0xa4, 0x8d, 0xdf, 0x8b, 0xb5, 0x9d, 0x39, 0x68, 0x88, ++ 0xd3, 0x86, 0xfa, 0x41, 0x9a, 0x5d, 0x75, 0x15, 0xdf, 0x7f, 0xa9, 0xdf, ++ 0x7d, 0xe8, 0x72, 0xb8, 0xdf, 0x52, 0xe6, 0x10, 0x16, 0xdf, 0x64, 0x70, ++ 0x90, 0xf9, 0x3a, 0x8d, 0x8e, 0xb3, 0x78, 0x0f, 0xfe, 0xe2, 0xb7, 0x26, ++ 0xf4, 0xb7, 0xce, 0x72, 0x7f, 0xab, 0x08, 0xfc, 0x2c, 0x3b, 0xf3, 0x77, ++ 0xaa, 0xed, 0x3d, 0xcf, 0x39, 0x21, 0x39, 0xbc, 0xff, 0x04, 0xe3, 0x20, ++ 0xaf, 0xae, 0x54, 0xf1, 0x89, 0x60, 0xcf, 0x69, 0xfe, 0x13, 0xb4, 0x3b, ++ 0xed, 0x3d, 0xfd, 0xa7, 0xd1, 0x16, 0xff, 0x6b, 0xb0, 0xbf, 0x09, 0xaf, ++ 0x89, 0x98, 0x17, 0x12, 0x09, 0xbe, 0xa1, 0x7e, 0x53, 0xa8, 0xfe, 0x99, ++ 0x9e, 0xcc, 0xf4, 0xce, 0x4d, 0xc9, 0xdc, 0xae, 0x0b, 0x81, 0xa7, 0x16, ++ 0xef, 0x0b, 0xbd, 0x97, 0x6e, 0xd2, 0xf8, 0x4f, 0xf2, 0x08, 0x7a, 0xfe, ++ 0x0f, 0x5d, 0x5f, 0xde, 0x37, 0x06, 0xf7, 0x4f, 0x14, 0x5d, 0x3c, 0x36, ++ 0x3b, 0x18, 0x4f, 0x14, 0x54, 0x0f, 0xb9, 0x25, 0x2f, 0x18, 0x3f, 0x0c, ++ 0x13, 0x37, 0x5c, 0x0a, 0x74, 0xa8, 0xc5, 0x0d, 0x35, 0x3d, 0xa6, 0xd1, ++ 0xb1, 0x85, 0xf6, 0xb5, 0xe2, 0x3d, 0x73, 0xf8, 0x78, 0x62, 0x5b, 0xd6, ++ 0xc1, 0xbe, 0xcc, 0x2f, 0x7c, 0x29, 0x11, 0xf8, 0xb3, 0x5c, 0x61, 0x71, ++ 0x23, 0x6d, 0x7f, 0xd4, 0x2f, 0xbc, 0x2d, 0x59, 0x87, 0x8f, 0x22, 0x3f, ++ 0xd3, 0xdb, 0x96, 0xff, 0x53, 0xdf, 0xb9, 0x92, 0xc2, 0x97, 0x24, 0x10, ++ 0x17, 0xf3, 0x0f, 0xea, 0x9d, 0x56, 0x5a, 0xaf, 0x50, 0x48, 0xe2, 0x3a, ++ 0xe4, 0x33, 0x1b, 0xe6, 0x69, 0x15, 0x25, 0x09, 0xc8, 0x77, 0x92, 0x2f, ++ 0x0a, 0xeb, 0x15, 0xa7, 0x5c, 0xde, 0x28, 0x5a, 0xb7, 0xec, 0x7b, 0x45, ++ 0x14, 0x93, 0x60, 0xbd, 0x39, 0x24, 0x4a, 0x08, 0xd2, 0x8f, 0x96, 0xd7, ++ 0xd1, 0xe8, 0xff, 0x70, 0x3d, 0xe0, 0xef, 0xec, 0x29, 0xc9, 0x75, 0x3e, ++ 0xbf, 0xbb, 0x02, 0x82, 0x68, 0x06, 0x3f, 0x29, 0x3a, 0x88, 0x4f, 0x94, ++ 0x6f, 0x09, 0x86, 0xfa, 0x43, 0x92, 0xfb, 0xa1, 0x64, 0xb4, 0x17, 0x7b, ++ 0x05, 0xc7, 0x89, 0x90, 0x0f, 0x96, 0x6d, 0xc8, 0x3f, 0x7b, 0x46, 0x52, ++ 0x7f, 0x0a, 0x70, 0x9d, 0x6a, 0x55, 0x1f, 0xc6, 0xfe, 0x3f, 0x3c, 0xbc, ++ 0x6f, 0x4f, 0xc6, 0x78, 0xf1, 0xc1, 0x7f, 0x0a, 0xef, 0xc1, 0x75, 0x98, ++ 0x3e, 0x00, 0x9b, 0x8d, 0xa4, 0xe9, 0xd6, 0xb3, 0xd1, 0xc6, 0x61, 0xb0, ++ 0x8e, 0x93, 0xdd, 0x17, 0x6a, 0x71, 0xe9, 0xe5, 0x04, 0xef, 0x63, 0xb6, ++ 0x01, 0xce, 0x20, 0xce, 0xf2, 0x39, 0xf1, 0x42, 0x9c, 0xe5, 0x05, 0xf3, ++ 0xcb, 0x22, 0xe8, 0xa3, 0x26, 0x3e, 0xcf, 0x70, 0xd2, 0xec, 0x94, 0xfb, ++ 0xb2, 0xfd, 0x42, 0xbf, 0x27, 0xb7, 0x3a, 0x36, 0x01, 0x5d, 0xfc, 0x2e, ++ 0x39, 0x0b, 0xd7, 0x7f, 0xc1, 0xe6, 0xde, 0x30, 0x98, 0xb6, 0x1f, 0xda, ++ 0x22, 0x0d, 0x86, 0xb8, 0x4d, 0x83, 0xf3, 0x19, 0x2b, 0xe4, 0xcf, 0xee, ++ 0xdb, 0xda, 0x94, 0xde, 0xa9, 0xe3, 0xbf, 0x43, 0x4f, 0xba, 0xfb, 0x84, ++ 0xf3, 0x0f, 0xb5, 0x92, 0xfe, 0xc5, 0x99, 0x0a, 0xf1, 0x5c, 0xb1, 0xac, ++ 0x54, 0x45, 0x93, 0x03, 0xdb, 0x45, 0xa8, 0xf7, 0xb0, 0xcf, 0xb6, 0xb4, ++ 0x2a, 0xb0, 0xce, 0x93, 0x5b, 0xad, 0xd3, 0xc2, 0xc5, 0x35, 0xc4, 0x14, ++ 0xc6, 0xef, 0xc3, 0xb7, 0x30, 0xbb, 0x76, 0x74, 0x8e, 0xc9, 0x05, 0xe2, ++ 0xad, 0x88, 0x78, 0xa4, 0x04, 0xb8, 0x8f, 0x71, 0x11, 0x97, 0x8f, 0x36, ++ 0xc4, 0x0c, 0xdc, 0xd9, 0x81, 0x36, 0x70, 0x96, 0x88, 0xf7, 0x1a, 0xb4, ++ 0xbe, 0x3f, 0x96, 0xd6, 0x63, 0x86, 0xaa, 0xe8, 0x1f, 0x0c, 0x18, 0xb8, ++ 0x13, 0xc7, 0x0f, 0xf8, 0xbc, 0xc4, 0xc5, 0xf2, 0x28, 0x3d, 0xb6, 0x3c, ++ 0x5a, 0x5f, 0x9f, 0x53, 0x32, 0x74, 0x1d, 0xad, 0xa7, 0x47, 0xbb, 0x3f, ++ 0x06, 0xfa, 0xa2, 0x7a, 0xa6, 0x59, 0x42, 0x7d, 0xda, 0x12, 0x03, 0x79, ++ 0x00, 0x31, 0x03, 0x27, 0x25, 0xaf, 0xa3, 0xb5, 0x18, 0x81, 0x54, 0x85, ++ 0xb3, 0x73, 0xff, 0x9a, 0xcc, 0xec, 0xef, 0x27, 0xcd, 0x1a, 0x5c, 0x25, ++ 0xcc, 0x83, 0xdc, 0xb7, 0x55, 0x46, 0xfe, 0x3a, 0x94, 0x26, 0xe2, 0xfd, ++ 0x13, 0x85, 0xdb, 0x12, 0xa8, 0xff, 0x25, 0x2d, 0x86, 0x50, 0x4a, 0x24, ++ 0x65, 0xaa, 0xa7, 0x0c, 0xe0, 0x58, 0x4e, 0x5a, 0x1a, 0xc0, 0x9f, 0x2a, ++ 0x73, 0x5e, 0xfd, 0x52, 0x2c, 0xf9, 0x27, 0xe0, 0x97, 0xbf, 0x53, 0x01, ++ 0xfe, 0x5f, 0x1f, 0xc1, 0x0e, 0xff, 0x1d, 0xdf, 0x1f, 0x0a, 0x11, 0x4a, ++ 0x3f, 0x07, 0xb7, 0x34, 0x5e, 0x47, 0xc2, 0xe4, 0x51, 0x6b, 0x74, 0xf8, ++ 0x5c, 0x8c, 0x2a, 0xa5, 0xd0, 0xfe, 0x6b, 0xf9, 0xbd, 0x2e, 0x71, 0x4c, ++ 0x42, 0xfa, 0x89, 0x8c, 0xef, 0xbb, 0x98, 0xbf, 0xd9, 0xe2, 0x6b, 0x88, ++ 0xa6, 0x70, 0x1c, 0xbe, 0xbd, 0xb9, 0x97, 0x7e, 0xfe, 0x23, 0x10, 0x74, ++ 0x4d, 0xee, 0x89, 0x6f, 0xc8, 0x7f, 0x26, 0x97, 0x43, 0xfe, 0xad, 0x1b, ++ 0xf3, 0x69, 0x1b, 0x4e, 0x9a, 0x10, 0x7e, 0xaf, 0xe6, 0x0a, 0x5e, 0x81, ++ 0xc2, 0xe7, 0x60, 0x8e, 0x48, 0x6d, 0x36, 0xba, 0xab, 0x7e, 0x56, 0x6f, ++ 0x7f, 0x5a, 0xdf, 0xc0, 0xe9, 0xb8, 0x72, 0xfb, 0xe1, 0xc6, 0x5e, 0xc0, ++ 0xc2, 0x29, 0x49, 0xb8, 0xee, 0xab, 0x39, 0x8f, 0x59, 0x59, 0x7e, 0xeb, ++ 0xc5, 0xc7, 0xaf, 0x87, 0x50, 0x3e, 0x58, 0x04, 0xf9, 0x53, 0x14, 0x1f, ++ 0xa3, 0x94, 0x68, 0xaf, 0x93, 0xe2, 0x6b, 0x31, 0x4c, 0x41, 0xeb, 0x23, ++ 0x15, 0xab, 0xd7, 0x47, 0xd7, 0x6b, 0xb7, 0x77, 0x94, 0xc6, 0xd1, 0x25, ++ 0x5e, 0x48, 0x16, 0x5c, 0x9b, 0x81, 0x5e, 0x72, 0x88, 0x02, 0xf2, 0x03, ++ 0x5d, 0x10, 0x13, 0x43, 0x94, 0x42, 0xeb, 0x20, 0x32, 0x90, 0x9e, 0x92, ++ 0x08, 0xe6, 0x73, 0xad, 0x2f, 0xc8, 0xdd, 0x0c, 0x71, 0xb1, 0x75, 0xe9, ++ 0xce, 0x16, 0xc8, 0x37, 0xdc, 0x33, 0xd0, 0x8a, 0xf9, 0x66, 0xa1, 0xf9, ++ 0xc4, 0x7b, 0x84, 0xfa, 0x97, 0xe2, 0x21, 0x2e, 0x15, 0x2f, 0xa0, 0xbc, ++ 0x3e, 0x98, 0xf3, 0x3b, 0xbc, 0xa7, 0x3b, 0x98, 0x6e, 0x21, 0x40, 0xaf, ++ 0x98, 0xf0, 0x4b, 0x9f, 0x37, 0x26, 0x30, 0x3e, 0x8d, 0xc9, 0x37, 0xda, ++ 0x9f, 0xe5, 0x29, 0x59, 0xdc, 0xcf, 0x26, 0x1e, 0x4b, 0x41, 0x70, 0x5f, ++ 0x31, 0xfd, 0xac, 0x6a, 0x14, 0x25, 0xa4, 0x97, 0xe3, 0xd9, 0xf8, 0x43, ++ 0xfd, 0x04, 0x2f, 0xd0, 0xdb, 0x21, 0x27, 0x97, 0x0f, 0xf4, 0xbc, 0x5b, ++ 0xc1, 0x20, 0x92, 0x9a, 0xa5, 0xa9, 0x03, 0x23, 0xe3, 0xf5, 0x95, 0xfe, ++ 0xa3, 0x9c, 0x9a, 0x5d, 0x2c, 0x68, 0xe7, 0x34, 0xf5, 0x3c, 0xc7, 0x0b, ++ 0x82, 0x77, 0x4d, 0x36, 0x9c, 0x63, 0x00, 0x3d, 0x07, 0xad, 0xdb, 0x73, ++ 0x04, 0x5c, 0xdf, 0xae, 0xac, 0xbb, 0x91, 0x60, 0x59, 0xb8, 0x00, 0xee, ++ 0x31, 0x43, 0xf7, 0xbf, 0x22, 0x85, 0xf9, 0x47, 0x32, 0x25, 0xbb, 0x1c, ++ 0x90, 0x6f, 0x2d, 0x6b, 0xc6, 0xe8, 0xf3, 0x63, 0xe4, 0xc2, 0x1b, 0x27, ++ 0xd8, 0x62, 0x31, 0x8f, 0x09, 0xed, 0xca, 0xd4, 0x1c, 0x01, 0xcf, 0x33, ++ 0xe6, 0x24, 0xbb, 0xcf, 0xed, 0x91, 0x9f, 0xad, 0x10, 0xb7, 0x6c, 0xc0, ++ 0x0f, 0xb5, 0x3a, 0x52, 0x82, 0xf3, 0xc5, 0x7c, 0xf9, 0xec, 0x4f, 0x20, ++ 0xff, 0x77, 0x5c, 0xa1, 0xe0, 0x8b, 0x82, 0xfd, 0xf0, 0xfc, 0x66, 0xfa, ++ 0x7f, 0xed, 0xa0, 0x5f, 0xe4, 0x7e, 0xb3, 0x59, 0xfe, 0x75, 0xce, 0x26, ++ 0x3c, 0xcf, 0xd8, 0x42, 0xb3, 0x0b, 0xee, 0x72, 0xc6, 0xda, 0xbc, 0xcd, ++ 0x25, 0xb4, 0xfe, 0xca, 0x27, 0x12, 0xc6, 0xb3, 0xc7, 0xf5, 0x1b, 0x85, ++ 0xf9, 0xd5, 0xa1, 0xeb, 0xaf, 0x53, 0x88, 0x6f, 0x34, 0x85, 0xef, 0x2b, ++ 0xb9, 0x12, 0xc2, 0x3b, 0xea, 0x92, 0xc7, 0x70, 0x9e, 0x37, 0x73, 0x4d, ++ 0x28, 0x6f, 0xc6, 0x41, 0x3e, 0x36, 0xe4, 0x2f, 0xeb, 0xf3, 0xaa, 0x51, ++ 0x1f, 0x1a, 0xf3, 0xb9, 0xc7, 0x89, 0x1f, 0xa8, 0xc5, 0xd0, 0xec, 0x62, ++ 0xfc, 0x4a, 0x24, 0x4f, 0x2f, 0x90, 0xef, 0x13, 0x1c, 0x46, 0xf8, 0xd9, ++ 0x4f, 0x1a, 0xef, 0x8b, 0x2b, 0xf3, 0x2d, 0x86, 0xfa, 0xb8, 0x5c, 0x39, ++ 0x44, 0x0f, 0x7b, 0x10, 0xde, 0x2f, 0x67, 0x30, 0xba, 0x78, 0x79, 0x80, ++ 0xe0, 0xdd, 0x9c, 0x15, 0xa4, 0xb3, 0xb1, 0x27, 0x13, 0xbc, 0x40, 0x67, ++ 0xf0, 0x27, 0x16, 0x18, 0xe0, 0x68, 0x38, 0x67, 0x8c, 0x5f, 0x56, 0x01, ++ 0x7e, 0x87, 0x06, 0x3c, 0xf1, 0x5f, 0x70, 0x4f, 0x12, 0xe3, 0x5c, 0x7d, ++ 0x23, 0xde, 0x83, 0x73, 0xf8, 0x6b, 0x74, 0x12, 0xc3, 0xf1, 0x6e, 0x4f, ++ 0x7f, 0xee, 0x27, 0xa0, 0xa7, 0x34, 0xf8, 0x87, 0xd2, 0xc1, 0xc5, 0xe3, ++ 0xff, 0xea, 0xaa, 0x62, 0xc0, 0x7f, 0xbe, 0x76, 0x7f, 0x1f, 0x82, 0xff, ++ 0x10, 0x7c, 0x63, 0x0c, 0x52, 0x3b, 0x47, 0xdf, 0x9e, 0x78, 0xc7, 0xf5, ++ 0xb3, 0x7a, 0xe2, 0x5b, 0xa3, 0x83, 0x1e, 0xe7, 0xbe, 0xbb, 0x75, 0x4d, ++ 0x36, 0xc5, 0xeb, 0xab, 0x76, 0xfa, 0x00, 0xf0, 0xbc, 0x49, 0xf6, 0xde, ++ 0x25, 0x04, 0xf1, 0x74, 0x41, 0xbc, 0xf6, 0x2b, 0x46, 0xba, 0x59, 0xa7, ++ 0x34, 0xdb, 0x40, 0xee, 0x47, 0x5d, 0x72, 0xdc, 0x06, 0xfe, 0x81, 0x46, ++ 0x17, 0x44, 0x6c, 0xcb, 0xd7, 0xdb, 0xfb, 0xff, 0x2a, 0x7c, 0x97, 0x6c, ++ 0x10, 0x98, 0x33, 0xe9, 0x12, 0xbc, 0x10, 0xd7, 0x7b, 0x0b, 0x1e, 0x0d, ++ 0x0b, 0xae, 0xf3, 0x52, 0x4a, 0x77, 0xbe, 0xcc, 0x4b, 0x20, 0xf7, 0x49, ++ 0x15, 0xcb, 0xe3, 0x68, 0x50, 0xf3, 0xd8, 0x7b, 0x57, 0xf9, 0x4c, 0x9f, ++ 0x86, 0xca, 0x87, 0x3f, 0xa4, 0xb0, 0xf7, 0x3a, 0xda, 0xcd, 0x2f, 0xa7, ++ 0x9f, 0x2f, 0x4f, 0xb5, 0xd2, 0xe6, 0x26, 0x70, 0x3f, 0xd6, 0x00, 0xf9, ++ 0x76, 0xf4, 0x7c, 0xf2, 0x86, 0xd9, 0xf0, 0x46, 0x03, 0x91, 0x27, 0xcf, ++ 0x46, 0x79, 0x49, 0x36, 0x08, 0x2c, 0x0f, 0xa1, 0xe8, 0xf7, 0x28, 0xdf, ++ 0xe7, 0x39, 0xbc, 0xab, 0x84, 0x30, 0xeb, 0xa1, 0x25, 0x83, 0xfb, 0x74, ++ 0x32, 0xbb, 0xbf, 0x28, 0x11, 0xfb, 0x93, 0x69, 0x5a, 0x5e, 0x52, 0xd5, ++ 0x07, 0xb8, 0xff, 0xc9, 0xac, 0x7e, 0xb1, 0xfb, 0x7a, 0xe3, 0x5f, 0xb4, ++ 0xaf, 0xa3, 0x94, 0x56, 0x88, 0xce, 0xff, 0x9c, 0xc8, 0xe3, 0xf2, 0x9a, ++ 0xdd, 0x3d, 0xc1, 0xc6, 0xf2, 0x0e, 0x27, 0x14, 0x89, 0x88, 0x8f, 0x37, ++ 0xb7, 0x08, 0x5e, 0xcc, 0x8f, 0xa4, 0xfd, 0x3c, 0x94, 0x4e, 0x16, 0x71, ++ 0xb2, 0x9d, 0xc8, 0xed, 0xc0, 0xb3, 0x85, 0xcf, 0x34, 0x0d, 0x76, 0x82, ++ 0x3d, 0xa8, 0x1a, 0xec, 0x4e, 0xa1, 0xa8, 0x1d, 0xed, 0xbe, 0xb8, 0x42, ++ 0xa3, 0x3f, 0x18, 0xaf, 0x46, 0x1b, 0xf0, 0x9f, 0x38, 0x3a, 0xc1, 0x50, ++ 0x4f, 0xae, 0xea, 0x65, 0xe8, 0x9f, 0x3a, 0x2d, 0xdb, 0x18, 0x57, 0x70, ++ 0x5f, 0x6a, 0x78, 0xde, 0xbb, 0x26, 0xcf, 0x50, 0xcf, 0xa8, 0x1f, 0x6e, ++ 0xe8, 0xdf, 0xe7, 0x96, 0x12, 0x43, 0x3d, 0xcb, 0x33, 0xd6, 0xd0, 0xbf, ++ 0xef, 0x9a, 0x49, 0x86, 0x7a, 0xff, 0xe6, 0xeb, 0x0c, 0xfd, 0x7f, 0xf4, ++ 0xf0, 0x1c, 0xc3, 0xf3, 0x01, 0xde, 0x45, 0x86, 0xe7, 0x97, 0x6d, 0x5b, ++ 0x66, 0xa8, 0x0f, 0x6c, 0xb9, 0xcd, 0xd0, 0xff, 0xf2, 0x5d, 0x77, 0x19, ++ 0x9e, 0x0f, 0xf6, 0xad, 0x33, 0x3c, 0x1f, 0x72, 0xe8, 0x7e, 0x43, 0x7d, ++ 0x68, 0xc7, 0xcf, 0x0d, 0xfd, 0xaf, 0x78, 0x77, 0xb3, 0xe1, 0xf9, 0xb0, ++ 0xce, 0x5f, 0x19, 0x9e, 0x8f, 0x38, 0xb9, 0xd3, 0x50, 0x1f, 0xe9, 0xdf, ++ 0x6d, 0xe8, 0x7f, 0x55, 0x60, 0x9f, 0xa1, 0x5e, 0x4c, 0x5e, 0x33, 0xf4, ++ 0x2f, 0xb5, 0xfe, 0xde, 0x50, 0x2f, 0x57, 0xde, 0x37, 0xf4, 0x1f, 0xe5, ++ 0x38, 0x6e, 0x78, 0x3e, 0xc6, 0xf9, 0x99, 0xe1, 0xb9, 0x46, 0x07, 0xe3, ++ 0x72, 0xbe, 0x30, 0xb4, 0x8f, 0x77, 0xfd, 0x2d, 0xe4, 0x3d, 0x9d, 0x2a, ++ 0x16, 0xe7, 0x80, 0x78, 0x40, 0x5f, 0x78, 0xd4, 0x8c, 0x65, 0x34, 0x69, ++ 0x61, 0xf7, 0x3a, 0xa4, 0x03, 0xcb, 0x85, 0x05, 0xee, 0xe2, 0x54, 0xe0, ++ 0x8f, 0x47, 0x3d, 0x4d, 0x90, 0x90, 0xd4, 0xe0, 0xf1, 0xff, 0x11, 0xae, ++ 0xa6, 0xdf, 0x2c, 0xec, 0x1b, 0xc7, 0xec, 0x27, 0x95, 0xe8, 0xe5, 0xa7, ++ 0x96, 0x9f, 0x4a, 0xfd, 0x16, 0x4f, 0x14, 0x25, 0x85, 0xd8, 0x00, 0xa5, ++ 0xdb, 0x21, 0x94, 0xee, 0x02, 0x02, 0x96, 0x4a, 0x80, 0x4a, 0xd6, 0x44, ++ 0x88, 0xf7, 0x44, 0x61, 0x99, 0x10, 0x48, 0xc4, 0xf6, 0xc4, 0x40, 0x3c, ++ 0x96, 0x49, 0x81, 0xde, 0xd8, 0x9e, 0x1c, 0x48, 0xc3, 0x32, 0x25, 0xd0, ++ 0x17, 0xcb, 0xd4, 0x40, 0x16, 0x96, 0x8e, 0xc0, 0x65, 0x58, 0xa6, 0x05, ++ 0x06, 0x60, 0xd9, 0x2b, 0x30, 0x04, 0xc7, 0xf5, 0x0e, 0x0c, 0xc6, 0x32, ++ 0x3d, 0x30, 0x02, 0xdb, 0x33, 0x02, 0xc3, 0xb0, 0xcc, 0x0c, 0x94, 0x62, ++ 0x7b, 0x9f, 0x40, 0x31, 0x96, 0xce, 0xc0, 0x38, 0x2c, 0xb3, 0x02, 0x63, ++ 0xb0, 0xcc, 0x0e, 0x5c, 0x83, 0xfd, 0xfa, 0x06, 0xae, 0xc6, 0xb2, 0x5f, ++ 0xe0, 0x7a, 0x6c, 0xef, 0x1f, 0x98, 0x8e, 0xe5, 0x25, 0x81, 0xb9, 0x58, ++ 0xfe, 0x28, 0x30, 0x1b, 0xcb, 0x9c, 0xc0, 0x62, 0x2c, 0x07, 0x04, 0x16, ++ 0x62, 0x79, 0x69, 0xe0, 0x26, 0x1c, 0x77, 0x59, 0xe0, 0x46, 0x2c, 0x73, ++ 0x03, 0xb7, 0x63, 0xfb, 0xc0, 0xc0, 0xad, 0x58, 0x0e, 0x0a, 0x34, 0x60, ++ 0x79, 0x79, 0x60, 0x25, 0x96, 0xae, 0xc0, 0x7a, 0xec, 0x37, 0x38, 0xb0, ++ 0x16, 0xcb, 0xbc, 0xc0, 0x7f, 0x61, 0xfb, 0x90, 0xc0, 0x7d, 0x58, 0xe6, ++ 0x07, 0x7e, 0x81, 0xed, 0x43, 0x03, 0x3f, 0xc3, 0xb2, 0x20, 0xf0, 0x18, ++ 0x96, 0x57, 0x04, 0x36, 0x61, 0x59, 0x18, 0xf8, 0x35, 0x96, 0xc3, 0x02, ++ 0x4f, 0x62, 0x39, 0x3c, 0xf0, 0x0c, 0x8e, 0x1b, 0x11, 0xd8, 0x81, 0x65, ++ 0x51, 0xe0, 0x05, 0x6c, 0x1f, 0x19, 0x78, 0x1e, 0xcb, 0x2b, 0x03, 0xfb, ++ 0xb1, 0xfd, 0xaa, 0x40, 0x3b, 0x96, 0x6a, 0xe0, 0x35, 0x6c, 0x2f, 0x0e, ++ 0xbc, 0x82, 0x65, 0x49, 0xe0, 0xf7, 0xd8, 0x5e, 0x1a, 0x38, 0x8c, 0x65, ++ 0x59, 0xe0, 0x7d, 0x6c, 0x2f, 0x0f, 0xbc, 0x87, 0x65, 0x45, 0xe0, 0x38, ++ 0x96, 0xa3, 0x02, 0xc7, 0xb0, 0x1c, 0x1d, 0xf8, 0x0c, 0xcb, 0x31, 0x81, ++ 0x4f, 0xb0, 0x1c, 0x1b, 0xf8, 0x02, 0xc7, 0x8d, 0x0b, 0x9c, 0xc1, 0xb2, ++ 0x32, 0xf0, 0x37, 0x6c, 0x1f, 0x1f, 0xf8, 0x06, 0xcb, 0x6e, 0x79, 0x17, ++ 0x31, 0x5f, 0xd9, 0x6d, 0x42, 0x7f, 0x96, 0xfb, 0xa9, 0x91, 0xfd, 0x05, ++ 0x0f, 0xca, 0x49, 0x33, 0x7f, 0x2f, 0x0e, 0x72, 0xab, 0x31, 0xff, 0xbf, ++ 0x5e, 0xf0, 0x62, 0xbc, 0x30, 0xa9, 0xf3, 0x25, 0xa8, 0x9b, 0x0b, 0x2d, ++ 0x18, 0x2f, 0xbc, 0x81, 0xf8, 0xf1, 0x3d, 0x81, 0xff, 0x26, 0x9d, 0x76, ++ 0x90, 0xa7, 0xed, 0xc3, 0x4e, 0xa4, 0x43, 0xbc, 0xe9, 0xcd, 0x64, 0x5f, ++ 0x86, 0x3e, 0xdf, 0xc1, 0xcc, 0xe3, 0x00, 0xe5, 0xe2, 0x29, 0x09, 0xfc, ++ 0xd5, 0x09, 0x49, 0xfb, 0x92, 0x41, 0x9f, 0xde, 0x40, 0x9b, 0x21, 0xcf, ++ 0x88, 0xa8, 0xe7, 0x30, 0x0f, 0x72, 0x02, 0xcf, 0x83, 0xbc, 0x41, 0xa2, ++ 0x0e, 0x16, 0xdd, 0xea, 0x61, 0x98, 0x61, 0x18, 0xf6, 0xf3, 0x59, 0x68, ++ 0x7d, 0x46, 0x25, 0x51, 0xf3, 0x68, 0xff, 0xa6, 0x61, 0x16, 0x8c, 0xeb, ++ 0x37, 0xe5, 0x51, 0x3f, 0x88, 0x96, 0x77, 0x67, 0xb1, 0x7c, 0xd9, 0x1d, ++ 0xa9, 0x4c, 0x5f, 0xfe, 0x8a, 0x97, 0xbb, 0x52, 0x99, 0x1d, 0xeb, 0x29, ++ 0x60, 0xf7, 0xfb, 0x33, 0x6e, 0xec, 0xcf, 0xf8, 0xa9, 0x2c, 0xf1, 0x02, ++ 0x7e, 0x13, 0x83, 0xc3, 0xdf, 0x07, 0xf2, 0x3c, 0x5b, 0x9b, 0x3f, 0x13, ++ 0xf3, 0x63, 0x2f, 0x72, 0xdc, 0x67, 0x29, 0x7c, 0x1c, 0xef, 0xdf, 0x9c, ++ 0x5a, 0xd5, 0x96, 0x0a, 0xfb, 0x28, 0x21, 0x39, 0xf5, 0xb6, 0x60, 0x3f, ++ 0xda, 0xfe, 0x62, 0x84, 0xf6, 0x7d, 0xe1, 0xda, 0xf7, 0x99, 0x18, 0x3e, ++ 0x3c, 0x47, 0x44, 0xee, 0x27, 0x54, 0xc5, 0x4d, 0x3a, 0x8f, 0x9f, 0xf0, ++ 0xe6, 0x8a, 0x8e, 0x4b, 0x5f, 0xea, 0x1f, 0xac, 0xbf, 0x15, 0xc1, 0x0f, ++ 0x25, 0x64, 0x25, 0xee, 0x37, 0x76, 0xdf, 0x27, 0x95, 0xd7, 0x52, 0x7d, ++ 0x38, 0xb1, 0x50, 0x74, 0x51, 0xc9, 0x41, 0x3e, 0x58, 0xb1, 0x6b, 0xe4, ++ 0x47, 0xfd, 0xd9, 0xba, 0x90, 0x9f, 0xe9, 0x29, 0x11, 0x31, 0x7e, 0x31, ++ 0xa3, 0xe8, 0xf0, 0x81, 0x44, 0x5a, 0x9f, 0xb1, 0x3c, 0x1e, 0xf3, 0xee, ++ 0xbb, 0xf7, 0x55, 0x62, 0xc6, 0xe7, 0x13, 0x1c, 0x47, 0x2e, 0x7d, 0x89, ++ 0x1e, 0xfd, 0x86, 0xfa, 0xe7, 0x47, 0x7e, 0x64, 0x88, 0x8b, 0xba, 0xd1, ++ 0xee, 0xba, 0x89, 0xd3, 0x28, 0x51, 0xcd, 0x7f, 0xed, 0xd4, 0x9e, 0x23, ++ 0xbd, 0xb2, 0xb8, 0xef, 0x4d, 0xb0, 0xb8, 0x13, 0xe4, 0x9f, 0x19, 0xe7, ++ 0xed, 0x50, 0xcd, 0xde, 0xf3, 0xe5, 0xc7, 0x10, 0xd5, 0x42, 0x54, 0x03, ++ 0xdd, 0x33, 0x78, 0xad, 0x87, 0xfd, 0x83, 0xef, 0x4f, 0xac, 0x26, 0x58, ++ 0x37, 0x96, 0xf7, 0xa1, 0x70, 0x45, 0xbd, 0xef, 0x89, 0x95, 0xbd, 0x0d, ++ 0x02, 0x38, 0xef, 0xce, 0x38, 0xa0, 0xbb, 0x98, 0x5c, 0x3f, 0x39, 0x5f, ++ 0x7c, 0x19, 0xe0, 0x29, 0x61, 0xa2, 0x42, 0xa7, 0x0d, 0xec, 0x98, 0x48, ++ 0xf0, 0x4c, 0x70, 0x30, 0xfa, 0x8b, 0x2b, 0x52, 0x1d, 0x1e, 0x8a, 0x9f, ++ 0xc6, 0xbf, 0x8b, 0x78, 0xcf, 0xb5, 0x3f, 0xbe, 0x40, 0x01, 0xfa, 0xbf, ++ 0xc7, 0xd6, 0x2f, 0x15, 0xf8, 0x23, 0xd9, 0xc1, 0xe2, 0x27, 0x8d, 0xed, ++ 0xef, 0x61, 0x7c, 0x2b, 0x2e, 0xdf, 0x4f, 0x3c, 0x36, 0x76, 0x7f, 0xee, ++ 0xb4, 0x40, 0x1c, 0xdf, 0x8a, 0xe5, 0xaa, 0x15, 0x2e, 0x2c, 0x1b, 0x57, ++ 0x14, 0x62, 0xb9, 0x2e, 0xfd, 0x7e, 0x2b, 0xc4, 0x4b, 0xc4, 0x64, 0x09, ++ 0x32, 0x81, 0x49, 0x54, 0xc6, 0x3c, 0x8c, 0x07, 0x69, 0xeb, 0x9b, 0xe3, ++ 0xe7, 0x58, 0x8b, 0x5d, 0x94, 0x6c, 0x1d, 0x72, 0x25, 0x84, 0x90, 0x44, ++ 0x88, 0x33, 0x0c, 0x87, 0xf7, 0x36, 0xe5, 0xca, 0x95, 0xfd, 0x08, 0xf9, ++ 0x26, 0x95, 0xe5, 0x7d, 0xbf, 0xe9, 0xf8, 0xc8, 0x06, 0xfc, 0xf0, 0x4d, ++ 0xaa, 0x13, 0xeb, 0xa2, 0x89, 0xdd, 0x1b, 0xc7, 0xe4, 0xfb, 0x54, 0xc8, ++ 0x4b, 0x88, 0x71, 0x29, 0x25, 0x92, 0x33, 0xd8, 0x8e, 0x7f, 0x49, 0xd8, ++ 0xbe, 0x19, 0xfc, 0x91, 0x37, 0x49, 0xe7, 0x86, 0x6b, 0x00, 0x8e, 0x2a, ++ 0x7b, 0x1f, 0xa3, 0x81, 0xbf, 0x6f, 0xda, 0x50, 0xdc, 0x9f, 0xc3, 0x55, ++ 0x1b, 0x17, 0x82, 0xf7, 0x10, 0x3c, 0x8b, 0xb2, 0x0b, 0xef, 0xad, 0xc5, ++ 0x68, 0xda, 0x3f, 0x37, 0x32, 0x5e, 0x07, 0x38, 0xe2, 0x71, 0x9f, 0x40, ++ 0x5f, 0x12, 0xa5, 0x2f, 0x3f, 0xdf, 0x37, 0x51, 0x63, 0x4c, 0x30, 0x9f, ++ 0x86, 0xdf, 0xb3, 0x92, 0x1f, 0xf3, 0xa9, 0x1a, 0x84, 0xf0, 0x79, 0x97, ++ 0x43, 0x38, 0x7e, 0x1a, 0x15, 0x55, 0x39, 0xdf, 0x3d, 0x0a, 0x51, 0xa4, ++ 0xbf, 0xea, 0xe5, 0xa9, 0x2d, 0x77, 0x57, 0x08, 0x3d, 0xdb, 0x50, 0xbe, ++ 0x62, 0x1d, 0xf2, 0xb9, 0xb8, 0xbc, 0xda, 0x9f, 0xaa, 0x0e, 0x73, 0xd0, ++ 0xf9, 0xc7, 0x5c, 0xc9, 0xf3, 0xeb, 0xd3, 0x13, 0x50, 0x0e, 0xd0, 0xf6, ++ 0x01, 0xc3, 0x21, 0x9f, 0xce, 0x44, 0x15, 0x3a, 0xc0, 0x2d, 0x41, 0x46, ++ 0x7e, 0xa1, 0x40, 0x88, 0x83, 0x3c, 0x5f, 0x62, 0x75, 0xc6, 0x4d, 0x3a, ++ 0x4f, 0x1e, 0xc4, 0xda, 0x15, 0x0e, 0x55, 0x32, 0xc3, 0xfd, 0x80, 0x33, ++ 0x0e, 0xe0, 0xb5, 0x96, 0x9f, 0x0f, 0xde, 0x50, 0xd6, 0xcb, 0x81, 0x7f, ++ 0x57, 0xbf, 0xa0, 0xbc, 0xf0, 0x22, 0xdd, 0x86, 0xf6, 0x6f, 0xd1, 0xe4, ++ 0x40, 0x82, 0x15, 0xe5, 0x93, 0xc8, 0xe1, 0xa1, 0x8d, 0x5b, 0xe8, 0x60, ++ 0xf2, 0xd8, 0x94, 0x5d, 0x35, 0xd3, 0x31, 0x94, 0x8d, 0x03, 0x3e, 0xa2, ++ 0x75, 0x37, 0xc0, 0x8b, 0x58, 0x69, 0x7d, 0x20, 0xd6, 0xe7, 0xe0, 0x73, ++ 0xa5, 0xbb, 0x3e, 0x0f, 0xeb, 0x0e, 0xd6, 0x1f, 0x13, 0x69, 0x2e, 0x42, ++ 0x0e, 0xd3, 0x71, 0x8b, 0x71, 0x9c, 0xd4, 0x3d, 0xcf, 0x52, 0xac, 0xdb, ++ 0xba, 0xd7, 0xad, 0xc3, 0x75, 0x93, 0xba, 0xeb, 0x37, 0x62, 0x3d, 0x9d, ++ 0xf5, 0xbf, 0xd8, 0x75, 0xb4, 0xb2, 0xfb, 0xfc, 0xbf, 0x63, 0x72, 0xf2, ++ 0x4b, 0x49, 0x8d, 0x4b, 0xa0, 0xf4, 0x3c, 0xf6, 0x96, 0xb9, 0x55, 0xa0, ++ 0x0a, 0xc6, 0xdf, 0xb2, 0xb0, 0xaa, 0x8c, 0xea, 0xef, 0x3f, 0xae, 0x78, ++ 0x57, 0x05, 0xb9, 0xf4, 0x01, 0x95, 0x27, 0x8d, 0xb4, 0x1c, 0x3b, 0x60, ++ 0x7f, 0x22, 0xf8, 0x39, 0xe3, 0x87, 0xee, 0x8f, 0x71, 0xea, 0xe8, 0xf5, ++ 0x06, 0x1e, 0xd7, 0x6c, 0xbb, 0xc5, 0x3c, 0x1a, 0xf4, 0x5d, 0xd1, 0xad, ++ 0x62, 0xd5, 0x16, 0x84, 0xf7, 0x4a, 0xc3, 0xbd, 0xcf, 0x1a, 0x87, 0x99, ++ 0xc7, 0x9b, 0xd8, 0x3e, 0x66, 0x48, 0x84, 0xdc, 0x91, 0x00, 0xf2, 0xf7, ++ 0xf0, 0xa5, 0x8d, 0x06, 0xbf, 0x93, 0xf3, 0xa1, 0xc2, 0xda, 0xba, 0xf7, ++ 0x7b, 0x9b, 0x80, 0xfb, 0xfd, 0xa0, 0x9e, 0xc9, 0xdb, 0x0f, 0x96, 0x0b, ++ 0x28, 0x6f, 0xbb, 0xf9, 0x34, 0x9e, 0x70, 0x3f, 0xde, 0x97, 0x0c, 0x70, ++ 0x9a, 0xb9, 0x5c, 0x27, 0xb7, 0x49, 0x18, 0xb8, 0xd4, 0x5b, 0x88, 0xdb, ++ 0x20, 0xd7, 0x23, 0xc1, 0x87, 0x90, 0xbf, 0xd2, 0xfa, 0x97, 0xb6, 0x7e, ++ 0x18, 0x97, 0xa5, 0x96, 0x9a, 0xb5, 0x2a, 0x8c, 0x3e, 0xd3, 0xe0, 0x14, ++ 0x09, 0x0f, 0x37, 0x44, 0x88, 0xff, 0x6a, 0x70, 0xd2, 0xe0, 0xad, 0xb5, ++ 0xff, 0xe9, 0x8e, 0x21, 0x0a, 0xb3, 0xab, 0xbd, 0x06, 0x38, 0xce, 0xba, ++ 0x73, 0x28, 0xc6, 0x2b, 0x6f, 0xe0, 0xf1, 0x7a, 0x12, 0x6f, 0xe5, 0xfc, ++ 0xc9, 0xfa, 0xcd, 0xa0, 0xeb, 0xec, 0xcc, 0x45, 0x7a, 0x72, 0x02, 0xbd, ++ 0x43, 0x3d, 0x6c, 0x9e, 0x0d, 0x5f, 0x77, 0x06, 0xfd, 0xd7, 0x1d, 0x79, ++ 0x17, 0x85, 0x07, 0xcc, 0x97, 0xff, 0xa0, 0xfe, 0x80, 0xdd, 0xad, 0xbb, ++ 0xff, 0x0c, 0x85, 0x7b, 0x44, 0x3a, 0x8c, 0x00, 0xef, 0x3a, 0x0b, 0xc1, ++ 0xf7, 0x2a, 0xfc, 0x5b, 0xed, 0x2c, 0x9e, 0x94, 0x34, 0x0d, 0xe7, 0xad, ++ 0xe1, 0xeb, 0x92, 0xa4, 0x19, 0xb8, 0x8f, 0x1a, 0xbe, 0xce, 0x4b, 0x7b, ++ 0x63, 0x7c, 0x26, 0xb8, 0x87, 0xda, 0x6a, 0xdf, 0x0c, 0xfe, 0x70, 0x57, ++ 0x89, 0x27, 0x65, 0x22, 0xe0, 0x6b, 0xb3, 0x19, 0xf3, 0xda, 0xee, 0xda, ++ 0xbb, 0xfe, 0xc8, 0x2f, 0xe0, 0x3e, 0x78, 0x93, 0x19, 0xef, 0x4e, 0x16, ++ 0x7e, 0xf1, 0x40, 0x01, 0xdc, 0xcb, 0x76, 0x71, 0x3d, 0x46, 0x15, 0x41, ++ 0x3b, 0x7c, 0x47, 0xc1, 0x4d, 0xb4, 0x3f, 0x55, 0x80, 0xf9, 0x17, 0x10, ++ 0x36, 0x7f, 0x97, 0x76, 0x0f, 0xb2, 0x35, 0x0e, 0xe1, 0x7a, 0xb2, 0x6c, ++ 0x4b, 0xd3, 0x08, 0x5a, 0x76, 0xee, 0x59, 0x5a, 0x09, 0xf1, 0x97, 0x13, ++ 0x7b, 0xc7, 0x1f, 0x04, 0xff, 0x79, 0x61, 0x34, 0x91, 0xd2, 0xc0, 0xde, ++ 0xab, 0xdf, 0x21, 0x23, 0x3c, 0x3c, 0xe6, 0x8f, 0x8c, 0x76, 0x82, 0x14, ++ 0xac, 0x8b, 0x3d, 0xeb, 0x0b, 0xa0, 0xae, 0x8b, 0x23, 0x2d, 0xf4, 0x9a, ++ 0x83, 0x75, 0xfa, 0xbf, 0xc5, 0xdb, 0x8c, 0x75, 0x3d, 0xbc, 0x4c, 0x7a, ++ 0x78, 0x39, 0xcb, 0x8c, 0xf0, 0x72, 0x96, 0x1b, 0xe0, 0x25, 0xbc, 0x68, ++ 0xf7, 0x89, 0x3a, 0x78, 0x95, 0x9d, 0x79, 0x29, 0x11, 0xf4, 0xfb, 0x51, ++ 0x87, 0x13, 0xe7, 0xab, 0x39, 0xd3, 0x98, 0x02, 0xf0, 0xa9, 0xd9, 0xb3, ++ 0x16, 0xcb, 0xc5, 0xdb, 0xa2, 0x3c, 0x1f, 0xe9, 0xd6, 0x5d, 0xda, 0x12, ++ 0x6f, 0xa8, 0xd7, 0xed, 0x4a, 0xf3, 0xe8, 0xf5, 0xcb, 0xd9, 0x43, 0x8f, ++ 0xc5, 0xc2, 0xf9, 0x97, 0x39, 0x44, 0xcf, 0x47, 0x54, 0x7e, 0x9c, 0x5a, ++ 0xa1, 0x36, 0x00, 0x1d, 0x9f, 0x5e, 0x31, 0xba, 0x41, 0x4f, 0xcf, 0x4b, ++ 0x5b, 0xb2, 0x3c, 0x36, 0xc3, 0x3c, 0xc6, 0xfa, 0xd9, 0x66, 0x01, 0xed, ++ 0x14, 0xd0, 0x33, 0x93, 0xcf, 0x63, 0x2f, 0x2e, 0x73, 0xc8, 0xb8, 0xce, ++ 0xa7, 0xdb, 0x98, 0xdf, 0xf9, 0xe9, 0x0a, 0xab, 0x07, 0xd6, 0x39, 0xb5, ++ 0x42, 0xf1, 0xb0, 0x75, 0x1d, 0x1e, 0x66, 0x4f, 0x31, 0x78, 0x2d, 0xb9, ++ 0x25, 0xc6, 0xf3, 0xd1, 0x90, 0xe0, 0xfe, 0x22, 0xcd, 0xfb, 0xaf, 0xde, ++ 0x1f, 0x21, 0xad, 0xe4, 0xb8, 0x95, 0xe0, 0xbb, 0x3b, 0xe7, 0xce, 0xa3, ++ 0xbf, 0x23, 0xf2, 0x8b, 0xf4, 0xa5, 0x8c, 0xf2, 0xbd, 0xcd, 0xfc, 0x17, ++ 0xa0, 0x1b, 0x2b, 0xfd, 0xdf, 0x39, 0x8c, 0xa7, 0x4a, 0x58, 0xd7, 0xe6, ++ 0xad, 0x6b, 0x11, 0x3d, 0x90, 0x57, 0x4c, 0xc8, 0x76, 0xc3, 0x7a, 0x74, ++ 0x9c, 0xf3, 0x63, 0x9d, 0x5d, 0x10, 0x59, 0x3f, 0x18, 0xbf, 0x37, 0x31, ++ 0x02, 0x62, 0x62, 0x28, 0xa7, 0xd9, 0x7d, 0x88, 0x1b, 0xee, 0x43, 0xe8, ++ 0x7c, 0x5d, 0x92, 0x6d, 0x0d, 0xc4, 0x13, 0xb4, 0xfb, 0x90, 0x3a, 0x58, ++ 0x88, 0xf6, 0x5d, 0x6a, 0xed, 0x94, 0xdd, 0xb4, 0xe9, 0xf3, 0xd6, 0xbe, ++ 0xe7, 0x7d, 0xdf, 0x9c, 0xe2, 0x29, 0x0b, 0xf4, 0x73, 0x8d, 0xb5, 0x59, ++ 0x06, 0xa5, 0x5b, 0xd3, 0x32, 0xa0, 0x0c, 0xf8, 0xe9, 0xf3, 0xd6, 0x86, ++ 0x14, 0xb0, 0x67, 0x17, 0x8b, 0x67, 0x7f, 0x1c, 0xee, 0xbd, 0xaf, 0x29, ++ 0x69, 0x9c, 0x6f, 0xbd, 0x66, 0xbf, 0xd1, 0x6f, 0xf4, 0x6a, 0xfb, 0xcc, ++ 0x92, 0x0c, 0x7c, 0x46, 0x6c, 0xdd, 0xe7, 0xa6, 0xf5, 0x53, 0x11, 0xde, ++ 0xf3, 0x99, 0xc5, 0xe7, 0xad, 0xdd, 0x7e, 0xb8, 0x62, 0x04, 0xdd, 0x7f, ++ 0xed, 0xae, 0x33, 0x32, 0xec, 0x23, 0x39, 0xcd, 0x3d, 0x2b, 0x2d, 0x39, ++ 0x78, 0x7e, 0x81, 0xdf, 0x07, 0x2d, 0xda, 0x76, 0x0c, 0xf9, 0xfc, 0xa4, ++ 0xd9, 0x73, 0xc9, 0xed, 0xe7, 0xb3, 0xf3, 0x7b, 0xec, 0xd3, 0xe6, 0x30, ++ 0xe4, 0x1f, 0x7a, 0x48, 0x07, 0xf0, 0xe7, 0x9c, 0x42, 0xa2, 0x31, 0xec, ++ 0xb5, 0xef, 0x53, 0x79, 0xf3, 0xc9, 0x6b, 0x66, 0x02, 0xf7, 0x88, 0xe4, ++ 0x5b, 0xda, 0x8b, 0x3e, 0xcf, 0xe4, 0x4f, 0xe7, 0x91, 0xaa, 0x58, 0x80, ++ 0xd7, 0x9c, 0xd6, 0xc5, 0x28, 0x7f, 0x3e, 0x79, 0x76, 0xdc, 0x41, 0x96, ++ 0x87, 0xd4, 0x5c, 0x00, 0xf4, 0xf1, 0x39, 0x31, 0xe1, 0xfb, 0xee, 0x9f, ++ 0x93, 0xdf, 0xc5, 0x0e, 0xd1, 0xc1, 0x6f, 0x5d, 0x9a, 0x96, 0x47, 0xc9, ++ 0xbe, 0x73, 0xa3, 0xe5, 0xb9, 0xd0, 0x0d, 0xa6, 0x61, 0x9e, 0x7a, 0x4d, ++ 0x53, 0x07, 0xbc, 0x3f, 0x66, 0x21, 0x92, 0x87, 0xcb, 0x25, 0x81, 0x7d, ++ 0xb7, 0xc6, 0x2b, 0xa0, 0xfd, 0x52, 0xc3, 0xda, 0x3d, 0xc4, 0xba, 0x12, ++ 0xcf, 0xb1, 0x86, 0xc9, 0x23, 0x0f, 0xfd, 0x0f, 0xea, 0xf3, 0x9b, 0x8d, ++ 0xf2, 0x69, 0xc1, 0xc3, 0xc6, 0x7a, 0x35, 0x99, 0x94, 0x02, 0x79, 0xde, ++ 0xd5, 0x0f, 0x98, 0x21, 0x93, 0x88, 0x2c, 0xd4, 0xcb, 0x3f, 0x0a, 0xbf, ++ 0x1b, 0xd3, 0x98, 0xff, 0xb9, 0x80, 0xd4, 0x37, 0x81, 0x5d, 0xf7, 0x88, ++ 0xcc, 0xf2, 0xbb, 0xe7, 0x28, 0x44, 0xea, 0x4d, 0xf5, 0xd1, 0xd2, 0xe7, ++ 0x1e, 0x29, 0x98, 0x4d, 0xeb, 0xf7, 0xa5, 0x31, 0x7b, 0xec, 0x53, 0xee, ++ 0x6f, 0xc0, 0x7b, 0x8c, 0x69, 0xf4, 0xf9, 0xa2, 0x5b, 0xbc, 0xb2, 0x9a, ++ 0xdb, 0xf3, 0x7c, 0xc7, 0x5b, 0x87, 0x4c, 0x1d, 0x41, 0x70, 0x3e, 0xe6, ++ 0x3f, 0x2d, 0xd2, 0xec, 0x57, 0xe2, 0x84, 0x78, 0x7e, 0x6f, 0xf8, 0x57, ++ 0x76, 0xe4, 0xf3, 0xf7, 0x6e, 0x15, 0xf1, 0xfe, 0xa9, 0x37, 0xb4, 0xeb, ++ 0xe4, 0xf3, 0xdc, 0x35, 0xc6, 0xf3, 0x5d, 0xe8, 0xfc, 0xa1, 0xe7, 0x25, ++ 0xe4, 0x7e, 0x3c, 0xc7, 0xa2, 0x6d, 0x57, 0xa3, 0xff, 0xa6, 0x9d, 0x47, ++ 0xc3, 0x97, 0x76, 0x1e, 0xf3, 0xb6, 0xf0, 0xef, 0xfb, 0x6e, 0x4b, 0x13, ++ 0x0c, 0x76, 0xdc, 0x2e, 0x0e, 0x3f, 0xcd, 0xff, 0xde, 0x13, 0x52, 0xdf, ++ 0x97, 0xc6, 0xec, 0x7a, 0xad, 0xfe, 0x72, 0x48, 0x5d, 0xa3, 0x6f, 0x33, ++ 0xe7, 0x6f, 0x4a, 0xf7, 0x7b, 0x80, 0xee, 0x97, 0x5a, 0xfd, 0x15, 0x8c, ++ 0x4e, 0x3a, 0x65, 0xfd, 0xbd, 0xa8, 0x1c, 0xec, 0xb7, 0x2f, 0x6d, 0x68, ++ 0xe4, 0x7e, 0x16, 0xce, 0x2f, 0xb4, 0xdf, 0xcb, 0xe7, 0xeb, 0x17, 0x15, ++ 0x9c, 0xef, 0xf5, 0x70, 0xeb, 0x2e, 0x7d, 0xee, 0xa9, 0x67, 0xc1, 0x2f, ++ 0x5d, 0xf4, 0x9b, 0x07, 0x63, 0xe1, 0x52, 0xe8, 0x13, 0xa9, 0x39, 0x05, ++ 0xde, 0xb7, 0x58, 0xb2, 0x75, 0x55, 0x2c, 0xc0, 0xe9, 0xa4, 0xe4, 0x89, ++ 0x05, 0xba, 0xf9, 0xc4, 0x2b, 0x8e, 0x0e, 0x07, 0x2f, 0x53, 0x2f, 0x0d, ++ 0x5e, 0xaa, 0x4d, 0xa0, 0x78, 0xaf, 0xd5, 0xe8, 0xbf, 0x68, 0xe5, 0x04, ++ 0xd0, 0xef, 0x7f, 0xd9, 0x6a, 0x56, 0xc0, 0x3f, 0xac, 0xdb, 0x66, 0xf1, ++ 0xc1, 0x77, 0x98, 0x6a, 0x5b, 0x17, 0xe2, 0xbd, 0x0d, 0xad, 0x1f, 0x63, ++ 0xf5, 0xd5, 0xf8, 0x7e, 0x65, 0xdd, 0x2e, 0xf3, 0x87, 0x7a, 0xbc, 0x2e, ++ 0x7a, 0xe2, 0xc1, 0x14, 0xcc, 0xf3, 0x20, 0x9e, 0xde, 0xec, 0x5e, 0xdd, ++ 0xd7, 0x1b, 0x3e, 0x21, 0x54, 0xbb, 0xe5, 0xcf, 0x15, 0xe0, 0x2f, 0xd7, ++ 0x11, 0x3f, 0xd2, 0x73, 0xe8, 0x38, 0x58, 0x3f, 0x90, 0x80, 0xf2, 0x7a, ++ 0xb6, 0x1c, 0xd7, 0xf3, 0xb9, 0x16, 0x3f, 0xad, 0x63, 0x4d, 0xa4, 0xae, ++ 0x75, 0xfd, 0x19, 0x88, 0x9f, 0xd6, 0xb5, 0x8e, 0x39, 0x01, 0x7c, 0x5f, ++ 0x47, 0xa4, 0x0f, 0xf5, 0xf4, 0x54, 0x03, 0x34, 0x4d, 0xfd, 0x96, 0x2f, ++ 0xd2, 0x78, 0xfe, 0xdd, 0x15, 0xe4, 0x0a, 0x90, 0x2f, 0x1a, 0x3c, 0x88, ++ 0x37, 0x19, 0xe5, 0x73, 0xc3, 0x93, 0x3f, 0x1d, 0x74, 0x8c, 0xee, 0xe7, ++ 0xd4, 0x96, 0xd7, 0x62, 0x05, 0xbd, 0xdf, 0xca, 0xef, 0xdd, 0xcf, 0xb6, ++ 0xcc, 0xfd, 0x53, 0xe2, 0x79, 0xf4, 0xc3, 0x69, 0x4a, 0xa7, 0xfa, 0xf7, ++ 0x32, 0x34, 0xb9, 0xeb, 0xdc, 0x45, 0x37, 0x90, 0x4a, 0xab, 0x6d, 0xac, ++ 0x5c, 0x62, 0xf6, 0xc5, 0x8e, 0xa0, 0x70, 0x5d, 0xb2, 0xc9, 0x8c, 0xef, ++ 0x89, 0x2e, 0x79, 0xea, 0xb1, 0xc7, 0x7f, 0x0e, 0xf9, 0x44, 0xef, 0x59, ++ 0xf0, 0x1e, 0x64, 0xf1, 0x53, 0x07, 0x8e, 0x0c, 0xa7, 0xf5, 0xc5, 0x3b, ++ 0xcc, 0x49, 0x95, 0xec, 0x18, 0x36, 0xb8, 0x17, 0xd6, 0xf0, 0x52, 0x47, ++ 0xff, 0x07, 0xf7, 0x14, 0x1a, 0x1e, 0x16, 0x3d, 0x73, 0x40, 0x86, 0xf7, ++ 0x68, 0xa0, 0x1d, 0xfc, 0x04, 0x0d, 0x1f, 0x8b, 0x77, 0xb4, 0xcb, 0x64, ++ 0x60, 0x4f, 0xf8, 0x95, 0xb6, 0xb4, 0xcb, 0x9d, 0xb6, 0x30, 0x78, 0x69, ++ 0x39, 0x56, 0x81, 0xef, 0x1b, 0x3d, 0xf9, 0xb5, 0x0c, 0x78, 0xff, 0x64, ++ 0xaf, 0x40, 0x52, 0xb3, 0x7a, 0x8e, 0xaf, 0xd9, 0x74, 0x00, 0xed, 0x18, ++ 0x80, 0x13, 0xe2, 0x91, 0xe3, 0xa9, 0x1b, 0x6f, 0x3d, 0xf0, 0xe5, 0x9b, ++ 0xb0, 0x3b, 0x1f, 0xfb, 0x29, 0x20, 0xb7, 0x2f, 0x84, 0xaf, 0x77, 0xb8, ++ 0x5e, 0xa5, 0x74, 0xfd, 0xf4, 0x6e, 0xba, 0x8f, 0x9a, 0x3f, 0x58, 0x5c, ++ 0x00, 0x87, 0x9a, 0xa7, 0x6f, 0x8a, 0x85, 0xf3, 0x9c, 0x90, 0xea, 0x19, ++ 0x7d, 0x3f, 0xb2, 0x2a, 0x05, 0xf2, 0xdd, 0x6a, 0xcc, 0x9e, 0x14, 0x05, ++ 0x4b, 0xd6, 0x5e, 0xf3, 0xe8, 0xcd, 0x48, 0x77, 0x0b, 0x0e, 0xdf, 0x9c, ++ 0xc2, 0xf2, 0x0f, 0xd5, 0x34, 0x9e, 0xe7, 0x91, 0x06, 0xe7, 0x9c, 0xbf, ++ 0x71, 0x0a, 0x9e, 0xb3, 0x9a, 0xb8, 0x91, 0xfe, 0x6a, 0x1e, 0x11, 0xab, ++ 0x20, 0x1f, 0xe6, 0x2b, 0x89, 0x8c, 0xde, 0x11, 0x86, 0x3f, 0x6e, 0xe3, ++ 0xfc, 0x71, 0x62, 0x33, 0x45, 0x2e, 0x3d, 0xe7, 0x09, 0x90, 0x97, 0x3a, ++ 0xbf, 0x47, 0x7b, 0xbf, 0xf9, 0xe6, 0xee, 0x78, 0x08, 0xbb, 0x8f, 0xfc, ++ 0x8a, 0xdf, 0x47, 0x56, 0xf5, 0x32, 0x19, 0xf4, 0x4b, 0x37, 0xdd, 0x6e, ++ 0x59, 0x8d, 0x72, 0xf5, 0xd3, 0x0c, 0x35, 0x15, 0xee, 0x29, 0x29, 0x1c, ++ 0x34, 0x39, 0x8a, 0xf2, 0x55, 0x3c, 0x5c, 0x9e, 0xca, 0xf0, 0xc4, 0xe4, ++ 0x31, 0x8e, 0xa3, 0xf4, 0x57, 0x0a, 0xed, 0xd0, 0xbf, 0xc3, 0x8c, 0xf7, ++ 0xc3, 0xba, 0x71, 0x5c, 0x7e, 0xb2, 0xf5, 0x97, 0xf3, 0xf5, 0xe9, 0xbe, ++ 0xa3, 0xc1, 0x1e, 0x39, 0x91, 0x12, 0xfe, 0xbd, 0xa0, 0xc7, 0x7b, 0x09, ++ 0xda, 0xfe, 0x3a, 0x88, 0x8e, 0xce, 0x74, 0x7c, 0xce, 0xf8, 0x7e, 0xcb, ++ 0x5a, 0xc6, 0xe7, 0x1a, 0xdf, 0x7b, 0xaf, 0x1e, 0x0d, 0xcf, 0xbf, 0x7c, ++ 0x9b, 0xf1, 0x11, 0x8c, 0x03, 0x7d, 0x44, 0xf7, 0xe5, 0x4b, 0xc5, 0xe7, ++ 0xed, 0x93, 0x05, 0x94, 0x0b, 0x16, 0xe2, 0x0b, 0xc7, 0xdf, 0x5b, 0xcc, ++ 0x9c, 0xbf, 0x8d, 0xcf, 0xa9, 0xc5, 0x8e, 0xf6, 0x9c, 0x46, 0x27, 0x74, ++ 0xff, 0x12, 0x7c, 0x97, 0x2c, 0x48, 0x2f, 0x74, 0x9d, 0x04, 0xc4, 0x03, ++ 0xda, 0x2b, 0xd5, 0x0f, 0xd0, 0xf1, 0x3a, 0x3b, 0xbb, 0x0e, 0xd6, 0xc5, ++ 0x7e, 0x72, 0xb0, 0x3d, 0x2b, 0xc8, 0xc7, 0x0b, 0xb8, 0x3c, 0xb8, 0xb9, ++ 0x17, 0x95, 0x07, 0x97, 0x05, 0xe5, 0x01, 0xd9, 0x98, 0x7c, 0x51, 0xf1, ++ 0x81, 0x25, 0x66, 0xef, 0xe3, 0x3f, 0x07, 0xfe, 0xa5, 0xfc, 0xea, 0x71, ++ 0x02, 0xff, 0x9a, 0xf1, 0xfd, 0x9b, 0xcf, 0xb6, 0xef, 0x3f, 0x72, 0x1d, ++ 0xa5, 0xf3, 0xcf, 0x5a, 0x34, 0xbe, 0x35, 0xca, 0xd3, 0x50, 0xbe, 0xad, ++ 0xd9, 0x79, 0x33, 0xc6, 0x09, 0x43, 0xf9, 0xf6, 0xb3, 0xf4, 0x7a, 0x12, ++ 0x96, 0x6f, 0xd3, 0xf9, 0xfb, 0x73, 0xa1, 0x7c, 0x9b, 0xde, 0xf9, 0x1f, ++ 0x95, 0xa7, 0x1a, 0xfc, 0x1e, 0x09, 0x81, 0x1f, 0x95, 0x8f, 0xbf, 0xdc, ++ 0xed, 0x8c, 0x0c, 0xc7, 0x50, 0xf9, 0x38, 0xac, 0x97, 0x33, 0xac, 0x7c, ++ 0xa4, 0x7f, 0x6f, 0x93, 0x82, 0x9e, 0x74, 0xa8, 0xd1, 0x9f, 0x46, 0x77, ++ 0x8b, 0x7e, 0xbd, 0xb4, 0x0f, 0xc8, 0xa1, 0x6e, 0xfa, 0xd4, 0xe8, 0xaf, ++ 0x9b, 0x3e, 0x35, 0xfa, 0x0b, 0x3d, 0xaf, 0x11, 0x7e, 0xa1, 0xcf, 0xab, ++ 0x21, 0xe9, 0x49, 0x67, 0x3f, 0x98, 0xef, 0x22, 0x1e, 0x3b, 0xc5, 0xb7, ++ 0x7f, 0x8f, 0x88, 0xdf, 0x4d, 0xea, 0x72, 0xfa, 0x63, 0x21, 0x0e, 0xb4, ++ 0x2a, 0x8a, 0xcc, 0x02, 0x3b, 0xbc, 0x4b, 0xe1, 0xf5, 0x78, 0x56, 0xf7, ++ 0x27, 0xcb, 0x4d, 0x20, 0x27, 0xb4, 0x76, 0x7f, 0x14, 0x8b, 0xab, 0x75, ++ 0x55, 0xf9, 0x63, 0xe3, 0x75, 0xf6, 0xf5, 0xb1, 0x36, 0x31, 0x16, 0xe2, ++ 0xbc, 0x9d, 0xde, 0xf0, 0xdf, 0x79, 0xc3, 0xcc, 0x44, 0xba, 0x7e, 0x67, ++ 0x84, 0xef, 0xc0, 0x69, 0x71, 0x89, 0xae, 0xe8, 0xd8, 0x41, 0xb8, 0x5e, ++ 0x74, 0xa6, 0x17, 0xf0, 0x55, 0x2e, 0xda, 0x32, 0x6f, 0x81, 0xfc, 0xd1, ++ 0x66, 0x11, 0xbf, 0xe7, 0x33, 0x6f, 0xe5, 0xb5, 0xb1, 0x90, 0x27, 0xd2, ++ 0xd5, 0xd6, 0x77, 0xe2, 0x34, 0xda, 0x3e, 0xff, 0x15, 0xfe, 0x39, 0x3f, ++ 0x8f, 0x2a, 0xa5, 0x51, 0x38, 0xcf, 0xe5, 0x78, 0x3f, 0x49, 0x3c, 0x0f, ++ 0x15, 0xd1, 0xf3, 0xcd, 0x6d, 0x63, 0xf6, 0xf3, 0xbc, 0x0d, 0xe1, 0xe9, ++ 0x44, 0xbb, 0x3f, 0xaf, 0xb6, 0x2d, 0x97, 0x41, 0x1e, 0x51, 0xbb, 0xf5, ++ 0x43, 0x7d, 0xfc, 0x68, 0x11, 0xff, 0xde, 0x42, 0xcd, 0xc6, 0x90, 0xf6, ++ 0xb6, 0x71, 0x48, 0x4f, 0x8b, 0x42, 0xe8, 0xc9, 0xcd, 0xfd, 0xa3, 0x13, ++ 0xbd, 0xb8, 0x7e, 0x1e, 0x4c, 0x06, 0x73, 0xff, 0xc4, 0xa4, 0xcf, 0x0b, ++ 0x29, 0x17, 0x73, 0x27, 0xc2, 0x3b, 0x1e, 0x5d, 0x87, 0x44, 0xcc, 0xbb, ++ 0x3e, 0xdb, 0x26, 0x92, 0x26, 0x38, 0xe7, 0x76, 0xc1, 0x4b, 0x80, 0xbf, ++ 0x3d, 0xc9, 0x48, 0x97, 0xb5, 0x54, 0x7e, 0xe8, 0xe3, 0xc0, 0xa7, 0x80, ++ 0xee, 0xce, 0xf3, 0x3e, 0xdd, 0xa9, 0xdf, 0xfe, 0x77, 0xc1, 0xed, 0xb4, ++ 0xcb, 0x92, 0x67, 0xdf, 0x1f, 0xf4, 0x0b, 0x5a, 0x9e, 0x7a, 0xf6, 0xbd, ++ 0x4b, 0x5e, 0x80, 0xfa, 0x73, 0x47, 0x33, 0xdf, 0x27, 0x3d, 0xfb, 0x97, ++ 0xee, 0xfd, 0x66, 0x26, 0xc8, 0xff, 0xae, 0xbd, 0x16, 0x82, 0x71, 0x95, ++ 0xbd, 0x2f, 0x67, 0xde, 0x0e, 0xf5, 0xdd, 0x16, 0xcc, 0x3f, 0xea, 0xba, ++ 0xcb, 0xc2, 0xe2, 0xc1, 0x7b, 0xed, 0x98, 0x4f, 0xd7, 0x95, 0xc1, 0xde, ++ 0x8b, 0x69, 0xd8, 0xf3, 0xf5, 0x20, 0xcc, 0xdf, 0x26, 0x8d, 0x88, 0xb7, ++ 0x84, 0xde, 0xcc, 0xef, 0x38, 0xdb, 0xf6, 0xb7, 0x3f, 0xe2, 0x7b, 0xb6, ++ 0x6d, 0xf4, 0x54, 0xa0, 0x6f, 0xf7, 0xc6, 0xa0, 0x3d, 0x5e, 0xb7, 0x3b, ++ 0xca, 0x0b, 0x4e, 0x6a, 0xd7, 0x9e, 0xaf, 0x0b, 0xf4, 0xf7, 0x18, 0xdf, ++ 0xf7, 0x3c, 0xb5, 0x32, 0x8b, 0xe3, 0x77, 0xd9, 0xc9, 0x34, 0x88, 0x7f, ++ 0x75, 0xc5, 0xb3, 0x3c, 0x9b, 0xba, 0x17, 0x86, 0x3d, 0xb6, 0x92, 0xae, ++ 0xbf, 0xb4, 0xb5, 0x5d, 0x86, 0xf7, 0x77, 0x4a, 0x5f, 0xfc, 0xfb, 0x20, ++ 0x90, 0x37, 0x5d, 0x3b, 0x99, 0x1d, 0x71, 0xda, 0xdc, 0xf9, 0x28, 0x71, ++ 0x11, 0x92, 0xd1, 0xfb, 0x8e, 0xbb, 0xcd, 0x14, 0x5f, 0xa7, 0xc1, 0xb6, ++ 0xa3, 0xbc, 0xf2, 0x7c, 0xef, 0x3d, 0xe3, 0xe1, 0x9e, 0xa3, 0x27, 0x5c, ++ 0x18, 0x1c, 0xba, 0x28, 0x1c, 0xe0, 0x5c, 0x14, 0x2e, 0x35, 0x20, 0x27, ++ 0x23, 0xc1, 0x23, 0xbf, 0x37, 0xfb, 0x4e, 0xcf, 0x0f, 0x0f, 0x1e, 0x67, ++ 0x66, 0xc2, 0xfa, 0x4b, 0xda, 0xae, 0xc0, 0x7b, 0x88, 0x20, 0x5c, 0x04, ++ 0x95, 0xb5, 0xdb, 0xbd, 0x56, 0x01, 0xcf, 0xcf, 0xda, 0xf7, 0x7e, 0x3d, ++ 0x08, 0xe4, 0xf1, 0x67, 0x2d, 0x2b, 0x51, 0xbf, 0x5f, 0xe8, 0xdc, 0xd7, ++ 0xfc, 0x60, 0xe9, 0xe0, 0x9f, 0x3d, 0xb7, 0xe0, 0xbb, 0x98, 0x73, 0x2f, ++ 0xfb, 0xc1, 0x9e, 0x9b, 0xd1, 0x7f, 0x00, 0xf4, 0x53, 0x72, 0x4f, 0x3e, ++ 0xe8, 0x49, 0xe7, 0xcf, 0xfd, 0x18, 0xeb, 0x4f, 0xdb, 0x5d, 0xb8, 0xdf, ++ 0x8b, 0xe4, 0xff, 0xfb, 0xff, 0x5f, 0xa3, 0xf7, 0x9d, 0x02, 0xe6, 0xb1, ++ 0x5c, 0x08, 0xef, 0x3b, 0xfe, 0xd7, 0xe2, 0xfd, 0x15, 0x8e, 0x77, 0xbb, ++ 0x02, 0xf9, 0x12, 0x5d, 0x7b, 0xfe, 0x9e, 0x49, 0x74, 0xe7, 0xbf, 0xd0, ++ 0xb9, 0x3b, 0x7e, 0xb0, 0xf8, 0x3e, 0xff, 0xb9, 0x35, 0x3b, 0xa8, 0xc3, ++ 0x54, 0xaf, 0xe4, 0xd3, 0xfd, 0xbd, 0x47, 0x9a, 0xa7, 0x64, 0xd1, 0xf2, ++ 0x2d, 0xf5, 0x8b, 0x24, 0x70, 0x5b, 0x2d, 0x91, 0xee, 0x6b, 0xd2, 0x99, ++ 0x5f, 0x61, 0x11, 0x58, 0xfe, 0x37, 0x99, 0x22, 0x68, 0xf1, 0xa5, 0x0e, ++ 0x43, 0xfe, 0x53, 0x7a, 0x0d, 0xda, 0x1b, 0x13, 0xd4, 0xbb, 0xd9, 0x77, ++ 0x9a, 0xa4, 0xfa, 0x0e, 0xc8, 0x3f, 0xed, 0x28, 0x99, 0xeb, 0x5a, 0x87, ++ 0x3d, 0xf2, 0xf0, 0xbb, 0x02, 0x1d, 0x93, 0x47, 0xf2, 0xba, 0xd1, 0xdf, ++ 0x7a, 0x53, 0x20, 0xaa, 0x40, 0xed, 0xdb, 0x09, 0x25, 0xe3, 0x0e, 0x81, ++ 0xbd, 0x37, 0x51, 0x15, 0xd1, 0x1e, 0xa4, 0x25, 0xda, 0x81, 0xef, 0x64, ++ 0x56, 0xb0, 0xf6, 0x42, 0xa3, 0x9f, 0x31, 0x3d, 0xc4, 0x3f, 0xb8, 0x76, ++ 0x9a, 0xf1, 0xf9, 0x14, 0x3e, 0xdf, 0x54, 0xb2, 0x4c, 0xc9, 0xa7, 0xf0, ++ 0x9a, 0x9a, 0x2e, 0x29, 0x5e, 0x0a, 0xa2, 0xe9, 0xc5, 0xf5, 0x66, 0x38, ++ 0xcf, 0xf4, 0x1b, 0x04, 0xd2, 0xac, 0x8b, 0x6f, 0x4e, 0x09, 0x99, 0xef, ++ 0x03, 0x08, 0xa0, 0xe9, 0xec, 0xc8, 0xef, 0x0a, 0xbf, 0xbc, 0x74, 0xe6, ++ 0x77, 0x5a, 0x84, 0x65, 0x08, 0x0f, 0x52, 0x2c, 0xf2, 0xf7, 0x8d, 0x2e, ++ 0x00, 0x3f, 0xc2, 0xe0, 0xdd, 0x31, 0x79, 0x30, 0xcb, 0x33, 0x96, 0x5c, ++ 0x0c, 0x7e, 0x53, 0x97, 0xba, 0x30, 0x6e, 0xca, 0xfd, 0x50, 0x33, 0x1f, ++ 0x6f, 0xb6, 0xad, 0xe9, 0x00, 0xbe, 0x35, 0x13, 0xa3, 0xff, 0xa9, 0xf9, ++ 0x91, 0x91, 0xe0, 0x4c, 0xb8, 0x5f, 0x8a, 0xf3, 0x64, 0x07, 0xe1, 0x6e, ++ 0x56, 0x45, 0xf4, 0x4b, 0x75, 0xf3, 0x21, 0x3c, 0x34, 0x7c, 0x7c, 0x57, ++ 0x3c, 0x68, 0xf8, 0xfb, 0xbe, 0xf8, 0x90, 0xd2, 0x89, 0xe1, 0x5e, 0x55, ++ 0x2b, 0x17, 0x5a, 0x67, 0x2f, 0x86, 0x7b, 0x08, 0x2b, 0xe4, 0xbd, 0xd3, ++ 0x79, 0x27, 0x6e, 0x60, 0xef, 0x91, 0x58, 0x73, 0x05, 0x84, 0x63, 0x55, ++ 0xa1, 0x19, 0xdf, 0xe3, 0xfa, 0xb3, 0xa9, 0xaa, 0x00, 0x0c, 0xe7, 0xca, ++ 0x21, 0x57, 0xd4, 0xde, 0xc6, 0xa6, 0x75, 0x01, 0x7c, 0x16, 0x72, 0x38, ++ 0x56, 0x93, 0x7a, 0xb4, 0x3b, 0xc9, 0xb7, 0xe7, 0xce, 0x15, 0x15, 0xe0, ++ 0xad, 0x1f, 0xda, 0xad, 0x0b, 0x55, 0x42, 0xc6, 0x53, 0xbf, 0xa4, 0xba, ++ 0x48, 0xf0, 0x45, 0xd3, 0xf3, 0x2f, 0x90, 0x88, 0x27, 0x2e, 0x0f, 0xe2, ++ 0xa0, 0x02, 0xf9, 0x50, 0x1f, 0x07, 0xf5, 0x1a, 0xeb, 0xf0, 0x77, 0x65, ++ 0x4a, 0x70, 0x9e, 0x0b, 0xf5, 0x8f, 0x24, 0x1f, 0xfe, 0xd5, 0xe5, 0x9f, ++ 0xa8, 0x3c, 0xfa, 0x90, 0x22, 0xfd, 0x18, 0x94, 0x98, 0x3f, 0x43, 0x24, ++ 0xbd, 0xff, 0x38, 0xab, 0x8d, 0xc1, 0xb1, 0x6e, 0x89, 0xe0, 0xcd, 0x46, ++ 0x3a, 0xf2, 0x99, 0xf5, 0xf7, 0xc0, 0x4f, 0x70, 0xba, 0xfe, 0xd3, 0x1d, ++ 0x43, 0x50, 0xce, 0x15, 0xdf, 0x3b, 0x30, 0x8e, 0xf9, 0xb5, 0xf9, 0x98, ++ 0xd7, 0x53, 0xc7, 0xed, 0xfd, 0xb3, 0x1e, 0x67, 0x1c, 0xc4, 0x73, 0xce, ++ 0xb6, 0xf5, 0x8d, 0x83, 0x78, 0xcd, 0xd9, 0x43, 0xa5, 0xb1, 0xe1, 0xf2, ++ 0x79, 0x0e, 0x73, 0xbf, 0xf2, 0xf7, 0x2b, 0xac, 0x58, 0x76, 0x95, 0x09, ++ 0xcd, 0x62, 0x1c, 0xbe, 0x7f, 0x32, 0x01, 0xf5, 0x70, 0x59, 0x14, 0x01, ++ 0xb9, 0x13, 0x3a, 0x6e, 0x75, 0xba, 0x16, 0x97, 0xa9, 0x97, 0x31, 0x8e, ++ 0x4f, 0x58, 0x3e, 0x7e, 0x35, 0x3f, 0xc7, 0x02, 0x3a, 0x34, 0x2e, 0x41, ++ 0x87, 0xb7, 0x0d, 0xe3, 0x3f, 0x91, 0x06, 0xf5, 0xc4, 0x03, 0xfc, 0x7d, ++ 0xa8, 0xbb, 0x57, 0xf9, 0xbe, 0xf0, 0x05, 0x3f, 0x16, 0xe0, 0x7a, 0x38, ++ 0xaa, 0xb3, 0x22, 0xdc, 0x77, 0x0a, 0x7f, 0xc6, 0xe5, 0x6a, 0xe5, 0xbe, ++ 0x6f, 0x64, 0x88, 0x1f, 0x4c, 0x6a, 0xcb, 0xc2, 0xef, 0x4c, 0x4e, 0x2a, ++ 0x33, 0xbe, 0x0f, 0x78, 0x5f, 0x3a, 0xf7, 0xcf, 0x87, 0x90, 0x21, 0xb0, ++ 0xaf, 0xca, 0x7d, 0x63, 0x62, 0x87, 0x01, 0x5e, 0x0e, 0x89, 0xae, 0x28, ++ 0x0a, 0xdf, 0xba, 0xb6, 0x33, 0xb2, 0x3b, 0xcc, 0xfd, 0x5c, 0x28, 0x3c, ++ 0x61, 0x7e, 0x88, 0x23, 0x1f, 0x37, 0xbb, 0xaa, 0x01, 0x9e, 0xc7, 0xef, ++ 0x8e, 0xc2, 0xef, 0x00, 0xbc, 0xc1, 0xef, 0x8b, 0x72, 0xf9, 0xf7, 0x21, ++ 0xe1, 0x13, 0x42, 0x10, 0x3f, 0xdb, 0x9c, 0xce, 0xee, 0x21, 0xbe, 0x4e, ++ 0x67, 0x71, 0xf4, 0x6b, 0x2a, 0x8b, 0xcd, 0xc9, 0x74, 0xdd, 0xdc, 0x56, ++ 0x65, 0x30, 0xe4, 0x97, 0xf5, 0xe2, 0xfd, 0xbf, 0x4e, 0x77, 0xe2, 0xf3, ++ 0xde, 0x7c, 0x9c, 0xd6, 0xaf, 0xd7, 0x12, 0xd6, 0xef, 0x98, 0xac, 0xd4, ++ 0x86, 0x3b, 0x7f, 0x46, 0x26, 0xa3, 0x9f, 0x05, 0xc4, 0xf5, 0xe3, 0x42, ++ 0xe1, 0x87, 0x87, 0xb7, 0xe2, 0x7b, 0xed, 0x3e, 0x78, 0x3f, 0xee, 0x6c, ++ 0x99, 0xc0, 0xdf, 0x9f, 0x09, 0xa5, 0x6b, 0x82, 0xfc, 0x71, 0x76, 0xb4, ++ 0xe0, 0x05, 0xfd, 0x0b, 0x7e, 0x2c, 0xd6, 0x2b, 0x05, 0xd4, 0xff, 0x6f, ++ 0x68, 0x79, 0x15, 0x93, 0x98, 0xbe, 0xd4, 0xe8, 0x3e, 0x14, 0xce, 0x6f, ++ 0x71, 0xfa, 0xd5, 0xd6, 0xef, 0xe2, 0x70, 0x7f, 0x9b, 0xd3, 0x87, 0x06, ++ 0x67, 0x0d, 0xbe, 0xa1, 0xfb, 0xd5, 0xfa, 0x53, 0x79, 0x75, 0x95, 0x3e, ++ 0xde, 0x32, 0x71, 0xd7, 0xe0, 0xa7, 0xc1, 0x3e, 0xa9, 0x6d, 0x13, 0x14, ++ 0x13, 0x9d, 0xaa, 0x56, 0xea, 0x94, 0x81, 0x0f, 0xeb, 0x76, 0xdd, 0x67, ++ 0x86, 0xfb, 0x85, 0xe9, 0xfc, 0x77, 0x5a, 0x88, 0x54, 0x35, 0x48, 0x7f, ++ 0xbf, 0xfb, 0x75, 0xba, 0x84, 0xf3, 0xed, 0xcf, 0x1b, 0x81, 0xf6, 0xe3, ++ 0x17, 0x1b, 0x98, 0x7d, 0xac, 0xce, 0x3b, 0x13, 0x0b, 0x76, 0xd0, 0x1b, ++ 0x26, 0xd7, 0x5b, 0x23, 0x80, 0x1f, 0xdf, 0x14, 0x0d, 0xdf, 0x37, 0x0f, ++ 0x2d, 0xdf, 0x5f, 0xa1, 0x2c, 0x2a, 0x33, 0xeb, 0xe7, 0xcd, 0x62, 0x7e, ++ 0xd2, 0x92, 0x62, 0x33, 0x84, 0x87, 0xae, 0x5f, 0xd2, 0x6e, 0x4e, 0xd5, ++ 0xd1, 0xd3, 0xd7, 0x90, 0x8f, 0x35, 0x34, 0xd8, 0xde, 0x6b, 0x89, 0x13, ++ 0xf3, 0x18, 0xe9, 0x7a, 0xb8, 0x0f, 0xcf, 0x3d, 0x16, 0x02, 0xf9, 0x4b, ++ 0xb9, 0x2d, 0x1d, 0x25, 0x31, 0xf4, 0xf9, 0xf5, 0xf5, 0xf1, 0x8c, 0x0e, ++ 0x6b, 0x5a, 0xda, 0x65, 0xac, 0xb3, 0xef, 0x0d, 0x6b, 0xeb, 0x69, 0xeb, ++ 0x84, 0xf2, 0xd3, 0xe4, 0xca, 0x18, 0x43, 0x7d, 0x6e, 0x69, 0x67, 0x3a, ++ 0xc0, 0xa5, 0xd2, 0xe2, 0x5b, 0xee, 0x0a, 0x43, 0xa7, 0xf7, 0x67, 0x74, ++ 0xc7, 0x55, 0xbf, 0x9b, 0x9e, 0x50, 0x29, 0xdd, 0x0e, 0xfa, 0xff, 0x41, ++ 0x4f, 0x9c, 0xa9, 0x08, 0xf7, 0x3d, 0xd4, 0xd9, 0x1c, 0x6e, 0x3a, 0xfd, ++ 0x90, 0x1a, 0x4e, 0x3f, 0x2c, 0x5b, 0xe9, 0x4c, 0x05, 0xf8, 0x2f, 0xdb, ++ 0xd3, 0x37, 0x15, 0x98, 0x63, 0xd9, 0x2b, 0xe5, 0x29, 0xe1, 0xf4, 0xc3, ++ 0x3b, 0x2b, 0xd8, 0xfd, 0xe1, 0x51, 0x9e, 0x7f, 0xd9, 0x35, 0x99, 0xea, ++ 0x87, 0xcb, 0x75, 0xfa, 0x61, 0x72, 0x14, 0xd2, 0x47, 0xe8, 0xb8, 0x71, ++ 0x19, 0xda, 0x77, 0x55, 0x2e, 0xa0, 0x1f, 0x34, 0x7c, 0xfd, 0x87, 0xe5, ++ 0xcc, 0x3b, 0xa0, 0x1f, 0xc2, 0xf0, 0xf5, 0xcc, 0x0c, 0xa3, 0x7e, 0x98, ++ 0xda, 0x36, 0x1b, 0xf5, 0xc3, 0xd4, 0xc9, 0x22, 0x71, 0xea, 0xe2, 0x71, ++ 0x53, 0x32, 0x2e, 0xa4, 0x1f, 0x8a, 0x53, 0xa6, 0x63, 0xdd, 0xec, 0x8a, ++ 0x09, 0x43, 0x37, 0xef, 0x70, 0xbf, 0x04, 0xe0, 0x0a, 0x25, 0xac, 0x03, ++ 0x7a, 0xe2, 0xee, 0x0c, 0x26, 0xf7, 0x43, 0xf5, 0x45, 0x24, 0x79, 0x9e, ++ 0x7d, 0xb1, 0xf2, 0xfc, 0x7f, 0x08, 0xce, 0x9a, 0x3c, 0x5f, 0x36, 0x85, ++ 0xbd, 0xcf, 0xdf, 0x93, 0x0e, 0x09, 0xca, 0xeb, 0x65, 0xd3, 0x05, 0xfc, ++ 0x1d, 0x93, 0x65, 0x7b, 0x98, 0x3c, 0x5f, 0x76, 0x03, 0x8f, 0x4b, 0x86, ++ 0xc8, 0xd7, 0x2a, 0x90, 0xaf, 0xf9, 0x7a, 0xf9, 0xca, 0xc6, 0xd7, 0xba, ++ 0x99, 0x3e, 0xa8, 0xdb, 0x95, 0xf5, 0xd3, 0x19, 0xf4, 0xf9, 0x75, 0xcd, ++ 0x66, 0x97, 0x95, 0xf6, 0xbf, 0x2e, 0x28, 0x6f, 0x0b, 0xf4, 0xf2, 0xf6, ++ 0xee, 0x0c, 0x49, 0x83, 0x73, 0xa6, 0x12, 0x06, 0xbf, 0xd3, 0x66, 0xc4, ++ 0x10, 0xa7, 0x51, 0x5e, 0xf5, 0x03, 0x39, 0x75, 0x7c, 0xf0, 0xcb, 0xb9, ++ 0xcf, 0x00, 0xdd, 0xbf, 0xc1, 0xde, 0x37, 0xfb, 0x33, 0xd7, 0xe3, 0xaf, ++ 0x0f, 0x7e, 0x39, 0x1f, 0xe2, 0xe9, 0x1f, 0xf1, 0x79, 0x5b, 0x33, 0x18, ++ 0x5e, 0x4e, 0xaf, 0x20, 0x8b, 0xca, 0x28, 0x1c, 0x4a, 0xe7, 0x31, 0x7b, ++ 0x78, 0xe9, 0x76, 0x11, 0xe1, 0x50, 0xdb, 0xca, 0xec, 0xbc, 0xda, 0x6d, ++ 0x02, 0xbe, 0xd7, 0x5b, 0x91, 0xf7, 0x0d, 0xde, 0x1b, 0x2e, 0xde, 0xc3, ++ 0xee, 0x0d, 0xe1, 0xbb, 0xbe, 0xc5, 0x3a, 0x3c, 0x2e, 0x7e, 0xa3, 0xb3, ++ 0xa9, 0x37, 0x3c, 0xdf, 0x24, 0xe0, 0xbd, 0x67, 0xb5, 0x6b, 0x31, 0x7b, ++ 0xff, 0xef, 0x61, 0x16, 0x27, 0xb6, 0xd2, 0xff, 0x20, 0x5f, 0x62, 0x6d, ++ 0x74, 0xec, 0x66, 0x82, 0x79, 0x3a, 0x2a, 0xc6, 0x9b, 0x97, 0x72, 0xb8, ++ 0x55, 0x5a, 0xfc, 0x07, 0x61, 0x7c, 0xe5, 0x13, 0x82, 0x6b, 0x13, 0xca, ++ 0x35, 0x63, 0x7c, 0x7a, 0x69, 0xbf, 0xb1, 0x9f, 0x80, 0x7f, 0xb0, 0x78, ++ 0x5b, 0x48, 0xbb, 0x6b, 0x2d, 0xde, 0x67, 0x2c, 0x85, 0xb8, 0xb3, 0xce, ++ 0x1f, 0xf9, 0x3d, 0xe7, 0x93, 0xf9, 0xa2, 0x2f, 0xf7, 0x19, 0xc8, 0x0f, ++ 0x7c, 0x4b, 0x0c, 0xfb, 0xbb, 0x67, 0x5a, 0xbf, 0x6e, 0x38, 0xd4, 0x7c, ++ 0x4f, 0x38, 0x1c, 0xa6, 0x70, 0xc8, 0xff, 0xe7, 0xe1, 0x50, 0xd7, 0x76, ++ 0x1f, 0xe6, 0xdf, 0x7c, 0xdf, 0xf3, 0xbf, 0x93, 0xc1, 0xe3, 0xed, 0x79, ++ 0x24, 0x1f, 0xf8, 0xe5, 0xcf, 0x26, 0x15, 0xf9, 0xdf, 0xf3, 0xaa, 0x88, ++ 0xef, 0x17, 0xcf, 0xbb, 0xaf, 0x7f, 0xaa, 0x3e, 0x4f, 0xe9, 0x38, 0x87, ++ 0xc3, 0x1b, 0x26, 0x77, 0x53, 0x1a, 0xf4, 0xab, 0x65, 0xef, 0x21, 0x2f, ++ 0xd8, 0xb8, 0xe3, 0x00, 0xbc, 0x22, 0x3e, 0xa3, 0x85, 0x0c, 0x86, 0xb0, ++ 0xfd, 0x82, 0x87, 0x8d, 0x7a, 0xb2, 0x5b, 0x2f, 0xb7, 0x3a, 0x51, 0xef, ++ 0xce, 0xa8, 0xdf, 0x21, 0xc0, 0x77, 0xfd, 0xe7, 0x8b, 0x04, 0x7f, 0x0f, ++ 0x6c, 0x6e, 0x9e, 0xc5, 0x0d, 0xf7, 0xaf, 0x87, 0xa3, 0xfc, 0x28, 0xcf, ++ 0x34, 0x3a, 0xb4, 0x67, 0xb2, 0xdf, 0x8f, 0x8b, 0xc9, 0x64, 0xeb, 0x1e, ++ 0xef, 0xe5, 0x2f, 0x43, 0xbf, 0x62, 0x97, 0xa0, 0x20, 0x9f, 0xc0, 0x77, ++ 0x35, 0xa0, 0x4e, 0xf1, 0x00, 0xdf, 0xd5, 0xd8, 0x3f, 0xec, 0xeb, 0x0a, ++ 0x0e, 0x77, 0x8c, 0xcf, 0xd4, 0xed, 0x62, 0x78, 0xaa, 0xa3, 0x78, 0x01, ++ 0x3e, 0xab, 0xa0, 0xf6, 0x2e, 0xe8, 0x91, 0xeb, 0xa9, 0xde, 0xc1, 0xfb, ++ 0xb2, 0xb6, 0x76, 0x33, 0xf4, 0xaf, 0xa1, 0xfd, 0x12, 0x51, 0xee, 0xb8, ++ 0xd0, 0xdf, 0xd5, 0xf4, 0x13, 0xdc, 0xdf, 0x15, 0xa7, 0xe8, 0xf0, 0xb6, ++ 0xe7, 0x18, 0xa3, 0xdf, 0xad, 0x82, 0x8b, 0x84, 0xc1, 0x5b, 0x0e, 0xfd, ++ 0xef, 0x7c, 0x78, 0x8b, 0x84, 0x2f, 0xcd, 0x7e, 0xb8, 0x58, 0xbc, 0x69, ++ 0xf0, 0xb0, 0x67, 0x1a, 0xf1, 0x77, 0x38, 0xaa, 0xa3, 0x72, 0x08, 0xde, ++ 0x53, 0xb1, 0xdf, 0x03, 0x22, 0x6d, 0xf1, 0x78, 0xaf, 0xf2, 0x51, 0x73, ++ 0x5f, 0xc4, 0x63, 0x6f, 0x2e, 0x67, 0x43, 0xe9, 0x1b, 0xec, 0x7d, 0xa7, ++ 0x2e, 0xbe, 0x74, 0x35, 0x6c, 0x1c, 0x3f, 0x60, 0x1f, 0x85, 0x79, 0x72, ++ 0xb8, 0x6e, 0x36, 0xb3, 0x87, 0xf4, 0xf2, 0x25, 0xd4, 0x8f, 0xae, 0x23, ++ 0x1d, 0x68, 0xd7, 0x24, 0xa7, 0xb9, 0x7f, 0x9d, 0xae, 0xcb, 0x8b, 0x9b, ++ 0xca, 0xf3, 0x57, 0xba, 0xef, 0x75, 0x83, 0xfd, 0xe6, 0x67, 0x9c, 0xa7, ++ 0x1f, 0x71, 0x94, 0xe0, 0xfd, 0x8f, 0x96, 0x57, 0x0b, 0xbf, 0x20, 0x85, ++ 0xf9, 0x60, 0xbc, 0xbe, 0x3f, 0xa3, 0xe0, 0xe8, 0x0c, 0x7a, 0xde, 0x2f, ++ 0xd6, 0x88, 0xf8, 0x9e, 0xf2, 0xb5, 0x26, 0xe7, 0x91, 0x22, 0xe0, 0xe3, ++ 0x75, 0x66, 0x02, 0x74, 0xf9, 0xc5, 0xeb, 0x66, 0x95, 0xd9, 0xa1, 0x31, ++ 0x28, 0x87, 0x67, 0xbf, 0x71, 0xdc, 0x0c, 0xa1, 0x91, 0xd9, 0x90, 0x5f, ++ 0x40, 0xfb, 0xcd, 0xbe, 0x93, 0xc9, 0xdb, 0xe3, 0x30, 0x19, 0x6d, 0xfb, ++ 0x03, 0xd5, 0x63, 0x2a, 0x7c, 0xbf, 0x84, 0xb4, 0x0c, 0x85, 0xfc, 0xfd, ++ 0xc9, 0xae, 0xf6, 0x72, 0xc8, 0xdf, 0x9e, 0x92, 0x7f, 0x78, 0x15, 0xdc, ++ 0xd3, 0x5d, 0x53, 0xaa, 0x1c, 0x39, 0x02, 0xf0, 0x5d, 0x2b, 0x12, 0x80, ++ 0xef, 0x87, 0x6b, 0x4a, 0xd1, 0x5f, 0xb9, 0xe9, 0x46, 0x01, 0xe9, 0xfa, ++ 0xdd, 0x15, 0xf8, 0x9b, 0x58, 0x64, 0xca, 0xe4, 0xac, 0x23, 0x47, 0xe8, ++ 0xba, 0x37, 0xac, 0x49, 0xc6, 0x7b, 0xb6, 0x19, 0xea, 0x81, 0x72, 0xa0, ++ 0xb7, 0xb9, 0x13, 0xed, 0x36, 0xb8, 0xa7, 0x1b, 0x97, 0x23, 0x06, 0xf3, ++ 0x7b, 0x09, 0xbc, 0x0f, 0xd5, 0xb1, 0x0a, 0xe4, 0xf7, 0x8c, 0xfa, 0x1b, ++ 0xa7, 0xc0, 0x7e, 0x6b, 0xa8, 0x5e, 0x80, 0xb8, 0x6b, 0x4d, 0xdb, 0xe1, ++ 0xf2, 0x54, 0xa8, 0x6f, 0x14, 0xf0, 0xf7, 0xd4, 0xea, 0x3c, 0x6e, 0x19, ++ 0x5e, 0x85, 0xea, 0x78, 0xf8, 0x8c, 0x0c, 0xf1, 0x8f, 0x6a, 0xda, 0x0f, ++ 0xd0, 0x53, 0xb7, 0x91, 0xf5, 0xab, 0xdb, 0x22, 0xe0, 0x7b, 0x3e, 0xd5, ++ 0x54, 0x3e, 0xc0, 0xf9, 0xaa, 0xb7, 0x08, 0x04, 0x5e, 0x28, 0xe9, 0xa0, ++ 0xf6, 0x9f, 0x95, 0xcd, 0xeb, 0x85, 0x0f, 0x34, 0x75, 0x6c, 0xa4, 0xe3, ++ 0x69, 0x7d, 0x01, 0x8c, 0x87, 0x79, 0xb7, 0xc4, 0xe3, 0xef, 0xde, 0xd5, ++ 0xbd, 0xce, 0xde, 0x13, 0xaa, 0x2e, 0x5c, 0x79, 0x10, 0xe4, 0x53, 0x35, ++ 0x1d, 0x47, 0x1f, 0x93, 0x8e, 0x2d, 0x37, 0xe2, 0x7c, 0x0b, 0x37, 0x0a, ++ 0x04, 0x52, 0x83, 0x6b, 0x0a, 0xb3, 0xee, 0x29, 0x84, 0xf9, 0x5e, 0x37, ++ 0xe3, 0xf7, 0x41, 0x8e, 0xb6, 0xff, 0x4c, 0x86, 0x7d, 0xcf, 0xa4, 0xeb, ++ 0xa5, 0xd1, 0xf9, 0xe7, 0x8a, 0x9d, 0xe5, 0x98, 0x6f, 0x7d, 0xbb, 0xa0, ++ 0xe0, 0x7b, 0x4d, 0x65, 0xb7, 0x21, 0x1f, 0x74, 0x71, 0x3e, 0x20, 0x49, ++ 0xb7, 0xb2, 0xfb, 0x66, 0x81, 0xd7, 0xb9, 0x5d, 0xa8, 0xe9, 0xc7, 0xc7, ++ 0x32, 0xb3, 0x91, 0xbe, 0xab, 0x6f, 0x59, 0xd9, 0x04, 0xe7, 0xea, 0xf4, ++ 0x24, 0x67, 0x81, 0x4b, 0x54, 0xb7, 0xeb, 0x8c, 0x0c, 0x76, 0xde, 0x47, ++ 0x2b, 0xe0, 0x03, 0x34, 0x14, 0x6f, 0x3c, 0x0f, 0x6e, 0xbf, 0xe7, 0xb8, ++ 0xdc, 0xa9, 0x93, 0x53, 0xbe, 0xcc, 0xbe, 0x48, 0x8f, 0xf3, 0x76, 0x15, ++ 0x23, 0x9f, 0xcf, 0x27, 0x55, 0x78, 0x2f, 0xee, 0x5e, 0xc9, 0xf4, 0xf2, ++ 0xb1, 0x55, 0x51, 0x5e, 0x01, 0xec, 0x11, 0xb3, 0x82, 0x7a, 0x73, 0xff, ++ 0xaa, 0x1f, 0x3d, 0x04, 0xe7, 0x3f, 0xfd, 0x94, 0x19, 0xef, 0x4b, 0x4f, ++ 0x67, 0x74, 0x62, 0x7c, 0xf6, 0xc4, 0x46, 0x33, 0x7e, 0x3f, 0xa4, 0x61, ++ 0xa3, 0x88, 0x72, 0xe4, 0xc4, 0x76, 0x16, 0x17, 0x12, 0x1f, 0x99, 0x52, ++ 0x91, 0x06, 0xf0, 0xa3, 0x72, 0x00, 0xe8, 0x6e, 0xff, 0xc6, 0x52, 0x19, ++ 0xe4, 0xe1, 0x09, 0xaf, 0x80, 0xe3, 0x4b, 0x1f, 0xb9, 0x39, 0x85, 0xc5, ++ 0x7d, 0x8d, 0xf2, 0xa3, 0xda, 0xb9, 0x08, 0xe5, 0xc5, 0x23, 0x51, 0x4c, ++ 0x3e, 0x2c, 0x78, 0x38, 0xfc, 0xfd, 0x6a, 0x44, 0x79, 0xb1, 0xbc, 0x82, ++ 0xc9, 0xf7, 0x10, 0x79, 0xb0, 0x34, 0xbd, 0x09, 0xe3, 0x7e, 0xa1, 0x72, ++ 0xa2, 0x8e, 0xd8, 0x34, 0xf9, 0x90, 0x07, 0xf5, 0x0e, 0x5f, 0x1a, 0xd2, ++ 0x6f, 0xed, 0xeb, 0x66, 0x02, 0xf6, 0x5d, 0xad, 0xa4, 0xcc, 0x7c, 0x18, ++ 0xe8, 0x66, 0x46, 0x14, 0xdc, 0x24, 0x53, 0xbe, 0xf0, 0x1d, 0x00, 0xf9, ++ 0xf6, 0x85, 0x57, 0x70, 0x7a, 0xe8, 0xf3, 0xeb, 0x67, 0x3d, 0x3f, 0x14, ++ 0xe0, 0xf7, 0x31, 0xc0, 0x1b, 0xf8, 0x62, 0x43, 0x22, 0xde, 0xaf, 0x56, ++ 0x7b, 0x67, 0x23, 0x5c, 0xb5, 0x7c, 0xc4, 0x05, 0x0f, 0x1b, 0xe9, 0x59, ++ 0xcb, 0x7b, 0x9a, 0xee, 0x16, 0x83, 0xef, 0xfb, 0xd0, 0xff, 0x5d, 0x5f, ++ 0x13, 0x43, 0x54, 0x5d, 0xbf, 0xa3, 0x77, 0x52, 0xba, 0xa4, 0xeb, 0xcd, ++ 0xda, 0x25, 0x78, 0xe1, 0x3b, 0x48, 0x47, 0xef, 0x3c, 0x76, 0xf0, 0xe6, ++ 0x7c, 0xac, 0x2b, 0x40, 0x87, 0xb5, 0xb7, 0x70, 0xbd, 0xba, 0xc1, 0x8e, ++ 0x74, 0x7b, 0xf4, 0xd6, 0x33, 0xab, 0x80, 0x2e, 0x67, 0xde, 0x21, 0xe0, ++ 0xfe, 0x89, 0xc7, 0xdd, 0x04, 0x7a, 0xa5, 0xf6, 0x61, 0xc1, 0x09, 0x71, ++ 0xcd, 0x05, 0x77, 0xb0, 0xf1, 0x0b, 0xe8, 0x78, 0xa0, 0x97, 0xa3, 0x3f, ++ 0x63, 0xf4, 0x43, 0xe9, 0xd8, 0x09, 0x74, 0x5e, 0xbb, 0xf1, 0xbe, 0x83, ++ 0xd8, 0x7f, 0x8b, 0xe0, 0x84, 0xf9, 0x8f, 0x6e, 0x9a, 0x8d, 0x7a, 0xb8, ++ 0xc6, 0x23, 0x12, 0x7c, 0xbe, 0xe5, 0x18, 0xda, 0xcb, 0x54, 0x1f, 0x60, ++ 0xde, 0xd0, 0x7e, 0x8f, 0x98, 0x02, 0x74, 0x5e, 0xdb, 0x68, 0x51, 0x00, ++ 0xaf, 0x1a, 0xbd, 0x68, 0xf4, 0x77, 0x8c, 0x7f, 0x87, 0x9a, 0x58, 0x5d, ++ 0x83, 0xae, 0xa1, 0xe3, 0x6e, 0xcc, 0x74, 0x86, 0xa5, 0x3b, 0x71, 0x5a, ++ 0x16, 0xd2, 0x57, 0xdd, 0x76, 0x33, 0xd2, 0x4b, 0x9d, 0x87, 0xd1, 0xd3, ++ 0xb1, 0xa7, 0x44, 0xa4, 0xc3, 0xfd, 0xab, 0xae, 0xad, 0x00, 0xfa, 0x39, ++ 0xbd, 0x55, 0x88, 0x40, 0x7f, 0x94, 0xbe, 0xf2, 0x83, 0xf4, 0x25, 0x3e, ++ 0x62, 0xc6, 0xf1, 0x0b, 0x9e, 0x64, 0xf1, 0x85, 0xfd, 0x1b, 0x19, 0x5d, ++ 0x9f, 0x68, 0x65, 0xf6, 0x69, 0xe9, 0x23, 0xfd, 0xd1, 0xaf, 0x59, 0xf0, ++ 0x86, 0x99, 0xb0, 0xf8, 0x03, 0xb1, 0xe9, 0xed, 0x8f, 0x0b, 0xd1, 0x61, ++ 0x28, 0xdd, 0xf5, 0xd0, 0x4b, 0x9c, 0x0e, 0x23, 0xd1, 0x9d, 0xdb, 0xdc, ++ 0x32, 0x15, 0xf2, 0x0f, 0x66, 0x3f, 0x4d, 0xf7, 0xef, 0x0c, 0xc2, 0xab, ++ 0xb4, 0xe9, 0x56, 0x8c, 0x03, 0x94, 0x36, 0x4d, 0xc7, 0xf3, 0x6a, 0xfc, ++ 0x53, 0x2d, 0xb1, 0xbc, 0x8d, 0x79, 0xcd, 0x2b, 0x59, 0x3e, 0xa3, 0xc4, ++ 0xf2, 0x7b, 0xbe, 0xf3, 0xbe, 0x42, 0xf6, 0x71, 0x5f, 0x50, 0x3f, 0xe6, ++ 0x81, 0x7e, 0x84, 0xfc, 0x13, 0x1f, 0xdd, 0xc7, 0xcb, 0xdb, 0x1f, 0x43, ++ 0x3b, 0xe0, 0xf3, 0x5f, 0x1d, 0xc3, 0xfc, 0xc6, 0xc5, 0x2f, 0x50, 0xfc, ++ 0xd3, 0xfe, 0xa7, 0xb7, 0xdb, 0x89, 0x0f, 0xed, 0x6c, 0x2f, 0xca, 0x99, ++ 0x45, 0xad, 0x22, 0xe6, 0x97, 0x12, 0xc9, 0x57, 0x70, 0x8d, 0xee, 0x7d, ++ 0x0d, 0x2d, 0x2f, 0x63, 0xf1, 0x6f, 0xec, 0x08, 0xf7, 0x45, 0x3b, 0x2d, ++ 0xde, 0x4a, 0x3a, 0x7e, 0xd1, 0xb3, 0xc7, 0x07, 0xe1, 0x3d, 0xf9, 0x5d, ++ 0xcc, 0x4e, 0xf5, 0xfc, 0x8a, 0x7d, 0x6f, 0x86, 0x78, 0x3a, 0x07, 0x5d, ++ 0x03, 0xf9, 0x99, 0x12, 0xcb, 0x0f, 0x09, 0xd5, 0xbf, 0xd1, 0x7d, 0x58, ++ 0x1c, 0xe7, 0xd4, 0xf3, 0x31, 0xf8, 0x5d, 0x26, 0x61, 0x5b, 0x3b, 0xde, ++ 0x33, 0x2d, 0x6a, 0xb9, 0xd6, 0x6c, 0xd1, 0xc5, 0x2d, 0x85, 0x3e, 0x66, ++ 0xad, 0x1f, 0xde, 0xdf, 0x78, 0x28, 0xfe, 0xe1, 0x7e, 0x11, 0xf6, 0xa7, ++ 0xff, 0x5d, 0x09, 0x2d, 0x2f, 0xe4, 0xd4, 0x93, 0x8c, 0x7f, 0x16, 0xed, ++ 0x32, 0xa3, 0x7d, 0xb4, 0x68, 0xdb, 0x26, 0x8c, 0xf7, 0xd5, 0x6d, 0x3b, ++ 0x83, 0xf9, 0xb3, 0xa5, 0xbf, 0x79, 0x2a, 0x16, 0xe0, 0x50, 0xb7, 0x4b, ++ 0x34, 0xe6, 0x4f, 0x6d, 0x13, 0x7d, 0x16, 0xcc, 0xf3, 0x12, 0x8f, 0x59, ++ 0xd8, 0xf7, 0x39, 0x0c, 0x79, 0x4c, 0xb5, 0xad, 0xec, 0xfd, 0x8e, 0xda, ++ 0x16, 0x9e, 0x27, 0x14, 0x92, 0x3f, 0xb3, 0xf8, 0x37, 0x7b, 0x9e, 0xf5, ++ 0x50, 0xd0, 0x2c, 0x7e, 0xe6, 0x89, 0x58, 0xe0, 0xa7, 0x4f, 0x3b, 0xb6, ++ 0xc6, 0x02, 0x3c, 0xe9, 0x7c, 0x98, 0x7f, 0x34, 0xb1, 0x30, 0x42, 0x7e, ++ 0xd2, 0x85, 0xf2, 0x92, 0x5a, 0xd6, 0xf2, 0xbc, 0xa4, 0xf1, 0xf8, 0x7b, ++ 0x1d, 0xa1, 0x79, 0x49, 0x9f, 0xc2, 0x3f, 0xa8, 0x1e, 0x77, 0xf5, 0x31, ++ 0xe6, 0x79, 0x92, 0x6d, 0x4c, 0x6e, 0x51, 0xec, 0x17, 0x84, 0x7b, 0x1f, ++ 0x49, 0xb3, 0x5f, 0x16, 0x3f, 0xf5, 0xd5, 0xa3, 0x90, 0x47, 0x7b, 0x6a, ++ 0xe7, 0x67, 0x8f, 0xc2, 0xfe, 0x97, 0xfc, 0xe3, 0x8b, 0x47, 0x21, 0xaf, ++ 0x83, 0xec, 0x8d, 0x52, 0xc0, 0x9e, 0xa8, 0xfb, 0xd5, 0x3b, 0x98, 0x7f, ++ 0xa8, 0x8d, 0x1b, 0xdb, 0x87, 0xfb, 0x47, 0x4f, 0x3e, 0x81, 0xf9, 0x9b, ++ 0xa7, 0xdf, 0xb3, 0xa0, 0x5d, 0x78, 0x7a, 0xcf, 0x89, 0x4c, 0xb0, 0x17, ++ 0x4e, 0xef, 0xf8, 0x26, 0x05, 0xf2, 0x32, 0x97, 0xef, 0x29, 0xc7, 0xf8, ++ 0xc4, 0xf2, 0xdf, 0x96, 0xe2, 0x7b, 0xa2, 0x91, 0xfc, 0x4d, 0xa0, 0x4f, ++ 0xef, 0x45, 0xe4, 0x8f, 0x86, 0xe2, 0x63, 0x7f, 0xab, 0xe8, 0xb3, 0xd1, ++ 0x7d, 0x7e, 0xfe, 0xae, 0x05, 0xf9, 0xbf, 0x3b, 0xcf, 0xac, 0x65, 0x29, ++ 0xcb, 0xdf, 0x73, 0xf2, 0xfc, 0xb2, 0xed, 0xe1, 0xf3, 0x74, 0xb5, 0x7c, ++ 0xa8, 0xda, 0xd6, 0x6b, 0x26, 0x8e, 0x04, 0x79, 0xd7, 0xca, 0xf4, 0x7a, ++ 0x77, 0x7e, 0xd4, 0x85, 0xf2, 0xca, 0xde, 0xa6, 0x78, 0xbd, 0xfc, 0x22, ++ 0xf0, 0xb7, 0x9d, 0xe7, 0x0f, 0xb6, 0x8c, 0x0f, 0x9b, 0x57, 0xf6, 0x39, ++ 0xfc, 0x83, 0xe2, 0xa9, 0xa6, 0x8f, 0x31, 0xaf, 0xec, 0xab, 0xd6, 0xf9, ++ 0xbf, 0xfc, 0x39, 0x3c, 0x6b, 0x0d, 0xff, 0xbe, 0xb6, 0xc6, 0xd7, 0x17, ++ 0x82, 0x9b, 0x96, 0x07, 0x3c, 0xb4, 0x8f, 0x7a, 0x53, 0x1f, 0xe0, 0x8f, ++ 0x9d, 0xbf, 0xc6, 0x3c, 0x3e, 0xc0, 0x5b, 0xa5, 0x13, 0xf4, 0xff, 0x57, ++ 0x99, 0x10, 0xdf, 0x3c, 0x69, 0xf6, 0x63, 0xdc, 0xd0, 0xbf, 0xc7, 0xa2, ++ 0x40, 0xbe, 0xd7, 0xa2, 0x3d, 0x47, 0x91, 0x5f, 0x4e, 0xff, 0xf6, 0x30, ++ 0xe6, 0xd9, 0x12, 0x9e, 0x8f, 0x7b, 0x9a, 0x74, 0xff, 0xb1, 0xbc, 0x49, ++ 0x1e, 0xbb, 0xa8, 0xdb, 0x62, 0x67, 0xf9, 0x68, 0x1c, 0xfe, 0x90, 0xaf, ++ 0xe6, 0x8c, 0xc5, 0x76, 0x9e, 0x97, 0xc6, 0xe8, 0x58, 0xcb, 0x57, 0x8b, ++ 0x94, 0xa7, 0xf6, 0x64, 0x9f, 0x6c, 0x66, 0x5f, 0xf3, 0xfc, 0xe4, 0xa5, ++ 0xce, 0x0e, 0x59, 0xb1, 0x05, 0xf1, 0x05, 0xf8, 0x11, 0x0a, 0x01, 0x5f, ++ 0xc7, 0x0c, 0xf9, 0x7f, 0xda, 0xb9, 0x43, 0xe7, 0x53, 0x00, 0x0e, 0x57, ++ 0xe8, 0xf3, 0x2f, 0x23, 0xe5, 0x03, 0x72, 0x3b, 0xbd, 0x07, 0xbe, 0x98, ++ 0x5c, 0x3e, 0xbd, 0x89, 0xe7, 0x63, 0x76, 0xe7, 0x59, 0x12, 0x92, 0x9e, ++ 0x07, 0xf9, 0x41, 0x4c, 0x1f, 0xd6, 0x79, 0x85, 0xa3, 0xe1, 0xf0, 0xab, ++ 0xe5, 0x5f, 0x6e, 0x09, 0xc1, 0xaf, 0x76, 0xbe, 0x48, 0x7c, 0xa1, 0xf1, ++ 0xe7, 0x85, 0xf7, 0xfd, 0xcf, 0xc1, 0xe5, 0xa1, 0x3e, 0xec, 0x7d, 0x00, ++ 0x0d, 0x3e, 0xa7, 0xbe, 0x0d, 0x2f, 0xa7, 0x5f, 0xe4, 0xfc, 0x4e, 0xfd, ++ 0x96, 0xbd, 0x7d, 0x74, 0xef, 0xbd, 0xcc, 0xe2, 0x7e, 0x8b, 0x96, 0x77, ++ 0xa6, 0xed, 0xb7, 0xa9, 0x85, 0xe9, 0xe5, 0x53, 0xdb, 0x98, 0xdd, 0x18, ++ 0xca, 0xdf, 0xb5, 0x11, 0x7e, 0x57, 0xeb, 0x0d, 0xbe, 0x4e, 0xed, 0xae, ++ 0xf6, 0x41, 0x20, 0x87, 0x4e, 0xed, 0x7b, 0x9e, 0xd3, 0x9d, 0x97, 0xbf, ++ 0x87, 0x73, 0x4c, 0xf6, 0x70, 0xb9, 0xed, 0xd5, 0xcb, 0xed, 0x08, 0xbf, ++ 0x63, 0x76, 0xb4, 0x0f, 0xf3, 0x17, 0xa9, 0xbf, 0x1b, 0x76, 0xbe, 0xba, ++ 0xed, 0x67, 0xc2, 0xce, 0xf7, 0xa9, 0xa4, 0x5e, 0x0b, 0xfb, 0xff, 0xb4, ++ 0x83, 0xd9, 0x21, 0x9f, 0xb6, 0x88, 0x61, 0x7f, 0x0f, 0xa1, 0xbd, 0x8f, ++ 0xf1, 0x7d, 0xd5, 0x26, 0xbb, 0x8c, 0x7e, 0x97, 0x18, 0x1b, 0x8d, 0xf2, ++ 0x68, 0xb9, 0xbd, 0xf0, 0x5d, 0xf8, 0xbe, 0xdb, 0x72, 0xbb, 0x8c, 0xf9, ++ 0x0e, 0x0d, 0x2b, 0x79, 0x7e, 0xc4, 0x9d, 0x2e, 0xfc, 0x3d, 0x8f, 0x06, ++ 0xfb, 0x58, 0xfc, 0x1d, 0x88, 0x55, 0x00, 0x1f, 0x9d, 0x1f, 0x6a, 0x56, ++ 0xdc, 0xf8, 0xfb, 0x13, 0x66, 0x47, 0x55, 0x3e, 0xf8, 0x57, 0xa1, 0xef, ++ 0x77, 0xca, 0x49, 0x26, 0xe2, 0xd5, 0xe3, 0x5f, 0xf2, 0xa4, 0xe3, 0xf7, ++ 0xbb, 0xb2, 0xbf, 0x96, 0x40, 0xef, 0x74, 0xac, 0x30, 0xbe, 0x37, 0xd2, ++ 0x21, 0x29, 0x07, 0x12, 0xe9, 0x7c, 0x1d, 0x65, 0x82, 0x0b, 0xec, 0xdd, ++ 0x9e, 0x74, 0x66, 0x9c, 0xff, 0x6a, 0x55, 0x34, 0xc4, 0xcf, 0x20, 0x56, ++ 0x0d, 0xe7, 0x3a, 0xeb, 0x62, 0xdf, 0x45, 0xb3, 0x9b, 0x7c, 0x0a, 0xed, ++ 0x42, 0xec, 0x51, 0x1d, 0x0e, 0x74, 0xf4, 0x9c, 0xec, 0x77, 0xab, 0xe1, ++ 0xe7, 0xba, 0xe0, 0x3e, 0x7c, 0xdd, 0x0a, 0x6b, 0x3f, 0x78, 0x8f, 0xeb, ++ 0xff, 0x02, 0x2f, 0xb6, 0xd5, 0x84, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xb5, 0x7d, ++ 0x09, 0x7c, 0x54, 0xd5, 0xb9, 0xf8, 0xb9, 0x73, 0xef, 0x4c, 0x26, 0xcb, ++ 0x24, 0x93, 0x65, 0x60, 0x20, 0x2c, 0x37, 0xfb, 0x1e, 0x26, 0x10, 0x12, ++ 0xd0, 0x58, 0x26, 0x1b, 0x06, 0x09, 0x38, 0x22, 0x55, 0xd4, 0x80, 0x37, ++ 0x6c, 0x61, 0x0b, 0x89, 0x68, 0x6d, 0x6c, 0xfd, 0x97, 0x61, 0x31, 0x45, ++ 0xe5, 0xb5, 0xa1, 0x2e, 0x50, 0xa5, 0xcf, 0x01, 0xc1, 0xc7, 0xa3, 0xf8, ++ 0x1a, 0x16, 0x6b, 0xac, 0x51, 0x07, 0x08, 0x14, 0x2d, 0xda, 0xd0, 0xe2, ++ 0x93, 0xfa, 0x57, 0x1b, 0x94, 0x2a, 0x28, 0x98, 0x11, 0x94, 0xf2, 0x5a, ++ 0x2c, 0xff, 0xf3, 0x7d, 0xe7, 0x9c, 0xcc, 0xdc, 0x9b, 0x09, 0x84, 0xbe, ++ 0xfe, 0xa3, 0xfe, 0xae, 0xe7, 0xde, 0xb3, 0x7e, 0xfb, 0xf7, 0x9d, 0xef, ++ 0x9c, 0x89, 0x25, 0x2e, 0x89, 0xc8, 0x84, 0xd8, 0x5c, 0x8a, 0xb7, 0x27, ++ 0x9b, 0xe0, 0xdf, 0x15, 0xfa, 0x5f, 0x1c, 0xa1, 0x65, 0x2b, 0x2f, 0xa7, ++ 0xe0, 0xe3, 0x78, 0x7a, 0x09, 0x21, 0x31, 0xec, 0x15, 0xfd, 0x6e, 0xdf, ++ 0x6f, 0x92, 0x08, 0x89, 0xca, 0x26, 0xd9, 0x4a, 0x31, 0x21, 0x76, 0x12, ++ 0xe5, 0x92, 0x69, 0xf9, 0x89, 0x58, 0xf7, 0x61, 0x29, 0x96, 0x90, 0xf5, ++ 0x36, 0xad, 0x96, 0xd0, 0xe7, 0x15, 0xf8, 0x9b, 0xd4, 0xff, 0x49, 0x5c, ++ 0xca, 0x29, 0x18, 0xcf, 0x4a, 0xff, 0xb9, 0x92, 0x4a, 0xfb, 0x9b, 0x40, ++ 0xcb, 0xd6, 0xe0, 0xf8, 0xf1, 0x6e, 0x7d, 0x39, 0x91, 0x84, 0x94, 0x71, ++ 0x3e, 0x6e, 0x42, 0x86, 0xc0, 0x7b, 0xfa, 0xa7, 0x12, 0x32, 0x59, 0xa6, ++ 0x33, 0xa3, 0xf3, 0x88, 0xaf, 0x36, 0xf9, 0x22, 0x24, 0xfc, 0x5e, 0x9b, ++ 0x31, 0x24, 0x38, 0xdf, 0x78, 0x07, 0x71, 0xf9, 0xe1, 0xfb, 0xb4, 0x18, ++ 0x97, 0x97, 0xd6, 0x8f, 0x89, 0x61, 0xf3, 0x13, 0xf3, 0xa5, 0xf3, 0xf9, ++ 0x18, 0xe6, 0xa3, 0xd2, 0x7f, 0x70, 0x3e, 0xf9, 0x3d, 0x5e, 0x13, 0xc1, ++ 0x79, 0x7d, 0x1c, 0x3a, 0x0f, 0xfa, 0x27, 0x79, 0x6c, 0x38, 0xbf, 0x8f, ++ 0x0d, 0xf3, 0xfb, 0x38, 0x74, 0x7e, 0x05, 0xaa, 0x2d, 0xe9, 0xd3, 0x68, ++ 0x5a, 0x50, 0x88, 0x72, 0x85, 0xc2, 0x37, 0xc6, 0xda, 0x4d, 0x38, 0x9c, ++ 0xcf, 0x87, 0xc2, 0x99, 0x10, 0x2f, 0x51, 0x4a, 0x00, 0x9e, 0x02, 0xae, ++ 0xf4, 0x3b, 0xed, 0x27, 0x45, 0x7a, 0x52, 0xb9, 0x22, 0x01, 0x5c, 0xed, ++ 0x12, 0x49, 0xc3, 0xf1, 0x0c, 0xed, 0x46, 0xd8, 0xb1, 0x7f, 0x28, 0xd3, ++ 0x7e, 0xc7, 0xc0, 0x9a, 0x27, 0x12, 0x52, 0xe6, 0x94, 0xdc, 0xa7, 0xc6, ++ 0xd1, 0xff, 0xef, 0x4c, 0x22, 0x64, 0x18, 0x21, 0xa9, 0x2d, 0x95, 0xe4, ++ 0x13, 0x5a, 0x96, 0xda, 0x08, 0xc2, 0x27, 0x7d, 0x3d, 0xf1, 0x45, 0xd0, ++ 0xf9, 0xa5, 0x07, 0x4c, 0x58, 0x26, 0x6b, 0xa3, 0x7c, 0x19, 0xb4, 0x6d, ++ 0x84, 0x95, 0x78, 0x23, 0xc7, 0xd2, 0x7a, 0x0a, 0xf1, 0x9a, 0xc7, 0x42, ++ 0xaf, 0x3e, 0x42, 0xc6, 0x23, 0x70, 0x57, 0x9b, 0x68, 0x57, 0xca, 0x3a, ++ 0x42, 0x1e, 0xa3, 0xed, 0x3a, 0x03, 0x15, 0xa6, 0x05, 0x14, 0xa8, 0xed, ++ 0xf0, 0x89, 0xf6, 0x3f, 0x51, 0x75, 0x4f, 0x51, 0x69, 0xbd, 0xd6, 0xdb, ++ 0x34, 0xa7, 0xa9, 0x08, 0x96, 0x93, 0xd7, 0xd6, 0x55, 0x46, 0x08, 0x1d, ++ 0x2e, 0x47, 0x72, 0x11, 0x62, 0x5a, 0x95, 0xdb, 0x7d, 0x64, 0x24, 0x21, ++ 0x49, 0x50, 0xff, 0x06, 0xf8, 0x9e, 0xdb, 0xed, 0x8e, 0xc1, 0xef, 0xac, ++ 0x4c, 0x88, 0x9f, 0xd0, 0x75, 0xb5, 0x45, 0xf5, 0x95, 0xdd, 0x56, 0x27, ++ 0x2d, 0xa7, 0xb2, 0xf2, 0x9d, 0xbe, 0xdc, 0xb6, 0x75, 0xb4, 0xbf, 0x0f, ++ 0xd2, 0x3d, 0x77, 0xaa, 0x0e, 0xfa, 0xce, 0x6a, 0xcf, 0x05, 0xf8, 0x13, ++ 0x7f, 0x02, 0xae, 0x77, 0x40, 0xfa, 0xa2, 0x70, 0x25, 0x8e, 0xe0, 0x3c, ++ 0xb3, 0xb7, 0xf9, 0x2b, 0xa3, 0xe8, 0x24, 0x6e, 0x09, 0x50, 0x80, 0x52, ++ 0xfc, 0x67, 0xd0, 0x3e, 0xba, 0xf3, 0x01, 0x3f, 0xdd, 0x16, 0x20, 0x92, ++ 0xed, 0x31, 0xa2, 0xec, 0xb7, 0x10, 0xfa, 0xf4, 0xec, 0x3b, 0x66, 0xe9, ++ 0xa1, 0xcf, 0xc6, 0xf6, 0x63, 0xf8, 0xdd, 0x04, 0x65, 0xfa, 0x1c, 0x9d, ++ 0xe8, 0xaf, 0x4c, 0xa6, 0xeb, 0x7c, 0x50, 0xbd, 0xd1, 0xe3, 0xcc, 0xa1, ++ 0xfd, 0xed, 0xab, 0x77, 0x9a, 0xec, 0x84, 0xac, 0x54, 0x6f, 0xec, 0x56, ++ 0x1c, 0xa1, 0x70, 0x98, 0xa4, 0x83, 0x83, 0xb2, 0xfa, 0x26, 0x03, 0x1c, ++ 0x6e, 0xba, 0x2e, 0x38, 0xac, 0xf4, 0xdd, 0x84, 0x70, 0x18, 0xec, 0xba, ++ 0xcf, 0xa9, 0x9e, 0x1f, 0x01, 0x5e, 0xa6, 0x96, 0x9b, 0x88, 0x44, 0x07, ++ 0x2d, 0x3d, 0x11, 0xe3, 0x93, 0x18, 0x1f, 0x47, 0x7a, 0x0a, 0x82, 0xfd, ++ 0x6c, 0x31, 0x91, 0x45, 0xed, 0x31, 0xe1, 0xfa, 0x59, 0xc5, 0xf0, 0xcf, ++ 0xeb, 0x09, 0x3a, 0x1a, 0x88, 0x4e, 0xd2, 0x88, 0x3d, 0x17, 0xe8, 0xd4, ++ 0x48, 0x2f, 0x74, 0x7d, 0x35, 0xed, 0x14, 0x8e, 0x53, 0xb5, 0x7a, 0x4f, ++ 0x55, 0x62, 0x90, 0x4e, 0x89, 0x5d, 0x1b, 0x37, 0xa3, 0x00, 0xe6, 0x39, ++ 0xf7, 0x49, 0x98, 0xa7, 0x18, 0x77, 0x6a, 0xf9, 0x0a, 0x39, 0x95, 0xce, ++ 0xe7, 0x49, 0x8a, 0x23, 0xe8, 0xd7, 0xd1, 0xe2, 0x8d, 0xcc, 0xa4, 0x74, ++ 0xea, 0x70, 0x9b, 0x5c, 0xc0, 0xe7, 0xe7, 0x54, 0xed, 0xe7, 0x50, 0x3f, ++ 0x76, 0x56, 0xc0, 0x6f, 0xa6, 0x55, 0x4a, 0x89, 0x76, 0xbf, 0x94, 0x16, ++ 0xec, 0x5f, 0xd0, 0x7d, 0xeb, 0x6b, 0x32, 0xd2, 0x77, 0x6b, 0xbd, 0xc9, ++ 0xb7, 0x1a, 0xe5, 0x41, 0x8f, 0x04, 0xeb, 0x0e, 0xe2, 0xbd, 0xc7, 0x80, ++ 0xf7, 0x00, 0xc3, 0x7b, 0xc7, 0x49, 0xc4, 0xfb, 0xf2, 0xce, 0x93, 0x0c, ++ 0xef, 0x1d, 0xab, 0x2a, 0xa2, 0x8a, 0xa1, 0x2c, 0xd9, 0x23, 0x54, 0x58, ++ 0x4f, 0xa0, 0x08, 0xf0, 0xf9, 0x2b, 0xdf, 0x9d, 0x1e, 0x85, 0xe2, 0x73, ++ 0x74, 0x74, 0xa0, 0x15, 0xe8, 0xc1, 0x4c, 0xbe, 0xeb, 0xa9, 0xcd, 0x41, ++ 0xb8, 0xbf, 0x08, 0x74, 0xda, 0x0f, 0xee, 0x7c, 0x5e, 0x02, 0xfe, 0x03, ++ 0xe1, 0xad, 0xed, 0x48, 0xea, 0xe3, 0xf9, 0xb4, 0xaa, 0xf7, 0xa8, 0xc9, ++ 0x95, 0xa1, 0x06, 0xe1, 0x25, 0xea, 0x1d, 0x57, 0x2d, 0x58, 0x6f, 0x63, ++ 0xaa, 0xf6, 0x1b, 0x18, 0xa7, 0x69, 0x42, 0xcf, 0x61, 0xba, 0x52, 0xb2, ++ 0xe7, 0xc8, 0x1f, 0x62, 0x35, 0x3a, 0xdf, 0xd8, 0xa3, 0x33, 0xf6, 0x43, ++ 0xfb, 0xd8, 0x99, 0x14, 0x13, 0x6a, 0x70, 0xdc, 0xb6, 0xa3, 0xab, 0x2b, ++ 0x80, 0xfe, 0xdb, 0x80, 0xfe, 0x51, 0xce, 0x04, 0xbc, 0xf6, 0x98, 0xab, ++ 0xc1, 0x83, 0xf1, 0x45, 0x1f, 0x3c, 0xf6, 0x9d, 0x44, 0xf8, 0x98, 0xa0, ++ 0x4c, 0xdf, 0xef, 0xb4, 0x30, 0xba, 0x29, 0xeb, 0x90, 0xdc, 0x3e, 0xe0, ++ 0x8b, 0x68, 0x72, 0xaf, 0x87, 0x3e, 0xdf, 0x56, 0x4d, 0x38, 0xbf, 0x93, ++ 0xaa, 0xcc, 0x9f, 0x12, 0xc3, 0xe3, 0xd1, 0x03, 0xb2, 0x4a, 0xdb, 0x97, ++ 0xad, 0x35, 0x61, 0x7d, 0x07, 0x3c, 0xf3, 0x43, 0xd7, 0xbf, 0x16, 0xeb, ++ 0x9d, 0x54, 0x15, 0x2e, 0x77, 0x18, 0x3c, 0x04, 0x5e, 0x05, 0x1d, 0x51, ++ 0xc2, 0x89, 0xbe, 0x8d, 0xce, 0x79, 0x78, 0x96, 0xf6, 0x3e, 0xac, 0x3f, ++ 0x48, 0x37, 0x09, 0xd1, 0xa9, 0xf4, 0x7b, 0x69, 0xd7, 0xdc, 0xfb, 0x49, ++ 0x6a, 0xb0, 0xdd, 0x4f, 0x56, 0x12, 0xcf, 0x7c, 0x73, 0xb0, 0x1e, 0xa5, ++ 0x9f, 0x97, 0x75, 0xf4, 0x56, 0x60, 0x8e, 0x04, 0xb8, 0xf5, 0xd1, 0x0f, ++ 0xa5, 0x4b, 0x90, 0x2f, 0x46, 0xfc, 0xd0, 0x76, 0xa7, 0x19, 0x3f, 0x25, ++ 0x44, 0xab, 0xb4, 0xfe, 0xee, 0xae, 0x15, 0xb2, 0x96, 0x3f, 0x78, 0xbc, ++ 0x96, 0x44, 0x90, 0x66, 0x98, 0x7f, 0x49, 0x34, 0x69, 0xde, 0x43, 0xdb, ++ 0x97, 0xc4, 0xd1, 0x27, 0x94, 0x13, 0x79, 0x79, 0x28, 0x2f, 0x27, 0xf3, ++ 0xe7, 0x68, 0xfe, 0x3e, 0x8f, 0x95, 0xd3, 0x3e, 0x70, 0x99, 0x24, 0x5a, ++ 0xde, 0x02, 0x70, 0x07, 0x3c, 0xa4, 0x98, 0x18, 0x9c, 0x14, 0x7b, 0x2e, ++ 0xf0, 0x91, 0x29, 0x85, 0xc1, 0xb9, 0xcc, 0x19, 0x8d, 0xf2, 0x5f, 0xf0, ++ 0xab, 0x42, 0xc1, 0x19, 0x97, 0x00, 0x6a, 0x88, 0x78, 0xe1, 0x99, 0x1a, ++ 0x48, 0x35, 0x01, 0x1e, 0x05, 0xff, 0x2a, 0x01, 0x93, 0xdf, 0x46, 0xf5, ++ 0x5f, 0xaa, 0xa2, 0x9a, 0x5c, 0xf4, 0xfd, 0x5b, 0x2b, 0x35, 0x4f, 0x55, ++ 0xc6, 0xc0, 0xf2, 0xe5, 0x96, 0x1c, 0xd9, 0xe3, 0x0b, 0x23, 0x2f, 0xe2, ++ 0x52, 0x18, 0xde, 0xa9, 0x80, 0xf6, 0x9e, 0xca, 0x06, 0xed, 0x2c, 0x91, ++ 0x38, 0x20, 0x81, 0x61, 0x5a, 0x5c, 0x0a, 0x9d, 0x57, 0xa3, 0xb5, 0xe7, ++ 0x27, 0x33, 0xe8, 0xd7, 0xe5, 0x39, 0x17, 0x2c, 0x80, 0x9f, 0xd5, 0xd1, ++ 0xcb, 0x6f, 0xd4, 0xf2, 0x07, 0x1e, 0xc7, 0x38, 0x8f, 0xb7, 0x2e, 0xff, ++ 0x36, 0x1a, 0xe8, 0xab, 0xf3, 0x52, 0x44, 0x4d, 0x38, 0x79, 0x55, 0x03, ++ 0xeb, 0xa7, 0xe3, 0x1f, 0x59, 0x39, 0x0b, 0xdb, 0x3d, 0x1a, 0x15, 0x5b, ++ 0xc8, 0x95, 0x2a, 0xda, 0x2d, 0xdf, 0x41, 0xd1, 0x44, 0x9f, 0xe9, 0x4b, ++ 0x6a, 0x49, 0x21, 0xe0, 0xc3, 0xab, 0x24, 0x80, 0xfe, 0x8b, 0x96, 0x5c, ++ 0xdb, 0x09, 0xe2, 0x85, 0xe9, 0xc3, 0xa1, 0x29, 0xbe, 0xed, 0x29, 0x80, ++ 0x1f, 0x5f, 0x2d, 0x96, 0xf3, 0xd2, 0xc8, 0x76, 0x09, 0xf0, 0xa4, 0xad, ++ 0xb1, 0x41, 0x59, 0x4e, 0xc1, 0xfa, 0x14, 0x72, 0xc2, 0x3e, 0x92, 0xae, ++ 0x44, 0x60, 0xdf, 0xaa, 0x42, 0xed, 0x0d, 0x44, 0x79, 0x2a, 0xe0, 0xb3, ++ 0xf9, 0xa0, 0x0d, 0x84, 0x7d, 0x04, 0xad, 0xaf, 0xc2, 0x7b, 0xbd, 0x3d, ++ 0x45, 0xe7, 0xb7, 0x95, 0x8c, 0x01, 0x7c, 0xb7, 0x55, 0x25, 0x40, 0xbd, ++ 0x38, 0xde, 0xef, 0x25, 0x66, 0xe7, 0x08, 0xbb, 0xa8, 0x3a, 0xfd, 0x96, ++ 0x33, 0x12, 0xcc, 0x77, 0xb4, 0x57, 0x01, 0xb9, 0x4a, 0xd2, 0x52, 0x70, ++ 0x3e, 0xe5, 0xc4, 0xac, 0xb3, 0x8f, 0x4a, 0xb2, 0x28, 0xc8, 0x61, 0x7e, ++ 0x59, 0xb9, 0x3e, 0xf8, 0x5e, 0x69, 0x35, 0x7c, 0xe7, 0x74, 0x54, 0xdd, ++ 0xcf, 0x8e, 0x6a, 0x73, 0xcd, 0xa0, 0xf4, 0x3e, 0x35, 0x9b, 0xd2, 0x3f, ++ 0x7f, 0x7f, 0x81, 0xfe, 0x37, 0x3a, 0x82, 0xdc, 0x7b, 0x5b, 0x7e, 0x50, ++ 0xbe, 0x4f, 0x51, 0xef, 0xf2, 0x54, 0xe9, 0xec, 0x8f, 0x36, 0x17, 0xf0, ++ 0xe1, 0xef, 0xbe, 0x95, 0x91, 0xef, 0x8d, 0xf8, 0xd8, 0xca, 0xe9, 0xf1, ++ 0xc8, 0x4a, 0x8f, 0xa7, 0x8a, 0xf2, 0xdf, 0xaf, 0x22, 0x29, 0x3e, 0xe8, ++ 0x7a, 0x2b, 0x54, 0x69, 0xad, 0x4d, 0xbd, 0x36, 0xfc, 0x8c, 0x78, 0x33, ++ 0xc2, 0xef, 0x3b, 0x9d, 0x0b, 0xd1, 0x7e, 0x33, 0xc2, 0xab, 0xfc, 0x03, ++ 0x57, 0x55, 0x82, 0xda, 0x1f, 0x3e, 0x46, 0x78, 0x08, 0xf8, 0xd3, 0xf5, ++ 0xad, 0x07, 0xb8, 0x55, 0x67, 0xcb, 0xa8, 0xaf, 0x04, 0xbc, 0xfb, 0xc3, ++ 0x89, 0xd1, 0xc3, 0xef, 0x72, 0x68, 0x3d, 0x89, 0xd1, 0x0f, 0xc3, 0x87, ++ 0x44, 0x90, 0x5e, 0x04, 0xfd, 0xc4, 0xa5, 0x21, 0xfc, 0x4b, 0x80, 0xf6, ++ 0xe0, 0x7b, 0x74, 0x0a, 0x96, 0x8d, 0xf0, 0x35, 0xc2, 0x93, 0xca, 0x01, ++ 0x37, 0xd6, 0xe7, 0xf8, 0x3b, 0x0c, 0x70, 0xcb, 0x80, 0xaf, 0xee, 0xda, ++ 0xea, 0x21, 0x41, 0x38, 0x50, 0xba, 0xea, 0x8a, 0x0f, 0xa1, 0x2b, 0x01, ++ 0x87, 0x7e, 0x72, 0x23, 0x8b, 0x97, 0x39, 0xde, 0x85, 0xbd, 0x5c, 0xcd, ++ 0xfb, 0xa1, 0xf6, 0x32, 0xda, 0xc3, 0x95, 0x0e, 0x9b, 0x0b, 0xc0, 0x5f, ++ 0xd9, 0xc8, 0xe6, 0x5b, 0x99, 0x11, 0xb3, 0xd5, 0x9b, 0x82, 0xf8, 0xda, ++ 0x8a, 0xfc, 0xe3, 0xa7, 0x18, 0x29, 0xc1, 0x7f, 0xd9, 0xdf, 0x25, 0x66, ++ 0xe7, 0x52, 0xbb, 0x94, 0xd1, 0x67, 0xe7, 0xe4, 0x33, 0x60, 0x3f, 0x8f, ++ 0x8e, 0xd0, 0xd6, 0x02, 0x7f, 0x04, 0xa4, 0x78, 0xb2, 0x95, 0x20, 0xfc, ++ 0x3f, 0x36, 0xc0, 0x5f, 0x57, 0xae, 0x36, 0xd8, 0xcb, 0x46, 0x78, 0xfc, ++ 0x0a, 0xfe, 0x67, 0x62, 0x7f, 0xb8, 0x09, 0xba, 0xfb, 0x79, 0x0a, 0xb5, ++ 0xaf, 0xf3, 0x68, 0x71, 0x38, 0x19, 0x01, 0xf6, 0x6f, 0xe1, 0x2b, 0xc5, ++ 0x71, 0x20, 0xc7, 0x49, 0x67, 0x02, 0xca, 0x63, 0x23, 0x3d, 0x96, 0x9e, ++ 0xf0, 0xf4, 0xf5, 0xc3, 0xe9, 0x17, 0xe9, 0x53, 0x22, 0x5a, 0xdf, 0x7b, ++ 0x3b, 0xb5, 0x23, 0x3a, 0xb2, 0x1f, 0x79, 0x02, 0xcc, 0x9a, 0x1b, 0xad, ++ 0x6d, 0x32, 0xd0, 0xe1, 0x8d, 0xc4, 0xbd, 0xe6, 0x94, 0x15, 0xd6, 0x2f, ++ 0xe3, 0x3c, 0xc5, 0xbc, 0xfe, 0xee, 0xf4, 0xec, 0x4c, 0xa1, 0xf2, 0x66, ++ 0x62, 0x4f, 0xcd, 0x9a, 0x53, 0xa1, 0x7c, 0xc1, 0xc7, 0x17, 0xf0, 0xbe, ++ 0x89, 0xc3, 0xfb, 0x26, 0xe2, 0xdd, 0x2f, 0xc7, 0xc2, 0x53, 0xf9, 0xba, ++ 0xcf, 0x8e, 0x0f, 0xe9, 0x6f, 0x6f, 0x0a, 0xf7, 0x17, 0x92, 0x49, 0x32, ++ 0xac, 0xc7, 0x9e, 0xa2, 0x32, 0xf9, 0xce, 0xfb, 0x13, 0xeb, 0x1b, 0x9d, ++ 0x46, 0xfc, 0x12, 0xc2, 0xd9, 0xea, 0xdb, 0x2a, 0xc1, 0xfc, 0x89, 0xd7, ++ 0x92, 0x10, 0x1c, 0xcf, 0xcc, 0xd1, 0x94, 0x91, 0x31, 0xe3, 0xb5, 0x14, ++ 0x94, 0xc7, 0xcd, 0x04, 0xed, 0x65, 0x6a, 0x5e, 0x02, 0x12, 0xcb, 0xf8, ++ 0xf7, 0x32, 0x6b, 0x8c, 0x1f, 0xe6, 0x43, 0x02, 0xca, 0xd9, 0x3e, 0x3c, ++ 0x20, 0xdf, 0xd5, 0xd9, 0x01, 0xae, 0x14, 0x2e, 0xe4, 0x4a, 0x74, 0x70, ++ 0x7e, 0xbf, 0x4b, 0x91, 0x94, 0x4f, 0xb3, 0x83, 0xf3, 0x3b, 0xb7, 0xc3, ++ 0xea, 0x95, 0x81, 0x9f, 0x87, 0x69, 0xbf, 0x87, 0x71, 0xce, 0x4a, 0x47, ++ 0x0b, 0x91, 0x6f, 0x15, 0x7f, 0x26, 0xe8, 0x41, 0xe3, 0xf7, 0x0b, 0x1d, ++ 0x5d, 0xcb, 0xe1, 0x3b, 0xad, 0xb7, 0x10, 0xeb, 0xf1, 0x75, 0x2d, 0x05, ++ 0xa7, 0x91, 0xd2, 0x5d, 0xe0, 0xb5, 0x08, 0xdf, 0xd6, 0x94, 0xab, 0xd8, ++ 0xa1, 0x56, 0xaa, 0xc2, 0x42, 0xe4, 0x41, 0x59, 0x14, 0x93, 0x27, 0xd5, ++ 0x24, 0x20, 0x83, 0xdd, 0xd9, 0x19, 0xc9, 0xf8, 0xf9, 0xf5, 0xaf, 0x16, ++ 0x21, 0x3f, 0xb8, 0x89, 0x7d, 0x6d, 0x1e, 0xed, 0xef, 0xd0, 0xf9, 0xc9, ++ 0x47, 0x80, 0x9f, 0x2b, 0xa9, 0x78, 0x81, 0x7a, 0x93, 0x2e, 0xe9, 0xfd, ++ 0xb6, 0x6b, 0xd1, 0x69, 0x15, 0x09, 0xcc, 0x81, 0x76, 0xd5, 0x76, 0xb3, ++ 0xc1, 0x0f, 0xf4, 0xa2, 0xbe, 0x59, 0xcb, 0xe5, 0x9a, 0xb0, 0xd3, 0x4c, ++ 0xa9, 0xda, 0xb9, 0x14, 0x7c, 0x3f, 0xca, 0x07, 0x7a, 0xa6, 0xf3, 0xab, ++ 0xc9, 0x2a, 0xe0, 0x6d, 0x6b, 0xf6, 0xf8, 0x5b, 0x6e, 0xa7, 0x55, 0x52, ++ 0x73, 0xc6, 0xcd, 0x00, 0xf7, 0xcc, 0x64, 0xed, 0x36, 0x83, 0xfe, 0x9b, ++ 0xcd, 0xe9, 0x6b, 0x02, 0xd0, 0x97, 0x84, 0x56, 0x90, 0xa0, 0xaf, 0x8b, ++ 0xd0, 0x4f, 0xda, 0x3a, 0x03, 0x7d, 0xd9, 0x13, 0x74, 0x7e, 0xdd, 0x2d, ++ 0xc4, 0x8f, 0xeb, 0x2f, 0xcb, 0x36, 0xff, 0x4d, 0x37, 0x3f, 0x6e, 0x97, ++ 0x18, 0xed, 0xf5, 0xa0, 0x9d, 0xde, 0x16, 0xd6, 0xbf, 0x23, 0x5d, 0x0a, ++ 0xc9, 0xa6, 0x70, 0x9e, 0xc3, 0xe1, 0xbc, 0x36, 0xde, 0xe2, 0x05, 0xb9, ++ 0xa6, 0xdc, 0x27, 0xf9, 0x48, 0x0a, 0xcc, 0x97, 0x8c, 0x5a, 0x45, 0xe7, ++ 0x39, 0xbb, 0xd9, 0xac, 0xf3, 0x47, 0xe7, 0xc4, 0x2b, 0x88, 0xc7, 0x39, ++ 0xab, 0x22, 0x7d, 0x84, 0xf9, 0xdf, 0xce, 0x7a, 0x5a, 0xd6, 0xe8, 0xfb, ++ 0xc7, 0xa0, 0x98, 0xed, 0x76, 0x86, 0xda, 0x55, 0xa4, 0x25, 0xa4, 0x3d, ++ 0xd0, 0x43, 0x8c, 0x8a, 0xf4, 0x3b, 0xc7, 0xce, 0xde, 0x7d, 0x44, 0xfb, ++ 0x18, 0x96, 0x00, 0xfd, 0x9e, 0x72, 0xa0, 0x13, 0xef, 0x35, 0x9f, 0x0f, ++ 0xa5, 0x53, 0xe3, 0xf8, 0x03, 0xf6, 0x6b, 0x68, 0xb7, 0x56, 0x22, 0xb3, ++ 0xc0, 0x7e, 0x5a, 0x6b, 0x76, 0x3b, 0x5d, 0x21, 0xf6, 0xc7, 0xa8, 0x54, ++ 0x66, 0xbf, 0x9c, 0xb7, 0x57, 0x6d, 0x32, 0xa5, 0x0e, 0x6c, 0x97, 0x68, ++ 0xd6, 0x64, 0xb7, 0x92, 0x18, 0x2c, 0xf7, 0xc4, 0x5b, 0x67, 0xf9, 0xc2, ++ 0xd8, 0x31, 0xa2, 0x3f, 0x41, 0x27, 0x65, 0x1a, 0xf3, 0xcb, 0x07, 0xea, ++ 0x37, 0x3d, 0x50, 0x85, 0x76, 0x99, 0xe9, 0x49, 0xbf, 0x0c, 0xf6, 0x76, ++ 0x7a, 0x80, 0xa0, 0x7d, 0x5c, 0x16, 0x70, 0x9b, 0xe6, 0xe9, 0xec, 0x74, ++ 0xe6, 0x9f, 0xf6, 0xb3, 0xd3, 0xdb, 0xf7, 0xa3, 0x9d, 0xbe, 0x6c, 0xdf, ++ 0x7e, 0x66, 0xa7, 0xb7, 0xaf, 0x42, 0x7b, 0x7f, 0x19, 0xb5, 0xf7, 0x41, ++ 0xbe, 0x53, 0xbb, 0x11, 0x64, 0x25, 0x9b, 0x50, 0x3e, 0xda, 0xef, 0x7d, ++ 0x7e, 0x26, 0xe5, 0x2d, 0x52, 0xd6, 0x2e, 0xf5, 0xf9, 0xa1, 0x0a, 0x45, ++ 0x45, 0x5a, 0x1b, 0xab, 0x7f, 0xf7, 0xd6, 0xec, 0xf8, 0x47, 0xd3, 0xc1, ++ 0x4f, 0xd4, 0x9c, 0x66, 0xea, 0xf7, 0xdc, 0x9d, 0x5a, 0xb0, 0xc1, 0x4a, ++ 0xfd, 0x9e, 0xd6, 0x14, 0x12, 0x49, 0xa8, 0xdf, 0x33, 0x2b, 0xb5, 0xe0, ++ 0xb6, 0xf5, 0x13, 0x28, 0x35, 0x25, 0xb8, 0x25, 0x12, 0x8f, 0xe5, 0x0d, ++ 0x31, 0x13, 0x07, 0xef, 0xd7, 0xde, 0x9d, 0x9a, 0xbf, 0x01, 0xfc, 0xda, ++ 0x81, 0xfc, 0xcb, 0xea, 0x54, 0xf5, 0xaa, 0xfe, 0xe5, 0x07, 0xe9, 0x9e, ++ 0xbb, 0x53, 0x43, 0xe2, 0x02, 0x54, 0x3e, 0x86, 0xb5, 0x47, 0x32, 0x32, ++ 0x2a, 0xe6, 0x40, 0x3d, 0x21, 0x37, 0xca, 0xa2, 0x18, 0x7f, 0x3e, 0x6a, ++ 0xf2, 0xa7, 0xfd, 0x14, 0xfc, 0xad, 0xb7, 0x64, 0x02, 0xfa, 0xf4, 0x96, ++ 0x96, 0x79, 0xe8, 0x07, 0x4c, 0x6b, 0x59, 0xec, 0xa9, 0xa2, 0xf3, 0xe9, ++ 0x3d, 0x70, 0x39, 0x93, 0x98, 0x40, 0x5e, 0x32, 0xbc, 0x37, 0xa6, 0x32, ++ 0xbb, 0xa6, 0x29, 0x9a, 0xd9, 0x97, 0x4d, 0xd1, 0xb4, 0x1f, 0x2a, 0x6f, ++ 0xde, 0x74, 0x6a, 0x8d, 0xd0, 0x7f, 0x77, 0xf6, 0xf3, 0xeb, 0xc7, 0x52, ++ 0x7e, 0xa9, 0xeb, 0x90, 0x5d, 0xe0, 0x2f, 0x46, 0x66, 0x5d, 0x1e, 0x05, ++ 0xfc, 0x3f, 0x6d, 0xfc, 0xf3, 0x4f, 0x8e, 0xa5, 0xe3, 0x7c, 0x18, 0x50, ++ 0x30, 0xfe, 0xd0, 0x69, 0xa3, 0x74, 0x48, 0xdf, 0x7f, 0x48, 0x24, 0xb4, ++ 0x67, 0xcb, 0x8e, 0x45, 0x78, 0xf6, 0x51, 0xbc, 0x7c, 0xdf, 0x59, 0xde, ++ 0x96, 0x1a, 0xe2, 0x9f, 0x7c, 0xdf, 0x59, 0x85, 0x65, 0x52, 0x4b, 0x1d, ++ 0x2b, 0xca, 0x1f, 0x2b, 0xac, 0x8c, 0x2f, 0x3f, 0x24, 0xfb, 0xd3, 0x7e, ++ 0x4a, 0xc7, 0xf1, 0x36, 0x4b, 0x68, 0x07, 0x9c, 0x6f, 0x4e, 0x89, 0x03, ++ 0x3a, 0xe8, 0x34, 0xd3, 0xf5, 0x87, 0xd0, 0xe3, 0xea, 0x54, 0x05, 0xe9, ++ 0x6f, 0x35, 0xa7, 0xc7, 0xba, 0x4b, 0x32, 0x06, 0xcd, 0x3a, 0xcd, 0xfe, ++ 0xe4, 0x66, 0x5a, 0xbf, 0x4e, 0xf1, 0x9b, 0xc1, 0x0f, 0xac, 0xbb, 0x64, ++ 0xc1, 0xf7, 0x30, 0x0f, 0x98, 0x4f, 0x67, 0xa4, 0xbe, 0x9f, 0xc7, 0x79, ++ 0x3f, 0x8f, 0xf7, 0xf5, 0x43, 0xe1, 0x30, 0x0e, 0xea, 0x19, 0xfb, 0x51, ++ 0xd8, 0x7b, 0x89, 0xad, 0xcf, 0x88, 0x87, 0xd3, 0x29, 0x95, 0x3f, 0x85, ++ 0xf5, 0x7c, 0xdf, 0xe9, 0x6e, 0x43, 0xbc, 0x51, 0xf9, 0x05, 0xfa, 0xa2, ++ 0xac, 0xb8, 0xeb, 0x04, 0xd8, 0x11, 0xd7, 0xd6, 0x4b, 0x6e, 0x09, 0xf4, ++ 0x52, 0xd3, 0x65, 0xc9, 0x3f, 0x9a, 0xc2, 0xf3, 0xec, 0x3e, 0x33, 0xfa, ++ 0xf7, 0x67, 0xc1, 0x3f, 0xa4, 0xe3, 0x9d, 0xdb, 0x77, 0x70, 0xc8, 0x5c, ++ 0xfa, 0x6c, 0xdc, 0xfd, 0xc7, 0x58, 0xf0, 0x07, 0xb7, 0x70, 0x7c, 0x9d, ++ 0x53, 0xba, 0x63, 0x61, 0x7e, 0xcb, 0x5e, 0xa2, 0xfe, 0x0b, 0xda, 0x43, ++ 0xfe, 0x21, 0xf7, 0x60, 0xfb, 0x79, 0x25, 0x8f, 0xb1, 0x61, 0xac, 0xa1, ++ 0xfa, 0x7a, 0xec, 0xb7, 0x07, 0x93, 0x3d, 0x2c, 0x78, 0xa8, 0x42, 0x7c, ++ 0x4e, 0xd8, 0xa5, 0x37, 0x59, 0xbd, 0x3e, 0x98, 0x5f, 0xe7, 0x2a, 0x19, ++ 0xe5, 0x08, 0xd5, 0xe7, 0x22, 0x6e, 0x2a, 0x81, 0xfc, 0x9e, 0xb4, 0x4f, ++ 0x76, 0x47, 0xc6, 0xf6, 0xb7, 0x57, 0x5f, 0x4e, 0x35, 0x0b, 0x79, 0x6b, ++ 0x02, 0x3d, 0xf6, 0x80, 0x9d, 0x8d, 0x33, 0x90, 0x3c, 0x28, 0xbb, 0x94, ++ 0x48, 0x7c, 0x21, 0xf2, 0xa2, 0x4c, 0xf1, 0xcb, 0x30, 0xff, 0xb2, 0x4b, ++ 0x43, 0xf0, 0xfd, 0xb9, 0x23, 0xa9, 0x4f, 0xd4, 0x02, 0xdd, 0x12, 0xb3, ++ 0x0b, 0xcd, 0x44, 0x85, 0x74, 0xa1, 0xbd, 0x2c, 0x11, 0xf1, 0xd7, 0x95, ++ 0x4e, 0xd7, 0xf3, 0x3a, 0x2f, 0xbc, 0xb1, 0xef, 0xc2, 0xed, 0x37, 0x22, ++ 0x33, 0x52, 0xbd, 0x48, 0xeb, 0x7c, 0xc7, 0xaf, 0x25, 0xa1, 0xfd, 0x0c, ++ 0x21, 0xd2, 0x92, 0xa0, 0x5d, 0x38, 0xe9, 0x92, 0x3e, 0xee, 0x6a, 0xb4, ++ 0xa3, 0x85, 0x9e, 0xad, 0xe8, 0x2c, 0x5a, 0x9b, 0x4c, 0x00, 0xee, 0xea, ++ 0xed, 0x37, 0x02, 0x1d, 0x1e, 0x51, 0x90, 0x7f, 0x8c, 0x76, 0x76, 0x75, ++ 0x60, 0xf2, 0x00, 0xf6, 0xf4, 0x06, 0xa4, 0xa3, 0x3d, 0xfb, 0xd2, 0xa2, ++ 0x21, 0x2e, 0xb0, 0x91, 0xf3, 0x79, 0xd3, 0xbe, 0x0b, 0x93, 0x41, 0x3e, ++ 0x2d, 0x27, 0xfe, 0x3b, 0x6e, 0x4c, 0x82, 0xb8, 0x83, 0x6c, 0xf7, 0x93, ++ 0xab, 0xc5, 0xbb, 0xd6, 0xfe, 0x6e, 0x12, 0x1d, 0xff, 0x8d, 0x80, 0xa2, ++ 0x82, 0x3c, 0x78, 0x23, 0xd0, 0x65, 0x2d, 0xc4, 0xb2, 0x09, 0xe3, 0x1c, ++ 0x65, 0x6f, 0x97, 0xe5, 0x01, 0xff, 0x76, 0x06, 0x94, 0x1a, 0xf0, 0x5b, ++ 0xcb, 0xbe, 0xea, 0x8a, 0x9e, 0x97, 0x1f, 0xb4, 0x6b, 0x3a, 0x2f, 0x9b, ++ 0xf0, 0xfd, 0x1b, 0x97, 0x0f, 0xe0, 0x7b, 0xd1, 0x6f, 0x67, 0x20, 0x21, ++ 0x0f, 0xf4, 0xf3, 0x6e, 0x13, 0xf3, 0xb7, 0xbb, 0x0e, 0xff, 0x2d, 0x1a, ++ 0xe4, 0xeb, 0x1b, 0x97, 0xcf, 0x27, 0xa2, 0xdf, 0x2f, 0xec, 0x92, 0xfe, ++ 0x76, 0x35, 0xfa, 0x01, 0x95, 0x36, 0xb9, 0x2f, 0x0e, 0x1d, 0x6a, 0xbf, ++ 0x13, 0xb9, 0xec, 0xb8, 0x15, 0xfc, 0x8d, 0x38, 0x33, 0x91, 0x11, 0x0f, ++ 0xcc, 0x1f, 0xed, 0x67, 0x97, 0x7c, 0x40, 0xd6, 0xda, 0x48, 0x7f, 0xfb, ++ 0x44, 0xc0, 0x1f, 0xc8, 0x12, 0xf8, 0xa6, 0x9f, 0x5d, 0x1d, 0x84, 0xb7, ++ 0xce, 0xbe, 0xbe, 0x92, 0xca, 0xed, 0xe5, 0x91, 0x64, 0xec, 0x15, 0xb0, ++ 0x73, 0x2f, 0x27, 0x2e, 0x05, 0x7d, 0xdd, 0xdb, 0x19, 0x6d, 0x5f, 0x8d, ++ 0xf1, 0x29, 0x66, 0x57, 0xf4, 0x76, 0x7d, 0xfe, 0xb3, 0xa9, 0xf0, 0xfe, ++ 0xa8, 0x8c, 0xf1, 0xb6, 0xde, 0xcb, 0x32, 0xf2, 0xd5, 0x81, 0xd7, 0x97, ++ 0x8e, 0xee, 0x89, 0x09, 0x85, 0x7b, 0x2b, 0xe2, 0xef, 0xe2, 0xb0, 0xaf, ++ 0xbe, 0x7c, 0x95, 0xd6, 0xbf, 0x78, 0x28, 0x0a, 0xe3, 0xea, 0x44, 0x71, ++ 0xe5, 0x85, 0x8b, 0x9f, 0x04, 0xe3, 0xc9, 0xfe, 0xe1, 0x26, 0x27, 0x3c, ++ 0xbd, 0xc3, 0x4d, 0x13, 0x90, 0xed, 0x30, 0x5e, 0xf0, 0x9d, 0x60, 0xbc, ++ 0xc0, 0x91, 0x86, 0xf1, 0x82, 0xc0, 0x64, 0x50, 0x57, 0x99, 0x9b, 0x4f, ++ 0x5a, 0x20, 0xde, 0xb2, 0x31, 0xd5, 0x33, 0x34, 0x0d, 0xdb, 0xb7, 0x47, ++ 0xc3, 0xba, 0x17, 0x45, 0x31, 0xf9, 0xe4, 0x25, 0x15, 0xc9, 0xd4, 0x78, ++ 0x22, 0x2f, 0x1d, 0x31, 0x55, 0x00, 0xbd, 0x14, 0xaf, 0x52, 0x11, 0xef, ++ 0x3b, 0xcd, 0xd4, 0xc4, 0x02, 0xfe, 0xd8, 0xce, 0xfc, 0xfb, 0x9d, 0x54, ++ 0xde, 0x82, 0x5f, 0xb4, 0xb8, 0xbd, 0xcd, 0x92, 0x12, 0x82, 0xe7, 0xc5, ++ 0x14, 0x41, 0xb0, 0xbe, 0xd3, 0x66, 0xef, 0xa8, 0x84, 0x90, 0xf7, 0x3b, ++ 0xd2, 0x58, 0x3c, 0xe1, 0xf4, 0xa1, 0x25, 0xcf, 0x01, 0x9c, 0xbc, 0x7f, ++ 0x8a, 0x20, 0x19, 0x61, 0xec, 0xd3, 0x87, 0xd2, 0x98, 0x3c, 0xdc, 0x6b, ++ 0xf1, 0x4e, 0xdd, 0x05, 0xf5, 0x3e, 0x36, 0x11, 0x18, 0xaf, 0xeb, 0xf0, ++ 0x6f, 0x0e, 0x0f, 0xa7, 0x78, 0x5e, 0x7c, 0x42, 0x2d, 0x02, 0x3d, 0x30, ++ 0x2b, 0x4d, 0xc5, 0x7a, 0x1d, 0x47, 0x77, 0xb6, 0x0e, 0xa7, 0xf5, 0x3a, ++ 0x3e, 0x00, 0xed, 0x49, 0x4d, 0xf2, 0x6d, 0xf5, 0xb2, 0x89, 0x8e, 0xfb, ++ 0x2a, 0x51, 0x59, 0xdc, 0xef, 0xb8, 0x09, 0xe7, 0xdb, 0x17, 0x27, 0x25, ++ 0xee, 0x44, 0x58, 0xef, 0x1d, 0x69, 0x4c, 0x8e, 0xbd, 0x7a, 0x84, 0xd1, ++ 0xab, 0x18, 0xff, 0xd5, 0x28, 0xa6, 0xef, 0x26, 0xa7, 0x31, 0xf9, 0x52, ++ 0x96, 0xc6, 0xe2, 0x6e, 0x7b, 0x8e, 0x54, 0x24, 0xce, 0x45, 0xbe, 0xd2, ++ 0x26, 0x01, 0xdc, 0x9a, 0x4e, 0xf5, 0xb4, 0xc6, 0xaa, 0xc1, 0x38, 0xa1, ++ 0xb0, 0x0f, 0x27, 0x1e, 0xdf, 0x33, 0xb5, 0x80, 0xfe, 0xef, 0xc4, 0xb3, ++ 0x26, 0x3b, 0xa0, 0x4f, 0x3d, 0xbe, 0x55, 0x86, 0xf5, 0xaa, 0xa7, 0x09, ++ 0x89, 0x97, 0xfa, 0xc7, 0xb1, 0x68, 0x7f, 0x53, 0xd2, 0x1c, 0xc1, 0xfe, ++ 0x5e, 0x3d, 0xcb, 0xfa, 0xa3, 0xf3, 0x38, 0x00, 0x7c, 0x17, 0x58, 0x45, ++ 0xec, 0x5b, 0x91, 0xea, 0x3c, 0x8f, 0xe7, 0xd3, 0xf2, 0xab, 0xdd, 0x4a, ++ 0xc2, 0x63, 0x2a, 0xe2, 0x03, 0xf5, 0x81, 0xc0, 0x83, 0x58, 0x8f, 0x98, ++ 0x87, 0xda, 0x4e, 0xdc, 0x5b, 0x62, 0x90, 0x45, 0xdc, 0x7b, 0xae, 0x16, ++ 0x8f, 0xa6, 0x7e, 0x27, 0xf0, 0xdb, 0x38, 0x2e, 0x3f, 0xdf, 0x4d, 0x75, ++ 0xdf, 0x95, 0xc6, 0xec, 0xac, 0x51, 0x40, 0x77, 0xa7, 0x0f, 0x45, 0xa1, ++ 0x3d, 0xb6, 0x97, 0xc7, 0xb5, 0x89, 0xb3, 0x7e, 0x34, 0xc0, 0x4f, 0xe0, ++ 0xe9, 0x7b, 0xfc, 0x69, 0x9c, 0xcf, 0x40, 0xe3, 0x37, 0x73, 0x3a, 0x10, ++ 0xcf, 0x9d, 0x66, 0xd5, 0x8b, 0xf4, 0xf0, 0x12, 0xd3, 0xbb, 0x3b, 0x6d, ++ 0x7e, 0x6b, 0x1a, 0xc8, 0xbf, 0x57, 0xd2, 0xb0, 0xac, 0x7a, 0xbd, 0xd1, ++ 0x85, 0xf4, 0x7b, 0x53, 0x47, 0x86, 0x4b, 0x56, 0x91, 0x9e, 0x9b, 0x19, ++ 0xdd, 0x32, 0x3a, 0xbf, 0x89, 0xd3, 0xb9, 0xda, 0x1e, 0xb0, 0xa4, 0x84, ++ 0xe0, 0x61, 0x60, 0xf9, 0xc6, 0xe0, 0xde, 0x47, 0x3f, 0x4a, 0x3b, 0xd2, ++ 0x55, 0xc7, 0x09, 0x82, 0xfc, 0xb6, 0x64, 0xc7, 0x7d, 0x2c, 0x0e, 0x49, ++ 0xfc, 0xc9, 0x8c, 0x9f, 0xbc, 0xc9, 0xc0, 0x5f, 0xc0, 0x17, 0x8c, 0xcf, ++ 0xfc, 0xc3, 0x24, 0xf6, 0x8c, 0x05, 0x3e, 0x99, 0xd8, 0xb9, 0x65, 0x4d, ++ 0x32, 0x6d, 0xd7, 0x00, 0x74, 0x9f, 0x1f, 0x84, 0x83, 0x0a, 0x7c, 0x01, ++ 0x7c, 0x26, 0xd6, 0x69, 0x63, 0x76, 0xf2, 0xcf, 0x78, 0x59, 0x7c, 0x6f, ++ 0x4b, 0x63, 0x71, 0xc7, 0x6a, 0x39, 0x3f, 0xae, 0xe7, 0x2a, 0xf1, 0xbb, ++ 0x37, 0x56, 0x3a, 0x89, 0x12, 0x12, 0xbf, 0xfb, 0x19, 0x9f, 0xff, 0x62, ++ 0xb2, 0x01, 0xed, 0xd3, 0xc5, 0x97, 0xdb, 0xd0, 0x6e, 0x55, 0x9b, 0xd9, ++ 0x73, 0xf1, 0x03, 0xec, 0x99, 0xb9, 0xb9, 0xde, 0x02, 0xfa, 0x60, 0xf1, ++ 0x26, 0xc9, 0x1d, 0xce, 0xae, 0xb6, 0x73, 0xfc, 0x9d, 0xe3, 0x7c, 0x40, ++ 0x4c, 0x51, 0xc3, 0x89, 0x33, 0xf8, 0xdd, 0xc1, 0xf9, 0xe0, 0xcc, 0xbe, ++ 0x27, 0x0e, 0xc2, 0x3a, 0x29, 0xbd, 0x3e, 0x07, 0xf0, 0xbf, 0xa1, 0x63, ++ 0xc3, 0xd3, 0x00, 0x26, 0x41, 0xff, 0x67, 0xb6, 0x99, 0xb1, 0xbd, 0x90, ++ 0x23, 0xa2, 0xfd, 0x36, 0xde, 0xff, 0x4b, 0xc7, 0x19, 0xff, 0x4c, 0xdc, ++ 0x66, 0xae, 0xb8, 0x9b, 0xc2, 0x7b, 0xa2, 0x97, 0xd8, 0x21, 0x9e, 0xfe, ++ 0xea, 0xb6, 0xed, 0x32, 0xc8, 0xf7, 0x57, 0x81, 0x3f, 0x52, 0x98, 0xdc, ++ 0x00, 0xbd, 0x7c, 0xfa, 0xd0, 0x63, 0xd1, 0x3f, 0x00, 0x3a, 0x38, 0x69, ++ 0x22, 0x10, 0xb7, 0xdf, 0x6b, 0x21, 0x8b, 0x76, 0x87, 0xe0, 0xb7, 0x6b, ++ 0xcb, 0xcb, 0x3a, 0x79, 0xb0, 0x64, 0xc7, 0xaa, 0xa9, 0xd0, 0x4f, 0x69, ++ 0x4f, 0x82, 0x04, 0x7a, 0x40, 0xc8, 0x01, 0x81, 0xef, 0xbd, 0x16, 0xd7, ++ 0x14, 0x94, 0x27, 0xd3, 0x0d, 0xf2, 0xa4, 0x8a, 0xb5, 0x3f, 0x06, 0xf0, ++ 0xa4, 0xeb, 0x7a, 0x82, 0xcb, 0x93, 0x27, 0x6a, 0xa8, 0x3c, 0xa1, 0xaf, ++ 0xe2, 0xb7, 0xc5, 0x4b, 0xd0, 0xcf, 0x5e, 0x1e, 0x27, 0x36, 0xc2, 0xaf, ++ 0x8b, 0xe3, 0x53, 0xd0, 0xe3, 0x8d, 0x41, 0xb9, 0xdb, 0xc5, 0xe4, 0x6e, ++ 0x4f, 0x2c, 0x74, 0xbd, 0x7c, 0xda, 0x79, 0x8c, 0xd3, 0xf6, 0x8d, 0xc3, ++ 0xe9, 0xee, 0x89, 0x2a, 0x41, 0x77, 0x29, 0x12, 0xc0, 0x91, 0xda, 0xf9, ++ 0xa6, 0x74, 0x58, 0x37, 0x85, 0x0f, 0xd0, 0x3f, 0xb5, 0xf3, 0xef, 0x9d, ++ 0x91, 0x8f, 0x5c, 0x7a, 0x44, 0xc1, 0xfd, 0x21, 0xbe, 0xdf, 0x44, 0x56, ++ 0x0b, 0xfb, 0x47, 0xc7, 0xbf, 0x42, 0xce, 0xbd, 0x9b, 0xaa, 0x1d, 0x87, ++ 0xf1, 0x4b, 0xaa, 0x9a, 0xd7, 0x80, 0xff, 0x91, 0x58, 0xeb, 0x45, 0xba, ++ 0x3e, 0x23, 0x69, 0xa3, 0x13, 0xa8, 0xbe, 0x3a, 0x03, 0x7c, 0x1d, 0x46, ++ 0x2e, 0xbc, 0xca, 0xe5, 0xc8, 0x45, 0xb3, 0x36, 0xda, 0x1e, 0xe6, 0x7b, ++ 0x90, 0x8f, 0xc8, 0x70, 0xe0, 0x83, 0x45, 0x44, 0x33, 0xc1, 0x3a, 0xc8, ++ 0x66, 0xc9, 0x0e, 0x70, 0x15, 0xdf, 0xd5, 0xcd, 0x8c, 0xde, 0x3e, 0xe7, ++ 0xf0, 0x11, 0xef, 0x3f, 0x37, 0xc0, 0x6b, 0x12, 0xc0, 0x2b, 0x0d, 0xe1, ++ 0xf5, 0x39, 0xd7, 0x53, 0x16, 0x2b, 0x9d, 0x6f, 0xa6, 0x8f, 0xe9, 0x29, ++ 0x22, 0x55, 0x20, 0x3d, 0x12, 0xd3, 0x2d, 0xc3, 0x81, 0xdf, 0xce, 0x98, ++ 0x09, 0xd2, 0xcf, 0x19, 0x2a, 0x17, 0x01, 0x6e, 0x8b, 0xa3, 0xf4, 0xfe, ++ 0x89, 0x58, 0xd7, 0x37, 0x9c, 0xaf, 0x2e, 0xc6, 0xb3, 0x75, 0xec, 0xe5, ++ 0xe3, 0xfe, 0x09, 0x7c, 0x9e, 0xf1, 0x58, 0x0f, 0xed, 0x0a, 0x6f, 0xb9, ++ 0x09, 0xf7, 0x6b, 0x81, 0x3e, 0x90, 0xde, 0xa6, 0x27, 0xa0, 0xdd, 0x45, ++ 0x1d, 0x26, 0x05, 0xf9, 0xbc, 0x6f, 0x3f, 0xc2, 0x2f, 0x4b, 0x4c, 0x1e, ++ 0xc8, 0x30, 0x0f, 0x3b, 0xf8, 0x75, 0x18, 0x27, 0xda, 0x82, 0xfd, 0x2e, ++ 0xdd, 0xb5, 0x05, 0xe9, 0x26, 0xbe, 0xc6, 0x5e, 0x04, 0xfb, 0x47, 0x4f, ++ 0x28, 0xae, 0xc8, 0xf8, 0x90, 0x78, 0x6f, 0xd7, 0xf6, 0x8d, 0xe8, 0x4f, ++ 0x02, 0x3d, 0x01, 0x5f, 0x0e, 0x44, 0x8f, 0x8b, 0x80, 0x1e, 0x49, 0x18, ++ 0x3a, 0xf4, 0x51, 0x3a, 0xa4, 0xed, 0x12, 0x6a, 0x9a, 0x11, 0x8f, 0x14, ++ 0xbf, 0xf6, 0x74, 0xda, 0x6f, 0x7c, 0x95, 0x26, 0x03, 0xdd, 0x18, 0xf1, ++ 0x2b, 0xf6, 0x19, 0x05, 0x3c, 0xf6, 0x1a, 0xf6, 0x25, 0x67, 0xa6, 0x33, ++ 0xf8, 0xa4, 0xa4, 0x33, 0xfe, 0x54, 0xb9, 0xfc, 0x1a, 0x58, 0x4f, 0xe8, ++ 0xe5, 0x2d, 0xc5, 0x97, 0x9a, 0xee, 0xd0, 0xd3, 0x37, 0xe0, 0x4d, 0xf0, ++ 0x5b, 0x4c, 0x3a, 0x93, 0x4f, 0x03, 0xd1, 0xf9, 0x43, 0xe9, 0x76, 0xec, ++ 0xb7, 0xf5, 0xc3, 0x79, 0x4e, 0x90, 0x17, 0x62, 0x3f, 0x4a, 0xec, 0x2f, ++ 0x8b, 0xf1, 0xc7, 0xa6, 0x33, 0x7a, 0x1c, 0x68, 0x3f, 0xe9, 0x9c, 0xaa, ++ 0x15, 0xa5, 0x1b, 0xf6, 0x3b, 0xd5, 0xfc, 0x20, 0x9f, 0x54, 0x73, 0xfb, ++ 0x71, 0xc5, 0xf6, 0x08, 0xdc, 0xa7, 0xdf, 0x0d, 0x5f, 0x00, 0xee, 0x5d, ++ 0x51, 0xb8, 0x2f, 0xd1, 0x27, 0x07, 0x15, 0xe2, 0x06, 0x7c, 0x96, 0xa7, ++ 0xa7, 0xe0, 0x78, 0x02, 0xbf, 0x6a, 0x8b, 0x85, 0xa4, 0xd3, 0x71, 0x2f, ++ 0xa6, 0xd4, 0x77, 0xc5, 0xd0, 0x4f, 0x37, 0x77, 0x7b, 0x6b, 0x0b, 0xe8, ++ 0x3a, 0x76, 0x5b, 0xbc, 0x33, 0xa7, 0xa1, 0xdd, 0xed, 0x9a, 0x02, 0xfd, ++ 0x4f, 0xa9, 0x35, 0xd9, 0x21, 0x8e, 0x1d, 0xef, 0xb6, 0x4b, 0x10, 0x07, ++ 0x41, 0x12, 0x07, 0xbe, 0x38, 0xca, 0xc6, 0x21, 0xaa, 0x4b, 0x37, 0xef, ++ 0xa9, 0x1c, 0xee, 0x02, 0x4f, 0x02, 0x0e, 0x03, 0xe9, 0xab, 0x81, 0xf0, ++ 0xf3, 0x10, 0x87, 0x8f, 0x83, 0x7f, 0x37, 0xf2, 0x75, 0x06, 0xff, 0x6e, ++ 0x4e, 0x67, 0xf4, 0x7f, 0x6d, 0xbe, 0xf6, 0xca, 0x40, 0xf7, 0xb1, 0x44, ++ 0x5b, 0x2d, 0xc3, 0xfc, 0xcb, 0x98, 0x1c, 0xea, 0xe3, 0xeb, 0x32, 0x82, ++ 0xfb, 0x8d, 0x0b, 0xd2, 0xf5, 0x7c, 0x2d, 0xca, 0x61, 0xf8, 0x7a, 0x41, ++ 0x7a, 0x28, 0x5f, 0x4f, 0xe8, 0xd1, 0xf3, 0x35, 0xb5, 0x70, 0xb9, 0x3e, ++ 0x45, 0xfe, 0x72, 0x6c, 0x33, 0xbb, 0x99, 0x3f, 0xc9, 0xf8, 0xec, 0x62, ++ 0x24, 0x9b, 0xef, 0x8a, 0x74, 0xa6, 0x87, 0x1c, 0xa0, 0x3f, 0x28, 0xfe, ++ 0x1c, 0x5e, 0xb6, 0xef, 0x3a, 0x95, 0xd3, 0x19, 0xa5, 0xa0, 0x39, 0x00, ++ 0xef, 0xb6, 0x6d, 0x11, 0xb8, 0x9f, 0x20, 0xf8, 0x3e, 0x76, 0x26, 0xa9, ++ 0x30, 0xc3, 0xfe, 0x2d, 0xe8, 0x1b, 0xa8, 0x35, 0x53, 0x3b, 0x71, 0x13, ++ 0xec, 0xdb, 0x3a, 0x2d, 0x2a, 0xec, 0x23, 0x9f, 0x31, 0x07, 0x10, 0x4f, ++ 0x67, 0xa8, 0xa3, 0xda, 0x86, 0xf8, 0xf4, 0x60, 0x3e, 0xca, 0x99, 0x43, ++ 0x37, 0x30, 0x79, 0x30, 0xad, 0x4f, 0xff, 0xb8, 0x4d, 0x50, 0x7e, 0x7f, ++ 0x04, 0xee, 0x27, 0x54, 0xcb, 0x9d, 0x48, 0xd7, 0x2b, 0xaa, 0x09, 0xea, ++ 0x8f, 0xae, 0xed, 0xa5, 0x48, 0x07, 0x8b, 0x6a, 0x53, 0x25, 0xa0, 0xb3, ++ 0x25, 0x3b, 0xe2, 0x25, 0xf8, 0x9e, 0x50, 0x65, 0x37, 0xc9, 0x21, 0x72, ++ 0xb1, 0xb4, 0x45, 0x46, 0x7a, 0xa2, 0x74, 0xbb, 0x2e, 0x3d, 0x04, 0x7e, ++ 0xa5, 0xde, 0x66, 0x19, 0xe0, 0x32, 0x3a, 0x51, 0x73, 0x9a, 0xe3, 0xa9, ++ 0x9e, 0xdd, 0x36, 0x75, 0x46, 0x68, 0x5c, 0xe8, 0x49, 0x5a, 0x5e, 0xef, ++ 0x0c, 0xc6, 0x85, 0x68, 0xf9, 0x67, 0x31, 0xc3, 0x06, 0x1f, 0x17, 0xda, ++ 0x98, 0x7e, 0xcb, 0xcf, 0xd6, 0x8d, 0xa0, 0x4a, 0x24, 0xcd, 0xfd, 0x14, ++ 0x8c, 0x7b, 0x4e, 0xf5, 0x6c, 0x04, 0xbc, 0x94, 0x24, 0x37, 0x63, 0xbc, ++ 0x73, 0xb0, 0x79, 0x10, 0x4d, 0x3c, 0xae, 0xf4, 0xc1, 0x23, 0x6f, 0x6d, ++ 0xaf, 0xa7, 0xeb, 0xae, 0x7b, 0x34, 0xf0, 0x08, 0x7c, 0xbd, 0x17, 0xe2, ++ 0xae, 0xd9, 0x90, 0x3f, 0xc0, 0xe2, 0xae, 0x4d, 0x9d, 0xc7, 0x30, 0x1e, ++ 0xdb, 0xc9, 0xf9, 0xf9, 0xef, 0x4e, 0xcf, 0x0b, 0x30, 0xee, 0xec, 0xe6, ++ 0x29, 0xfa, 0xf8, 0x6b, 0x60, 0x70, 0xe3, 0x26, 0x71, 0xbe, 0x25, 0x1f, ++ 0x10, 0x84, 0x7f, 0x92, 0xa7, 0x59, 0x86, 0xb8, 0x84, 0x90, 0x0b, 0xfb, ++ 0xd2, 0x13, 0x84, 0xff, 0x28, 0xc1, 0xfe, 0x9b, 0xe0, 0x07, 0x90, 0x2b, ++ 0x60, 0x7f, 0x8a, 0x3c, 0x08, 0x88, 0x87, 0xd9, 0x12, 0x82, 0x72, 0x19, ++ 0xca, 0x71, 0x21, 0x7a, 0x75, 0x7d, 0x2d, 0xb5, 0x83, 0xc2, 0xf0, 0xd9, ++ 0xc1, 0xf4, 0x98, 0xb0, 0x72, 0x90, 0x74, 0xfe, 0xfd, 0xd7, 0x3f, 0xa0, ++ 0xfe, 0x7e, 0x13, 0x7c, 0x62, 0x72, 0xf1, 0x60, 0x7a, 0x88, 0xde, 0x7f, ++ 0xa2, 0xf6, 0xe3, 0x21, 0x1a, 0x8b, 0x7b, 0x60, 0xbc, 0xe9, 0x7e, 0xee, ++ 0x43, 0x3e, 0xb7, 0xda, 0xf5, 0xfb, 0x2c, 0x90, 0x43, 0xef, 0xc8, 0x28, ++ 0xff, 0x8b, 0x22, 0x2c, 0x5e, 0x09, 0xf6, 0x87, 0xdc, 0x44, 0xb5, 0x0f, ++ 0xe1, 0xfd, 0x01, 0x9b, 0x74, 0x4a, 0x7e, 0x1b, 0xf5, 0x3f, 0x9b, 0xfe, ++ 0x26, 0x11, 0x37, 0xc4, 0xcf, 0xfe, 0x26, 0xe3, 0xf3, 0xb9, 0x1f, 0x79, ++ 0x6a, 0x52, 0xc0, 0x9f, 0xef, 0x30, 0xb9, 0xa8, 0x25, 0x00, 0xf9, 0x14, ++ 0x48, 0xc7, 0xae, 0xd1, 0xc4, 0x67, 0xa5, 0xf4, 0xd7, 0xce, 0xf7, 0x6b, ++ 0xcb, 0x0f, 0xc6, 0xb8, 0xcd, 0xf4, 0x7d, 0xaf, 0x64, 0x45, 0xf9, 0xd7, ++ 0xbb, 0x3f, 0xca, 0x0b, 0x7c, 0xdd, 0x6b, 0x33, 0x61, 0x5c, 0xb9, 0xeb, ++ 0xb5, 0x08, 0x84, 0xeb, 0x85, 0xf4, 0x28, 0xee, 0x5f, 0xfb, 0x74, 0x7e, ++ 0xb8, 0xd8, 0xff, 0x88, 0x8c, 0xe8, 0xf9, 0x43, 0x19, 0x6d, 0xbf, 0x35, ++ 0x92, 0xf5, 0xbb, 0x35, 0x92, 0xc5, 0xe9, 0xb6, 0x3e, 0x9a, 0x19, 0x07, ++ 0xf6, 0xe7, 0x40, 0xfb, 0xe3, 0x65, 0x2d, 0x69, 0x18, 0xe7, 0x13, 0xf1, ++ 0xc7, 0xd4, 0x80, 0x6a, 0x62, 0x49, 0x64, 0x6c, 0x1c, 0x25, 0x40, 0x70, ++ 0x7d, 0x62, 0xbf, 0x7c, 0x13, 0xe4, 0x6b, 0x14, 0x0f, 0x9c, 0xaf, 0xf1, ++ 0xd7, 0xf4, 0xbe, 0x7c, 0x8d, 0x00, 0xd0, 0x53, 0xd3, 0xac, 0x9e, 0xc3, ++ 0x30, 0x47, 0xa3, 0x1f, 0x36, 0xe4, 0xe8, 0xc7, 0xfb, 0xa1, 0x9f, 0x21, ++ 0x2d, 0x2c, 0x4c, 0xb0, 0xe9, 0xe8, 0x0a, 0x09, 0xd6, 0xb9, 0xa9, 0x2e, ++ 0xbc, 0x1f, 0x26, 0xe8, 0x68, 0x13, 0x8f, 0x7b, 0x85, 0xe4, 0x45, 0x7c, ++ 0xab, 0xd3, 0x2f, 0xf5, 0x09, 0xd1, 0xa9, 0x21, 0xf2, 0x53, 0xb4, 0x7b, ++ 0x9a, 0xe7, 0x45, 0x94, 0x76, 0xcd, 0xdd, 0x0b, 0x76, 0x1e, 0xe5, 0xef, ++ 0x73, 0xa1, 0xfc, 0x3d, 0xb5, 0xe0, 0x91, 0xc8, 0x70, 0xfb, 0xf3, 0x9e, ++ 0x96, 0x1f, 0x62, 0x5c, 0x74, 0x20, 0xfa, 0xf7, 0x98, 0x88, 0x16, 0x2e, ++ 0xee, 0x37, 0x3a, 0x83, 0xcb, 0x5b, 0x25, 0x30, 0x1c, 0xed, 0xc1, 0x37, ++ 0x2e, 0x46, 0xa9, 0x61, 0xf2, 0x25, 0x3c, 0xaf, 0x99, 0x1c, 0x00, 0x17, ++ 0x11, 0x9f, 0xe9, 0x3f, 0xfe, 0x8f, 0x70, 0xfc, 0x61, 0x19, 0x7d, 0xfb, ++ 0x7f, 0xc3, 0x07, 0xb3, 0xff, 0x67, 0x9c, 0x77, 0xb7, 0x99, 0x8c, 0x0c, ++ 0xa7, 0x57, 0x04, 0x9e, 0x8d, 0xe3, 0x85, 0x69, 0x3f, 0xdb, 0x15, 0xd2, ++ 0xde, 0x63, 0x21, 0xda, 0xee, 0x98, 0xfe, 0xed, 0x84, 0xdd, 0xeb, 0x91, ++ 0xf8, 0xfe, 0xee, 0x87, 0x04, 0xf5, 0xab, 0xa0, 0x13, 0x0a, 0xf7, 0x71, ++ 0x19, 0xf4, 0x7b, 0xe1, 0xdb, 0xf3, 0xc6, 0x45, 0x41, 0xc2, 0xa1, 0xb5, ++ 0x59, 0x06, 0x79, 0x70, 0xa1, 0xa3, 0x2b, 0x19, 0xe2, 0x56, 0x03, 0xf9, ++ 0x87, 0x62, 0x3e, 0xf4, 0x2f, 0x23, 0x5c, 0xbc, 0x85, 0x8e, 0xe7, 0x09, ++ 0x87, 0x87, 0x69, 0x19, 0x4c, 0xbf, 0x7a, 0xcc, 0xcc, 0x0e, 0x95, 0xca, ++ 0x0f, 0xdd, 0x03, 0xf3, 0xf2, 0x7c, 0x65, 0x91, 0x22, 0x42, 0xe8, 0x6c, ++ 0x22, 0xaf, 0x67, 0xdc, 0xc7, 0xec, 0xfc, 0xea, 0xbf, 0xc7, 0xa1, 0x9c, ++ 0x34, 0xfb, 0x93, 0xc3, 0xc1, 0xcf, 0xb8, 0xbf, 0x39, 0x11, 0x82, 0x93, ++ 0x4c, 0xdf, 0xb1, 0x71, 0x39, 0x5c, 0x5a, 0xcb, 0x49, 0x45, 0x44, 0x12, ++ 0xc6, 0x0b, 0xc8, 0x56, 0x15, 0xfc, 0x40, 0x26, 0x2f, 0xd5, 0x16, 0x82, ++ 0x7c, 0x3e, 0x46, 0x72, 0xe3, 0xba, 0xeb, 0x20, 0xe8, 0xe2, 0x00, 0x3a, ++ 0xef, 0xc6, 0x3c, 0xc8, 0x0b, 0x47, 0x65, 0xac, 0x57, 0x78, 0x9f, 0xea, ++ 0x03, 0xbf, 0x89, 0xea, 0x85, 0xbb, 0x01, 0x7e, 0xa5, 0x44, 0xdb, 0x6b, ++ 0x4a, 0x0b, 0xc2, 0x4b, 0xd0, 0x43, 0xeb, 0x8b, 0xd4, 0x4e, 0xd1, 0xc5, ++ 0xad, 0x18, 0xff, 0x08, 0xff, 0x75, 0x24, 0x8f, 0xff, 0x50, 0x55, 0xe3, ++ 0x0e, 0xc5, 0xdf, 0xd0, 0x59, 0x94, 0x54, 0x43, 0xe4, 0xfe, 0x30, 0xcd, ++ 0x4a, 0x94, 0x90, 0x38, 0x5b, 0xf2, 0x22, 0xbb, 0xae, 0x3c, 0xb2, 0xd9, ++ 0xa9, 0xab, 0xef, 0xf4, 0xfa, 0x25, 0xe0, 0x2b, 0x67, 0x8b, 0xaa, 0x7b, ++ 0x1f, 0x94, 0x57, 0x6c, 0xbd, 0x23, 0xbd, 0x64, 0x0b, 0xe8, 0xff, 0x4d, ++ 0xa4, 0x07, 0xd7, 0x37, 0x8a, 0xcf, 0x67, 0x8c, 0xa4, 0x21, 0x7d, 0x5c, ++ 0x38, 0xfa, 0x49, 0x02, 0xc4, 0x25, 0x7f, 0xc0, 0xf9, 0x87, 0xae, 0xb7, ++ 0x05, 0xd7, 0xdb, 0xa2, 0x5d, 0x08, 0xa5, 0x0f, 0xb1, 0xde, 0x6b, 0xad, ++ 0xeb, 0x83, 0x95, 0x74, 0x3e, 0x94, 0xef, 0x3f, 0x02, 0xff, 0x9c, 0x3e, ++ 0x67, 0x3f, 0x70, 0x52, 0x1a, 0x8a, 0x70, 0xb7, 0x83, 0x3a, 0xa0, 0x7a, ++ 0x91, 0xb5, 0x1b, 0xf9, 0xf0, 0x31, 0xf4, 0x23, 0x47, 0x36, 0x77, 0xa3, ++ 0x1d, 0x3f, 0xa7, 0x65, 0xbf, 0x04, 0xfa, 0x8b, 0xca, 0x0d, 0x6c, 0xb7, ++ 0x69, 0xa5, 0x15, 0x9f, 0xcf, 0xac, 0xb4, 0xa3, 0x9f, 0x2f, 0xf0, 0x3b, ++ 0x82, 0xd6, 0x83, 0x3c, 0x25, 0x6f, 0x05, 0xc9, 0x86, 0x7d, 0x81, 0x81, ++ 0xf4, 0xd3, 0xc6, 0x8c, 0x41, 0xeb, 0xa7, 0x8d, 0x19, 0x61, 0xf4, 0x93, ++ 0xc9, 0x1a, 0x78, 0x13, 0xf6, 0xc1, 0x1b, 0x3b, 0x65, 0x15, 0xe8, 0x60, ++ 0xcd, 0xc3, 0x09, 0x98, 0xff, 0xf2, 0x5c, 0xbb, 0x84, 0xfb, 0x2e, 0x07, ++ 0x3b, 0x59, 0xfe, 0xdf, 0x73, 0xad, 0x51, 0xa8, 0x47, 0xc4, 0xb8, 0x5f, ++ 0xbe, 0x14, 0x87, 0xfb, 0x3f, 0x5f, 0xf2, 0x7d, 0x40, 0xd2, 0x15, 0x8f, ++ 0xf4, 0xdd, 0x14, 0xcf, 0x71, 0xb2, 0x36, 0x1e, 0xf7, 0xc9, 0x7b, 0xf9, ++ 0x3e, 0x64, 0x47, 0xba, 0xf6, 0x1f, 0x19, 0x21, 0xf2, 0xe0, 0xb9, 0xce, ++ 0x6f, 0x22, 0x41, 0x7f, 0xe4, 0x89, 0x3c, 0x5b, 0x83, 0xde, 0x01, 0x41, ++ 0x2c, 0xd1, 0xf6, 0xe0, 0x13, 0x01, 0x1d, 0xb7, 0xa6, 0x14, 0xad, 0x93, ++ 0x61, 0x5d, 0x77, 0x68, 0xe3, 0x22, 0x65, 0xe4, 0xf7, 0xdd, 0x8c, 0x5e, ++ 0x99, 0x7e, 0xfa, 0xe5, 0xae, 0x0a, 0x93, 0x16, 0x82, 0x9f, 0x0b, 0x1d, ++ 0x5f, 0xcf, 0x39, 0xa0, 0xf6, 0xdf, 0x5f, 0x12, 0xfb, 0x50, 0x62, 0x7f, ++ 0xea, 0x4d, 0xa7, 0xf6, 0x6a, 0x46, 0x88, 0xbc, 0x36, 0xee, 0x3b, 0x19, ++ 0xf7, 0x4b, 0xe4, 0x58, 0x2b, 0xe6, 0x69, 0xbb, 0xe4, 0x28, 0x97, 0xac, ++ 0xd7, 0xb7, 0x48, 0x87, 0x6b, 0x32, 0x98, 0x3e, 0x5d, 0xb3, 0x3f, 0x0a, ++ 0xe1, 0xb8, 0x26, 0x23, 0x06, 0xf7, 0x7b, 0xe9, 0x7c, 0x8f, 0xc0, 0x38, ++ 0x5d, 0x36, 0x0b, 0x19, 0x46, 0xdf, 0x5f, 0x38, 0x11, 0x83, 0xf5, 0xc4, ++ 0xfc, 0xe9, 0x7c, 0x0b, 0x8f, 0x86, 0x99, 0x6f, 0x93, 0x29, 0x30, 0xe7, ++ 0x80, 0xa4, 0x9b, 0xef, 0xb1, 0xab, 0xcf, 0x57, 0x9f, 0xcf, 0x2c, 0xe6, ++ 0xd7, 0x87, 0x1f, 0x1e, 0x2f, 0x90, 0x6d, 0x0a, 0xae, 0xa3, 0x97, 0x44, ++ 0xb9, 0x00, 0xaf, 0xed, 0x16, 0xd7, 0x09, 0x0d, 0xf4, 0xef, 0x3b, 0x51, ++ 0x2c, 0x7f, 0x8a, 0xe3, 0x6f, 0x39, 0xe7, 0xcd, 0x5e, 0x8a, 0x2f, 0x89, ++ 0xe2, 0xab, 0xb7, 0xe3, 0x42, 0x24, 0xd0, 0xf1, 0xc1, 0x74, 0xed, 0x24, ++ 0xcc, 0x43, 0x1e, 0x19, 0x88, 0x05, 0xff, 0xe5, 0x60, 0xe7, 0x85, 0x1c, ++ 0xe0, 0x97, 0x81, 0xf6, 0x0d, 0x95, 0x8c, 0x8a, 0xbf, 0x00, 0xbe, 0x20, ++ 0xff, 0x0f, 0xf1, 0x66, 0xd7, 0x2e, 0xec, 0x22, 0x8c, 0x2f, 0xb5, 0xab, ++ 0xb4, 0xcb, 0xc8, 0xa8, 0x38, 0x0b, 0xf5, 0xaf, 0x03, 0x3e, 0xdf, 0x5c, ++ 0x0f, 0x7c, 0x9a, 0x94, 0x98, 0x75, 0xa1, 0xf6, 0x97, 0xc4, 0xe5, 0xb3, ++ 0x91, 0x1e, 0xa5, 0xce, 0xfd, 0xff, 0x03, 0xfb, 0x01, 0x94, 0x1f, 0x31, ++ 0x1f, 0xd5, 0x3b, 0x8a, 0xf8, 0xd6, 0x50, 0xb8, 0xb5, 0x16, 0x70, 0xba, ++ 0x9c, 0x49, 0x54, 0x16, 0x9f, 0xd1, 0xd3, 0x4b, 0x47, 0xba, 0xc7, 0x9c, ++ 0xe9, 0x08, 0xf2, 0xf1, 0x55, 0xe0, 0x13, 0x09, 0xf5, 0x7e, 0x99, 0xee, ++ 0x89, 0x86, 0x27, 0xcc, 0x23, 0x79, 0x2c, 0xca, 0x29, 0x1b, 0x94, 0xa9, ++ 0x5e, 0xdb, 0x6b, 0x49, 0x0d, 0xda, 0x5b, 0xa3, 0xd3, 0x98, 0xdc, 0x0b, ++ 0xc4, 0x13, 0xcc, 0x5f, 0x31, 0xee, 0xf7, 0x66, 0x64, 0xcc, 0x48, 0xca, ++ 0xa4, 0x70, 0x4b, 0xcd, 0x56, 0x4d, 0xf6, 0xfc, 0xeb, 0xe2, 0x87, 0x91, ++ 0x99, 0x57, 0x85, 0x9f, 0x1f, 0xe9, 0xa2, 0x91, 0xc3, 0xa9, 0x11, 0xf6, ++ 0x19, 0x29, 0x5c, 0xc8, 0x3e, 0xf3, 0x59, 0x5d, 0xbe, 0x80, 0x01, 0x0e, ++ 0x07, 0xd3, 0x3d, 0x59, 0x0c, 0x0e, 0x41, 0x3a, 0x5b, 0xa3, 0x5e, 0x15, ++ 0x1e, 0x79, 0x0c, 0x1e, 0x5a, 0x21, 0xac, 0xc3, 0x66, 0xa6, 0xf4, 0x02, ++ 0x40, 0x99, 0x50, 0xef, 0xc4, 0xbc, 0x18, 0xd5, 0x7d, 0x37, 0xec, 0x7f, ++ 0xee, 0x5c, 0xc5, 0xe0, 0xd0, 0xfb, 0x22, 0x83, 0xc3, 0xee, 0x2e, 0x13, ++ 0xd2, 0xf5, 0x16, 0x92, 0x8b, 0xfc, 0x99, 0x6b, 0x3a, 0x3f, 0x07, 0xfa, ++ 0xa7, 0xf2, 0x67, 0x02, 0xf4, 0x53, 0xdc, 0xdd, 0x66, 0x82, 0x7c, 0xc2, ++ 0x0c, 0x9f, 0x6a, 0x82, 0xb8, 0x72, 0x4e, 0x77, 0xbb, 0xc9, 0x74, 0x75, ++ 0xba, 0x2d, 0xcb, 0x44, 0x7d, 0xa1, 0x4d, 0xca, 0x64, 0xf6, 0xc5, 0xfd, ++ 0x80, 0x87, 0xbc, 0x5d, 0x2c, 0x1e, 0x73, 0x15, 0xba, 0xad, 0xcc, 0x1c, ++ 0x7f, 0x5d, 0x70, 0xaf, 0xcd, 0x1c, 0x3f, 0x78, 0x39, 0x44, 0xe9, 0xca, ++ 0x13, 0x4a, 0x57, 0x83, 0xcd, 0x4b, 0xa2, 0xf4, 0x41, 0x92, 0x13, 0xfa, ++ 0xf7, 0x47, 0x48, 0x0f, 0xc6, 0xfd, 0xf7, 0xbf, 0x12, 0x81, 0xf2, 0x7e, ++ 0xf9, 0x1e, 0x09, 0xe5, 0xd3, 0xf2, 0xd7, 0x3f, 0x9b, 0x03, 0xf0, 0x5d, ++ 0xfe, 0x9b, 0x08, 0x24, 0xca, 0xaa, 0xdf, 0x44, 0xe2, 0xf7, 0xf3, 0xfb, ++ 0xd8, 0xf7, 0x2f, 0xcb, 0xc3, 0xef, 0x4f, 0xdf, 0x95, 0x99, 0x80, 0x7a, ++ 0xb6, 0xb1, 0xfd, 0x3e, 0x4f, 0xa8, 0x7e, 0x17, 0x76, 0xc3, 0x4f, 0xdd, ++ 0xe7, 0xed, 0xe9, 0x72, 0x70, 0x9f, 0x2f, 0x71, 0x1a, 0x3b, 0x6f, 0xb2, ++ 0x26, 0x52, 0xe4, 0x9b, 0xb2, 0xfd, 0xbe, 0x58, 0x4e, 0x67, 0x89, 0x23, ++ 0x3d, 0x6e, 0xd0, 0x53, 0x89, 0xd5, 0x2c, 0x9e, 0x14, 0x1b, 0xb3, 0x10, ++ 0xf7, 0xfb, 0xfa, 0x9f, 0x2b, 0x61, 0x7c, 0xeb, 0xe0, 0xed, 0xec, 0x76, ++ 0x15, 0xed, 0x07, 0xe3, 0x39, 0x13, 0x39, 0x8a, 0xe5, 0xe5, 0x39, 0xc8, ++ 0xfa, 0xaf, 0x00, 0x4e, 0x89, 0x35, 0xfa, 0xef, 0x8e, 0x98, 0x1a, 0xcc, ++ 0xc7, 0x73, 0x18, 0xf6, 0xff, 0x04, 0xbc, 0xbd, 0x99, 0xdc, 0x6e, 0xb6, ++ 0x10, 0x27, 0xca, 0x59, 0xc3, 0x3e, 0xbf, 0x78, 0xfe, 0x25, 0x93, 0xdb, ++ 0xeb, 0x6b, 0xe3, 0x4d, 0xa1, 0xf2, 0x04, 0xf4, 0x00, 0xc0, 0x75, 0x85, ++ 0xcd, 0x8a, 0xeb, 0x5e, 0xe1, 0x20, 0x89, 0xb5, 0x10, 0x57, 0xb0, 0x29, ++ 0x2e, 0x1c, 0xcb, 0xd0, 0x8f, 0x78, 0xc6, 0xbb, 0x4d, 0x44, 0x0d, 0x3d, ++ 0x2f, 0x53, 0x13, 0x45, 0xd4, 0x10, 0xbb, 0xc8, 0xe1, 0x49, 0xd0, 0x95, ++ 0x87, 0xce, 0x1a, 0xae, 0xab, 0x3f, 0x4c, 0x4b, 0xd5, 0x7d, 0x4f, 0x5e, ++ 0x94, 0xab, 0xfb, 0x3e, 0xb2, 0x79, 0xac, 0xae, 0x3c, 0xba, 0xe5, 0x06, ++ 0x5d, 0xfd, 0x14, 0x0a, 0x80, 0xd0, 0x72, 0xda, 0xba, 0x5b, 0x74, 0xf5, ++ 0x33, 0xda, 0x66, 0xe8, 0xca, 0x59, 0x9b, 0xee, 0xd6, 0xd5, 0xcf, 0xf1, ++ 0xcd, 0xd5, 0x7d, 0xcf, 0xdb, 0xb1, 0x44, 0xf7, 0xbd, 0xa0, 0x7d, 0x85, ++ 0xae, 0x3c, 0xa6, 0xe3, 0x07, 0xba, 0xfa, 0xf2, 0x00, 0xf6, 0xb8, 0x80, ++ 0xb3, 0x2c, 0xec, 0x71, 0x5b, 0xb1, 0x06, 0x74, 0x25, 0xdb, 0xac, 0x52, ++ 0xa8, 0xdd, 0xf2, 0x22, 0xaf, 0x57, 0x1e, 0x6b, 0x45, 0xf8, 0x3f, 0xc2, ++ 0xf5, 0xf5, 0x23, 0x36, 0x0b, 0xea, 0xeb, 0x47, 0xb8, 0xbe, 0xee, 0x72, ++ 0x94, 0x5c, 0x75, 0x5f, 0xe6, 0x9f, 0xf5, 0xdf, 0xde, 0x16, 0xf4, 0xc0, ++ 0xed, 0xb5, 0x0a, 0x1e, 0x2f, 0xfb, 0xf2, 0x80, 0xc5, 0x04, 0xf4, 0xb8, ++ 0xfc, 0x20, 0xa5, 0x8b, 0x31, 0x68, 0xaf, 0xbd, 0x9d, 0xc9, 0xec, 0xb5, ++ 0xe9, 0xf5, 0xb8, 0xfa, 0x80, 0x05, 0xe4, 0x5e, 0xf7, 0x00, 0xf9, 0x20, ++ 0xef, 0x65, 0x72, 0x3f, 0x43, 0xa1, 0x7e, 0x4c, 0x18, 0x7f, 0xf0, 0x93, ++ 0x4c, 0x55, 0x17, 0xb7, 0x13, 0xfe, 0x03, 0x95, 0x6b, 0xef, 0x73, 0xfd, ++ 0xc2, 0xfc, 0x26, 0xd2, 0x2c, 0x83, 0x1c, 0x10, 0x72, 0xa9, 0x29, 0x9a, ++ 0xa0, 0x9d, 0xd7, 0x14, 0x6d, 0xc7, 0x3c, 0x9f, 0xde, 0xd8, 0x4b, 0x99, ++ 0xc0, 0x4f, 0x54, 0x5e, 0x7d, 0x0c, 0xed, 0xba, 0xb3, 0x9f, 0x68, 0x3e, ++ 0x00, 0x72, 0xaa, 0x33, 0x02, 0xe5, 0xd4, 0x5b, 0xd9, 0x9f, 0xa0, 0x3f, ++ 0x7e, 0x4b, 0xcb, 0x42, 0x6c, 0xff, 0x62, 0xa6, 0x9d, 0xe1, 0xc5, 0xe2, ++ 0x52, 0xed, 0x28, 0xa7, 0xf4, 0xfa, 0xf7, 0xa8, 0xb9, 0xbb, 0x16, 0xf0, ++ 0x70, 0x74, 0xbc, 0x4c, 0x56, 0x81, 0x1d, 0xe4, 0x2a, 0x1d, 0x4a, 0xae, ++ 0x02, 0xf7, 0x77, 0xc0, 0xdf, 0xa6, 0x76, 0xf2, 0xb6, 0x2c, 0x82, 0xfd, ++ 0x5e, 0xcb, 0x5f, 0x3d, 0xba, 0x72, 0x11, 0xe6, 0x4d, 0x0f, 0xd4, 0xdf, ++ 0xd1, 0xa2, 0x48, 0x8c, 0x9b, 0xd6, 0x02, 0x5d, 0x85, 0x8c, 0x1b, 0x9d, ++ 0xc5, 0xe0, 0x99, 0xc1, 0x9f, 0xd4, 0x10, 0x45, 0xbf, 0xf3, 0xdc, 0xaf, ++ 0x6d, 0x3e, 0x2f, 0xf8, 0x4b, 0x63, 0xdf, 0x8d, 0x25, 0x36, 0xc8, 0x93, ++ 0xf9, 0xe3, 0x38, 0x2f, 0xe8, 0x23, 0xd2, 0x7d, 0x3f, 0xec, 0xdf, 0x7b, ++ 0xbf, 0x8e, 0xc1, 0xb8, 0x4e, 0x6d, 0xd1, 0xbb, 0xe3, 0x56, 0x61, 0xbe, ++ 0xa8, 0x9b, 0xf9, 0x7d, 0x13, 0xd8, 0x9a, 0x6f, 0x7a, 0xf9, 0xed, 0x58, ++ 0xf0, 0xd7, 0x6b, 0x77, 0x1f, 0x4c, 0xf2, 0x86, 0xe0, 0xd1, 0xe8, 0xef, ++ 0x65, 0xf0, 0xf5, 0x11, 0xa5, 0x27, 0x13, 0xf3, 0x4e, 0x5f, 0x3d, 0x33, ++ 0x44, 0xa5, 0xcf, 0xda, 0x57, 0x0e, 0x25, 0xb1, 0xb8, 0x92, 0x3e, 0xff, ++ 0xc5, 0xe8, 0xe7, 0xd7, 0xb6, 0x2c, 0xd7, 0xd1, 0x67, 0xe3, 0xa5, 0x48, ++ 0x5d, 0x1e, 0x4c, 0xa3, 0xd2, 0x6d, 0x01, 0x7c, 0x34, 0x5e, 0x8a, 0xc1, ++ 0xf7, 0xbd, 0x99, 0xfa, 0x38, 0xc0, 0x80, 0xf0, 0x1a, 0x24, 0x3c, 0x8d, ++ 0xef, 0x05, 0x3c, 0x8f, 0x16, 0x9d, 0x19, 0x05, 0x71, 0xfa, 0x2f, 0x23, ++ 0xc3, 0xd3, 0xf1, 0x6d, 0xbc, 0x9e, 0x28, 0x1b, 0xcf, 0x2f, 0x0c, 0x94, ++ 0x27, 0x3f, 0x81, 0xb7, 0xbb, 0xe0, 0x9a, 0x38, 0x14, 0xe2, 0x4c, 0xb5, ++ 0x16, 0x7f, 0xfa, 0x60, 0xe2, 0x12, 0x02, 0x4e, 0x6f, 0x5d, 0x6e, 0xc0, ++ 0x73, 0x11, 0xbf, 0x1e, 0xe0, 0x5c, 0x44, 0x51, 0x16, 0xdb, 0x37, 0xf9, ++ 0x75, 0xf6, 0x02, 0xcc, 0x6b, 0x9e, 0x68, 0x6d, 0xae, 0x04, 0xfd, 0x3d, ++ 0x91, 0xc7, 0x3f, 0xc3, 0xe4, 0x35, 0x57, 0x67, 0x81, 0x9d, 0x7b, 0xe2, ++ 0x5f, 0x93, 0xd7, 0x3c, 0x3d, 0x8b, 0xe3, 0x87, 0xe7, 0x0d, 0x0f, 0xcf, ++ 0x52, 0xc3, 0xe6, 0x35, 0x5f, 0xeb, 0xdc, 0xc9, 0x54, 0x0b, 0x95, 0x4b, ++ 0x61, 0xf8, 0x2b, 0xb7, 0x0f, 0x7e, 0x7f, 0x9a, 0x39, 0x8e, 0xd2, 0xf1, ++ 0xfd, 0xbf, 0x30, 0xdb, 0x61, 0x5e, 0x0d, 0xa0, 0xf3, 0x20, 0xde, 0xb2, ++ 0xc5, 0x8c, 0xf1, 0xd7, 0xb7, 0x2f, 0x47, 0x10, 0x88, 0x87, 0x7f, 0xb6, ++ 0xd9, 0xfc, 0x3c, 0xe4, 0xbb, 0x2c, 0xfa, 0xc5, 0xc1, 0x11, 0x4f, 0x40, ++ 0xfc, 0xbb, 0x28, 0x02, 0xf3, 0xf1, 0x1a, 0xb6, 0x98, 0x59, 0xbc, 0xb6, ++ 0x28, 0xd2, 0x07, 0x21, 0x87, 0x45, 0x5b, 0xbe, 0x37, 0x04, 0xf2, 0x2e, ++ 0xbf, 0xa0, 0x7c, 0xbb, 0x8c, 0xce, 0xab, 0xe1, 0x17, 0x0e, 0xcc, 0x07, ++ 0x7a, 0xbb, 0xeb, 0xb1, 0x21, 0x80, 0xa7, 0x33, 0x9c, 0x9f, 0x17, 0x7d, ++ 0xfb, 0xe3, 0x3b, 0x00, 0xfe, 0xbb, 0x2d, 0xf6, 0xbc, 0x22, 0xfa, 0x5c, ++ 0xb6, 0x4b, 0xd2, 0xe5, 0x99, 0x2f, 0xd9, 0x16, 0xa9, 0x2b, 0x8b, 0x7c, ++ 0x22, 0x81, 0x3f, 0x22, 0x05, 0xf3, 0xcf, 0x55, 0x2a, 0x4f, 0x5b, 0xb2, ++ 0xf4, 0xe7, 0x68, 0xc6, 0x05, 0xf7, 0x25, 0x5a, 0xb2, 0xb8, 0x5c, 0xbd, ++ 0x9d, 0xce, 0x77, 0xf9, 0xf8, 0x0b, 0x16, 0xc0, 0xe3, 0xc1, 0xc3, 0x51, ++ 0x38, 0xef, 0x37, 0x62, 0x64, 0xf4, 0x73, 0xfd, 0x45, 0x7f, 0xfd, 0xdd, ++ 0x18, 0x5a, 0xae, 0xfc, 0x56, 0xc1, 0xbc, 0x7e, 0x63, 0x7e, 0x12, 0x21, ++ 0x88, 0x74, 0xb2, 0x90, 0xe7, 0x11, 0x56, 0xbe, 0xa2, 0xf4, 0x9d, 0x03, ++ 0x80, 0xb2, 0x7f, 0x65, 0x33, 0xf2, 0x09, 0x6d, 0x17, 0x53, 0x1d, 0x92, ++ 0x6f, 0x5d, 0xf9, 0x73, 0xe6, 0x4f, 0x57, 0x46, 0xb2, 0x3c, 0xe0, 0x01, ++ 0xf3, 0x96, 0x0c, 0xf9, 0x4a, 0xe2, 0x9c, 0x45, 0xbf, 0x3c, 0xa5, 0xe0, ++ 0x39, 0x0b, 0x9d, 0x9d, 0x22, 0xe8, 0xe6, 0xa9, 0x2c, 0x3d, 0x5f, 0x1f, ++ 0x3c, 0xcc, 0xf2, 0x92, 0x16, 0x1e, 0xe5, 0x76, 0xe5, 0x35, 0xe4, 0xe6, ++ 0x3b, 0xb0, 0x8e, 0x0c, 0xc0, 0xd7, 0x5b, 0x75, 0xb0, 0x6f, 0xf9, 0x36, ++ 0x87, 0xc6, 0xdb, 0x97, 0x3f, 0x5b, 0x3b, 0x8c, 0x96, 0x3f, 0x9b, 0x20, ++ 0x41, 0x64, 0x8e, 0x7c, 0x76, 0x39, 0x3c, 0xdf, 0x7c, 0x26, 0xf4, 0x12, ++ 0x9c, 0x0f, 0xc8, 0x0e, 0xe2, 0x67, 0x9a, 0x6b, 0x71, 0x5f, 0x19, 0xd8, ++ 0xf2, 0xd6, 0x09, 0xf7, 0xe9, 0xce, 0x2d, 0x0c, 0x5e, 0xde, 0x5c, 0x5d, ++ 0x9e, 0xdc, 0x95, 0x65, 0xc1, 0xf1, 0x8d, 0xf2, 0xdd, 0x48, 0xf7, 0xff, ++ 0xbf, 0xe4, 0x7b, 0x6d, 0xd1, 0xa1, 0x51, 0x5e, 0x1b, 0x3e, 0x5f, 0x80, ++ 0xe7, 0xd9, 0xdd, 0x4c, 0x3e, 0x1a, 0xf9, 0xdc, 0x28, 0xcf, 0x73, 0x0d, ++ 0x72, 0x30, 0x28, 0xc7, 0x65, 0x9d, 0x1c, 0xcf, 0xe5, 0x72, 0x20, 0x28, ++ 0xcf, 0x2d, 0xf8, 0x9d, 0x9a, 0x69, 0xb8, 0x1e, 0x6f, 0x89, 0xe2, 0x5b, ++ 0x23, 0xa1, 0xff, 0xf3, 0x1e, 0xd0, 0x7d, 0x7e, 0x8c, 0x9a, 0x58, 0x4e, ++ 0x9b, 0xac, 0xb5, 0xa7, 0x46, 0x6b, 0x57, 0xf7, 0x47, 0xff, 0x2f, 0xd4, ++ 0xef, 0x4a, 0xd1, 0x3e, 0xca, 0xa2, 0x7c, 0x34, 0xfa, 0x97, 0xb9, 0x55, ++ 0x60, 0x8c, 0xe7, 0xed, 0x6a, 0x33, 0x01, 0xff, 0xf6, 0x0e, 0x60, 0x87, ++ 0x14, 0xa4, 0x1a, 0xf2, 0x82, 0x78, 0x7c, 0x48, 0x7c, 0x3f, 0x9b, 0x55, ++ 0x5e, 0x00, 0xf9, 0xaa, 0x7b, 0x54, 0xf6, 0x14, 0xfc, 0x59, 0x4c, 0x99, ++ 0x90, 0xef, 0x2f, 0x9f, 0xcd, 0x62, 0xfb, 0xcb, 0x3f, 0x01, 0xbb, 0x67, ++ 0xf9, 0x7f, 0x5e, 0x44, 0xfe, 0xdc, 0x12, 0xa5, 0x39, 0x15, 0x58, 0xcf, ++ 0x70, 0x8b, 0x2b, 0x74, 0xff, 0x56, 0x3c, 0x2f, 0x72, 0x7e, 0x1f, 0xf8, ++ 0x7c, 0xad, 0x3e, 0xdf, 0xf9, 0x74, 0x3a, 0x61, 0x78, 0xcf, 0xce, 0xd6, ++ 0xed, 0xcf, 0x80, 0x7f, 0x8f, 0xf9, 0x01, 0x07, 0xa2, 0x10, 0x6e, 0xcf, ++ 0x3a, 0xdd, 0x97, 0x01, 0x0e, 0xed, 0x4e, 0xf7, 0xb7, 0x30, 0xaf, 0x32, ++ 0xa7, 0xfb, 0x1f, 0x59, 0x21, 0x78, 0x59, 0xcb, 0xd7, 0xa9, 0x98, 0xf4, ++ 0x71, 0x6b, 0xf1, 0x2c, 0xcd, 0x16, 0xf4, 0xef, 0x41, 0x3d, 0xbe, 0xa0, ++ 0x22, 0xbc, 0xfc, 0x4d, 0xcd, 0x66, 0x79, 0xc1, 0xe5, 0x4f, 0xdf, 0x35, ++ 0x0a, 0xec, 0xce, 0xbf, 0xec, 0xbf, 0x7b, 0x14, 0xc8, 0xc7, 0xae, 0xa7, ++ 0x4a, 0xaf, 0x6a, 0x87, 0x6e, 0xe0, 0xfc, 0xf9, 0x6f, 0x5c, 0xee, 0xc7, ++ 0xf3, 0xb8, 0xe3, 0x4f, 0x81, 0x6f, 0x68, 0x39, 0x01, 0xe2, 0x96, 0xb4, ++ 0xfd, 0x02, 0x8b, 0x27, 0x33, 0x3e, 0xa4, 0x1f, 0x73, 0x76, 0x3c, 0xdb, ++ 0xef, 0x2e, 0xff, 0x83, 0x27, 0x8d, 0xc2, 0xe5, 0xd4, 0x7a, 0x19, 0xe5, ++ 0xf7, 0xa9, 0x18, 0x16, 0x67, 0xfc, 0x24, 0x46, 0xa9, 0xd9, 0xc6, 0xdb, ++ 0x25, 0xe9, 0xda, 0xb1, 0x79, 0xca, 0x40, 0xf7, 0x94, 0x8f, 0x95, 0x18, ++ 0x45, 0x77, 0x5e, 0xa2, 0x14, 0x68, 0xda, 0x31, 0xf0, 0x3a, 0x4b, 0xb3, ++ 0x99, 0x1e, 0xb5, 0x10, 0x97, 0x15, 0xda, 0x5b, 0x0e, 0xdc, 0x62, 0x05, ++ 0xfc, 0xca, 0x92, 0xdb, 0xce, 0xf2, 0xd2, 0x19, 0x3d, 0x4c, 0xa4, 0x23, ++ 0x00, 0x3d, 0xfc, 0x98, 0xcb, 0xb1, 0xbf, 0x3b, 0xb5, 0xa2, 0x6c, 0x6c, ++ 0xc7, 0xf4, 0xed, 0x44, 0xae, 0x6f, 0x95, 0x18, 0x83, 0x7e, 0x1d, 0x11, ++ 0x5e, 0x9e, 0x89, 0xe7, 0x4b, 0x4e, 0x77, 0x09, 0xf4, 0x73, 0xa7, 0xd3, ++ 0x5d, 0x9a, 0xed, 0x80, 0xb8, 0x17, 0xc9, 0x03, 0xbe, 0x69, 0x8f, 0x0a, ++ 0x9f, 0xe7, 0x73, 0x13, 0xc7, 0xdf, 0xdf, 0x85, 0x3d, 0x46, 0x62, 0xd0, ++ 0x6f, 0xc6, 0xf1, 0x64, 0xdc, 0x57, 0x75, 0x67, 0x63, 0x5c, 0xcb, 0x53, ++ 0x01, 0xfd, 0xc1, 0xbe, 0xaa, 0x59, 0x02, 0x3e, 0xb0, 0xf3, 0xfa, 0x6e, ++ 0x89, 0xc5, 0x2b, 0x3c, 0x37, 0xc3, 0x77, 0xe2, 0x74, 0x4b, 0xd3, 0x28, ++ 0xbc, 0x4b, 0xfe, 0x4c, 0xf0, 0x3c, 0xc7, 0xde, 0x23, 0x15, 0x12, 0xec, ++ 0xff, 0x26, 0x75, 0x57, 0x49, 0x20, 0xc7, 0x92, 0x38, 0xfe, 0x8c, 0xf3, ++ 0xe8, 0xe1, 0x70, 0xdb, 0xc3, 0xf3, 0x25, 0xfa, 0xf3, 0x1d, 0xf3, 0x2b, ++ 0x66, 0x70, 0xf8, 0xef, 0x51, 0x3d, 0xc8, 0x5f, 0xad, 0x29, 0x9a, 0x13, ++ 0xfc, 0x55, 0xc8, 0xcb, 0x03, 0xbc, 0x1a, 0xf3, 0x2c, 0x7e, 0x99, 0xcd, ++ 0xf6, 0xd5, 0xb6, 0x44, 0xf5, 0xe0, 0xfe, 0xa0, 0xf7, 0x6e, 0x82, 0xf9, ++ 0x77, 0x43, 0xcb, 0xbc, 0x12, 0xe4, 0x0f, 0x25, 0xd7, 0xb6, 0x95, 0x53, ++ 0x8c, 0x93, 0xf9, 0xd9, 0xcc, 0x9f, 0x4f, 0xa8, 0xd1, 0x9c, 0xe0, 0x87, ++ 0x0f, 0x77, 0x5a, 0xf0, 0x9e, 0x8a, 0xc1, 0xf2, 0x5b, 0x7e, 0xbb, 0x1b, ++ 0xe3, 0x25, 0xc5, 0x1a, 0x3b, 0xaf, 0xbc, 0xa9, 0xdb, 0x1b, 0x99, 0x49, ++ 0xe7, 0x35, 0xa4, 0x5b, 0x2b, 0xb7, 0xd0, 0x67, 0x7a, 0xce, 0x10, 0x5c, ++ 0xdf, 0x50, 0xd2, 0xbc, 0x8a, 0xf9, 0x09, 0xaa, 0x2e, 0xbf, 0xa9, 0x58, ++ 0xab, 0xc0, 0x7d, 0x72, 0x31, 0xef, 0x92, 0xf9, 0xcd, 0x6b, 0x2c, 0x2a, ++ 0xe6, 0xc3, 0xac, 0xc8, 0x0e, 0xf1, 0x6b, 0x92, 0x97, 0x79, 0xc3, 0xe6, ++ 0x3b, 0x19, 0xf7, 0xb9, 0xd7, 0x08, 0xbe, 0xe4, 0xf9, 0x08, 0xc5, 0x3c, ++ 0xff, 0xa0, 0x78, 0xdb, 0x53, 0x98, 0x4f, 0x50, 0xbc, 0xed, 0x66, 0x45, ++ 0x0a, 0x91, 0x33, 0x9b, 0xb2, 0xcd, 0xb8, 0xfe, 0x33, 0x87, 0x96, 0x8c, ++ 0x86, 0xf5, 0x0f, 0x94, 0xc7, 0xda, 0x96, 0xcd, 0xf0, 0xf0, 0xfd, 0x6c, ++ 0x26, 0x5f, 0x06, 0xca, 0x1f, 0x5b, 0xdf, 0x27, 0x17, 0xfa, 0xe5, 0x8f, ++ 0xad, 0xcf, 0x76, 0x84, 0xe4, 0xd7, 0x34, 0x9e, 0x47, 0xf9, 0xd7, 0x98, ++ 0xcd, 0xe4, 0xfc, 0xb3, 0x90, 0x57, 0x43, 0xe1, 0xfa, 0xec, 0x7c, 0x91, ++ 0x57, 0xb3, 0x45, 0x82, 0xf5, 0xee, 0xb5, 0xb4, 0x4f, 0xd9, 0x05, 0xf3, ++ 0x5a, 0x6e, 0xc2, 0x3c, 0xa6, 0xbe, 0xbc, 0xa2, 0xf9, 0x2c, 0xcf, 0xad, ++ 0xaf, 0x3d, 0xe4, 0x17, 0xd1, 0xf7, 0xcf, 0x2e, 0x62, 0xf9, 0x45, 0xc3, ++ 0x7c, 0x1b, 0x70, 0x5f, 0xe2, 0x62, 0x24, 0xcb, 0xa3, 0xb8, 0xb8, 0x3d, ++ 0x82, 0xc0, 0xb9, 0xa4, 0x67, 0xb7, 0x6d, 0x1c, 0x02, 0xe7, 0x10, 0x9f, ++ 0xd5, 0x4c, 0x68, 0x07, 0x1a, 0xe7, 0x0f, 0x07, 0x82, 0x78, 0x5e, 0xa4, ++ 0x19, 0xf2, 0x25, 0x01, 0x8f, 0x20, 0xaf, 0x04, 0xfe, 0xfa, 0xf2, 0x8f, ++ 0x78, 0xfe, 0x5e, 0xd7, 0xf6, 0x97, 0x71, 0xde, 0x62, 0x3e, 0x94, 0x50, ++ 0x2c, 0x00, 0xf7, 0xf4, 0x1c, 0x36, 0xaf, 0x25, 0x3b, 0x76, 0x4f, 0x01, ++ 0xe2, 0x1f, 0xbe, 0x2c, 0x41, 0x82, 0xb8, 0x9d, 0x98, 0xd7, 0xb5, 0xe4, ++ 0xfe, 0x4b, 0x9c, 0x2f, 0x06, 0x4b, 0x87, 0x2f, 0xe4, 0x30, 0xfe, 0x08, ++ 0xa3, 0x1f, 0x5f, 0xcd, 0xbe, 0x3e, 0xfd, 0xf8, 0x06, 0xe0, 0x89, 0xea, ++ 0xc7, 0x03, 0xd0, 0xee, 0xba, 0xf5, 0x23, 0xd7, 0x8b, 0x42, 0x4f, 0x8a, ++ 0xef, 0xdd, 0x9c, 0x2e, 0x66, 0x66, 0x0f, 0xa8, 0x1f, 0xbb, 0xb3, 0xc3, ++ 0xe8, 0x47, 0x15, 0xf2, 0x9e, 0x31, 0xef, 0xc8, 0xe4, 0xda, 0x1e, 0x06, ++ 0x5f, 0x33, 0x78, 0xbf, 0x37, 0xba, 0xb5, 0x4a, 0xe0, 0xe7, 0xa2, 0x34, ++ 0xed, 0x4f, 0xd0, 0xcf, 0xc4, 0x09, 0xbe, 0x83, 0x10, 0x07, 0x2d, 0xad, ++ 0xf1, 0x1e, 0x04, 0x7e, 0x2f, 0x96, 0xf8, 0x79, 0xeb, 0x29, 0x4c, 0x0e, ++ 0x24, 0xf6, 0x90, 0xfd, 0x10, 0x83, 0x8b, 0x3f, 0xd1, 0xe3, 0x86, 0x3c, ++ 0xe5, 0xaa, 0x6c, 0x96, 0x6f, 0x71, 0xc3, 0x69, 0x37, 0xee, 0xb3, 0xc7, ++ 0x79, 0x88, 0x04, 0xed, 0xc5, 0x3d, 0x06, 0x6d, 0x09, 0xec, 0xbc, 0xb3, ++ 0x71, 0xfc, 0x49, 0x9c, 0x2f, 0x4c, 0x4f, 0x06, 0x30, 0x1f, 0x2e, 0xa9, ++ 0x33, 0x7c, 0x5e, 0x6a, 0x41, 0x2a, 0xb3, 0xd7, 0xa8, 0xbc, 0x3c, 0x0b, ++ 0x70, 0x2d, 0x19, 0x4d, 0xe5, 0x69, 0x4a, 0x7f, 0x79, 0x1a, 0x06, 0x7f, ++ 0x17, 0xa0, 0x7e, 0xce, 0x2e, 0xff, 0x01, 0xa8, 0x35, 0x36, 0x3e, 0x3d, ++ 0x1a, 0xcc, 0xaa, 0xab, 0xe0, 0xef, 0xaf, 0x0c, 0x7f, 0xee, 0x4b, 0xf0, ++ 0x14, 0xf8, 0xca, 0xbd, 0x22, 0xeb, 0xe2, 0x78, 0x02, 0x5f, 0x57, 0xf8, ++ 0xfc, 0x6f, 0xcd, 0x70, 0xff, 0x03, 0xc6, 0x39, 0xcc, 0xf9, 0x7b, 0x20, ++ 0x3c, 0xc6, 0xe6, 0x50, 0xfc, 0x8d, 0x07, 0xfa, 0x66, 0x78, 0x14, 0x79, ++ 0xc0, 0x3b, 0x0d, 0x76, 0x6a, 0x45, 0x0e, 0xc3, 0xcb, 0xe4, 0x1c, 0x7d, ++ 0x5c, 0x28, 0x04, 0xdf, 0xb1, 0x39, 0xe3, 0xfb, 0xe3, 0x5b, 0xc8, 0xf1, ++ 0xbd, 0x47, 0xf6, 0xc8, 0x80, 0xb7, 0x92, 0xaa, 0xb6, 0x35, 0x80, 0x07, ++ 0x8a, 0xd7, 0xa4, 0x1c, 0xda, 0xcf, 0x0d, 0x65, 0xfa, 0xfc, 0x4f, 0x23, ++ 0x5e, 0x85, 0x3c, 0x34, 0xe2, 0xd7, 0x88, 0x57, 0x91, 0x07, 0x48, 0xf1, ++ 0x31, 0x3a, 0x27, 0x8c, 0xfe, 0x12, 0xfd, 0x18, 0xf5, 0x58, 0x88, 0x9c, ++ 0xe0, 0xfb, 0xce, 0x6a, 0x5f, 0x7e, 0x07, 0xd8, 0xcf, 0x22, 0x4f, 0x5c, ++ 0xac, 0x43, 0xf0, 0xcf, 0x24, 0x0e, 0x8f, 0x1b, 0x35, 0xad, 0xd2, 0xc2, ++ 0xe8, 0xb4, 0x10, 0xc6, 0x9d, 0x38, 0xcb, 0x77, 0xd0, 0x0c, 0x74, 0xba, ++ 0xc8, 0x7b, 0xd0, 0x12, 0x4a, 0xa7, 0x8b, 0x09, 0xdb, 0xaf, 0xe2, 0xf3, ++ 0x48, 0xee, 0xf1, 0xe2, 0x7a, 0x86, 0x9d, 0xd0, 0xca, 0xe1, 0x79, 0xc3, ++ 0x69, 0x3f, 0xde, 0xe3, 0x31, 0xb4, 0x99, 0xae, 0x87, 0x04, 0xd7, 0x33, ++ 0xb2, 0xfb, 0x38, 0xe6, 0x63, 0xc2, 0xbe, 0x2c, 0xc4, 0x9b, 0xf6, 0x1e, ++ 0x39, 0x80, 0xf3, 0x1e, 0xd1, 0xdd, 0xc5, 0x9e, 0x3c, 0x8f, 0xc8, 0xa8, ++ 0x6f, 0x83, 0xf9, 0xb7, 0xac, 0x9f, 0x17, 0xb8, 0xfc, 0x6a, 0x3d, 0xc7, ++ 0xf2, 0xf8, 0x5a, 0xcb, 0x99, 0xbe, 0xbd, 0x37, 0xc3, 0x5d, 0x99, 0x83, ++ 0x7c, 0xec, 0xae, 0x82, 0xf9, 0xaf, 0xc8, 0x70, 0x57, 0x43, 0xb9, 0x20, ++ 0x95, 0xd1, 0x4d, 0x6c, 0x8e, 0xfb, 0x66, 0x28, 0x8f, 0x1c, 0x40, 0xdf, ++ 0xdf, 0x9a, 0xd3, 0xb7, 0x4f, 0x3d, 0x1d, 0xea, 0x25, 0x3d, 0x40, 0xbc, ++ 0xe2, 0x1e, 0x14, 0x88, 0xc3, 0x27, 0x41, 0x24, 0x10, 0xb6, 0xf0, 0x9b, ++ 0xbd, 0x92, 0x85, 0xc2, 0x35, 0xc9, 0x4d, 0xd0, 0xef, 0x1c, 0x9d, 0xa8, ++ 0xad, 0x82, 0xbc, 0xb7, 0xc0, 0x44, 0xe2, 0x82, 0x7c, 0x80, 0xb8, 0x3a, ++ 0x7b, 0x39, 0xc0, 0x2b, 0x61, 0x91, 0x6b, 0x3f, 0xc0, 0xb3, 0xf5, 0x1c, ++ 0xbf, 0xcf, 0xe5, 0x3e, 0x82, 0xe7, 0xbd, 0xfa, 0xf2, 0xab, 0xb4, 0x54, ++ 0xcc, 0xa7, 0x00, 0xfe, 0x0d, 0xe5, 0x97, 0x7a, 0x3e, 0x8f, 0xfa, 0x1c, ++ 0xc6, 0x07, 0xd4, 0xde, 0x99, 0x93, 0xc3, 0xe6, 0xa5, 0xc1, 0xbc, 0x84, ++ 0xbd, 0x23, 0xf8, 0x72, 0x20, 0xfb, 0x25, 0x84, 0xaf, 0x1b, 0xa0, 0xfd, ++ 0x75, 0xf0, 0xf5, 0xf2, 0x9c, 0xeb, 0xe3, 0xeb, 0x15, 0x39, 0x8c, 0xaf, ++ 0xef, 0x87, 0x76, 0xd7, 0xe2, 0xeb, 0x1f, 0xe4, 0xf4, 0xf1, 0xf5, 0x43, ++ 0xd0, 0xee, 0x5a, 0x7c, 0xfd, 0x28, 0xe7, 0xeb, 0x17, 0xae, 0xc1, 0xd7, ++ 0x3b, 0x78, 0xbf, 0xff, 0xc5, 0xeb, 0x87, 0xe1, 0xeb, 0x47, 0xc3, 0xf1, ++ 0xb5, 0xca, 0xe9, 0x4e, 0xf0, 0xc5, 0x9e, 0x23, 0x63, 0xa3, 0x21, 0x5f, ++ 0x60, 0x1b, 0xef, 0x2f, 0x44, 0x7e, 0x6f, 0x80, 0xf6, 0xd7, 0x92, 0xdf, ++ 0xff, 0x04, 0x9f, 0x6f, 0x86, 0x7e, 0xaf, 0x65, 0xa7, 0x8a, 0x7e, 0x05, ++ 0xbe, 0xaf, 0xc5, 0x27, 0xb1, 0xb9, 0x1e, 0x84, 0x83, 0xb0, 0x47, 0x4f, ++ 0xa7, 0x33, 0xbc, 0x0b, 0xbe, 0xa7, 0xfc, 0xf2, 0x9f, 0x00, 0x7f, 0xca, ++ 0x2f, 0x3b, 0x39, 0xbf, 0xfc, 0x92, 0xf1, 0x8b, 0x8a, 0xf5, 0x8c, 0xfc, ++ 0xd5, 0xa7, 0xef, 0xba, 0x4d, 0xfc, 0x1e, 0x11, 0x7b, 0x74, 0x68, 0xdc, ++ 0xfb, 0xcd, 0x9c, 0x7e, 0xfa, 0xee, 0xe5, 0x9c, 0x30, 0xfa, 0x6e, 0x24, ++ 0xe1, 0xf0, 0xaa, 0x61, 0x72, 0x64, 0x04, 0xf1, 0xca, 0xb1, 0xd0, 0x6f, ++ 0xad, 0x1d, 0xcb, 0xf6, 0xb3, 0x76, 0x74, 0xf3, 0x63, 0x4f, 0x05, 0xbc, ++ 0x00, 0xb7, 0xf7, 0x72, 0x98, 0xbd, 0x51, 0x3c, 0x40, 0x3c, 0xe1, 0x77, ++ 0x9c, 0x4f, 0x92, 0xba, 0x2b, 0x50, 0xbe, 0x50, 0x78, 0x1e, 0xca, 0x09, ++ 0xd1, 0x63, 0x49, 0xc4, 0x3e, 0x15, 0xfc, 0x9c, 0xcf, 0x73, 0xd8, 0xba, ++ 0xc6, 0x4d, 0x70, 0x1f, 0x04, 0xb9, 0x64, 0x77, 0x7b, 0x30, 0x9f, 0xdb, ++ 0x91, 0xcb, 0xe0, 0x22, 0xe0, 0x44, 0xdb, 0xbf, 0x13, 0x4e, 0xee, 0xee, ++ 0x03, 0x7c, 0xe4, 0xf7, 0xf7, 0x1b, 0x8c, 0x78, 0x38, 0xc8, 0xe7, 0xfb, ++ 0x39, 0xa7, 0x1f, 0x63, 0xff, 0x42, 0xfe, 0x40, 0xff, 0x05, 0xd8, 0xbf, ++ 0x6a, 0x82, 0xfe, 0x45, 0xfb, 0x3f, 0x07, 0xe5, 0xd0, 0x47, 0xb0, 0x8e, ++ 0xd2, 0x07, 0x9a, 0x65, 0x58, 0x57, 0x12, 0x71, 0x47, 0x83, 0xfc, 0x11, ++ 0x72, 0x92, 0x8c, 0xa0, 0xed, 0x8b, 0xfb, 0xb7, 0xff, 0x34, 0xd8, 0xfe, ++ 0x53, 0x58, 0x47, 0x69, 0x33, 0x6d, 0x9f, 0x1f, 0x6c, 0x3f, 0x92, 0xf8, ++ 0x31, 0x5f, 0x27, 0x61, 0x11, 0x95, 0x53, 0x04, 0xec, 0x77, 0x17, 0xda, ++ 0xb3, 0xeb, 0x55, 0xcf, 0xb9, 0x1c, 0x9c, 0x27, 0x61, 0xf2, 0xaa, 0xdc, ++ 0x84, 0xf2, 0x20, 0x2b, 0xdd, 0x8d, 0x7c, 0x17, 0x4e, 0xff, 0x43, 0xfd, ++ 0xeb, 0xd1, 0xff, 0xb0, 0x1e, 0xd0, 0xff, 0x83, 0x91, 0x13, 0x57, 0x38, ++ 0x3d, 0x81, 0xfe, 0x87, 0x71, 0x3e, 0xce, 0xba, 0x86, 0xfe, 0xcf, 0x65, ++ 0xeb, 0x8e, 0xcb, 0xbd, 0xba, 0x9c, 0x88, 0xcf, 0x65, 0xfd, 0x3a, 0x72, ++ 0x07, 0xd6, 0xff, 0xb9, 0x61, 0xe4, 0xc4, 0x1e, 0xd5, 0x8d, 0xfc, 0x14, ++ 0x86, 0x8f, 0x12, 0x72, 0x1d, 0x10, 0x67, 0x71, 0x27, 0x42, 0x3b, 0xca, ++ 0x47, 0x49, 0x50, 0x16, 0x7a, 0x87, 0xb6, 0x1b, 0x02, 0xef, 0xd7, 0xab, ++ 0x0c, 0x8e, 0xeb, 0x6b, 0x4d, 0xd9, 0x68, 0x5f, 0x93, 0x28, 0x57, 0x38, ++ 0x7f, 0x26, 0x2d, 0x37, 0x66, 0xb0, 0xf9, 0x45, 0x69, 0x7c, 0x9e, 0xd7, ++ 0x95, 0xff, 0xfa, 0xdc, 0x8f, 0x7a, 0x2c, 0x00, 0x6f, 0x91, 0xa7, 0x22, ++ 0xc6, 0x35, 0xe6, 0xbd, 0x0a, 0x3c, 0x2e, 0xef, 0x94, 0xc6, 0x41, 0x5c, ++ 0xae, 0xfc, 0xe0, 0x65, 0x8c, 0x93, 0xf4, 0xee, 0xff, 0x1b, 0xc6, 0x49, ++ 0x94, 0x8c, 0xb9, 0xe3, 0x60, 0xfc, 0xae, 0xd7, 0x58, 0xbc, 0x44, 0xe4, ++ 0x95, 0x88, 0xf1, 0x57, 0x70, 0x3f, 0xb2, 0x5a, 0xce, 0x6f, 0x87, 0x38, ++ 0xed, 0xf9, 0x1d, 0x16, 0x8c, 0x7f, 0xca, 0x44, 0xdd, 0x58, 0x46, 0xe7, ++ 0xd3, 0x74, 0xc4, 0x4c, 0x7c, 0x28, 0x07, 0xd9, 0xf9, 0x65, 0xb1, 0x4f, ++ 0x6b, 0xde, 0xd1, 0xda, 0x0d, 0x71, 0x79, 0x33, 0x09, 0xb9, 0x67, 0x07, ++ 0xf5, 0x9d, 0x1a, 0x07, 0x74, 0x69, 0x3e, 0xc2, 0xee, 0xbb, 0x21, 0x49, ++ 0xec, 0x7b, 0x33, 0xb1, 0xae, 0x62, 0xf7, 0x30, 0xea, 0xf7, 0x69, 0xe3, ++ 0xdd, 0xfa, 0x7d, 0xda, 0xc4, 0x1a, 0xfd, 0x3e, 0xad, 0x88, 0x23, 0x2e, ++ 0x25, 0x6c, 0x9e, 0x0e, 0x8f, 0x7e, 0xdf, 0x76, 0xe8, 0x2c, 0xfd, 0xbe, ++ 0xed, 0x30, 0x4d, 0xbf, 0x6f, 0x9b, 0xbc, 0x68, 0xac, 0x61, 0x1f, 0x57, ++ 0xbf, 0x6f, 0x3b, 0xba, 0xa5, 0xc2, 0xb0, 0x8f, 0xab, 0xdf, 0xb7, 0x4d, ++ 0x5b, 0x37, 0xc3, 0xb0, 0x8f, 0xab, 0xdf, 0xb7, 0xfd, 0x8c, 0x34, 0x3f, ++ 0x5d, 0x46, 0xd7, 0x9d, 0x2b, 0xee, 0xfb, 0xf1, 0xba, 0xbb, 0xe1, 0x5c, ++ 0xf4, 0x7c, 0x3e, 0xdf, 0xac, 0x4d, 0xfa, 0x7d, 0xdd, 0x2f, 0x76, 0xd6, ++ 0xe0, 0x7d, 0x21, 0xf3, 0x79, 0x7c, 0x3b, 0xc7, 0xa7, 0xdf, 0xe7, 0x5d, ++ 0x2a, 0x2f, 0x43, 0x3a, 0x26, 0x6d, 0xec, 0x9c, 0x73, 0x33, 0xfd, 0x07, ++ 0xe0, 0xa6, 0x90, 0xc0, 0xe1, 0x64, 0xc8, 0x3f, 0xf0, 0x49, 0x2e, 0x3f, ++ 0xfd, 0xdc, 0xb0, 0x49, 0x7f, 0x0e, 0x7a, 0x71, 0xc7, 0x16, 0x6c, 0xb7, ++ 0xd8, 0xa7, 0x7f, 0xbf, 0x74, 0x87, 0xbe, 0xfc, 0x40, 0x2e, 0xbf, 0x07, ++ 0x86, 0xc7, 0xbd, 0xfb, 0xd3, 0x41, 0x0c, 0xcb, 0x63, 0xd8, 0xcc, 0xe2, ++ 0xfd, 0xb2, 0x37, 0xcb, 0x40, 0x07, 0x7a, 0x7c, 0xfc, 0x6f, 0xe9, 0x42, ++ 0xe5, 0x74, 0x11, 0xe1, 0xd4, 0xd3, 0x45, 0xa4, 0xaa, 0xa7, 0x8b, 0x86, ++ 0x37, 0xf7, 0x96, 0xc0, 0xba, 0x8d, 0xf0, 0x8d, 0xce, 0xd6, 0xd3, 0x8b, ++ 0x11, 0xbe, 0x36, 0x97, 0x9e, 0x5e, 0x04, 0x5c, 0xa9, 0x9e, 0xe4, 0xf9, ++ 0x38, 0x6e, 0x5c, 0xef, 0xc2, 0x0e, 0x89, 0x3c, 0x23, 0xf5, 0x87, 0xeb, ++ 0xa2, 0xce, 0x0d, 0xad, 0x70, 0x0e, 0xdd, 0x08, 0x57, 0x42, 0x7c, 0xb8, ++ 0xef, 0x6c, 0x84, 0xaf, 0xcf, 0x00, 0xdf, 0x73, 0xaa, 0xf6, 0x3c, 0xf0, ++ 0xdf, 0x85, 0x8e, 0x07, 0xf0, 0xbe, 0x1f, 0xa2, 0x69, 0xe3, 0xa0, 0xdd, ++ 0x55, 0xf2, 0x63, 0xfe, 0x83, 0xd5, 0x1f, 0x74, 0x7e, 0x4c, 0x3b, 0xd4, ++ 0x0f, 0xfa, 0xc9, 0xfa, 0xfc, 0x98, 0x5e, 0xc8, 0xe3, 0x1a, 0x43, 0x06, ++ 0x91, 0xc7, 0x75, 0xf0, 0x7f, 0x20, 0xaf, 0x23, 0x82, 0xce, 0xd0, 0x0c, ++ 0xf1, 0xc6, 0x09, 0x2e, 0x6b, 0xf8, 0xbc, 0x2d, 0xed, 0xf5, 0x5c, 0xd4, ++ 0x33, 0x6e, 0x82, 0xf1, 0x9e, 0x3f, 0x10, 0xd7, 0x1a, 0x5a, 0x6b, 0x8d, ++ 0xad, 0x24, 0xef, 0x1a, 0x71, 0x81, 0x03, 0xb9, 0x68, 0x47, 0x69, 0x78, ++ 0x9f, 0x46, 0x69, 0x37, 0xcb, 0x73, 0x23, 0x4a, 0xb7, 0x1d, 0xe2, 0xbf, ++ 0xe1, 0xee, 0x6f, 0x34, 0x9c, 0x6b, 0x3a, 0x0a, 0xed, 0xff, 0xd9, 0xfb, ++ 0xf1, 0x84, 0xdd, 0x48, 0xed, 0xf4, 0x3f, 0xe6, 0x32, 0xbd, 0xfb, 0x2e, ++ 0x3c, 0xfb, 0xec, 0x74, 0x6e, 0xb7, 0x09, 0x7b, 0x7b, 0xa0, 0x7e, 0xfa, ++ 0xf2, 0x5c, 0x06, 0x78, 0x4a, 0x07, 0x64, 0xcc, 0xb3, 0x0a, 0x48, 0x51, ++ 0xae, 0x70, 0xf7, 0x0d, 0x9d, 0xce, 0x95, 0xc2, 0xea, 0x0d, 0xaa, 0x27, ++ 0x4e, 0xe7, 0x3a, 0x42, 0xe2, 0x5b, 0xdf, 0xbb, 0x70, 0x18, 0xf4, 0x07, ++ 0x85, 0xf7, 0x17, 0xf0, 0xde, 0x66, 0xa3, 0xfa, 0x5b, 0x1a, 0x94, 0xfe, ++ 0xee, 0x05, 0x38, 0x6d, 0x8c, 0x8e, 0x45, 0xba, 0x0e, 0xbc, 0x29, 0xfb, ++ 0xb2, 0x68, 0x83, 0xf3, 0x56, 0x35, 0x0e, 0xce, 0x9f, 0x1b, 0xef, 0x27, ++ 0x11, 0x79, 0x4f, 0xcd, 0x70, 0xff, 0x08, 0xd5, 0x27, 0x65, 0xe7, 0xb3, ++ 0xe3, 0xae, 0x96, 0x67, 0x50, 0x66, 0xb8, 0x9f, 0xc6, 0x78, 0x8f, 0x47, ++ 0xeb, 0x58, 0x9e, 0x67, 0x92, 0xc7, 0xd6, 0xf9, 0x6b, 0x7e, 0x8f, 0xa0, ++ 0x33, 0x4f, 0xd2, 0x9d, 0x97, 0x11, 0xf1, 0xa8, 0xa6, 0x75, 0x2c, 0xfe, ++ 0x0a, 0xf7, 0x0e, 0x76, 0x86, 0xf4, 0xe3, 0xcc, 0x63, 0x87, 0x56, 0x6e, ++ 0x56, 0xcb, 0x9d, 0x79, 0x0e, 0x88, 0x77, 0xb1, 0x78, 0x61, 0x6b, 0x8a, ++ 0x84, 0x76, 0x42, 0xab, 0x24, 0xa1, 0xdd, 0xb0, 0x39, 0xbd, 0xc2, 0x99, ++ 0x47, 0xfb, 0x3f, 0x94, 0x5b, 0x3e, 0x14, 0xea, 0xd9, 0xf9, 0xb8, 0x4e, ++ 0x88, 0x45, 0x8f, 0xc7, 0xf3, 0x3e, 0x38, 0x1f, 0xd5, 0x70, 0x5e, 0xec, ++ 0x18, 0xaf, 0x7f, 0x2c, 0xb7, 0x02, 0x9f, 0xce, 0x3c, 0xe1, 0x6f, 0xd9, ++ 0x73, 0x01, 0xff, 0x13, 0x55, 0x37, 0xf6, 0x6b, 0x91, 0xc3, 0xef, 0xab, ++ 0x8f, 0xcc, 0x63, 0xf6, 0x4f, 0x35, 0xf0, 0xb4, 0x23, 0xc8, 0x4f, 0xd7, ++ 0x73, 0x4f, 0x83, 0x25, 0xa9, 0xff, 0x3d, 0x0d, 0xc6, 0xfb, 0xcf, 0xdc, ++ 0xd9, 0xf6, 0x2e, 0x50, 0x07, 0xc6, 0x7d, 0xcf, 0x17, 0xaf, 0x75, 0x4f, ++ 0xc3, 0xbe, 0xf0, 0xf7, 0x34, 0x00, 0xdc, 0xa3, 0x13, 0x82, 0xfc, 0x50, ++ 0x92, 0xa7, 0xbf, 0xe7, 0xac, 0x23, 0xaa, 0x07, 0xf7, 0x41, 0x03, 0x6f, ++ 0xcb, 0xae, 0xad, 0xa4, 0xff, 0xba, 0x6f, 0xe6, 0x78, 0x5c, 0xcf, 0xcf, ++ 0x85, 0x38, 0x78, 0xfe, 0xf7, 0x28, 0xbe, 0x9f, 0xd2, 0xbf, 0x3e, 0x83, ++ 0xd3, 0x96, 0x01, 0xe2, 0xbd, 0x13, 0xd5, 0xf2, 0x6a, 0x80, 0xf3, 0x07, ++ 0xe9, 0x9e, 0x9b, 0x01, 0x0f, 0xe2, 0x9e, 0x9d, 0x0e, 0x8b, 0xb6, 0x06, ++ 0xfc, 0x8f, 0xc0, 0x4b, 0x04, 0xe7, 0x91, 0xed, 0x23, 0x07, 0xa0, 0x5c, ++ 0xe0, 0x55, 0x31, 0x8f, 0xbc, 0x35, 0xc5, 0x1b, 0x8d, 0xf7, 0x01, 0x14, ++ 0x99, 0xd0, 0x9f, 0x57, 0x37, 0xb5, 0x1d, 0x8c, 0x4c, 0xc2, 0x73, 0xb6, ++ 0x09, 0x92, 0x1a, 0x94, 0x27, 0x66, 0x85, 0x78, 0x6d, 0x94, 0xce, 0x16, ++ 0xc2, 0x65, 0x5d, 0x60, 0xdf, 0xf5, 0xcc, 0x3d, 0x60, 0xa3, 0xdf, 0x1d, ++ 0x9b, 0x6f, 0x93, 0xe0, 0xfe, 0x96, 0x36, 0xd2, 0x56, 0x19, 0x0b, 0x76, ++ 0xd7, 0x66, 0x12, 0x36, 0x3e, 0x58, 0xcf, 0xe9, 0x69, 0x6a, 0xf9, 0x01, ++ 0x8c, 0xb3, 0x3b, 0x02, 0xec, 0xbc, 0x5f, 0xff, 0x7a, 0x26, 0xe1, 0x27, ++ 0x6a, 0xb0, 0x8e, 0xd2, 0x80, 0x36, 0x4e, 0x4a, 0x0d, 0xca, 0x25, 0x14, ++ 0xb9, 0xe0, 0x3f, 0x75, 0x99, 0x7c, 0xe1, 0xe2, 0xb5, 0x59, 0xe9, 0x95, ++ 0x0b, 0xa1, 0x5d, 0x81, 0x8f, 0x84, 0x8d, 0xff, 0x55, 0xf3, 0x7b, 0x66, ++ 0xea, 0x54, 0xcf, 0x32, 0xac, 0xb7, 0xcf, 0x8f, 0x7e, 0x51, 0x83, 0x90, ++ 0xef, 0xf3, 0x4d, 0x04, 0xee, 0x37, 0xbc, 0x9d, 0xcb, 0xf3, 0xdb, 0x37, ++ 0xb3, 0xbc, 0x5c, 0x72, 0xf9, 0xca, 0x15, 0xb9, 0x24, 0x78, 0x7e, 0x8a, ++ 0xf6, 0x4f, 0x40, 0x3e, 0x35, 0xcc, 0xb4, 0xe1, 0xbd, 0xb1, 0x0d, 0x9d, ++ 0x29, 0x78, 0xff, 0x16, 0xf1, 0x48, 0x78, 0xcf, 0x4b, 0x53, 0xe7, 0x31, ++ 0x0f, 0x94, 0x1b, 0x8a, 0x8b, 0xed, 0x10, 0x6f, 0x76, 0xbf, 0x4f, 0x24, ++ 0xb8, 0x97, 0x0d, 0xcf, 0xec, 0xa1, 0x1c, 0x54, 0xc8, 0xa7, 0x42, 0xdf, ++ 0xa2, 0xfd, 0x90, 0x84, 0xfb, 0xfd, 0x33, 0x38, 0x5d, 0x8b, 0xfb, 0x94, ++ 0xa8, 0x1e, 0x59, 0x1f, 0x4d, 0xe1, 0xde, 0xb0, 0x79, 0xd5, 0x01, 0xc8, ++ 0xeb, 0x7e, 0xf7, 0x79, 0xda, 0x07, 0xfd, 0x74, 0x42, 0xd6, 0x4e, 0xfc, ++ 0x90, 0xf6, 0xfb, 0x5d, 0xaa, 0xc4, 0x5a, 0xc6, 0xc2, 0x53, 0x21, 0x75, ++ 0x18, 0x8f, 0x76, 0x62, 0x3f, 0x33, 0x79, 0x3f, 0xde, 0xbf, 0xd1, 0x71, ++ 0xad, 0xc1, 0x71, 0xbf, 0xdb, 0xf9, 0x26, 0xae, 0xe7, 0x84, 0x99, 0x78, ++ 0xad, 0x94, 0x7e, 0xcd, 0x15, 0x6c, 0x68, 0xf3, 0x0f, 0xe2, 0x30, 0xdf, ++ 0x58, 0xe4, 0xaf, 0xdc, 0x61, 0x6d, 0xab, 0x06, 0x3d, 0xdb, 0x6b, 0x09, ++ 0x14, 0xc2, 0xf9, 0xa9, 0xde, 0xd7, 0xde, 0x1b, 0x09, 0xfb, 0xd4, 0x1f, ++ 0xfe, 0x9f, 0x0b, 0x36, 0xb0, 0x8f, 0xff, 0xac, 0x04, 0x6c, 0xf0, 0xfe, ++ 0xf4, 0xc3, 0x7f, 0xb4, 0xc1, 0xfd, 0xc8, 0x1f, 0x3e, 0x2c, 0xe3, 0xbe, ++ 0xde, 0x1c, 0xae, 0x77, 0x04, 0xbc, 0x9f, 0xe7, 0x74, 0x7e, 0x31, 0xcf, ++ 0xf3, 0x0c, 0xd0, 0xe7, 0xbd, 0x2b, 0xbf, 0x2d, 0x09, 0xcd, 0xa3, 0x27, ++ 0x2d, 0x0e, 0xe4, 0x9f, 0xc5, 0x3e, 0x19, 0x53, 0x1e, 0x04, 0xdf, 0x2d, ++ 0xdd, 0x11, 0x0d, 0x16, 0x51, 0x5f, 0xb9, 0xb1, 0x3d, 0x51, 0x57, 0x16, ++ 0x7a, 0xa4, 0x11, 0xee, 0x6b, 0x0d, 0x43, 0x47, 0x27, 0x38, 0xbf, 0x2c, ++ 0xde, 0xb5, 0xc5, 0x02, 0xf7, 0x0b, 0x5c, 0xcc, 0xd3, 0x76, 0xc1, 0xf8, ++ 0xa7, 0x15, 0x46, 0x3f, 0xa7, 0xf7, 0xd9, 0x7c, 0x70, 0x7f, 0xa2, 0x98, ++ 0xcf, 0xdc, 0x5d, 0x45, 0x16, 0xb0, 0x4f, 0xfe, 0xdc, 0x19, 0x41, 0xfc, ++ 0xa0, 0x0f, 0x95, 0x6e, 0x33, 0x3b, 0x4f, 0xe6, 0xae, 0x95, 0x28, 0x3d, ++ 0x68, 0x1c, 0xef, 0xc6, 0x79, 0x1e, 0x7e, 0x3d, 0x1a, 0xfb, 0x5b, 0xf0, ++ 0x14, 0x93, 0x4f, 0xf5, 0x74, 0xac, 0x16, 0x0a, 0x57, 0xad, 0x73, 0x31, ++ 0xca, 0x21, 0xe3, 0x3a, 0x16, 0x7c, 0xa8, 0x4e, 0x86, 0x73, 0x1c, 0x0b, ++ 0x1e, 0x95, 0x08, 0xec, 0xaf, 0x40, 0xfd, 0x87, 0x29, 0xde, 0xb4, 0x96, ++ 0x1f, 0x63, 0x9e, 0xa8, 0x71, 0x9d, 0xf5, 0x5e, 0xe3, 0x7d, 0x76, 0x6e, ++ 0x94, 0x8f, 0x0d, 0x1c, 0xbf, 0xf3, 0xd6, 0xe9, 0xbf, 0x37, 0x74, 0x3e, ++ 0x8e, 0xfd, 0xcc, 0x27, 0xea, 0x7a, 0xb0, 0xa7, 0x17, 0xb4, 0x19, 0xbf, ++ 0x4f, 0xf9, 0x0c, 0xec, 0x9f, 0x06, 0x83, 0x3c, 0x7b, 0x27, 0x8f, 0xdb, ++ 0x5b, 0x25, 0xa4, 0x14, 0xee, 0x9d, 0x39, 0x60, 0x4d, 0x8b, 0xbb, 0xda, ++ 0xbd, 0xaf, 0x67, 0x57, 0xda, 0x91, 0x38, 0x3f, 0x5f, 0x69, 0xc5, 0xe7, ++ 0xe9, 0x95, 0x04, 0x9f, 0xcf, 0xe4, 0xa9, 0x08, 0xf7, 0x65, 0x9d, 0xc7, ++ 0x1e, 0x04, 0xfa, 0x59, 0xde, 0xb1, 0xdb, 0x02, 0xfd, 0x1c, 0xf4, 0x8d, ++ 0x4f, 0x82, 0xe3, 0xa3, 0x53, 0x3b, 0xa7, 0x28, 0x60, 0x77, 0x4d, 0xe5, ++ 0xfb, 0xac, 0xb3, 0xf9, 0xb9, 0x4e, 0x74, 0xaa, 0xd9, 0x79, 0xce, 0x1e, ++ 0xc0, 0x53, 0x55, 0x8c, 0xe1, 0x3c, 0x27, 0x5f, 0x77, 0x1d, 0xc7, 0x03, ++ 0xb1, 0x26, 0x22, 0x9d, 0xd5, 0xc1, 0x7a, 0x0b, 0xe1, 0xbd, 0xf2, 0x75, ++ 0xe8, 0x7a, 0xce, 0x1f, 0x49, 0x8b, 0xc1, 0x7d, 0x3a, 0xb1, 0xae, 0x52, ++ 0xba, 0x2e, 0x79, 0xf0, 0xeb, 0x12, 0xeb, 0x11, 0xeb, 0x13, 0xdf, 0x1b, ++ 0x65, 0x76, 0x3f, 0xb0, 0xb1, 0x9d, 0xa0, 0xf3, 0x67, 0x38, 0xdd, 0xcd, ++ 0xdf, 0x76, 0x5b, 0xeb, 0x70, 0x0a, 0x8a, 0x35, 0xaf, 0x7d, 0x36, 0xaa, ++ 0x87, 0xf9, 0xa9, 0x68, 0xdf, 0x57, 0x72, 0xbc, 0x55, 0x5a, 0x1f, 0x47, ++ 0xfb, 0xbe, 0x92, 0xe8, 0xef, 0xa5, 0xa2, 0x7f, 0xc7, 0x81, 0x7f, 0x05, ++ 0xbd, 0x35, 0x10, 0x97, 0x02, 0xcc, 0x6b, 0xa4, 0x2b, 0x81, 0x67, 0x12, ++ 0x63, 0xf6, 0xf2, 0xfb, 0xf9, 0xd1, 0xfe, 0xef, 0xa3, 0xa7, 0xce, 0x7f, ++ 0x43, 0xb8, 0x08, 0x7c, 0x53, 0x7e, 0x71, 0xf2, 0xfd, 0x34, 0x27, 0xec, ++ 0xa7, 0x51, 0xba, 0xd2, 0xd9, 0xdb, 0x94, 0x8e, 0x74, 0xe5, 0x05, 0x6d, ++ 0xfa, 0xf2, 0x97, 0xe6, 0x9e, 0x51, 0xc0, 0xef, 0x0d, 0x86, 0xfb, 0xa1, ++ 0xbe, 0x34, 0xe4, 0x5f, 0x88, 0xe7, 0xa5, 0xbc, 0x54, 0x06, 0x07, 0xd5, ++ 0x3d, 0x19, 0xce, 0x07, 0x2c, 0x20, 0x9e, 0x56, 0xb6, 0xef, 0xca, 0xce, ++ 0x1f, 0x9d, 0x56, 0xda, 0x0e, 0xff, 0x10, 0xf8, 0x70, 0x1b, 0xe3, 0x83, ++ 0x3f, 0x73, 0xfc, 0xb7, 0xe4, 0x7b, 0x46, 0xe7, 0x83, 0xfe, 0x52, 0xdc, ++ 0x85, 0x20, 0xef, 0x2b, 0x56, 0x0f, 0x93, 0x93, 0x68, 0xbd, 0xfa, 0xf5, ++ 0x92, 0x1d, 0xf8, 0x6b, 0xde, 0xda, 0xa2, 0xc9, 0xc0, 0x97, 0x63, 0x89, ++ 0x1b, 0xfb, 0x9b, 0x9d, 0x18, 0xde, 0x7e, 0xab, 0xc8, 0x67, 0x7a, 0x64, ++ 0x6e, 0xb3, 0x99, 0x58, 0xa8, 0xdd, 0x3f, 0x97, 0x8e, 0x01, 0x72, 0x6e, ++ 0xee, 0x3e, 0x19, 0xf9, 0x1e, 0xf2, 0xa6, 0xa6, 0x0d, 0x81, 0x7b, 0x26, ++ 0x18, 0x3e, 0x1a, 0x1f, 0xdd, 0x6d, 0x19, 0x46, 0x9f, 0x8b, 0x9a, 0x1b, ++ 0x98, 0xfd, 0xe0, 0x63, 0x7c, 0x23, 0xee, 0xab, 0x15, 0xf4, 0x27, 0xe4, ++ 0xff, 0x92, 0xf5, 0xfb, 0xf1, 0xde, 0x0d, 0xea, 0xb7, 0xe8, 0xf8, 0xab, ++ 0x09, 0xf2, 0xbd, 0x0b, 0x81, 0x8f, 0x0d, 0xef, 0x9b, 0x6f, 0x46, 0x3c, ++ 0x34, 0x11, 0xf6, 0xfb, 0x05, 0x02, 0x7e, 0x37, 0xe5, 0x73, 0xbb, 0xc1, ++ 0x45, 0x5c, 0x40, 0x9f, 0xda, 0x83, 0x36, 0x2b, 0x9c, 0x17, 0xb9, 0xd6, ++ 0xba, 0x49, 0xff, 0xb8, 0x03, 0xc6, 0x25, 0xce, 0x1f, 0xc9, 0x40, 0xbb, ++ 0xf3, 0xbc, 0xaa, 0x0e, 0x85, 0x7a, 0x1a, 0x1d, 0xb3, 0x1b, 0xec, 0x48, ++ 0x45, 0x2b, 0x85, 0xf7, 0x14, 0x5e, 0xa8, 0xa7, 0x02, 0xab, 0xa2, 0xf1, ++ 0x1e, 0xcf, 0x93, 0x97, 0x64, 0xa2, 0x42, 0x7e, 0x9b, 0x5d, 0x2b, 0x05, ++ 0x3b, 0xaa, 0xe7, 0xfd, 0x91, 0x78, 0xce, 0x5d, 0xd0, 0xab, 0x58, 0x6f, ++ 0x93, 0x75, 0x3d, 0xd2, 0x6b, 0x13, 0xd1, 0xfb, 0xa3, 0xf5, 0xd4, 0xf1, ++ 0x81, 0xfd, 0xcf, 0xfa, 0xed, 0x89, 0x98, 0xd7, 0x44, 0xfb, 0x2f, 0xec, ++ 0x00, 0x7b, 0x63, 0xbb, 0x19, 0xed, 0x09, 0x2f, 0x59, 0xe1, 0x84, 0xf3, ++ 0xf6, 0x9e, 0x47, 0xcc, 0x28, 0x27, 0xe7, 0x76, 0xc4, 0xa3, 0x3f, 0x3c, ++ 0x77, 0x2d, 0xdb, 0x27, 0x98, 0xbb, 0x2b, 0x1e, 0xcf, 0x07, 0x52, 0x7f, ++ 0x14, 0xef, 0x11, 0x16, 0xf8, 0x38, 0xb9, 0xb6, 0xd2, 0x32, 0x0c, 0xf1, ++ 0x95, 0x82, 0xf7, 0xf3, 0x90, 0x0e, 0x3d, 0x9d, 0x0b, 0x3c, 0xf5, 0xf7, ++ 0x27, 0x0d, 0x78, 0x5a, 0xb7, 0xff, 0xb0, 0x53, 0xed, 0xef, 0x5f, 0x86, ++ 0xe0, 0xe9, 0xd4, 0x00, 0x78, 0x3a, 0x15, 0x8a, 0xa7, 0x15, 0xf9, 0x5c, ++ 0x8e, 0x70, 0x3c, 0x91, 0x87, 0xb9, 0xfc, 0xb9, 0xef, 0x50, 0x06, 0xdc, ++ 0x5f, 0x75, 0xbe, 0x39, 0x12, 0xcf, 0x83, 0x18, 0xe9, 0x50, 0xe8, 0x29, ++ 0x32, 0xff, 0x06, 0xcc, 0xbf, 0x12, 0x71, 0xaa, 0x9a, 0xe1, 0x0c, 0x2f, ++ 0x44, 0x71, 0x61, 0x9e, 0xe2, 0x85, 0xf5, 0xe3, 0x11, 0x6f, 0x46, 0x7c, ++ 0xd5, 0xfc, 0x63, 0x1e, 0xe2, 0x85, 0xbc, 0x6f, 0xc3, 0xfb, 0x8b, 0x67, ++ 0xa7, 0xb1, 0x7b, 0x5b, 0xee, 0x95, 0x18, 0xbf, 0xcc, 0x5e, 0x33, 0xa5, ++ 0x06, 0xf4, 0xf9, 0xe3, 0xf9, 0xcc, 0xae, 0xf9, 0x3d, 0x95, 0x5b, 0xee, ++ 0x2c, 0x6a, 0x8f, 0x53, 0xb9, 0xe5, 0xa6, 0x72, 0xeb, 0x8f, 0x54, 0x9e, ++ 0x41, 0xf9, 0xdd, 0x95, 0x4e, 0x2c, 0xbf, 0xb7, 0x52, 0xc5, 0xe7, 0x9f, ++ 0x56, 0x66, 0xe3, 0xf3, 0x14, 0xdf, 0x57, 0x15, 0x7c, 0x44, 0x09, 0xc1, ++ 0x02, 0x76, 0xe3, 0x86, 0x7c, 0x26, 0xc7, 0x36, 0xe4, 0x8b, 0xb8, 0xe1, ++ 0x03, 0x4e, 0x30, 0x2d, 0x6a, 0xfe, 0xf1, 0xc7, 0xf1, 0xf0, 0x3b, 0x0a, ++ 0x0e, 0xef, 0x94, 0x3b, 0xaa, 0x47, 0x12, 0x72, 0xab, 0x5b, 0xaf, 0x0f, ++ 0x67, 0xcd, 0xd4, 0xeb, 0xbb, 0x1e, 0xb3, 0x7d, 0xb2, 0x13, 0xfc, 0xdb, ++ 0x47, 0xd9, 0x3d, 0x4c, 0x73, 0x3d, 0x37, 0xea, 0xea, 0x13, 0x45, 0xb5, ++ 0xc0, 0x79, 0x68, 0x92, 0x3d, 0x2e, 0xf8, 0x1e, 0xf9, 0x4d, 0xb5, 0xc0, ++ 0x7d, 0xe9, 0x77, 0xd5, 0x26, 0xea, 0xea, 0xdf, 0xb1, 0x2e, 0x59, 0x57, ++ 0xfe, 0xcf, 0x7c, 0x15, 0xd7, 0x7d, 0x5b, 0x4d, 0x9a, 0xee, 0xfd, 0xdd, ++ 0x75, 0x79, 0xba, 0x72, 0x3d, 0xdc, 0x9b, 0x08, 0x74, 0xae, 0x4e, 0x40, ++ 0xbe, 0x79, 0x80, 0xe7, 0x55, 0x52, 0x07, 0x9d, 0xe1, 0x85, 0x9f, 0x23, ++ 0xfc, 0xba, 0xb9, 0x74, 0xe8, 0xf7, 0xe9, 0x7c, 0xbf, 0x3e, 0x6a, 0xc6, ++ 0xef, 0x46, 0x7c, 0x08, 0xbc, 0xce, 0xdf, 0x24, 0x13, 0x8d, 0xf6, 0x37, ++ 0x6f, 0x13, 0x95, 0x5f, 0x74, 0x8a, 0xa7, 0xda, 0x28, 0x9e, 0x68, 0xbb, ++ 0x2f, 0x4e, 0xd8, 0xd0, 0x0f, 0x69, 0xdd, 0x35, 0xee, 0x9d, 0x09, 0xb4, ++ 0x7c, 0x72, 0x97, 0x19, 0xe3, 0x07, 0x27, 0xd7, 0x26, 0xfe, 0x04, 0xec, ++ 0xa7, 0x93, 0xbb, 0x1c, 0xb1, 0x84, 0x3e, 0xb5, 0x56, 0x99, 0xdb, 0x19, ++ 0x76, 0xbc, 0x4f, 0x49, 0xf4, 0x5b, 0xb9, 0x76, 0x15, 0x9e, 0x87, 0xa9, ++ 0xf7, 0x45, 0xb8, 0xd0, 0x9e, 0xe8, 0xf2, 0xfe, 0xbb, 0x28, 0xab, 0xe0, ++ 0xb7, 0xc2, 0x24, 0x81, 0x6f, 0x8e, 0xcb, 0x3e, 0xbf, 0x84, 0xf8, 0x63, ++ 0xf1, 0x83, 0x9d, 0x11, 0x68, 0x0f, 0x9f, 0xa6, 0x76, 0x1d, 0x5c, 0x3d, ++ 0x7b, 0x5a, 0x22, 0x6b, 0xe1, 0x09, 0x07, 0xe6, 0xe3, 0xe8, 0xf7, 0x6f, ++ 0xba, 0x1d, 0x3e, 0xe0, 0xeb, 0x9a, 0x7f, 0xc8, 0x6e, 0x27, 0xd0, 0xd3, ++ 0xce, 0x48, 0x76, 0x7f, 0x08, 0x38, 0xc3, 0xf4, 0xfb, 0xe7, 0xc7, 0x32, ++ 0xb6, 0x3e, 0x86, 0xf4, 0xa5, 0xb6, 0xfb, 0x91, 0x7f, 0x23, 0xd0, 0x5f, ++ 0x98, 0xd7, 0xc3, 0xd6, 0x47, 0xa4, 0xb1, 0xc9, 0x80, 0xff, 0xd3, 0xf1, ++ 0xc4, 0x1d, 0x4f, 0x27, 0xd1, 0xb8, 0xe2, 0xbd, 0x8f, 0x14, 0x8a, 0xa7, ++ 0xc5, 0x99, 0xdd, 0x85, 0x7e, 0xda, 0xae, 0x2e, 0xc5, 0xef, 0xb8, 0x93, ++ 0xb6, 0x3b, 0xbb, 0xcd, 0xcc, 0xee, 0x97, 0xa3, 0xfd, 0xda, 0x69, 0xb9, ++ 0xf1, 0x97, 0x11, 0x5b, 0x98, 0x3c, 0x71, 0x0f, 0xbd, 0xad, 0x20, 0x14, ++ 0x9e, 0xbe, 0x42, 0x58, 0x77, 0xd6, 0x70, 0xcf, 0x87, 0xf9, 0xb0, 0x7f, ++ 0xb0, 0xd0, 0x57, 0x88, 0x72, 0xed, 0x61, 0x07, 0xf2, 0x95, 0x11, 0xee, ++ 0xa7, 0x2c, 0x1a, 0xc2, 0xd7, 0x0b, 0x7c, 0x20, 0x05, 0xe5, 0x64, 0x90, ++ 0xcf, 0xd8, 0x7e, 0x10, 0x15, 0x6e, 0xc3, 0x40, 0xde, 0xcc, 0x33, 0xbb, ++ 0x86, 0x80, 0xbe, 0x3a, 0xb5, 0xde, 0x8c, 0x76, 0x29, 0xd5, 0x27, 0xb1, ++ 0xb7, 0x61, 0x1c, 0x66, 0x0f, 0xd2, 0xf1, 0x29, 0x45, 0x9d, 0x0c, 0xeb, ++ 0x3e, 0xb5, 0x2e, 0x85, 0x80, 0xdc, 0x12, 0xe3, 0xce, 0x5d, 0x2f, 0xf3, ++ 0x7b, 0x42, 0x28, 0x5d, 0x42, 0xfd, 0x0d, 0xb2, 0x46, 0x6d, 0x07, 0x22, ++ 0xf4, 0x96, 0x77, 0x9d, 0xa4, 0x91, 0xa1, 0xfd, 0xe9, 0xe6, 0xfe, 0xfb, ++ 0x4a, 0x31, 0x2f, 0xdc, 0x68, 0xff, 0x8a, 0xe7, 0x97, 0x94, 0x57, 0xb5, ++ 0x10, 0x3b, 0x62, 0xc9, 0x6b, 0xec, 0x7e, 0x7e, 0x52, 0xdc, 0xa3, 0xcc, ++ 0x2c, 0x08, 0x5d, 0x07, 0xfb, 0x7d, 0x05, 0xa2, 0x4d, 0xd0, 0xe5, 0x6b, ++ 0x2e, 0x4b, 0xfd, 0xed, 0x47, 0x31, 0x26, 0xb4, 0x6b, 0xe2, 0x20, 0x9e, ++ 0x7e, 0xe6, 0xb8, 0x8c, 0x74, 0x76, 0x26, 0xb5, 0xad, 0xc4, 0x49, 0x49, ++ 0xff, 0xac, 0xe9, 0x40, 0xc9, 0xf7, 0x69, 0xf9, 0x8b, 0x69, 0xde, 0x4f, ++ 0x15, 0x5a, 0xbe, 0x6f, 0xb4, 0x16, 0x55, 0x40, 0x97, 0xb4, 0xd4, 0xb4, ++ 0x7e, 0x14, 0xf8, 0x4f, 0xbd, 0x9d, 0x9f, 0xfc, 0x04, 0xee, 0xdd, 0xfb, ++ 0xfc, 0x45, 0x33, 0x1c, 0x87, 0x27, 0x4b, 0x76, 0x2e, 0x1e, 0x8d, 0x71, ++ 0x1f, 0x6e, 0x7f, 0xf7, 0x97, 0x5b, 0xe2, 0xfe, 0x3f, 0xf7, 0x30, 0xb8, ++ 0x3f, 0x65, 0xa9, 0xda, 0x8e, 0x7a, 0x5c, 0x85, 0x43, 0x72, 0xb8, 0x7e, ++ 0x1f, 0xce, 0x53, 0xe8, 0x75, 0xfb, 0x93, 0x12, 0xd8, 0x58, 0xe4, 0x93, ++ 0xf1, 0xb6, 0xc7, 0xc0, 0x9f, 0x9e, 0x67, 0x38, 0x9f, 0xf2, 0x89, 0x99, ++ 0xd9, 0x09, 0x23, 0x0a, 0x98, 0x9c, 0x12, 0xfa, 0xfe, 0x1e, 0x5e, 0x9e, ++ 0x67, 0x62, 0x74, 0x4d, 0x5e, 0x97, 0x30, 0x0f, 0x9c, 0xf0, 0x7b, 0xe5, ++ 0x85, 0x3e, 0x10, 0xf2, 0x5a, 0xc8, 0xfd, 0xfc, 0x02, 0x66, 0x5f, 0x08, ++ 0x79, 0x0d, 0x99, 0x76, 0x20, 0xb7, 0x16, 0xc2, 0xed, 0x2d, 0x74, 0x9d, ++ 0xcb, 0x76, 0x44, 0xf8, 0x7c, 0x29, 0xd8, 0xd6, 0x0e, 0x70, 0x5c, 0xcc, ++ 0xd0, 0x44, 0x16, 0x17, 0xa8, 0xd8, 0x6e, 0x89, 0xe5, 0xc5, 0xa7, 0x81, ++ 0x97, 0x1a, 0x48, 0x37, 0xce, 0xff, 0x73, 0xb3, 0x6f, 0x61, 0x77, 0x0a, ++ 0xb4, 0xdf, 0xb2, 0x36, 0x01, 0xdb, 0x9b, 0x5d, 0x18, 0xa7, 0xe5, 0xfa, ++ 0x05, 0xae, 0xb5, 0x06, 0xb9, 0xd4, 0xc0, 0xf9, 0xaf, 0xb1, 0x4d, 0xf2, ++ 0xf9, 0x91, 0x7f, 0x98, 0x9e, 0x5c, 0xc0, 0xfb, 0x27, 0xa0, 0x67, 0x42, ++ 0xe4, 0x58, 0x3f, 0xfd, 0x62, 0xd0, 0x2b, 0x0b, 0xb8, 0x5e, 0x5d, 0x40, ++ 0x0c, 0x71, 0xde, 0x36, 0xbd, 0xbe, 0xf3, 0x44, 0xdb, 0x70, 0x5d, 0x4b, ++ 0xe8, 0xb8, 0xa0, 0x3f, 0x83, 0xf3, 0xa2, 0xf6, 0x33, 0x85, 0xdd, 0x42, ++ 0xcd, 0x77, 0x78, 0x3a, 0xce, 0x5b, 0x72, 0xf9, 0xc2, 0xcc, 0xa3, 0x81, ++ 0x04, 0xfc, 0x90, 0x7f, 0xd7, 0xb8, 0x8b, 0xc5, 0xbd, 0x8d, 0xf3, 0x32, ++ 0xae, 0x63, 0xb0, 0xf3, 0x5c, 0xe8, 0xba, 0xad, 0x2a, 0xbe, 0x38, 0x64, ++ 0x5c, 0xc3, 0xbc, 0x05, 0xbc, 0x31, 0x50, 0x1c, 0x82, 0x07, 0x01, 0xf7, ++ 0x85, 0x5e, 0x06, 0xcf, 0x85, 0x9d, 0x12, 0xe2, 0xeb, 0x2f, 0xdc, 0x5e, ++ 0xa3, 0x7f, 0x18, 0x9f, 0x36, 0xe2, 0xbf, 0x81, 0x78, 0xa6, 0x43, 0x9e, ++ 0x42, 0xc3, 0x93, 0x54, 0x7e, 0xa6, 0x04, 0xe9, 0x41, 0xd0, 0xc1, 0xe2, ++ 0xdd, 0x3e, 0x0b, 0xd8, 0xcb, 0x5f, 0x90, 0xb6, 0xd8, 0x18, 0xca, 0x07, ++ 0xcb, 0x36, 0xed, 0xbe, 0x63, 0xa2, 0x0a, 0xfe, 0xf3, 0x31, 0xf4, 0x43, ++ 0xea, 0x12, 0xfc, 0x19, 0xa6, 0x78, 0x42, 0x12, 0xbd, 0x2f, 0x3d, 0x5d, ++ 0x73, 0xd3, 0xb5, 0xe3, 0xfc, 0xff, 0x2a, 0x38, 0xc1, 0x2a, 0xe0, 0x7e, ++ 0x5a, 0x6c, 0x47, 0xe1, 0xb2, 0x60, 0x9b, 0xec, 0x8e, 0x2c, 0xd4, 0xd5, ++ 0xe3, 0x79, 0xda, 0x5e, 0x84, 0xd7, 0x22, 0xaf, 0xd7, 0x02, 0x71, 0xd0, ++ 0x45, 0x3c, 0xae, 0x78, 0xad, 0x79, 0x36, 0x29, 0xec, 0x3c, 0xef, 0xb5, ++ 0xe7, 0xcb, 0xe0, 0xf8, 0xaf, 0x9e, 0xf7, 0xd3, 0x05, 0x7a, 0x3b, 0x36, ++ 0x68, 0x1f, 0x65, 0x84, 0xf5, 0xb7, 0xfa, 0xec, 0xa2, 0x6b, 0xe8, 0xe3, ++ 0x0f, 0xcc, 0xfe, 0x91, 0xa0, 0x8f, 0x03, 0x23, 0x15, 0xd4, 0x47, 0x5f, ++ 0x2b, 0xae, 0xf7, 0xca, 0x93, 0x40, 0x3f, 0x67, 0xa0, 0xdf, 0x30, 0x90, ++ 0xbc, 0x5d, 0xc8, 0xf5, 0xf2, 0x02, 0xd0, 0xd3, 0xf4, 0xf9, 0xe9, 0xa6, ++ 0xbd, 0x78, 0x6e, 0xec, 0x2f, 0x4f, 0xee, 0xc5, 0x7d, 0x43, 0xcb, 0x8b, ++ 0x0b, 0x62, 0xc1, 0x5e, 0xfe, 0x74, 0xd3, 0xbc, 0x9f, 0x40, 0xde, 0xfc, ++ 0xa7, 0xbb, 0xe6, 0xa1, 0x5e, 0x6e, 0x78, 0x46, 0xe8, 0x65, 0xcd, 0x12, ++ 0xaa, 0xef, 0x2b, 0x37, 0xd5, 0x3f, 0xf7, 0x7f, 0x80, 0x4e, 0x77, 0x44, ++ 0xe2, 0x09, 0x85, 0x85, 0x5d, 0x1a, 0xb7, 0xc7, 0xa9, 0xfc, 0x03, 0xb9, ++ 0xb8, 0x89, 0xc9, 0x3f, 0xf2, 0x24, 0x93, 0x8f, 0x0d, 0xb1, 0xec, 0xde, ++ 0x6f, 0xaa, 0xbf, 0xb2, 0xa0, 0xde, 0x83, 0x0b, 0xb5, 0x2c, 0xa0, 0xf7, ++ 0x90, 0xf7, 0xa8, 0xd7, 0x1e, 0x9c, 0xa7, 0x95, 0x62, 0x7b, 0x62, 0xf7, ++ 0xb3, 0x7b, 0x21, 0xed, 0x7e, 0xd0, 0x5f, 0x42, 0xbf, 0x0a, 0xbd, 0x7b, ++ 0x74, 0x98, 0xd6, 0x55, 0x00, 0x7a, 0x41, 0x3e, 0xfa, 0xee, 0x43, 0x74, ++ 0xfd, 0xe7, 0xf6, 0xc8, 0x18, 0xd3, 0x69, 0x94, 0xb7, 0x8c, 0x82, 0xdf, ++ 0x43, 0x18, 0x48, 0x8e, 0xff, 0xf3, 0xf0, 0x36, 0xf5, 0xc1, 0x3b, 0x65, ++ 0x10, 0xf0, 0x9e, 0x0b, 0xf0, 0x46, 0x7b, 0x88, 0xc1, 0xfb, 0xe3, 0x75, ++ 0x0c, 0xce, 0x9f, 0xac, 0x67, 0x70, 0x6f, 0xdd, 0x95, 0x16, 0x0b, 0x7e, ++ 0xf0, 0xc7, 0xeb, 0xd2, 0xd0, 0x0e, 0xfa, 0x78, 0x57, 0x06, 0xc2, 0x7b, ++ 0xfe, 0x63, 0x14, 0xde, 0x68, 0x07, 0xab, 0x7a, 0x3b, 0x68, 0x1d, 0x85, ++ 0x37, 0xd8, 0xff, 0x00, 0x6f, 0x3a, 0xee, 0xdc, 0x2e, 0x95, 0xc3, 0xdb, ++ 0xc5, 0xe0, 0xbd, 0x8e, 0xeb, 0xa1, 0xf5, 0xec, 0x39, 0xbf, 0x1f, 0x5c, ++ 0xbd, 0x98, 0x6f, 0xfa, 0xe0, 0xf3, 0x11, 0x2e, 0xd0, 0xef, 0xa7, 0x23, ++ 0xfd, 0x0e, 0xf0, 0x53, 0x4e, 0xef, 0x96, 0x09, 0xec, 0xe7, 0xf7, 0xd9, ++ 0x49, 0xdc, 0x9e, 0x11, 0x70, 0xfe, 0x86, 0xb4, 0xfd, 0x3b, 0xd8, 0x55, ++ 0xfd, 0xec, 0x9b, 0x0d, 0x11, 0xc4, 0x4e, 0xfb, 0x5b, 0xfc, 0x92, 0x0d, ++ 0xcf, 0xd5, 0x7c, 0x2e, 0x95, 0x0f, 0x05, 0x04, 0x9c, 0x6d, 0xfb, 0x6d, ++ 0x2c, 0x8c, 0x17, 0x1c, 0xbf, 0xcf, 0xae, 0xb9, 0x54, 0x10, 0x6a, 0xd7, ++ 0x0c, 0x12, 0x3f, 0xcb, 0x89, 0x07, 0xf3, 0xde, 0x97, 0x77, 0xfe, 0xf6, ++ 0x04, 0xd8, 0xf5, 0x70, 0xbd, 0x0a, 0xf8, 0xfd, 0xcb, 0xc5, 0x39, 0xf8, ++ 0x0e, 0xfd, 0x39, 0x78, 0x49, 0x05, 0x99, 0x06, 0x21, 0x0a, 0x97, 0xd5, ++ 0x0a, 0x74, 0x30, 0xc2, 0x78, 0x4f, 0x80, 0x86, 0xbf, 0x0f, 0x71, 0x31, ++ 0xe3, 0xab, 0x39, 0x2b, 0x90, 0x9f, 0x03, 0x99, 0xa1, 0xfb, 0x41, 0x4d, ++ 0x51, 0x7e, 0x33, 0xc4, 0xa3, 0x02, 0xbb, 0x25, 0xc4, 0x77, 0xe3, 0x03, ++ 0xe5, 0xb1, 0xe5, 0x04, 0xf6, 0xb3, 0x9a, 0x71, 0x1e, 0x8e, 0x42, 0xa6, ++ 0x9f, 0x25, 0xb7, 0x1b, 0xe3, 0x8c, 0x11, 0x94, 0x6e, 0xa2, 0xe8, 0x78, ++ 0xce, 0x42, 0x15, 0xe7, 0x2b, 0xa9, 0x76, 0x16, 0x77, 0xdc, 0x4c, 0xc7, ++ 0xb5, 0x05, 0xe7, 0x6b, 0x7c, 0x3f, 0x1d, 0x04, 0x11, 0xe8, 0xf7, 0x18, ++ 0x13, 0xea, 0x77, 0xe3, 0xfa, 0x27, 0xf3, 0x71, 0x1a, 0x65, 0x13, 0xfa, ++ 0x21, 0xcb, 0x2c, 0xcc, 0x1f, 0x11, 0x79, 0x13, 0x19, 0xfc, 0x7b, 0x46, ++ 0x21, 0xf3, 0xeb, 0xf3, 0x0a, 0xd9, 0x3e, 0x43, 0x6f, 0x24, 0x41, 0xfd, ++ 0xd1, 0xbb, 0x21, 0xda, 0xb7, 0x0a, 0xd7, 0x57, 0x85, 0xf1, 0x4f, 0x85, ++ 0x30, 0xfa, 0x56, 0x04, 0xdc, 0xec, 0xca, 0x97, 0xba, 0x7b, 0xca, 0x79, ++ 0x7c, 0x01, 0x7e, 0xbf, 0x00, 0x8c, 0xea, 0xf9, 0x11, 0x3c, 0xfe, 0x4b, ++ 0x55, 0x2d, 0xb4, 0xbf, 0x87, 0xb7, 0xbf, 0xa7, 0xed, 0x6d, 0xdc, 0xcf, ++ 0xa3, 0x9e, 0xcc, 0x2f, 0x40, 0xff, 0xce, 0x6e, 0x89, 0x70, 0x81, 0x3d, ++ 0xeb, 0x85, 0xfb, 0xad, 0x28, 0xdd, 0xfd, 0x38, 0x8a, 0xed, 0xbf, 0x90, ++ 0xa4, 0x38, 0x05, 0xf8, 0xea, 0x6e, 0x2e, 0x67, 0xef, 0x69, 0x7b, 0xdc, ++ 0x03, 0xfa, 0x68, 0x76, 0x5b, 0xb4, 0x1b, 0x9e, 0x74, 0x1c, 0x2f, 0xe1, ++ 0xf1, 0xd6, 0x62, 0xd8, 0xbf, 0x1d, 0x6e, 0xc1, 0x78, 0x6b, 0x9d, 0xb5, ++ 0xe7, 0x45, 0x30, 0xaf, 0xef, 0x75, 0x7e, 0xf2, 0x3d, 0x2b, 0x5d, 0xda, ++ 0x2a, 0x13, 0xb3, 0x5f, 0x56, 0x25, 0x10, 0xcc, 0x3b, 0x19, 0x43, 0xcd, ++ 0x78, 0x88, 0xdf, 0xd2, 0x4f, 0xfb, 0xae, 0x24, 0x5e, 0x8d, 0x7e, 0xf4, ++ 0xf1, 0xe4, 0x65, 0x10, 0xd7, 0x65, 0xf7, 0xb5, 0x79, 0x51, 0x9e, 0xc8, ++ 0x26, 0x5d, 0x79, 0x19, 0xff, 0x5d, 0x81, 0xba, 0xc2, 0xcc, 0x3b, 0x9f, ++ 0x1c, 0x41, 0xc8, 0x1f, 0x88, 0x5a, 0x00, 0xf8, 0x5e, 0x06, 0xb0, 0x01, ++ 0x7a, 0xa8, 0x8f, 0xc3, 0xf8, 0xc0, 0xad, 0x10, 0x5f, 0x4e, 0x80, 0xa7, ++ 0x82, 0x74, 0x36, 0x43, 0x21, 0x5e, 0x13, 0x7b, 0xae, 0x8b, 0xc1, 0x73, ++ 0xfe, 0x2c, 0xde, 0x3c, 0x9d, 0xaf, 0xfb, 0xbb, 0x13, 0x88, 0x3f, 0x8e, ++ 0xae, 0xd7, 0xff, 0xa6, 0x3e, 0xde, 0x7d, 0xa7, 0xdf, 0xe4, 0xcf, 0xa2, ++ 0x78, 0xb8, 0x55, 0xf1, 0xef, 0x07, 0xba, 0x36, 0x59, 0x55, 0x33, 0xf8, ++ 0x07, 0x9e, 0x1a, 0x69, 0x2c, 0xf8, 0xcd, 0xcb, 0x56, 0x0f, 0x6e, 0xbe, ++ 0x4d, 0x85, 0x45, 0x38, 0xdf, 0x65, 0x26, 0x13, 0x9b, 0xe7, 0x43, 0x12, ++ 0xde, 0xcb, 0x70, 0x0f, 0x65, 0x72, 0xa0, 0xcf, 0x39, 0x0a, 0xe9, 0x92, ++ 0xc7, 0x32, 0xfc, 0x01, 0xfd, 0x35, 0x25, 0xb0, 0x7b, 0x80, 0x03, 0xf7, ++ 0x31, 0xfa, 0x16, 0x71, 0x76, 0x81, 0xa7, 0x22, 0xda, 0x7d, 0x28, 0x7c, ++ 0xef, 0xe1, 0xf3, 0xa3, 0xfd, 0xac, 0x8b, 0x85, 0xf6, 0x96, 0xf0, 0xf1, ++ 0xa5, 0x1f, 0x16, 0x0a, 0xbf, 0x98, 0xd9, 0x9d, 0x4b, 0x39, 0xbf, 0x2e, ++ 0x15, 0xf4, 0xb6, 0x4b, 0xcf, 0xa7, 0xcf, 0x02, 0xbf, 0x00, 0x1f, 0x81, ++ 0x9d, 0x4b, 0xe1, 0x76, 0x0f, 0x7f, 0x0e, 0x44, 0xef, 0x9b, 0x38, 0xbd, ++ 0x6f, 0xe2, 0xf4, 0xde, 0xca, 0xcb, 0x83, 0x1d, 0xaf, 0x31, 0x82, 0xf8, ++ 0x43, 0x7f, 0xaf, 0x45, 0x8c, 0x7b, 0x2b, 0x7f, 0x3e, 0x5d, 0x98, 0x8a, ++ 0xfd, 0x89, 0x79, 0x08, 0x7a, 0x26, 0x3c, 0x3e, 0x65, 0xa2, 0x92, 0x03, ++ 0xe8, 0xe8, 0x54, 0xdb, 0x1a, 0xb4, 0x9b, 0x16, 0x19, 0xe2, 0xc5, 0x24, ++ 0x34, 0x8e, 0x25, 0x87, 0x2b, 0xf7, 0xc9, 0x1f, 0xd3, 0x15, 0x78, 0x5a, ++ 0x02, 0xf3, 0x61, 0x3e, 0xd2, 0x77, 0x22, 0x5d, 0x40, 0xd7, 0xf7, 0x58, ++ 0xda, 0x33, 0xd8, 0xbd, 0x12, 0xfa, 0x7a, 0x62, 0xff, 0xb7, 0x0e, 0x6e, ++ 0xee, 0xc2, 0xf3, 0x3a, 0x44, 0xf7, 0x7b, 0x0a, 0xd5, 0x72, 0x0c, 0xe6, ++ 0x13, 0xd5, 0x49, 0xec, 0x5e, 0x99, 0xde, 0x72, 0x9b, 0xd7, 0x44, 0xed, ++ 0xc5, 0x0f, 0xf8, 0xbd, 0x0e, 0xe7, 0x9b, 0xd9, 0xf9, 0xd0, 0xba, 0x87, ++ 0xf8, 0xef, 0xa0, 0xc4, 0x3d, 0x38, 0x1d, 0xec, 0xc3, 0xba, 0x58, 0x8b, ++ 0x02, 0xcf, 0x0f, 0xf8, 0xfd, 0x72, 0xf7, 0x92, 0x6e, 0x5b, 0x4a, 0x4a, ++ 0xd0, 0x3e, 0x69, 0x2d, 0x97, 0xf9, 0xef, 0x6e, 0xcc, 0xbd, 0xd3, 0x9d, ++ 0x0f, 0xf7, 0x44, 0x10, 0x51, 0xde, 0xe8, 0x1e, 0x81, 0x51, 0x25, 0x5e, ++ 0x6e, 0x78, 0x0f, 0xf6, 0x3b, 0x66, 0x5e, 0xa6, 0x74, 0x80, 0xe5, 0x45, ++ 0x77, 0xba, 0xa9, 0xdc, 0xe8, 0x3d, 0xc4, 0xbf, 0x7b, 0x69, 0x19, 0xf0, ++ 0xf8, 0x88, 0xa0, 0xe7, 0x46, 0xec, 0xaf, 0xf7, 0x29, 0xf1, 0xfd, 0x3e, ++ 0x56, 0x7e, 0x54, 0x7c, 0x7f, 0x90, 0x95, 0xff, 0x4d, 0xf4, 0xcf, 0xcb, ++ 0x1b, 0x0c, 0xdf, 0x57, 0x19, 0xbe, 0xff, 0x9c, 0x95, 0xdf, 0x2c, 0x7c, ++ 0xf0, 0x4e, 0x2f, 0xd8, 0xb5, 0x7c, 0x1f, 0xa7, 0xee, 0x06, 0x09, 0xe5, ++ 0x8a, 0x95, 0xd3, 0x5b, 0xdd, 0x6a, 0x3f, 0xc2, 0xb9, 0xce, 0x74, 0x80, ++ 0x3d, 0x2b, 0x88, 0x1f, 0xce, 0xd7, 0x5e, 0xab, 0xde, 0x37, 0x85, 0x1e, ++ 0x6b, 0xa1, 0x03, 0xee, 0x37, 0x38, 0x65, 0x03, 0xfd, 0xfd, 0xad, 0xcb, ++ 0x8d, 0xe5, 0xf3, 0xf9, 0xda, 0xf1, 0x42, 0x5a, 0x7f, 0xc9, 0x6d, 0x92, ++ 0xd7, 0x02, 0xf2, 0xf2, 0xb8, 0x2f, 0x93, 0xcb, 0xf7, 0xb0, 0x79, 0xb9, ++ 0x56, 0x4e, 0xbf, 0x17, 0xc6, 0xd0, 0xfe, 0xc6, 0x07, 0xe1, 0x4d, 0xfb, ++ 0xf9, 0xf0, 0x9f, 0xe9, 0x67, 0x75, 0xff, 0x7e, 0x3e, 0x85, 0x79, 0x5d, ++ 0x6f, 0x3f, 0xd3, 0x5d, 0x6c, 0x7d, 0x21, 0xfd, 0xf4, 0xfe, 0x33, 0xfd, ++ 0xec, 0x75, 0xe9, 0xe7, 0x23, 0xec, 0xa3, 0xa9, 0x63, 0xdd, 0x51, 0x63, ++ 0x40, 0x3e, 0x54, 0xdd, 0xa8, 0x8b, 0xfb, 0x2d, 0xfd, 0x91, 0x2b, 0x0e, ++ 0xec, 0x2b, 0xf2, 0x0e, 0xfb, 0x1d, 0x93, 0xa5, 0xab, 0xdb, 0x47, 0x8d, ++ 0xa3, 0xfd, 0x2f, 0xfd, 0xaf, 0x57, 0x46, 0x2d, 0x0c, 0xf1, 0xc7, 0x97, ++ 0x5f, 0x92, 0x89, 0x1b, 0xee, 0x47, 0xb8, 0x24, 0xe1, 0xf3, 0x8b, 0xfd, ++ 0x7f, 0xb2, 0xc0, 0xf9, 0xfc, 0xe5, 0xfb, 0xf6, 0x5b, 0x26, 0xe7, 0xc3, ++ 0xef, 0x2f, 0xec, 0xb7, 0x54, 0x86, 0xcc, 0x6b, 0x99, 0xc8, 0xb3, 0x24, ++ 0x3d, 0xca, 0x8c, 0x10, 0xfd, 0x1e, 0x37, 0xc6, 0xc4, 0xe5, 0x06, 0xfb, ++ 0x1d, 0x87, 0xa5, 0xff, 0x75, 0x46, 0x01, 0x7c, 0x2e, 0x35, 0xb5, 0x7f, ++ 0xfa, 0x0c, 0xc4, 0x81, 0x6e, 0x90, 0xc2, 0xee, 0xd7, 0xfe, 0x95, 0xaf, ++ 0xef, 0xa3, 0x01, 0xce, 0x83, 0x39, 0xc6, 0x30, 0xf9, 0x57, 0x56, 0xec, ++ 0x4e, 0x82, 0x75, 0x5e, 0x04, 0x19, 0x44, 0xeb, 0x57, 0xae, 0x09, 0xbf, ++ 0xcf, 0x3f, 0x67, 0x0c, 0x8b, 0x27, 0xd6, 0xf1, 0x7b, 0x95, 0xe7, 0x95, ++ 0xd8, 0xac, 0x2a, 0x85, 0xf3, 0xf8, 0xe3, 0x6c, 0x7f, 0x7a, 0xe1, 0xe6, ++ 0x94, 0xb1, 0x10, 0xe7, 0x75, 0x14, 0x54, 0x8c, 0x1a, 0x03, 0xf3, 0x1d, ++ 0x30, 0x5e, 0x1a, 0x60, 0xf1, 0xd2, 0x4e, 0x16, 0x2f, 0xad, 0x4b, 0xe8, ++ 0x7e, 0x00, 0xee, 0x31, 0xbd, 0xeb, 0x57, 0x4f, 0x6d, 0x84, 0x7b, 0x4d, ++ 0xa7, 0x6e, 0x14, 0x7c, 0x42, 0xf0, 0xf7, 0x72, 0x6a, 0x22, 0x04, 0xdf, ++ 0xed, 0xba, 0xb3, 0xaa, 0x0c, 0xe3, 0x5f, 0x58, 0x2e, 0x1b, 0xf3, 0xc2, ++ 0x46, 0xe0, 0x9b, 0x23, 0xfc, 0x5e, 0xf1, 0xd9, 0xa5, 0x05, 0x51, 0x20, ++ 0x1f, 0x7a, 0x52, 0xa2, 0x4d, 0x76, 0x2a, 0x47, 0x46, 0xe4, 0xd7, 0xdf, ++ 0x05, 0xf3, 0x98, 0x5d, 0x7a, 0xd3, 0x64, 0x78, 0x5f, 0x1e, 0x61, 0xcb, ++ 0xac, 0x67, 0x71, 0x77, 0xa4, 0x8b, 0x11, 0xf9, 0x9e, 0x62, 0xf8, 0x0e, ++ 0xf5, 0x21, 0xde, 0xa1, 0x59, 0x58, 0xfc, 0x4b, 0x7b, 0x4b, 0xc6, 0xf8, ++ 0x97, 0x56, 0x18, 0xad, 0x85, 0xdb, 0x7f, 0x1e, 0xcb, 0xe1, 0x70, 0xd7, ++ 0x18, 0x76, 0x4f, 0xf1, 0x11, 0x13, 0x9d, 0xe7, 0xd8, 0xe0, 0x3c, 0xc4, ++ 0xf8, 0xd4, 0x60, 0x79, 0xa0, 0x9b, 0xf6, 0x77, 0x6a, 0xf5, 0xb0, 0x22, ++ 0xb8, 0x97, 0xbf, 0x25, 0xbf, 0x7c, 0x16, 0xd2, 0x13, 0x1f, 0xbf, 0x25, ++ 0x5f, 0xab, 0x86, 0xb2, 0x18, 0x9f, 0x2e, 0xb7, 0x10, 0xde, 0x0f, 0x76, ++ 0x1e, 0x15, 0x9c, 0x2e, 0x66, 0x8d, 0x61, 0x78, 0xf3, 0x94, 0x51, 0x7a, ++ 0x0b, 0xf1, 0x1b, 0x67, 0x54, 0x45, 0xeb, 0xca, 0x33, 0x6b, 0x13, 0x89, ++ 0x3b, 0x34, 0x0e, 0x3b, 0x33, 0x59, 0x57, 0x9e, 0x55, 0x97, 0xa6, 0xab, ++ 0x7f, 0xf7, 0xfc, 0x3c, 0xdd, 0xf7, 0x69, 0x11, 0xdd, 0xc5, 0xcd, 0xd7, ++ 0x61, 0x07, 0x37, 0xd9, 0x6c, 0x51, 0x60, 0x8f, 0x7d, 0xd8, 0xf9, 0xcd, ++ 0x7f, 0xdf, 0x03, 0xf6, 0xdd, 0x36, 0xd9, 0x25, 0xd1, 0xf5, 0x2c, 0x7e, ++ 0x6d, 0xfb, 0x7f, 0xc3, 0xef, 0xa3, 0x9c, 0x87, 0x1f, 0x5c, 0x60, 0xe7, ++ 0xaf, 0x30, 0x1e, 0xf6, 0xf9, 0x11, 0xf6, 0x7b, 0x7f, 0xd4, 0xae, 0x53, ++ 0x42, 0xf7, 0x75, 0xce, 0x91, 0x6e, 0xcc, 0x2b, 0x0c, 0xd9, 0x2f, 0x08, ++ 0xbb, 0x9f, 0x2a, 0xf6, 0x0b, 0x96, 0xda, 0xbb, 0x30, 0xff, 0xef, 0x7f, ++ 0xbb, 0xaf, 0xd3, 0x32, 0x86, 0xef, 0x17, 0x8c, 0x25, 0x63, 0x41, 0x1f, ++ 0x9e, 0x6f, 0x7e, 0x17, 0xe3, 0x70, 0xcb, 0x63, 0xd8, 0xba, 0xce, 0xbd, ++ 0xc2, 0xef, 0x21, 0x07, 0x3d, 0x42, 0xe9, 0xfc, 0x66, 0x68, 0x08, 0xf7, ++ 0x85, 0x5d, 0x5a, 0x85, 0xbf, 0xef, 0x53, 0xc9, 0x7f, 0xbf, 0x75, 0xd8, ++ 0x18, 0x95, 0xf9, 0x05, 0x23, 0xee, 0x53, 0xe0, 0xdc, 0x77, 0x13, 0x7d, ++ 0x82, 0xfc, 0x9f, 0x4c, 0xe5, 0x54, 0x1c, 0xa5, 0x93, 0xee, 0xfd, 0xa4, ++ 0x60, 0x1f, 0xe4, 0x5d, 0xa4, 0xd8, 0x30, 0x9f, 0xbc, 0xf1, 0xd2, 0xed, ++ 0x18, 0xe7, 0x3e, 0x12, 0xe5, 0xcd, 0xbf, 0x8f, 0xd6, 0x5b, 0xba, 0x6e, ++ 0x0a, 0x96, 0x97, 0x5f, 0x8a, 0xc6, 0x7e, 0x7f, 0x2f, 0x77, 0x4f, 0xc6, ++ 0xbc, 0xe6, 0x97, 0xd9, 0xef, 0x21, 0x4e, 0x4b, 0x9e, 0xbd, 0x1a, 0xe6, ++ 0x0f, 0xf5, 0xef, 0xa7, 0xe3, 0x4d, 0xfb, 0xd5, 0xcd, 0x35, 0x00, 0xa7, ++ 0xe5, 0xfb, 0xd8, 0xf9, 0xa9, 0x69, 0xf2, 0x1f, 0x8a, 0xa1, 0x9f, 0x65, ++ 0x6d, 0x53, 0xb0, 0xfd, 0x34, 0x99, 0x1c, 0x91, 0xa8, 0xbd, 0x10, 0x77, ++ 0xe9, 0x1e, 0xec, 0x77, 0x1a, 0xe8, 0x7a, 0x5a, 0x96, 0x4b, 0x6c, 0x8f, ++ 0x81, 0xfe, 0x95, 0x2d, 0xfe, 0xcc, 0x67, 0x41, 0xae, 0x58, 0x6c, 0x28, ++ 0x57, 0x9a, 0x2e, 0x45, 0x62, 0xbb, 0xa9, 0x95, 0x4c, 0x4f, 0xfb, 0xc6, ++ 0x30, 0x3b, 0xc6, 0xdc, 0xc3, 0xe6, 0x55, 0x7d, 0xe9, 0x36, 0xfc, 0x2e, ++ 0xf0, 0xff, 0xc2, 0x98, 0x54, 0xdd, 0x3d, 0x32, 0x66, 0xc7, 0x36, 0x05, ++ 0xce, 0x27, 0x98, 0x7b, 0x24, 0xac, 0x7f, 0xcb, 0xa5, 0x3c, 0x7c, 0x8a, ++ 0x75, 0xbe, 0x95, 0xfd, 0x3c, 0xde, 0x57, 0x62, 0x76, 0x7c, 0x3d, 0x19, ++ 0xf2, 0x3a, 0xdf, 0x4a, 0x92, 0xec, 0x68, 0x7e, 0x18, 0xe4, 0xee, 0x85, ++ 0xe6, 0xd2, 0x38, 0x12, 0x46, 0x2e, 0xf5, 0x8d, 0x73, 0x89, 0xe5, 0x01, ++ 0x47, 0x5c, 0x62, 0x79, 0xc1, 0x2f, 0x14, 0xb9, 0x3b, 0x81, 0xbf, 0xa7, ++ 0x3f, 0xdc, 0xa3, 0xc0, 0xfe, 0x0e, 0x89, 0xb1, 0xda, 0x01, 0x5e, 0xd3, ++ 0x27, 0x14, 0xa9, 0x0b, 0x43, 0xf8, 0x49, 0x3e, 0x70, 0x97, 0x05, 0xf0, ++ 0x62, 0x7e, 0xf2, 0x98, 0x05, 0xf4, 0x7e, 0x04, 0x7d, 0x56, 0x86, 0x7c, ++ 0x6f, 0x14, 0xf9, 0xeb, 0x06, 0xb9, 0x7c, 0x80, 0xcb, 0x01, 0x71, 0x7e, ++ 0x41, 0xe8, 0x19, 0xa2, 0x76, 0xe8, 0x7e, 0x5f, 0x4d, 0xf0, 0xcb, 0xaf, ++ 0x38, 0xbf, 0x8a, 0xf6, 0xdd, 0x40, 0xeb, 0x80, 0xc7, 0x97, 0x22, 0xd0, ++ 0x9f, 0x7a, 0xa3, 0x48, 0x7b, 0x17, 0xe6, 0xdb, 0x5d, 0xce, 0x7e, 0x27, ++ 0x83, 0x28, 0xdd, 0xa3, 0x60, 0x5f, 0xe5, 0x5f, 0x35, 0x7f, 0x8a, 0x67, ++ 0xab, 0x84, 0xf6, 0x7e, 0x0f, 0xe6, 0xc5, 0x4f, 0x9f, 0xa0, 0x9a, 0x60, ++ 0xbf, 0xe0, 0xfd, 0xbe, 0x75, 0x30, 0xbe, 0xbd, 0xd6, 0x3a, 0x7e, 0xcb, ++ 0xeb, 0xff, 0x5e, 0x26, 0x2d, 0xd0, 0xef, 0xef, 0x27, 0x4d, 0xea, 0x76, ++ 0xd3, 0xfe, 0xf6, 0xff, 0x70, 0xdc, 0x38, 0x90, 0xff, 0x62, 0xdc, 0x2f, ++ 0xc6, 0xb0, 0x73, 0xc3, 0xc4, 0x1e, 0xb8, 0x0c, 0xfe, 0x5d, 0xd3, 0xeb, ++ 0xd1, 0x2a, 0xf0, 0xf7, 0x34, 0x70, 0x96, 0x8a, 0x83, 0x76, 0x2d, 0x7d, ++ 0x8f, 0xf7, 0xe5, 0x35, 0xbd, 0x1e, 0xb1, 0x55, 0xa2, 0xdf, 0x9b, 0x62, ++ 0xa9, 0x7f, 0x4b, 0xc7, 0xaf, 0x7c, 0x23, 0xd2, 0x0f, 0x74, 0xbc, 0xff, ++ 0x8d, 0x48, 0x05, 0x7f, 0xa7, 0xa8, 0x58, 0xfb, 0x02, 0xe4, 0x65, 0xe5, ++ 0x1b, 0x59, 0x55, 0xe0, 0xcf, 0xb9, 0x3b, 0x23, 0x14, 0x82, 0x76, 0x8e, ++ 0xfb, 0x2c, 0xca, 0xd5, 0x01, 0xe6, 0x7b, 0x2d, 0x39, 0x65, 0xa4, 0x33, ++ 0xc1, 0x97, 0xda, 0x3a, 0xc6, 0x2f, 0xf5, 0x9c, 0x4e, 0xe7, 0x72, 0xfe, ++ 0xd3, 0x38, 0x1f, 0x5d, 0x68, 0x1e, 0x8a, 0x7c, 0x78, 0xe1, 0x61, 0x3a, ++ 0x69, 0xd8, 0x0f, 0x7d, 0x58, 0x2a, 0xd8, 0x07, 0x76, 0x81, 0x6a, 0xc3, ++ 0xfb, 0x89, 0x05, 0x5f, 0x4e, 0x03, 0x3f, 0x88, 0xbe, 0xff, 0x7f, 0x46, ++ 0xe4, 0x8e, 0x2c, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xc5, 0x7d, 0x0b, 0x78, 0x54, 0xd5, ++ 0xb5, 0xf0, 0x3e, 0x73, 0xce, 0xbc, 0x92, 0x99, 0xc9, 0xe4, 0x49, 0x42, ++ 0x1e, 0x9c, 0x40, 0x08, 0x41, 0x02, 0x4c, 0x26, 0x21, 0x84, 0x10, 0x60, ++ 0x12, 0x02, 0xa2, 0x02, 0x0e, 0x50, 0x15, 0x30, 0xc8, 0x80, 0x08, 0x11, ++ 0x09, 0x09, 0x51, 0x5b, 0xac, 0xf6, 0xcf, 0x84, 0x24, 0x10, 0x45, 0x2d, ++ 0x56, 0xdb, 0x06, 0x8b, 0x74, 0xc0, 0x47, 0x51, 0x69, 0x6f, 0x40, 0x6c, ++ 0xd3, 0x16, 0x61, 0x78, 0x68, 0x63, 0xf5, 0xd3, 0x68, 0xef, 0x6d, 0xf1, ++ 0xd6, 0xda, 0xf8, 0xb8, 0x88, 0x8a, 0x35, 0x82, 0xf5, 0xa3, 0xb7, 0x28, ++ 0xff, 0x5a, 0x6b, 0xef, 0x9d, 0x99, 0x33, 0x49, 0x10, 0xed, 0xbd, 0xff, ++ 0x1f, 0xe5, 0x3b, 0x59, 0x67, 0xef, 0xb3, 0x1f, 0x6b, 0xad, 0xbd, 0x5e, ++ 0x7b, 0xed, 0x9d, 0x79, 0xe3, 0x12, 0x43, 0x2d, 0x0a, 0x63, 0xeb, 0xce, ++ 0x25, 0x32, 0x96, 0xcc, 0xd8, 0x3c, 0x95, 0x75, 0x2b, 0x49, 0x8c, 0xd5, ++ 0x9d, 0xcb, 0x65, 0xac, 0x98, 0xb1, 0xf5, 0xe7, 0x92, 0xe9, 0x7d, 0xfd, ++ 0x39, 0x3b, 0x3d, 0x57, 0x9e, 0x1b, 0x47, 0xef, 0xad, 0xe7, 0x54, 0xe6, ++ 0x03, 0x78, 0xd5, 0x39, 0x85, 0xf9, 0x00, 0xbe, 0x6a, 0xa6, 0x33, 0x68, ++ 0x4a, 0x60, 0xec, 0x42, 0x51, 0x20, 0xd3, 0x93, 0x0a, 0xed, 0xb4, 0x5c, ++ 0x3e, 0x87, 0xb9, 0x18, 0x0b, 0x6c, 0xca, 0x28, 0x09, 0x38, 0x18, 0x9b, ++ 0x7f, 0x57, 0xaf, 0x66, 0x4b, 0x61, 0x8c, 0x39, 0x2c, 0xee, 0xc7, 0xa1, ++ 0xbf, 0xf9, 0x65, 0x45, 0xe9, 0xab, 0xe1, 0xfd, 0x05, 0xfc, 0x99, 0xc1, ++ 0x58, 0xcb, 0x91, 0x25, 0x4c, 0x77, 0x42, 0xbb, 0x29, 0x7e, 0x8b, 0x0f, ++ 0xde, 0xaf, 0x82, 0xe7, 0xcc, 0xa8, 0xf2, 0x9b, 0x18, 0xf3, 0x75, 0x02, ++ 0xcc, 0x98, 0x7b, 0x76, 0x5a, 0x09, 0x7c, 0xdf, 0x9a, 0x6b, 0xba, 0x87, ++ 0x45, 0xca, 0x75, 0x8f, 0x89, 0xb1, 0x49, 0x58, 0xde, 0x4c, 0xcf, 0xf9, ++ 0xb2, 0xbe, 0xde, 0xc5, 0x58, 0x1a, 0x63, 0x37, 0xb8, 0x19, 0xff, 0xd9, ++ 0x08, 0x83, 0xcb, 0x60, 0xcc, 0x29, 0xea, 0xaf, 0x74, 0x84, 0x47, 0x9b, ++ 0xa0, 0x3d, 0x73, 0x83, 0xdd, 0xb3, 0x09, 0xc6, 0x75, 0x26, 0x45, 0x9f, ++ 0xcd, 0x00, 0x6e, 0xbc, 0x1b, 0x00, 0x40, 0x41, 0xa3, 0xd9, 0x3f, 0xd3, ++ 0x09, 0xe3, 0x6e, 0xdc, 0xae, 0x78, 0x82, 0xf0, 0xf9, 0x8d, 0xa5, 0x4e, ++ 0x1b, 0x83, 0x79, 0x96, 0x9e, 0x68, 0xb0, 0x04, 0x0a, 0x23, 0xfd, 0x2f, ++ 0x39, 0x37, 0x81, 0xe9, 0x80, 0x87, 0x45, 0xe7, 0xf2, 0xe8, 0x99, 0x3a, ++ 0x3e, 0x30, 0x01, 0xf1, 0xb0, 0xe2, 0xdc, 0xb5, 0x84, 0xaf, 0x95, 0x50, ++ 0x8e, 0x4f, 0xa6, 0x97, 0x99, 0x70, 0x3c, 0xb7, 0xd9, 0xf0, 0x77, 0x1c, ++ 0x10, 0xc0, 0xa5, 0x8c, 0xdd, 0x2a, 0xc6, 0xf7, 0x59, 0xc3, 0xe4, 0x61, ++ 0xdf, 0x81, 0xfe, 0x3f, 0x7b, 0xd9, 0x4c, 0xe5, 0x93, 0x7c, 0xc1, 0x1b, ++ 0x70, 0x3c, 0xe6, 0x90, 0xd5, 0xb3, 0x0b, 0xc6, 0x73, 0xca, 0x1e, 0x50, ++ 0x19, 0x8c, 0xe7, 0x54, 0x36, 0x73, 0x3f, 0x08, 0x43, 0x3c, 0x65, 0x66, ++ 0x41, 0x37, 0xd0, 0xeb, 0xc6, 0x0e, 0x95, 0x05, 0xa1, 0xfd, 0x55, 0xf0, ++ 0x0c, 0xc0, 0xf3, 0x54, 0x22, 0xf3, 0x25, 0x7a, 0x11, 0x9f, 0x30, 0xcf, ++ 0x02, 0xde, 0xf6, 0x05, 0xf8, 0xf7, 0x77, 0x6d, 0x5b, 0x0e, 0x1b, 0x05, ++ 0xf4, 0x6d, 0xfc, 0xd3, 0x5b, 0xda, 0x48, 0xc6, 0x6e, 0xce, 0xef, 0x99, ++ 0x10, 0x86, 0x76, 0x6b, 0x2a, 0xc3, 0xa9, 0xd7, 0x41, 0xbb, 0xa7, 0x1f, ++ 0x33, 0x7b, 0x82, 0xd0, 0xef, 0xba, 0x23, 0xaf, 0x97, 0x9a, 0xa0, 0xfc, ++ 0xc3, 0x5c, 0xdf, 0x30, 0xa6, 0x32, 0x36, 0x66, 0x78, 0x60, 0x0e, 0xce, ++ 0x67, 0xed, 0xc2, 0xd0, 0x2f, 0xcc, 0x00, 0xdf, 0x72, 0xdf, 0x33, 0xae, ++ 0x29, 0x7a, 0x04, 0x9f, 0x9d, 0x5a, 0x78, 0xb4, 0x06, 0xdf, 0x77, 0x02, ++ 0x1e, 0x83, 0x30, 0xae, 0xce, 0x7b, 0xd5, 0x39, 0x21, 0xa2, 0x17, 0x8b, ++ 0x5f, 0x30, 0x1e, 0x1f, 0x80, 0x3d, 0xa8, 0x3a, 0x7b, 0x81, 0x12, 0x4c, ++ 0x00, 0xfc, 0xb1, 0xea, 0xa9, 0x7c, 0xde, 0x36, 0x3e, 0xb6, 0xb5, 0xe7, ++ 0x46, 0x11, 0x7e, 0xce, 0x36, 0x58, 0xc7, 0x1f, 0x80, 0x76, 0xce, 0xea, ++ 0x4e, 0x0f, 0xbe, 0xaf, 0x3b, 0xb7, 0x88, 0xde, 0xdf, 0xd2, 0x7e, 0x05, ++ 0x3d, 0xcd, 0xbd, 0x57, 0x08, 0xbe, 0x8c, 0xe7, 0xfc, 0x9a, 0xb9, 0x6c, ++ 0x13, 0xf2, 0x59, 0x9d, 0x06, 0x95, 0xe1, 0xbb, 0x3a, 0x47, 0x42, 0x28, ++ 0x08, 0xf3, 0x99, 0xf7, 0x6f, 0xc0, 0x7f, 0x80, 0xf2, 0xf5, 0x07, 0x16, ++ 0xf8, 0x2b, 0x91, 0xef, 0x0a, 0x14, 0xcf, 0x68, 0x78, 0xac, 0xdb, 0x76, ++ 0x85, 0xe0, 0xf3, 0xdd, 0xf7, 0x97, 0x03, 0x5e, 0xe7, 0x7d, 0x92, 0xe2, ++ 0x69, 0x81, 0xf7, 0xbf, 0x6a, 0x4a, 0x07, 0x64, 0x45, 0xf8, 0x7f, 0xd6, ++ 0xb9, 0x05, 0x54, 0x2f, 0xe1, 0xdc, 0xf5, 0xd4, 0x9f, 0xe4, 0x7f, 0xab, ++ 0xe0, 0x77, 0x33, 0xf2, 0x7f, 0x14, 0xdf, 0xc3, 0x77, 0x8c, 0xc1, 0x77, ++ 0x81, 0xa2, 0xc0, 0x9d, 0x88, 0xa7, 0xaa, 0xa7, 0xff, 0xf9, 0xcc, 0x7f, ++ 0xc2, 0xab, 0x2b, 0xb5, 0x70, 0xfe, 0x4f, 0x52, 0xf0, 0xe9, 0x24, 0xfe, ++ 0x89, 0xac, 0x03, 0x9b, 0xfb, 0xf1, 0x5c, 0x5a, 0x07, 0xfa, 0xea, 0x28, ++ 0x3e, 0x52, 0x8f, 0x2e, 0xb1, 0xe8, 0x80, 0x2f, 0xf3, 0x43, 0x6f, 0xd3, ++ 0x3a, 0xb0, 0xc2, 0x73, 0x66, 0x54, 0xf9, 0x7a, 0xe4, 0xeb, 0x42, 0xc4, ++ 0x4c, 0xaf, 0xb6, 0xd0, 0x19, 0x79, 0x1f, 0xfc, 0x9a, 0xfc, 0xbf, 0x5e, ++ 0xd4, 0x9f, 0x63, 0x65, 0xcb, 0xfd, 0xd8, 0x9e, 0xd6, 0x93, 0x13, 0xdd, ++ 0xde, 0xe1, 0xa2, 0xaa, 0x07, 0x3d, 0x50, 0xde, 0xe1, 0x51, 0x78, 0x7b, ++ 0xff, 0x43, 0xe3, 0x06, 0x3c, 0xd9, 0x10, 0xbf, 0x30, 0x7e, 0x1f, 0xd2, ++ 0x6b, 0x7e, 0x99, 0x6e, 0xba, 0x27, 0x17, 0xfb, 0x91, 0xe3, 0xe7, 0x7c, ++ 0xf2, 0x55, 0xe3, 0x6f, 0x13, 0xf5, 0x5f, 0x55, 0xd9, 0x46, 0x6c, 0xf7, ++ 0xd5, 0x19, 0x33, 0x7a, 0x7c, 0xd0, 0xde, 0x91, 0x3b, 0x8b, 0x8b, 0x55, ++ 0x3d, 0xd2, 0xef, 0xd3, 0x1e, 0x0b, 0xb5, 0x37, 0x0f, 0x68, 0x87, 0xeb, ++ 0xa8, 0xef, 0x39, 0x6b, 0x68, 0x77, 0x2e, 0x8a, 0x11, 0xc6, 0x14, 0xa8, ++ 0xff, 0xc9, 0x73, 0x63, 0x43, 0xf7, 0xc0, 0x14, 0xdf, 0x62, 0x7d, 0xe7, ++ 0x71, 0x3c, 0xc1, 0x83, 0xf1, 0x3a, 0xce, 0xaf, 0xfe, 0x50, 0x3c, 0xd5, ++ 0xaf, 0x8f, 0x4b, 0x08, 0x29, 0x50, 0x5e, 0xef, 0xea, 0xcb, 0xf7, 0xc3, ++ 0x78, 0x66, 0x1e, 0xb6, 0x87, 0x91, 0xaf, 0x8e, 0x1c, 0xb6, 0x6b, 0x0c, ++ 0xfa, 0xad, 0x28, 0xb9, 0xf1, 0x69, 0xc4, 0xd3, 0xcc, 0xc3, 0x63, 0xaa, ++ 0x15, 0xe0, 0x43, 0xdf, 0x41, 0xab, 0xc6, 0xa0, 0xde, 0xdf, 0x27, 0xf8, ++ 0xf6, 0x22, 0x1f, 0x0c, 0x35, 0x7e, 0x39, 0xbe, 0xd8, 0xa7, 0x9c, 0xbf, ++ 0xe4, 0x2b, 0xb9, 0x5e, 0xe4, 0xfa, 0x90, 0xeb, 0x21, 0x76, 0xfd, 0xc8, ++ 0xf5, 0x70, 0xd5, 0x56, 0x4f, 0xc2, 0x77, 0x90, 0x4e, 0x80, 0x98, 0xc7, ++ 0x71, 0xfd, 0x68, 0xc1, 0xbd, 0x38, 0x8f, 0x3a, 0x3d, 0xbe, 0x08, 0xd7, ++ 0xa5, 0x5c, 0x47, 0xeb, 0x0f, 0x28, 0xb4, 0xce, 0x40, 0xe8, 0x7a, 0x46, ++ 0xeb, 0x91, 0x75, 0x24, 0xd7, 0x4d, 0x64, 0x9d, 0x98, 0x08, 0x0f, 0xf3, ++ 0x84, 0x9e, 0x18, 0x6a, 0x9d, 0xd4, 0x89, 0x75, 0x71, 0x93, 0x58, 0x17, ++ 0x72, 0x3d, 0x1c, 0x53, 0x3b, 0x1f, 0x2c, 0x87, 0xef, 0x66, 0x16, 0x05, ++ 0xfe, 0x82, 0x78, 0x92, 0xeb, 0x62, 0xdd, 0xfe, 0x58, 0xbd, 0x30, 0x24, ++ 0x5f, 0x31, 0xe4, 0xab, 0x9b, 0x52, 0x1a, 0x18, 0xf2, 0x55, 0x1d, 0x3c, ++ 0xa3, 0xf9, 0xca, 0x3a, 0xc4, 0x7a, 0x78, 0x07, 0xf9, 0x23, 0xf5, 0xd2, ++ 0xd7, 0x43, 0xcf, 0x25, 0xf2, 0xd3, 0xdf, 0x91, 0x9f, 0x26, 0xfd, 0xaf, ++ 0xf2, 0xd3, 0xdf, 0x91, 0x6f, 0x06, 0xe1, 0xa7, 0xcf, 0xff, 0x15, 0x7e, ++ 0x8a, 0xe5, 0x97, 0xb3, 0x0d, 0x7f, 0x2a, 0xd1, 0x61, 0x3c, 0x67, 0x4b, ++ 0x40, 0xce, 0xe6, 0x46, 0xf8, 0xed, 0xaa, 0x97, 0xd8, 0xf8, 0x03, 0xf0, ++ 0x9e, 0x8d, 0x72, 0x7a, 0x90, 0x7f, 0xba, 0xe3, 0xf8, 0x3c, 0xbb, 0x2d, ++ 0xd9, 0xa1, 0x16, 0xac, 0x77, 0x81, 0x35, 0x20, 0x1e, 0xa5, 0xfe, 0xbf, ++ 0x09, 0xe9, 0x9e, 0x1c, 0xe1, 0x53, 0xaf, 0x37, 0x30, 0xbc, 0x68, 0x52, ++ 0x84, 0xfe, 0xdd, 0x71, 0xc1, 0xc2, 0x0d, 0x85, 0x97, 0x4e, 0x67, 0x6b, ++ 0x4a, 0x8f, 0xc5, 0x57, 0x88, 0xf4, 0xee, 0x31, 0xe8, 0xff, 0xba, 0x21, ++ 0xe8, 0x3c, 0xa2, 0xe8, 0xeb, 0xd1, 0xd9, 0x29, 0xea, 0x7f, 0x15, 0x9d, ++ 0x3d, 0x45, 0x5c, 0x6e, 0x30, 0x37, 0xd0, 0xb1, 0x84, 0xe8, 0xa7, 0x23, ++ 0x5d, 0x63, 0xe9, 0x8e, 0x74, 0x45, 0xba, 0xd7, 0x1f, 0xb2, 0xee, 0xbe, ++ 0x18, 0x5d, 0xd7, 0x97, 0x04, 0xa6, 0x16, 0x0d, 0x22, 0x27, 0x98, 0x8f, ++ 0xdb, 0x03, 0x11, 0xba, 0x58, 0x17, 0x21, 0xdf, 0x9c, 0x0d, 0x83, 0x42, ++ 0x53, 0x86, 0xa6, 0xab, 0xb9, 0x83, 0xe3, 0x5d, 0xc2, 0x6d, 0x61, 0x4d, ++ 0xea, 0xdb, 0x64, 0xd4, 0xb7, 0xc0, 0x2f, 0x15, 0xd8, 0xdf, 0x37, 0xe5, ++ 0x97, 0x79, 0x33, 0xe1, 0xd7, 0xe1, 0x08, 0x3e, 0xb5, 0xd8, 0x97, 0x05, ++ 0x74, 0xff, 0xbe, 0x80, 0xd9, 0x2f, 0x16, 0x23, 0x7d, 0xae, 0x2d, 0x93, ++ 0xe5, 0x4f, 0x77, 0xf8, 0xf2, 0x50, 0xee, 0xc0, 0xef, 0xe5, 0xd4, 0x83, ++ 0x8f, 0xd9, 0x08, 0xbf, 0x1c, 0x0e, 0xee, 0x3d, 0x51, 0x0d, 0xf5, 0xaf, ++ 0x7a, 0xb0, 0xbf, 0x3c, 0x88, 0xe5, 0xb3, 0x2a, 0x12, 0x44, 0x7b, 0xcc, ++ 0xa7, 0xb0, 0x48, 0xfd, 0xeb, 0xf7, 0x3d, 0x79, 0xe2, 0x5e, 0x9a, 0xc7, ++ 0x36, 0xae, 0x0f, 0x02, 0xbd, 0x9a, 0x7f, 0x7c, 0x14, 0x5c, 0x02, 0xb0, ++ 0x33, 0x0a, 0x2e, 0x8b, 0x81, 0x77, 0xf0, 0xfa, 0x2e, 0xad, 0x97, 0xb9, ++ 0xa9, 0x9d, 0x10, 0x5f, 0xaf, 0xd0, 0xbe, 0xe2, 0xe5, 0xfc, 0xe3, 0x8f, ++ 0xb2, 0x47, 0x80, 0x92, 0xb3, 0x13, 0xd1, 0x9e, 0x3c, 0xa0, 0xb8, 0xef, ++ 0x01, 0xfa, 0x2f, 0xad, 0xf8, 0xc4, 0x82, 0xf4, 0x8a, 0xcc, 0xff, 0x00, ++ 0xcd, 0x7f, 0xfd, 0x41, 0x45, 0xc0, 0x5d, 0x27, 0x70, 0xbe, 0x4b, 0x0f, ++ 0x70, 0xb8, 0x79, 0xdf, 0xc1, 0x8e, 0xa0, 0x26, 0xda, 0x03, 0x3c, 0xaf, ++ 0x13, 0x68, 0x36, 0x77, 0x2a, 0x3e, 0x15, 0xda, 0x5d, 0x57, 0xa6, 0x84, ++ 0x46, 0xe6, 0x0e, 0xc4, 0x73, 0x73, 0x91, 0x51, 0xdf, 0xe1, 0x8f, 0x66, ++ 0xfc, 0x9e, 0x59, 0x52, 0xbe, 0xde, 0xf7, 0xb8, 0xbe, 0xe9, 0xfb, 0x91, ++ 0xf4, 0x7d, 0xd8, 0xfa, 0x35, 0xfa, 0xbf, 0xae, 0x82, 0xf9, 0x42, 0x8e, ++ 0x81, 0xf5, 0x1e, 0x90, 0xeb, 0xeb, 0x3c, 0xc0, 0xb2, 0x7d, 0xc0, 0xe5, ++ 0x22, 0x98, 0x5f, 0xa8, 0x70, 0x60, 0xfd, 0xed, 0xa2, 0xdd, 0x1e, 0x93, ++ 0x49, 0xe0, 0xeb, 0xb5, 0x0e, 0xc4, 0x5f, 0x8f, 0x45, 0xe2, 0xb3, 0xa7, ++ 0xc3, 0x57, 0x01, 0xf4, 0x67, 0x1c, 0x7e, 0x74, 0x5f, 0xcf, 0xe2, 0x60, ++ 0x21, 0x1f, 0xbe, 0x2f, 0x66, 0xfe, 0x17, 0x1b, 0x7f, 0x5b, 0xff, 0xba, ++ 0x8f, 0xcc, 0x5f, 0x37, 0x7e, 0x1f, 0xbe, 0x18, 0xfe, 0xb6, 0x0e, 0xc0, ++ 0x9f, 0xe0, 0x9f, 0x5a, 0x23, 0x3f, 0x25, 0x68, 0xfe, 0xe3, 0x67, 0xa1, ++ 0x9d, 0x84, 0x14, 0xc5, 0x8d, 0x76, 0xf1, 0x7a, 0xbf, 0xfd, 0x5e, 0xb4, ++ 0xff, 0x23, 0xfc, 0xf1, 0x67, 0xe2, 0x8f, 0x1e, 0x3b, 0xeb, 0xe7, 0x67, ++ 0x23, 0xff, 0xbf, 0xb9, 0x18, 0xf9, 0x7f, 0x3d, 0x93, 0xf5, 0xdf, 0xea, ++ 0xc0, 0xf5, 0xe3, 0x37, 0xf5, 0xd7, 0xe7, 0xeb, 0x41, 0xf2, 0x17, 0x7c, ++ 0x5f, 0x00, 0xfc, 0x84, 0x26, 0x32, 0x7e, 0xff, 0xdc, 0xbe, 0xbf, 0x74, ++ 0x04, 0x1d, 0x44, 0x1f, 0x2a, 0x27, 0x38, 0xef, 0x22, 0xeb, 0xa1, 0x33, ++ 0x06, 0xae, 0x88, 0x59, 0x3f, 0x82, 0xff, 0x69, 0xfd, 0xa2, 0x9c, 0x07, ++ 0xfc, 0x8c, 0x1e, 0x44, 0xce, 0xbc, 0x29, 0xf0, 0xfb, 0xb1, 0xc2, 0x16, ++ 0xa3, 0x9c, 0xec, 0xa9, 0xe2, 0x76, 0x62, 0xcf, 0x48, 0xfe, 0x3c, 0x5f, ++ 0xc4, 0xed, 0xc2, 0xf7, 0x04, 0x1e, 0x4f, 0x8b, 0xfa, 0x3d, 0x71, 0x51, ++ 0x78, 0xc8, 0x8a, 0xd0, 0x19, 0x7e, 0xc2, 0xe8, 0x87, 0x44, 0xcd, 0x9b, ++ 0xf0, 0xb4, 0x24, 0x45, 0xce, 0xfb, 0xcb, 0xc5, 0x73, 0x61, 0xde, 0x3d, ++ 0x49, 0xbc, 0xfc, 0xf3, 0xa2, 0xff, 0xee, 0x08, 0x66, 0x45, 0xe0, 0xd8, ++ 0xf6, 0xce, 0x15, 0x7d, 0x49, 0x7c, 0x13, 0x69, 0xff, 0xfc, 0x09, 0xc4, ++ 0xeb, 0x12, 0x81, 0xb7, 0xf3, 0x45, 0x5f, 0x9c, 0x10, 0x7c, 0xa5, 0xe0, ++ 0xba, 0xac, 0x23, 0x06, 0x01, 0xbe, 0x38, 0xa0, 0x04, 0x55, 0xf4, 0x13, ++ 0x90, 0x2f, 0x06, 0x99, 0xf7, 0xf1, 0x81, 0x7c, 0x15, 0x8c, 0xf9, 0xde, ++ 0x67, 0xbe, 0xc8, 0xf7, 0xbf, 0x1f, 0xb8, 0x2e, 0x7d, 0x31, 0xdf, 0x33, ++ 0x73, 0xc9, 0xd7, 0xf9, 0x5e, 0xd0, 0x6d, 0x6e, 0x0c, 0x5d, 0xe7, 0xc4, ++ 0xd0, 0xb5, 0x3a, 0x06, 0xae, 0x91, 0x70, 0xc8, 0x20, 0xff, 0xa4, 0x5c, ++ 0x5c, 0xd9, 0xf5, 0x40, 0x5b, 0x1a, 0xcc, 0xe3, 0x96, 0x3d, 0x0a, 0xaa, ++ 0x99, 0x28, 0x7e, 0x76, 0x2c, 0xc1, 0xf5, 0x79, 0x8b, 0x5b, 0xf2, 0xaf, ++ 0xf3, 0x0d, 0xb4, 0xbb, 0x22, 0xfc, 0xec, 0x22, 0x78, 0x61, 0xa7, 0x94, ++ 0x87, 0x09, 0xdb, 0x51, 0x1e, 0x2e, 0x40, 0x79, 0x58, 0x1e, 0x81, 0x17, ++ 0xa1, 0xbc, 0x20, 0xd8, 0xbd, 0xc4, 0x37, 0x31, 0x5a, 0x5f, 0x24, 0x52, ++ 0xf9, 0x75, 0xed, 0xb2, 0x7e, 0x12, 0xc1, 0x4b, 0x5b, 0x65, 0x7b, 0xc9, ++ 0xdb, 0x7d, 0x5a, 0x84, 0x8e, 0x2c, 0x98, 0xb2, 0x04, 0xfb, 0x5b, 0x52, ++ 0x22, 0xf4, 0x45, 0x30, 0xf5, 0x0d, 0xac, 0xbf, 0xf6, 0x20, 0xff, 0x7e, ++ 0xe2, 0xfe, 0xb4, 0x37, 0x2e, 0xba, 0x1e, 0xb6, 0xc5, 0xe0, 0x65, 0x47, ++ 0x0c, 0x1c, 0x8c, 0xa9, 0xff, 0xd0, 0x57, 0xe8, 0x97, 0xd6, 0x98, 0xef, ++ 0xef, 0x8a, 0x29, 0xbf, 0x37, 0x06, 0xee, 0x88, 0x81, 0xdb, 0x8d, 0xdf, ++ 0xaf, 0x58, 0xa5, 0xd0, 0x3a, 0x5c, 0x01, 0xfc, 0x80, 0x84, 0xf8, 0xaa, ++ 0x75, 0x39, 0xc3, 0xdb, 0x6f, 0xa7, 0xf6, 0xeb, 0x53, 0xc5, 0x41, 0x76, ++ 0x9b, 0x61, 0x5d, 0x5d, 0xd5, 0xc2, 0xe1, 0x2b, 0xf6, 0x8f, 0x5a, 0xd2, ++ 0xee, 0x88, 0x82, 0xbd, 0xa3, 0x97, 0x04, 0x1d, 0x91, 0x75, 0x61, 0x66, ++ 0xfc, 0xc7, 0x9a, 0xc2, 0x68, 0x5d, 0x98, 0x87, 0x90, 0x97, 0x93, 0xbd, ++ 0xb1, 0xeb, 0x42, 0xcc, 0xa7, 0x20, 0x56, 0xdf, 0xf2, 0xf2, 0xbf, 0xe2, ++ 0xaf, 0x19, 0x68, 0x07, 0x33, 0x83, 0x5d, 0x70, 0x4c, 0x35, 0xc2, 0x47, ++ 0x54, 0x39, 0xee, 0xe2, 0x37, 0x6e, 0x2b, 0xc4, 0x97, 0x12, 0xf6, 0x2e, ++ 0xc1, 0xf8, 0xca, 0x55, 0x3f, 0x36, 0xce, 0x0b, 0xfc, 0x55, 0x01, 0x7b, ++ 0x96, 0x54, 0x57, 0x44, 0xd9, 0x25, 0xc1, 0x89, 0x4b, 0x70, 0xfd, 0xcb, ++ 0x79, 0xca, 0xfa, 0xb3, 0xbf, 0xb8, 0xa0, 0x62, 0x7f, 0xcb, 0xbd, 0x13, ++ 0x97, 0x3c, 0x06, 0xe5, 0x35, 0x55, 0xe1, 0xd1, 0x0d, 0x30, 0xce, 0x9a, ++ 0x24, 0xfe, 0x04, 0xbd, 0xa6, 0xa2, 0xde, 0xac, 0x17, 0xf1, 0x98, 0xd9, ++ 0xcf, 0xa9, 0x7e, 0xd4, 0x6b, 0x35, 0x71, 0xe1, 0xd1, 0x8d, 0x85, 0x51, ++ 0xf3, 0x64, 0x9d, 0xf9, 0x38, 0xcf, 0x23, 0x77, 0xaa, 0x44, 0x9f, 0x60, ++ 0x0b, 0xd0, 0x07, 0xf0, 0xb4, 0x92, 0x81, 0x43, 0x00, 0xae, 0xd9, 0x91, ++ 0x84, 0x84, 0x8d, 0x4f, 0x40, 0xfd, 0x63, 0x77, 0xaa, 0x1b, 0x51, 0x8f, ++ 0xbe, 0xb5, 0x31, 0x39, 0x0d, 0xfd, 0x9b, 0x83, 0x5e, 0xee, 0x2f, 0x1c, ++ 0x4b, 0x18, 0x91, 0x76, 0x13, 0xc0, 0x47, 0xe2, 0x97, 0x5b, 0x74, 0xa8, ++ 0x77, 0x64, 0xcb, 0x2c, 0x7a, 0x1e, 0x55, 0x7d, 0x9b, 0xfb, 0x60, 0xad, ++ 0x7d, 0x6f, 0xff, 0xf4, 0x25, 0x8e, 0xb1, 0x58, 0x9e, 0x40, 0xf8, 0xb9, ++ 0xc3, 0x5b, 0xbe, 0xa4, 0x19, 0xf8, 0xfa, 0x2e, 0xaf, 0x4e, 0xf8, 0x0c, ++ 0x24, 0xb9, 0xd3, 0xba, 0xd0, 0x7e, 0xbe, 0xc7, 0xcc, 0x1e, 0xd7, 0x69, ++ 0xfe, 0x3b, 0x89, 0x6f, 0xee, 0xb3, 0x16, 0xa1, 0xff, 0xbc, 0xa2, 0x79, ++ 0x5c, 0x1a, 0xda, 0x93, 0x2b, 0x7f, 0xb8, 0x60, 0x76, 0x06, 0xd4, 0x5b, ++ 0xd9, 0x66, 0xf6, 0x28, 0x54, 0x8f, 0x4d, 0xc0, 0x71, 0x07, 0xee, 0x99, ++ 0x65, 0xc1, 0xf2, 0x55, 0xad, 0xe2, 0x19, 0xbc, 0x9c, 0x9e, 0x87, 0xbf, ++ 0x7c, 0xb4, 0xc5, 0x05, 0xf5, 0xfb, 0x1e, 0x51, 0x3c, 0xbb, 0xa1, 0xfe, ++ 0xb4, 0xcf, 0x3a, 0x5f, 0x9a, 0x00, 0xf0, 0x9a, 0xf6, 0x51, 0x1e, 0x24, ++ 0xcd, 0xa1, 0x73, 0x26, 0xe6, 0x86, 0x7e, 0xde, 0xe9, 0x18, 0x13, 0x52, ++ 0x81, 0x1f, 0xdf, 0xb5, 0x37, 0xbc, 0x30, 0x9f, 0xd7, 0x67, 0x58, 0x7f, ++ 0xcd, 0x79, 0xfd, 0x95, 0xf9, 0x25, 0x58, 0x5f, 0x75, 0x6f, 0x82, 0xfa, ++ 0x27, 0xe1, 0x3d, 0xda, 0xc3, 0x27, 0xef, 0x56, 0x77, 0x2b, 0x38, 0x2e, ++ 0x97, 0x33, 0x4e, 0x81, 0x29, 0x9d, 0xfc, 0x42, 0x7f, 0x05, 0xed, 0x5a, ++ 0x28, 0x77, 0x6f, 0x82, 0xf7, 0x27, 0xdb, 0x6e, 0x4e, 0x43, 0x3b, 0xeb, ++ 0xa4, 0xa2, 0xbb, 0x14, 0x98, 0xff, 0xf6, 0xfd, 0x73, 0x97, 0xa4, 0x03, ++ 0xbf, 0xac, 0xe9, 0xb0, 0x0a, 0x7a, 0xce, 0xcd, 0x58, 0x01, 0xf3, 0x5f, ++ 0x61, 0xea, 0xe7, 0x17, 0xd2, 0x1f, 0xab, 0x13, 0x39, 0xbc, 0xdd, 0x3b, ++ 0x77, 0xc9, 0xe3, 0x30, 0xfe, 0x93, 0xdb, 0xc7, 0xb8, 0x10, 0xcf, 0x89, ++ 0xc5, 0xbe, 0x87, 0xbd, 0x80, 0xe7, 0xb7, 0x8a, 0x7d, 0x3f, 0xf1, 0xa6, ++ 0xe2, 0x38, 0xb9, 0x9e, 0x3a, 0xfc, 0xa5, 0xba, 0x1c, 0xed, 0xf1, 0xdf, ++ 0x9e, 0x5e, 0x99, 0x86, 0xfc, 0xf4, 0xb8, 0x58, 0x3f, 0x87, 0xce, 0xad, ++ 0x4c, 0x5b, 0x19, 0x65, 0xef, 0xac, 0xfe, 0x58, 0x23, 0xba, 0x1f, 0xb6, ++ 0xe8, 0xb7, 0xe1, 0x38, 0x0f, 0xc7, 0x65, 0x2b, 0xe8, 0x2f, 0x03, 0xdd, ++ 0x93, 0x17, 0xc0, 0xfa, 0x5d, 0x25, 0xfc, 0x0f, 0xe0, 0xdf, 0x8d, 0xcf, ++ 0x0c, 0x62, 0xf7, 0x04, 0xbd, 0x2a, 0xb5, 0x7b, 0x64, 0x6b, 0x6a, 0x85, ++ 0x6e, 0xe0, 0xe3, 0xeb, 0xdf, 0x40, 0xbe, 0x24, 0xbf, 0x01, 0xe0, 0x5f, ++ 0xee, 0xbf, 0x6e, 0x3b, 0xea, 0xb5, 0xf7, 0xac, 0x1b, 0xd9, 0xbb, 0xb8, ++ 0xf8, 0xee, 0x82, 0x82, 0x29, 0xf0, 0x3c, 0x66, 0xa7, 0xf8, 0x95, 0x79, ++ 0xaf, 0x3d, 0x64, 0xcf, 0xc5, 0xf8, 0xa7, 0x6f, 0x36, 0xca, 0x3d, 0x96, ++ 0xde, 0x99, 0xbf, 0xd0, 0x19, 0xb5, 0xee, 0x44, 0xfd, 0xbf, 0x04, 0x9d, ++ 0x54, 0xff, 0x2f, 0x50, 0x1f, 0xfd, 0xb7, 0xbf, 0x04, 0xff, 0xec, 0x64, ++ 0x8e, 0x81, 0x76, 0xfc, 0x1a, 0x97, 0x33, 0x88, 0xc6, 0xc4, 0xfb, 0x4e, ++ 0xa7, 0x86, 0x74, 0x78, 0x4b, 0x6b, 0x3a, 0x79, 0x07, 0x7c, 0xb7, 0xfa, ++ 0x11, 0x33, 0xc9, 0xfd, 0xd5, 0x8f, 0xa4, 0xde, 0xd5, 0x87, 0xf2, 0x06, ++ 0xf8, 0x05, 0xe3, 0x63, 0xb1, 0xf3, 0x52, 0x8b, 0xcd, 0x34, 0xaf, 0x21, ++ 0xd7, 0x61, 0xb0, 0xd6, 0xb8, 0x0e, 0x59, 0x2d, 0xc9, 0xeb, 0xa1, 0xd6, ++ 0x61, 0xcf, 0xfe, 0x35, 0x17, 0x5d, 0x87, 0x6b, 0x84, 0x9f, 0x32, 0xfb, ++ 0x11, 0xb3, 0x1f, 0xd7, 0xd1, 0x9a, 0x49, 0x4e, 0x8d, 0x81, 0xfe, 0xa8, ++ 0x7a, 0xe4, 0xf9, 0xc7, 0x91, 0xdf, 0xd7, 0x6c, 0xb0, 0x7b, 0xad, 0x30, ++ 0xf0, 0x35, 0x8f, 0x58, 0x89, 0x5e, 0xbd, 0x4e, 0x67, 0xd0, 0x0d, 0xe5, ++ 0x01, 0x97, 0x53, 0x4b, 0x84, 0xe7, 0x5b, 0x82, 0xbe, 0xac, 0x98, 0xaf, ++ 0x9b, 0x99, 0x2a, 0xd3, 0x6c, 0x5e, 0x7a, 0xb6, 0x62, 0x9c, 0xf4, 0x0c, ++ 0x8c, 0x27, 0x19, 0xe0, 0x0f, 0x36, 0x3e, 0xf8, 0xa3, 0xc9, 0x50, 0xed, ++ 0x43, 0x16, 0xba, 0x76, 0x32, 0xe0, 0xef, 0x0c, 0x12, 0x0c, 0xf0, 0x72, ++ 0xe6, 0x80, 0x4a, 0xf1, 0x43, 0xa6, 0xf9, 0xb4, 0x79, 0x20, 0x1f, 0x6b, ++ 0x19, 0x97, 0x0b, 0x75, 0x2f, 0x3e, 0x63, 0xa9, 0xc4, 0xd9, 0x35, 0xac, ++ 0x99, 0x8b, 0x7e, 0xdd, 0xcd, 0x21, 0xf3, 0x3b, 0xbd, 0xc2, 0x67, 0xbb, ++ 0x20, 0xa6, 0x89, 0xf2, 0xb4, 0x9e, 0xbf, 0x02, 0xbd, 0x6a, 0x2c, 0xaf, ++ 0x67, 0xf7, 0x7e, 0xaa, 0x4e, 0x20, 0x36, 0xb6, 0xe0, 0x7a, 0xac, 0xeb, ++ 0x8c, 0x29, 0x6f, 0xb8, 0xfc, 0x7d, 0x8c, 0xbf, 0xd4, 0x33, 0xed, 0x9d, ++ 0x5e, 0x19, 0xaf, 0x85, 0x71, 0x7c, 0xee, 0x75, 0xa6, 0x9c, 0x8c, 0x47, ++ 0x71, 0xc8, 0xbc, 0x80, 0x21, 0x76, 0xa6, 0xc1, 0x9c, 0xcf, 0x60, 0x8a, ++ 0x6b, 0x1c, 0xb0, 0xae, 0x60, 0xbe, 0x33, 0x77, 0x28, 0x34, 0xee, 0x35, ++ 0x1b, 0xd5, 0x90, 0x15, 0xea, 0xcf, 0x4c, 0xe6, 0x71, 0xdf, 0xf7, 0x9a, ++ 0x80, 0xfe, 0x63, 0x68, 0xde, 0x41, 0x37, 0xc0, 0x6b, 0x1e, 0xe2, 0x7a, ++ 0x66, 0x0d, 0x53, 0x42, 0x36, 0xf8, 0xf5, 0xf2, 0x1d, 0x1b, 0x34, 0x5c, ++ 0x0f, 0xeb, 0x85, 0x7c, 0x59, 0xa1, 0x30, 0x3f, 0xf2, 0xf7, 0xbb, 0x76, ++ 0x4f, 0x0e, 0xfa, 0xeb, 0xab, 0x1f, 0xb1, 0x13, 0x7e, 0xd7, 0xec, 0xbc, ++ 0xf9, 0x8f, 0xdb, 0xe1, 0xbb, 0xde, 0xe6, 0x79, 0x29, 0xd1, 0xfe, 0xb1, ++ 0x43, 0xf0, 0x05, 0xb4, 0xcf, 0x6c, 0x49, 0x91, 0x76, 0xde, 0x6f, 0xfe, ++ 0x5e, 0x0e, 0xf2, 0xff, 0xcc, 0x9f, 0x82, 0x9f, 0x0b, 0xf3, 0x5d, 0x93, ++ 0xc8, 0x7e, 0xb1, 0x24, 0x17, 0xe9, 0x95, 0x91, 0xa3, 0x3b, 0x22, 0xf5, ++ 0xd6, 0x6c, 0xba, 0x33, 0x9f, 0xd7, 0x03, 0x3f, 0x19, 0xe6, 0xbd, 0xe2, ++ 0x6e, 0x95, 0xe6, 0xc1, 0x9e, 0xb5, 0x92, 0xde, 0x83, 0xb5, 0x9e, 0x4e, ++ 0x72, 0x59, 0xe0, 0x73, 0x55, 0xeb, 0x8b, 0x16, 0x4b, 0x21, 0xca, 0xe9, ++ 0x7b, 0x7b, 0x54, 0xa8, 0xff, 0x0e, 0xc0, 0xaa, 0x83, 0xf0, 0x15, 0x14, ++ 0x78, 0xb4, 0x20, 0xbe, 0x96, 0xe3, 0xb7, 0x19, 0xfc, 0x9b, 0xf4, 0x52, ++ 0x61, 0x77, 0xeb, 0x24, 0x47, 0x02, 0x38, 0xbf, 0x1a, 0x93, 0xb2, 0x7c, ++ 0x21, 0xc9, 0xf5, 0x3e, 0x0b, 0xae, 0xeb, 0xf2, 0x62, 0x85, 0xc6, 0x33, ++ 0xb1, 0x98, 0xdb, 0xb3, 0x2b, 0x72, 0x3c, 0x37, 0x50, 0x1c, 0xf9, 0x7e, ++ 0xab, 0x07, 0xe5, 0x14, 0xfe, 0xa8, 0x72, 0x1c, 0xe0, 0x57, 0xd5, 0x99, ++ 0x7a, 0x56, 0x63, 0x3c, 0x97, 0xfd, 0xd2, 0x4a, 0xf1, 0x91, 0xfa, 0x56, ++ 0xbb, 0xcf, 0xee, 0x22, 0xbf, 0xc3, 0xb7, 0x1f, 0xc7, 0xa7, 0x31, 0xcd, ++ 0x02, 0xf8, 0x58, 0xa7, 0x73, 0x79, 0x51, 0x2e, 0xf8, 0xb0, 0x5e, 0x5f, ++ 0x70, 0x39, 0xf2, 0x0d, 0x94, 0x9f, 0xd0, 0x70, 0x7f, 0xc5, 0xc9, 0xe5, ++ 0x62, 0x5d, 0x22, 0xe0, 0x9d, 0xeb, 0x63, 0x9f, 0x09, 0xfa, 0xf9, 0x04, ++ 0x7f, 0x1b, 0xc5, 0xdb, 0xcd, 0x98, 0x10, 0xd5, 0xbf, 0x22, 0xde, 0x43, ++ 0x3b, 0xba, 0x2b, 0xd2, 0x6e, 0xb7, 0x89, 0xb5, 0x63, 0x9c, 0x05, 0xeb, ++ 0x8f, 0x9d, 0x80, 0x78, 0x4c, 0xbe, 0x76, 0x31, 0x8e, 0xef, 0xe7, 0x2a, ++ 0xad, 0x67, 0x98, 0xfc, 0xfd, 0x65, 0x68, 0xe7, 0xfd, 0x5c, 0x2d, 0x46, ++ 0xff, 0x76, 0xc5, 0xdd, 0xc7, 0x66, 0x77, 0x20, 0xbc, 0xaf, 0xc8, 0x8d, ++ 0x4d, 0xae, 0xf8, 0xc5, 0x1f, 0x48, 0x6f, 0xdc, 0x22, 0xe8, 0xdf, 0x8b, ++ 0xf6, 0x3e, 0xea, 0x11, 0x80, 0xf7, 0xc1, 0x73, 0x51, 0x31, 0xd7, 0xfb, ++ 0x01, 0x95, 0xc7, 0x7d, 0x16, 0x09, 0x7c, 0x49, 0x3e, 0x90, 0xe5, 0x75, ++ 0x77, 0x9b, 0x79, 0xfc, 0xbd, 0xcd, 0x4a, 0x76, 0x4c, 0x5d, 0xf3, 0x9f, ++ 0xa8, 0xdd, 0x3a, 0x67, 0x4f, 0x1a, 0xca, 0xdf, 0xba, 0x67, 0xcd, 0xa5, ++ 0x28, 0xa7, 0xaf, 0x15, 0xe3, 0x5e, 0xd9, 0x9c, 0x5d, 0x71, 0x02, 0xf8, ++ 0x6a, 0xa5, 0x39, 0xc1, 0xad, 0xc0, 0xab, 0x75, 0xc1, 0x79, 0x16, 0x84, ++ 0xd7, 0x6d, 0x53, 0x08, 0x8e, 0x7c, 0x97, 0x9a, 0x83, 0x7c, 0xfa, 0x51, ++ 0xeb, 0xaf, 0x5c, 0xc8, 0x3f, 0xef, 0xda, 0xc3, 0xa3, 0x51, 0x1f, 0xf5, ++ 0x6d, 0xb0, 0x7b, 0x76, 0xe3, 0x04, 0x44, 0xdc, 0xed, 0xa3, 0xd6, 0xd1, ++ 0xbb, 0x31, 0x3e, 0xb3, 0xca, 0xdd, 0xe3, 0x54, 0xa0, 0x7c, 0xd5, 0x6d, ++ 0xa3, 0x92, 0x50, 0x7e, 0xbf, 0xe5, 0x0e, 0x5b, 0xb0, 0xfc, 0xad, 0xce, ++ 0x5c, 0x13, 0xc2, 0x3e, 0xb7, 0xbb, 0x02, 0x61, 0x9f, 0x36, 0x91, 0xe0, ++ 0x8f, 0x40, 0x94, 0x75, 0x0a, 0xff, 0x13, 0xf9, 0x6d, 0xbd, 0xc2, 0xe9, ++ 0xbc, 0x6e, 0xef, 0x31, 0xcb, 0x48, 0xe8, 0xef, 0x4e, 0x31, 0xdf, 0x8f, ++ 0x7f, 0xfe, 0x87, 0x7c, 0xd4, 0x57, 0x75, 0x39, 0x3d, 0xf9, 0xa8, 0x57, ++ 0x80, 0x0f, 0xf2, 0x33, 0x11, 0xcf, 0x4f, 0x29, 0xa4, 0x8f, 0xd7, 0xef, ++ 0x55, 0x7d, 0xf6, 0x09, 0x11, 0x3e, 0x58, 0x8f, 0x7c, 0x00, 0xeb, 0x6e, ++ 0xad, 0xe0, 0x83, 0xf5, 0x07, 0x7e, 0xf5, 0x1d, 0x5c, 0x0f, 0xeb, 0x91, ++ 0xfe, 0xde, 0x81, 0x7c, 0x04, 0x7c, 0x7a, 0x9c, 0xde, 0xef, 0xdf, 0x35, ++ 0x9b, 0xf1, 0xef, 0x8f, 0x23, 0x9f, 0x48, 0x3d, 0x06, 0x70, 0xab, 0x19, ++ 0xe3, 0x69, 0x16, 0x01, 0x43, 0x3f, 0x08, 0xdf, 0x85, 0xf8, 0x9c, 0x44, ++ 0xe5, 0xd5, 0xbc, 0x3c, 0x58, 0x48, 0xf2, 0x94, 0xf5, 0x5a, 0xd0, 0xee, ++ 0xac, 0xef, 0x32, 0x07, 0x7b, 0xa3, 0xf6, 0x7f, 0x86, 0xa2, 0xf3, 0x76, ++ 0x41, 0xc7, 0x95, 0xcd, 0x56, 0x92, 0xbb, 0xdb, 0xc5, 0xbc, 0x7b, 0xef, ++ 0x7e, 0xd6, 0x85, 0x74, 0xfc, 0xf8, 0xe7, 0xc7, 0x5e, 0xc0, 0xfd, 0x92, ++ 0xba, 0xfd, 0xa0, 0xad, 0xf5, 0x41, 0xd6, 0x85, 0xc0, 0x4b, 0x3d, 0xe2, ++ 0xc1, 0x45, 0xf3, 0x20, 0xfb, 0xa2, 0x1e, 0xe7, 0xed, 0x8a, 0xe0, 0xa1, ++ 0x9f, 0xff, 0xc5, 0x7a, 0xac, 0x67, 0x7c, 0x9e, 0x72, 0xde, 0xf5, 0x9a, ++ 0xc0, 0x83, 0x2c, 0x17, 0xdf, 0x3f, 0x2c, 0xf8, 0x66, 0x1d, 0x13, 0x78, ++ 0x3b, 0x30, 0x86, 0xaf, 0x3f, 0xb1, 0xde, 0x70, 0x3d, 0xa3, 0x5c, 0x95, ++ 0xf3, 0x0b, 0x24, 0xf1, 0xef, 0x25, 0x9f, 0x1e, 0x2e, 0xe6, 0x7a, 0x61, ++ 0x8f, 0x78, 0xae, 0x03, 0xbe, 0xf0, 0x14, 0x12, 0xff, 0xf8, 0x2c, 0x52, ++ 0x4e, 0x40, 0xd1, 0xc7, 0xfb, 0x76, 0x51, 0xfc, 0x47, 0xd2, 0x4b, 0x8e, ++ 0xfb, 0xb5, 0x88, 0x3e, 0xf1, 0x25, 0x26, 0x45, 0xe8, 0xd8, 0x6b, 0x62, ++ 0xb5, 0x9d, 0x83, 0xc4, 0x4d, 0xba, 0x04, 0xfe, 0xde, 0x6e, 0x1b, 0x96, ++ 0xd3, 0x05, 0x78, 0xfb, 0x08, 0xfc, 0x2c, 0xb4, 0xa7, 0x90, 0x5f, 0xb5, ++ 0xa8, 0xfe, 0x24, 0xdf, 0xc8, 0xfe, 0x66, 0x3e, 0xbd, 0xe0, 0x4a, 0x9c, ++ 0x2f, 0xb4, 0x1f, 0xc6, 0xf6, 0x65, 0xbf, 0x6f, 0x05, 0xe3, 0x35, 0x6c, ++ 0xe7, 0x2d, 0xc6, 0xd7, 0x07, 0xf2, 0x27, 0xca, 0x4f, 0xb9, 0x2e, 0x67, ++ 0xb6, 0x2c, 0xbb, 0xb2, 0xc8, 0x85, 0xf5, 0x3e, 0x76, 0x8e, 0x42, 0x3b, ++ 0x46, 0xc8, 0xb3, 0xd7, 0x8a, 0xdd, 0xf4, 0xbd, 0x0f, 0xed, 0x05, 0xf8, ++ 0xde, 0xd7, 0xa5, 0x50, 0xfc, 0xf9, 0x6d, 0xe1, 0xd7, 0xbf, 0xdd, 0xf6, ++ 0x2b, 0xd7, 0xca, 0x28, 0x3c, 0xbd, 0x2a, 0xc6, 0x2d, 0xf9, 0x0c, 0x7f, ++ 0x30, 0x2e, 0x25, 0xc7, 0xdb, 0x9d, 0xc4, 0xe3, 0xb9, 0xb1, 0xe3, 0x96, ++ 0x72, 0x48, 0x8e, 0x7b, 0xe6, 0x96, 0xeb, 0xae, 0xc4, 0xf7, 0x72, 0xfc, ++ 0x92, 0x5f, 0x25, 0x7f, 0x4a, 0x3c, 0x4a, 0x3e, 0x65, 0x77, 0xa5, 0x92, ++ 0x5d, 0x13, 0xcb, 0xaf, 0xc4, 0x6b, 0x52, 0xaf, 0xaa, 0x06, 0x79, 0x4f, ++ 0xfa, 0xf1, 0xf2, 0xac, 0x4f, 0x2d, 0x01, 0xc7, 0xc0, 0xf7, 0xb1, 0xb0, ++ 0xb4, 0x87, 0xde, 0xc5, 0x38, 0x0d, 0xca, 0x8f, 0x27, 0xd5, 0x10, 0xc9, ++ 0x8f, 0xd6, 0xf4, 0xe3, 0x79, 0x51, 0x7a, 0x1e, 0x7e, 0x1c, 0xd1, 0x7a, ++ 0xa7, 0x79, 0xc3, 0xe5, 0xee, 0x4a, 0xdc, 0x7f, 0xdd, 0xab, 0x78, 0xd0, ++ 0xe4, 0x89, 0xd2, 0x2f, 0xf7, 0x6a, 0x51, 0xfa, 0x45, 0xda, 0x05, 0x25, ++ 0x25, 0x23, 0x09, 0xef, 0xf5, 0x29, 0xbe, 0x0f, 0x90, 0x8e, 0xeb, 0x4e, ++ 0xf5, 0xcc, 0x76, 0xe9, 0x11, 0x3b, 0x74, 0xda, 0x67, 0x61, 0x35, 0x01, ++ 0xe3, 0x52, 0x07, 0x72, 0xbd, 0xd1, 0xfa, 0x74, 0xdd, 0xe9, 0xe3, 0xc4, ++ 0xff, 0x75, 0xac, 0x67, 0x33, 0xfa, 0x51, 0x2b, 0xee, 0xfe, 0xc3, 0xbc, ++ 0xc9, 0xc8, 0xe7, 0x4f, 0x9a, 0x69, 0x7f, 0x66, 0x45, 0xdb, 0x2c, 0x0b, ++ 0xda, 0xf5, 0x37, 0x3f, 0x7e, 0x63, 0x29, 0xf2, 0xd1, 0x3b, 0xed, 0xa3, ++ 0x48, 0xae, 0x7f, 0xf0, 0xd8, 0xa4, 0x62, 0xe2, 0x2b, 0xe6, 0x4e, 0xbb, ++ 0x16, 0xf8, 0x7f, 0xd5, 0x63, 0x0f, 0x5e, 0xbb, 0x14, 0xde, 0xaf, 0xea, ++ 0x52, 0x3d, 0x24, 0xdf, 0xa1, 0x1d, 0x5c, 0xb7, 0x2b, 0x6e, 0x2f, 0x66, ++ 0xc8, 0x37, 0xef, 0xda, 0x7b, 0xe7, 0x95, 0xa3, 0xfd, 0x7e, 0x87, 0xea, ++ 0x46, 0xfb, 0x7d, 0xea, 0xe3, 0x93, 0xee, 0xc2, 0xfa, 0x53, 0x9d, 0x23, ++ 0x12, 0x71, 0x1e, 0xbe, 0xc7, 0x92, 0x09, 0xf6, 0x69, 0x09, 0xa4, 0x1f, ++ 0xa4, 0xdd, 0xfb, 0x96, 0x90, 0x93, 0x2d, 0x66, 0xce, 0x17, 0x39, 0x25, ++ 0x7c, 0x1d, 0xa5, 0x96, 0x70, 0xb9, 0x91, 0x5a, 0xc2, 0xf9, 0x66, 0x66, ++ 0x4b, 0x4b, 0x3e, 0xee, 0xa7, 0xf7, 0xed, 0x02, 0xf9, 0x8c, 0xfb, 0xca, ++ 0x16, 0xbd, 0x33, 0x8c, 0xfd, 0x3d, 0x37, 0x8c, 0xfc, 0x8b, 0x7a, 0x70, ++ 0x87, 0xd2, 0x81, 0xee, 0xa7, 0x14, 0x6e, 0x97, 0xd5, 0x5a, 0x98, 0x2d, ++ 0xc3, 0x4b, 0xef, 0x6d, 0x19, 0xf0, 0xfe, 0x45, 0x73, 0xcf, 0xed, 0xa8, ++ 0x47, 0x5e, 0xbc, 0xdd, 0x59, 0xd4, 0x8c, 0x03, 0x50, 0xcf, 0x97, 0xae, ++ 0xe4, 0xf6, 0x34, 0xdf, 0x3f, 0x4c, 0xe6, 0xfd, 0x4b, 0xbc, 0xc9, 0x71, ++ 0x64, 0x97, 0x70, 0x7e, 0x8f, 0x6d, 0x4f, 0x7e, 0xdf, 0x8d, 0x7e, 0x04, ++ 0xca, 0x53, 0x31, 0xfe, 0x0f, 0x5a, 0x9f, 0xbc, 0x16, 0xf5, 0xe0, 0x07, ++ 0x7b, 0x46, 0x27, 0xe1, 0xbc, 0xdf, 0x7f, 0xce, 0xde, 0x8e, 0xf6, 0xd4, ++ 0xfb, 0x66, 0x2e, 0x17, 0x65, 0xfb, 0x60, 0xe7, 0xbd, 0x17, 0x6d, 0xa7, ++ 0x81, 0x5d, 0x67, 0x80, 0xc1, 0x8e, 0x33, 0xc0, 0xc0, 0xbf, 0xef, 0x19, ++ 0xed, 0xc2, 0x4d, 0x34, 0xae, 0x89, 0x25, 0x60, 0xc7, 0x8d, 0x63, 0xfd, ++ 0x76, 0x9c, 0xe4, 0xf7, 0x9a, 0x0d, 0xa3, 0x13, 0xa2, 0xf3, 0x08, 0x62, ++ 0xed, 0x77, 0x96, 0x17, 0xbb, 0x6f, 0x33, 0x39, 0x81, 0x0d, 0x22, 0x6f, ++ 0xe4, 0xf3, 0x74, 0x13, 0x20, 0x0a, 0x18, 0xf5, 0x2c, 0xee, 0x11, 0x42, ++ 0xbf, 0xd5, 0xf1, 0x5f, 0x3c, 0xd3, 0x83, 0xf6, 0xfe, 0x36, 0xab, 0xdb, ++ 0x0a, 0xf3, 0x7c, 0x0f, 0xf9, 0x1f, 0xf7, 0xa5, 0x9e, 0x55, 0x43, 0xb8, ++ 0x0f, 0x83, 0xb6, 0x39, 0xae, 0x87, 0xf7, 0xf6, 0x15, 0x85, 0xd0, 0x8f, ++ 0x5c, 0xfd, 0x66, 0x60, 0x36, 0xb6, 0x7f, 0xfc, 0x81, 0x2d, 0x94, 0x67, ++ 0x70, 0x13, 0xd8, 0x97, 0xc3, 0x94, 0x28, 0xbb, 0xf9, 0xa1, 0x07, 0xae, ++ 0x45, 0xf6, 0x3f, 0xe3, 0x09, 0x6c, 0xce, 0x80, 0xef, 0xce, 0xec, 0xe1, ++ 0x79, 0x11, 0x50, 0xec, 0x88, 0xb1, 0x97, 0x5f, 0xc8, 0xd0, 0xff, 0x75, ++ 0x7b, 0xf9, 0x52, 0xed, 0x64, 0x19, 0x6f, 0xa8, 0x29, 0x11, 0xf6, 0xb2, ++ 0x87, 0x79, 0x10, 0xcf, 0x12, 0xbf, 0xd2, 0x6f, 0x3a, 0x0c, 0x7c, 0x50, ++ 0xe6, 0x8d, 0xe0, 0xeb, 0x6f, 0x4d, 0xb5, 0x64, 0x27, 0x9f, 0x6e, 0x0a, ++ 0xd0, 0xf3, 0x13, 0xe5, 0xed, 0xfb, 0xa7, 0x22, 0xff, 0x3a, 0x13, 0x3c, ++ 0xbb, 0xe1, 0xb3, 0xdf, 0x76, 0x3d, 0xa8, 0x66, 0x22, 0x9d, 0x0f, 0x14, ++ 0x9d, 0x47, 0xbf, 0xb7, 0xdc, 0x91, 0xe0, 0xc6, 0x75, 0xfb, 0xb7, 0xa6, ++ 0x8d, 0xb4, 0xf9, 0x78, 0xba, 0xa9, 0x81, 0x9e, 0x92, 0xce, 0x32, 0xde, ++ 0x36, 0xed, 0xc0, 0x11, 0xfa, 0xee, 0x6f, 0x5d, 0xc5, 0x07, 0xa7, 0xc2, ++ 0x77, 0x87, 0x1c, 0x09, 0x5c, 0xfe, 0x0f, 0xd8, 0xef, 0xe1, 0xf4, 0x8c, ++ 0xcd, 0x03, 0xb9, 0x75, 0xc3, 0xe4, 0x61, 0xf8, 0x5e, 0xce, 0xeb, 0xc3, ++ 0x3b, 0x38, 0x5d, 0xe5, 0xb8, 0x3f, 0xdc, 0x73, 0xa3, 0x0b, 0xe7, 0x75, ++ 0xe4, 0x27, 0xc9, 0x07, 0xa7, 0x20, 0x3d, 0xe3, 0x13, 0xdc, 0x68, 0xef, ++ 0xad, 0x11, 0xf9, 0x1f, 0x27, 0x3b, 0xb8, 0x3d, 0x7d, 0xca, 0x96, 0xf0, ++ 0xc4, 0x5c, 0xcc, 0x1b, 0xd9, 0xb1, 0x28, 0x8d, 0x81, 0x9c, 0xbd, 0xe9, ++ 0xc8, 0xb7, 0xae, 0xc5, 0xf7, 0xab, 0x9f, 0x53, 0xdc, 0xe8, 0x07, 0x78, ++ 0x9e, 0x5b, 0xe0, 0x42, 0xff, 0xf4, 0xbf, 0xb4, 0x5e, 0x97, 0x1b, 0x9f, ++ 0xf0, 0x5d, 0x18, 0xc7, 0xa3, 0x85, 0x54, 0x94, 0x47, 0xe5, 0x73, 0x18, ++ 0xed, 0x47, 0x95, 0x87, 0x35, 0xa6, 0xe7, 0xd2, 0x56, 0x2f, 0xf1, 0xcb, ++ 0x94, 0xd3, 0x5a, 0x08, 0xf3, 0x46, 0x3e, 0xc2, 0x7d, 0x2a, 0x8c, 0x87, ++ 0x9c, 0x8f, 0xa3, 0x78, 0x08, 0x13, 0xfb, 0x4f, 0x37, 0xfd, 0x9a, 0xc7, ++ 0x51, 0xfa, 0xfd, 0x5b, 0xe1, 0xdf, 0x4d, 0x15, 0xf3, 0xee, 0x2a, 0x49, ++ 0x92, 0xfb, 0x0a, 0xf4, 0x7e, 0x66, 0x19, 0x7f, 0xff, 0xfe, 0x8e, 0x67, ++ 0xe6, 0x63, 0x7b, 0x1f, 0x3c, 0x66, 0x76, 0xe3, 0xb8, 0xff, 0xf6, 0x98, ++ 0x99, 0xda, 0x5f, 0x0b, 0x7e, 0x99, 0x09, 0xc6, 0x7b, 0x6a, 0x0f, 0xf7, ++ 0x77, 0xd6, 0x76, 0x2a, 0xe4, 0x27, 0x7f, 0xb0, 0x07, 0xf4, 0x35, 0xcc, ++ 0xab, 0x6e, 0x83, 0xd9, 0x67, 0x49, 0x18, 0xc8, 0x87, 0x33, 0xa1, 0xbc, ++ 0xd7, 0x11, 0xe1, 0xc3, 0xb5, 0xbe, 0x10, 0xf1, 0x37, 0x13, 0xfc, 0x68, ++ 0x83, 0xff, 0x2e, 0x8c, 0x1c, 0xc8, 0x8f, 0x89, 0xac, 0x73, 0x33, 0xe2, ++ 0xe3, 0x5f, 0xe5, 0xcb, 0x5f, 0xc4, 0xac, 0xfb, 0x7e, 0x7e, 0x1c, 0x8a, ++ 0x0f, 0x04, 0xbe, 0x70, 0x1d, 0x23, 0x3f, 0x4a, 0x7a, 0xaf, 0xed, 0xe0, ++ 0xfb, 0xea, 0x49, 0x9d, 0x45, 0x95, 0xc8, 0x57, 0x92, 0xfe, 0x52, 0x4e, ++ 0x04, 0xab, 0x58, 0x01, 0xea, 0xd5, 0x16, 0x0b, 0x2b, 0xc0, 0x3c, 0x9c, ++ 0xa0, 0x29, 0xce, 0x83, 0xeb, 0x7b, 0x81, 0x43, 0x37, 0x2b, 0x80, 0x87, ++ 0x45, 0x29, 0xbd, 0xd5, 0x28, 0x4e, 0x33, 0x27, 0x71, 0x39, 0xad, 0xce, ++ 0x34, 0xf9, 0x4c, 0xa8, 0x5f, 0x5a, 0xac, 0x24, 0x07, 0x62, 0xe5, 0xc8, ++ 0xef, 0x84, 0x5c, 0x9f, 0x8f, 0x3c, 0x0d, 0xff, 0xde, 0x2d, 0xe1, 0x76, ++ 0x84, 0x99, 0x35, 0x90, 0x1f, 0x22, 0x9f, 0xa0, 0x77, 0xb2, 0x51, 0x7f, ++ 0x2f, 0x88, 0x4f, 0xfa, 0xbb, 0x0e, 0x55, 0xfe, 0xfd, 0x40, 0xed, 0x52, ++ 0x0d, 0xc6, 0xbf, 0x60, 0x6a, 0xd2, 0xed, 0xa3, 0x3c, 0x8c, 0xbd, 0x79, ++ 0x60, 0xfd, 0x52, 0x0d, 0xf8, 0x77, 0x41, 0x71, 0xd2, 0xb3, 0x23, 0x01, ++ 0x7e, 0xab, 0xa4, 0x8e, 0xc3, 0x13, 0x93, 0x26, 0x99, 0x01, 0x6e, 0x6e, ++ 0xae, 0x5f, 0x5a, 0x0d, 0xf5, 0xff, 0x59, 0xe2, 0x7b, 0xbd, 0x24, 0xaa, ++ 0x1f, 0xd9, 0x2e, 0xbc, 0xff, 0x8f, 0x12, 0x80, 0x37, 0x8d, 0x0b, 0x9c, ++ 0xc0, 0x67, 0xbd, 0xc5, 0x41, 0x72, 0xfa, 0x13, 0xa5, 0x6f, 0xc2, 0xc6, ++ 0xdc, 0x48, 0xfd, 0xd7, 0x14, 0xf6, 0xd6, 0x6f, 0x95, 0x08, 0xdc, 0x6b, ++ 0x66, 0x39, 0x68, 0xdf, 0xbd, 0x5b, 0x22, 0xc7, 0x3f, 0xf8, 0x33, 0x6f, ++ 0x92, 0xef, 0xed, 0x92, 0x41, 0xde, 0xaf, 0x64, 0xac, 0x0d, 0xe3, 0x2a, ++ 0x2b, 0x83, 0xbf, 0x3b, 0xa1, 0x70, 0x3f, 0xcc, 0x6f, 0x03, 0x7a, 0x5d, ++ 0x2d, 0xf8, 0x6a, 0xa5, 0xcd, 0x11, 0x26, 0x7f, 0xbe, 0xdd, 0x7c, 0xba, ++ 0x9f, 0xde, 0xc8, 0x47, 0x9e, 0x04, 0x0d, 0xe9, 0x3a, 0x5f, 0xf0, 0xd1, ++ 0xd5, 0x5a, 0xf8, 0x08, 0x7e, 0x3f, 0x96, 0xb5, 0xba, 0x4f, 0xda, 0xc8, ++ 0x84, 0xda, 0x71, 0x21, 0x79, 0x68, 0xf9, 0x0d, 0x0b, 0x8f, 0x9d, 0x94, ++ 0xed, 0x01, 0xbf, 0x7c, 0x62, 0x86, 0xf9, 0x02, 0x5f, 0x2b, 0xc0, 0x9e, ++ 0x1b, 0x61, 0xc9, 0x28, 0x80, 0xe4, 0x1a, 0x90, 0x5f, 0xca, 0xc1, 0xdf, ++ 0xfd, 0x03, 0xdb, 0x6d, 0x09, 0xb2, 0x5e, 0x3b, 0xd1, 0xa1, 0xc6, 0x8d, ++ 0x7c, 0xa6, 0xb0, 0x80, 0xe9, 0x02, 0x3c, 0xeb, 0xe2, 0x5d, 0x13, 0x30, ++ 0x6e, 0x52, 0x17, 0x9f, 0x13, 0x42, 0xbe, 0x6f, 0x7c, 0xf6, 0xe3, 0xe3, ++ 0xc8, 0x5e, 0x37, 0x4b, 0xfb, 0x25, 0x50, 0x46, 0xfc, 0x7e, 0x9b, 0x9b, ++ 0xcf, 0x87, 0x05, 0xca, 0x89, 0x1f, 0x6f, 0x17, 0xfc, 0xf8, 0x7e, 0x13, ++ 0x6b, 0xc8, 0x83, 0xa5, 0x77, 0x75, 0x4f, 0x8f, 0x4b, 0x87, 0x41, 0x9f, ++ 0x9e, 0x1f, 0xce, 0xc7, 0xf5, 0xfe, 0x69, 0x4e, 0x20, 0x6e, 0x12, 0xfa, ++ 0xf9, 0x3b, 0x5a, 0xb2, 0x1a, 0x81, 0x7f, 0x3e, 0xde, 0x6f, 0xf5, 0xcc, ++ 0x85, 0xfa, 0xa7, 0x42, 0xcf, 0x50, 0x1c, 0x6e, 0x9d, 0xb0, 0x47, 0xd9, ++ 0x63, 0xa9, 0x62, 0xdd, 0xab, 0xe1, 0x19, 0x50, 0xaf, 0x3b, 0x77, 0xec, ++ 0x6e, 0xd4, 0x2f, 0x29, 0x93, 0x38, 0x5f, 0x9d, 0xce, 0x0d, 0xe7, 0xdc, ++ 0x89, 0x72, 0x23, 0x97, 0xfb, 0x3f, 0x50, 0x8f, 0xf2, 0xdc, 0xe6, 0x6c, ++ 0xba, 0x3c, 0x15, 0xeb, 0x9d, 0xde, 0xb7, 0x25, 0xef, 0x26, 0xa0, 0x9f, ++ 0x55, 0x63, 0x41, 0x67, 0x12, 0x3d, 0x99, 0x0b, 0xe6, 0x7d, 0x05, 0xb4, ++ 0x5d, 0x06, 0xb0, 0x19, 0x60, 0x95, 0xf6, 0x73, 0x43, 0x44, 0x2f, 0xac, ++ 0xe7, 0x42, 0x7d, 0xaf, 0xdf, 0x98, 0xce, 0xe3, 0xed, 0xcc, 0x8f, 0x72, ++ 0x45, 0xd2, 0x4b, 0xd2, 0x61, 0x00, 0x7d, 0x60, 0x08, 0x68, 0xaf, 0x9a, ++ 0x6c, 0xcc, 0x8c, 0xe3, 0x1f, 0xcb, 0x76, 0xb8, 0x51, 0x7f, 0x48, 0x3a, ++ 0xbd, 0x6f, 0x03, 0x3c, 0x62, 0xfc, 0xcc, 0x06, 0x78, 0x84, 0xf5, 0x3d, ++ 0x0b, 0x83, 0x0e, 0x25, 0x88, 0x4f, 0x1e, 0x6f, 0x69, 0x54, 0x7a, 0x5b, ++ 0x93, 0x11, 0xfe, 0xb9, 0x42, 0x79, 0x73, 0x03, 0xf5, 0xe0, 0xe3, 0x16, ++ 0x44, 0x79, 0xed, 0x8e, 0x1b, 0x49, 0xfe, 0x48, 0xb9, 0xa3, 0xc3, 0x7f, ++ 0x83, 0xc9, 0x9d, 0xaf, 0x1d, 0x37, 0xda, 0x31, 0x73, 0x50, 0xb9, 0x33, ++ 0x6d, 0x92, 0xd0, 0x83, 0x45, 0xac, 0xe8, 0x02, 0x37, 0x10, 0x89, 0xbe, ++ 0x6b, 0xc4, 0xb7, 0xb3, 0xd4, 0x1a, 0x5d, 0xc3, 0x71, 0xa7, 0xda, 0x3c, ++ 0x18, 0x4f, 0x6b, 0x7c, 0x64, 0x14, 0xe9, 0x1b, 0xd6, 0xfa, 0x07, 0x16, ++ 0x5d, 0x8f, 0xed, 0x48, 0x26, 0x7e, 0xd9, 0x9c, 0xab, 0x12, 0xde, 0x6f, ++ 0xee, 0x52, 0x28, 0xbf, 0x71, 0x5e, 0x57, 0x26, 0xd3, 0xa1, 0x68, 0x6e, ++ 0x57, 0x32, 0x3d, 0x5d, 0xe7, 0x32, 0xe8, 0xfd, 0x07, 0x4f, 0xbc, 0x54, ++ 0xc2, 0xe5, 0x12, 0xa7, 0xcb, 0xbc, 0x9f, 0x0d, 0xab, 0xa2, 0xbc, 0xa2, ++ 0x9f, 0x8d, 0xa1, 0xa7, 0x1c, 0x47, 0xa3, 0xe0, 0xbb, 0x59, 0x6a, 0x61, ++ 0x67, 0x18, 0xed, 0x08, 0x07, 0x8c, 0x03, 0xe0, 0xc6, 0x17, 0xb9, 0xde, ++ 0x6a, 0xbc, 0x46, 0xa5, 0xb8, 0x26, 0x43, 0x11, 0x9d, 0x86, 0xc4, 0xe4, ++ 0x3f, 0x7e, 0x47, 0x3b, 0xc5, 0x7f, 0xfc, 0xac, 0xdf, 0xbe, 0x57, 0x2e, ++ 0x50, 0x9c, 0x56, 0x4f, 0x40, 0xba, 0xf8, 0xbb, 0x55, 0x86, 0xfc, 0x03, ++ 0xde, 0x46, 0x90, 0xe3, 0xd9, 0xd6, 0x8c, 0x78, 0xb6, 0xa6, 0x9b, 0x98, ++ 0x3e, 0x88, 0xfd, 0x61, 0x15, 0x74, 0xb2, 0xeb, 0x71, 0x4c, 0x8f, 0xf2, ++ 0x3b, 0xb4, 0xe0, 0xd8, 0xef, 0x57, 0x60, 0x3c, 0xf6, 0x5b, 0x66, 0x4f, ++ 0x08, 0xca, 0x5b, 0xec, 0xae, 0xdd, 0xb8, 0x9e, 0x58, 0xd0, 0xd7, 0x83, ++ 0xfe, 0xc2, 0x62, 0xf1, 0x5d, 0x8f, 0x9d, 0xf3, 0x47, 0x7c, 0x41, 0x92, ++ 0xe1, 0xfb, 0x2d, 0xae, 0xd9, 0xdd, 0xc8, 0x6f, 0x8b, 0x7d, 0x5c, 0xef, ++ 0x38, 0x3d, 0xc3, 0x0d, 0xfd, 0x5b, 0xd5, 0x75, 0x66, 0x64, 0x32, 0x16, ++ 0xe0, 0xf6, 0xa2, 0xe4, 0x07, 0xe2, 0x4b, 0xe8, 0xf7, 0x6a, 0xbf, 0x42, ++ 0xfa, 0xf5, 0x9a, 0xc5, 0x50, 0x1e, 0xd5, 0xae, 0xb9, 0xe2, 0x53, 0x92, ++ 0xe3, 0xe6, 0x0a, 0xa3, 0x9d, 0x69, 0xf5, 0x1b, 0xeb, 0x7d, 0x6f, 0x92, ++ 0xd0, 0x3b, 0x63, 0xd9, 0xd8, 0x68, 0xfa, 0x47, 0xf0, 0xee, 0xf0, 0xa1, ++ 0x9d, 0x7e, 0xc6, 0xe7, 0x24, 0x3e, 0x06, 0xed, 0xfe, 0xe3, 0x0a, 0x80, ++ 0xaf, 0xed, 0x36, 0x33, 0x9c, 0xaf, 0x35, 0x8e, 0xcf, 0xeb, 0x0c, 0x62, ++ 0x0a, 0xe3, 0xa2, 0x3e, 0x35, 0x84, 0xf1, 0x92, 0x2d, 0x88, 0x07, 0x78, ++ 0x9f, 0x50, 0x66, 0xc4, 0x67, 0xa2, 0xcf, 0x88, 0xbf, 0xe4, 0x39, 0x46, ++ 0x7c, 0xa4, 0xfa, 0x8d, 0xf3, 0x1f, 0xb6, 0x78, 0xa4, 0xa1, 0x3c, 0x23, ++ 0x70, 0x99, 0xa1, 0x3c, 0xb3, 0xd6, 0x6b, 0x80, 0xb3, 0x1b, 0xca, 0x0d, ++ 0xf5, 0x47, 0x6c, 0xac, 0x32, 0xc0, 0xb9, 0xc1, 0x2b, 0x0d, 0xf5, 0x47, ++ 0xb5, 0x2f, 0x34, 0xc0, 0xa3, 0xb7, 0x2d, 0x35, 0xd4, 0x1f, 0xd3, 0xb1, ++ 0xd2, 0x50, 0x3e, 0x36, 0xb4, 0xd6, 0x50, 0x3e, 0x6e, 0x4f, 0xa3, 0x01, ++ 0x1e, 0xdf, 0xf9, 0x5d, 0x43, 0xfd, 0x89, 0x5d, 0x9b, 0x0c, 0xe5, 0x45, ++ 0xe1, 0x7b, 0x0c, 0xe5, 0xc5, 0xdd, 0x3f, 0x30, 0xc0, 0x93, 0x7a, 0x1e, ++ 0x36, 0xd4, 0x9f, 0x7c, 0x62, 0xb7, 0xa1, 0x7c, 0x4a, 0xef, 0x53, 0x86, ++ 0xf2, 0xa9, 0xa7, 0xf6, 0x1b, 0xe0, 0x69, 0x7d, 0xbf, 0x31, 0xd4, 0x9f, ++ 0x71, 0xee, 0xa8, 0x01, 0xae, 0x64, 0x2f, 0x19, 0xea, 0xcf, 0xb4, 0xfd, ++ 0xc1, 0x00, 0xcf, 0x72, 0xff, 0xd9, 0x50, 0xff, 0xf2, 0xf4, 0x77, 0x0d, ++ 0xe5, 0x57, 0xe8, 0x1f, 0x19, 0xca, 0xaf, 0x2a, 0x38, 0x6b, 0xe4, 0xd7, ++ 0x38, 0x2e, 0xff, 0xe6, 0x79, 0xfe, 0x69, 0xf8, 0x4e, 0xc9, 0x0a, 0xbc, ++ 0x3c, 0x09, 0x6d, 0x04, 0xf5, 0xb4, 0x86, 0x7c, 0xdb, 0xb2, 0x4c, 0x61, ++ 0xc9, 0x18, 0x4f, 0xef, 0x5e, 0x64, 0x43, 0x39, 0xf0, 0x8a, 0x94, 0x43, ++ 0x82, 0x0f, 0x9f, 0x47, 0xfd, 0x8c, 0xf5, 0xf3, 0x58, 0x0e, 0xca, 0xb3, ++ 0x59, 0x6a, 0x45, 0x18, 0xd7, 0xed, 0x99, 0x2e, 0x85, 0xd6, 0x7f, 0xac, ++ 0xbe, 0xd3, 0x3e, 0xf2, 0xfb, 0x30, 0x9e, 0xc7, 0x7e, 0xa5, 0x78, 0x30, ++ 0xce, 0x96, 0x00, 0x6a, 0x4b, 0x8b, 0xea, 0x3f, 0xd1, 0x67, 0x03, 0x47, ++ 0x32, 0x02, 0x27, 0xcf, 0x71, 0x1b, 0xe0, 0x54, 0x7f, 0xba, 0xa1, 0xfe, ++ 0xb0, 0xc5, 0xba, 0xa1, 0x3c, 0x23, 0x50, 0x60, 0x28, 0xcf, 0xac, 0xf5, ++ 0x18, 0xe0, 0xec, 0x86, 0x32, 0x43, 0xfd, 0x11, 0x1b, 0x7d, 0x06, 0x38, ++ 0x37, 0x38, 0xc7, 0x50, 0x7f, 0x54, 0xbb, 0xdf, 0x00, 0x8f, 0xde, 0xb6, ++ 0xd8, 0x50, 0x7f, 0x4c, 0x47, 0xc0, 0x50, 0x3e, 0x36, 0x54, 0x6b, 0x28, ++ 0x1f, 0xb7, 0xa7, 0xc1, 0x00, 0x8f, 0xef, 0xdc, 0x68, 0xa8, 0x3f, 0xb1, ++ 0x2b, 0x68, 0x28, 0x2f, 0x0a, 0xb7, 0x1b, 0xca, 0x8b, 0xbb, 0xb7, 0x19, ++ 0xe0, 0x49, 0x3d, 0x1d, 0x86, 0xfa, 0x93, 0x4f, 0x84, 0x0c, 0xe5, 0x53, ++ 0x7a, 0xf7, 0x18, 0xca, 0xa7, 0x9e, 0xea, 0x34, 0xc0, 0xd3, 0xfa, 0xba, ++ 0x0c, 0xf5, 0x67, 0x9c, 0x0b, 0x1b, 0xe0, 0x4a, 0xf6, 0xa2, 0xa1, 0xfe, ++ 0x4c, 0xdb, 0x6b, 0x06, 0x78, 0x96, 0xfb, 0x0d, 0x43, 0xfd, 0xcb, 0xd3, ++ 0xdf, 0x36, 0x94, 0x5f, 0xa1, 0x7f, 0x60, 0x28, 0x97, 0xf6, 0xcd, 0x55, ++ 0x05, 0x9f, 0x1a, 0xdf, 0x0b, 0x7b, 0x67, 0x9e, 0xe7, 0x1f, 0x86, 0xef, ++ 0x83, 0x55, 0x3e, 0x86, 0xfc, 0x11, 0xdc, 0xaf, 0x78, 0x5a, 0x74, 0xc6, ++ 0x0a, 0x4b, 0x47, 0x92, 0x7d, 0x01, 0x72, 0xbd, 0xd7, 0xae, 0xa2, 0x7d, ++ 0xe4, 0xa7, 0xb8, 0x51, 0x12, 0x26, 0x08, 0x02, 0x5f, 0x26, 0x80, 0x10, ++ 0x43, 0xbe, 0x42, 0x57, 0xa1, 0x86, 0xe2, 0x4f, 0x29, 0x14, 0xf7, 0x25, ++ 0xd5, 0xa4, 0x63, 0xbe, 0x0f, 0xd8, 0x09, 0x00, 0x24, 0x99, 0x72, 0x73, ++ 0xd1, 0x9e, 0x8e, 0x8f, 0xd8, 0x6d, 0x59, 0x17, 0x8a, 0x2f, 0xdd, 0x6e, ++ 0x2b, 0x2f, 0x65, 0xc4, 0xe7, 0x37, 0x97, 0x06, 0x26, 0x96, 0xa6, 0xa2, ++ 0xbf, 0xb2, 0x6f, 0x36, 0xda, 0xed, 0x37, 0xb3, 0xe0, 0x66, 0x1c, 0x07, ++ 0xe8, 0xbd, 0x84, 0x5e, 0x5c, 0x1f, 0x76, 0x63, 0x3c, 0x43, 0x3e, 0xaf, ++ 0xb0, 0x01, 0x5e, 0xa2, 0xfa, 0x7b, 0xd1, 0xbe, 0x2d, 0xcb, 0x7b, 0x11, ++ 0xbf, 0xff, 0x0a, 0xdb, 0x69, 0xaa, 0xdf, 0xdf, 0xae, 0x88, 0x73, 0x28, ++ 0x30, 0xbf, 0xc6, 0xa8, 0xf6, 0xef, 0x07, 0xbf, 0x42, 0x03, 0xbb, 0x6e, ++ 0x5b, 0x13, 0xac, 0x1b, 0x70, 0x18, 0x7f, 0xd0, 0xe4, 0x26, 0xf8, 0xa1, ++ 0xa6, 0x74, 0x82, 0x7f, 0xd4, 0xa4, 0xd3, 0xb3, 0xa3, 0xa9, 0x80, 0x9e, ++ 0x0f, 0x37, 0x79, 0xa8, 0x7c, 0x47, 0x53, 0x19, 0xc1, 0x3b, 0x9b, 0x7c, ++ 0x04, 0x87, 0x9a, 0xe6, 0xd0, 0x73, 0x77, 0x93, 0x9f, 0xde, 0x3f, 0xd6, ++ 0xb4, 0x98, 0xe0, 0x27, 0xc0, 0x8f, 0xc6, 0xe7, 0x1e, 0xf0, 0xab, 0xf1, ++ 0xf9, 0x14, 0xf8, 0xc7, 0x58, 0xbe, 0x17, 0xfc, 0x65, 0x84, 0x7f, 0xd1, ++ 0x14, 0xa4, 0x67, 0x67, 0x53, 0x3b, 0xbd, 0xdf, 0xdf, 0xb4, 0x8d, 0xe0, ++ 0x03, 0x4d, 0x1d, 0x04, 0xff, 0xb2, 0x29, 0x44, 0xcf, 0xae, 0xa6, 0x3d, ++ 0xf4, 0xfc, 0x4d, 0x53, 0x27, 0x95, 0x1f, 0x6c, 0xea, 0x22, 0xf8, 0x50, ++ 0x53, 0x98, 0xe0, 0x70, 0x53, 0x37, 0xc1, 0x47, 0x9b, 0x7a, 0x08, 0x3e, ++ 0xde, 0x74, 0x82, 0xe0, 0x17, 0x9a, 0x7a, 0xe9, 0xd9, 0xdd, 0x74, 0x8a, ++ 0x9e, 0xbf, 0x6f, 0xea, 0xa3, 0xf2, 0x97, 0x9b, 0xce, 0x11, 0xfc, 0xa1, ++ 0x88, 0xd7, 0xae, 0x29, 0xe5, 0xf1, 0x22, 0x89, 0x17, 0x09, 0x33, 0x56, ++ 0x4d, 0xfc, 0x20, 0xed, 0xc3, 0xf9, 0x68, 0xe7, 0x23, 0x73, 0x94, 0x99, ++ 0xff, 0x66, 0xb0, 0xf3, 0x63, 0xec, 0xed, 0x58, 0x7a, 0xc8, 0x7e, 0xcc, ++ 0x55, 0x18, 0x13, 0x84, 0xe7, 0xf0, 0xfc, 0xdd, 0x2d, 0x51, 0x7e, 0xd6, ++ 0xad, 0xa2, 0xbf, 0x2d, 0x71, 0x2c, 0x68, 0x07, 0x7e, 0x6f, 0x36, 0x71, ++ 0xbf, 0xb6, 0x39, 0x89, 0x51, 0x9e, 0x35, 0x13, 0xf6, 0xeb, 0x1a, 0xc1, ++ 0x97, 0x2c, 0x85, 0xdb, 0xad, 0xab, 0xc5, 0xb8, 0xd6, 0x88, 0xf5, 0x30, ++ 0x09, 0xf9, 0xb3, 0x80, 0xf8, 0xf3, 0xe5, 0xaf, 0xe3, 0x57, 0x48, 0xbf, ++ 0xf1, 0x4c, 0x61, 0xa0, 0x85, 0xf8, 0x33, 0xdb, 0x14, 0x24, 0xff, 0xd9, ++ 0x11, 0xca, 0x47, 0xfb, 0x39, 0x75, 0x7c, 0x60, 0x73, 0xe9, 0x24, 0xdc, ++ 0x6f, 0xbc, 0xe9, 0x05, 0xea, 0xcf, 0xed, 0xa1, 0x7d, 0xc7, 0x79, 0xd6, ++ 0x70, 0xea, 0x75, 0x18, 0x1f, 0x79, 0x51, 0xa5, 0x78, 0xde, 0x50, 0xfd, ++ 0xd5, 0x8b, 0xfc, 0xf1, 0x21, 0xcb, 0x0f, 0x7d, 0x90, 0x85, 0xf6, 0xf6, ++ 0x9c, 0x2f, 0xd5, 0x00, 0xe2, 0xe9, 0x15, 0xb3, 0x73, 0x31, 0xc6, 0x0b, ++ 0xb6, 0x97, 0x72, 0xff, 0x74, 0x7b, 0xa9, 0xc9, 0xf0, 0xfc, 0xc9, 0xf8, ++ 0x40, 0x07, 0x8e, 0xe7, 0x73, 0x67, 0xc3, 0x0d, 0x26, 0x18, 0xff, 0xe7, ++ 0xd3, 0x37, 0x3c, 0x71, 0x6b, 0x6e, 0xc4, 0x9f, 0xbe, 0x1a, 0x5d, 0x52, ++ 0xf0, 0x83, 0x16, 0x30, 0xdd, 0x4c, 0xf9, 0x89, 0xcc, 0xf7, 0x7c, 0x2e, ++ 0x34, 0x75, 0x0d, 0x18, 0x58, 0x08, 0x5f, 0xc7, 0x82, 0xf4, 0xcc, 0x2a, ++ 0x0c, 0xec, 0xc2, 0xf9, 0x2e, 0x01, 0x43, 0x1c, 0xe1, 0x40, 0xb9, 0x35, ++ 0x67, 0xb0, 0x79, 0xc5, 0x8e, 0x6b, 0xaf, 0x18, 0xd7, 0x5e, 0x31, 0x1e, ++ 0xf9, 0x7c, 0x71, 0x7c, 0xe0, 0x69, 0x6c, 0xef, 0x73, 0xa7, 0x8f, 0xc6, ++ 0xf5, 0xca, 0x94, 0xcb, 0xf3, 0x71, 0x5e, 0x72, 0x5c, 0x71, 0x13, 0x74, ++ 0x71, 0x9e, 0xa1, 0x6f, 0x27, 0x8e, 0xef, 0xf3, 0xe7, 0x3e, 0x3d, 0xa9, ++ 0x8c, 0x8a, 0xe0, 0x5f, 0xfa, 0xed, 0x9b, 0x2b, 0x45, 0x5e, 0xc9, 0x06, ++ 0x85, 0xc7, 0xe5, 0xa4, 0xbd, 0x26, 0xf2, 0x52, 0xa4, 0xdf, 0x51, 0x73, ++ 0xbb, 0x12, 0x42, 0x7b, 0x7d, 0x19, 0xf8, 0x3b, 0xb8, 0xbf, 0xf4, 0xa6, ++ 0xb0, 0x3f, 0xdf, 0xb4, 0x73, 0xfd, 0x7c, 0xa6, 0xc1, 0x5c, 0x80, 0x76, ++ 0x7d, 0x8d, 0x12, 0xe7, 0xc1, 0x7d, 0xb8, 0x33, 0x0d, 0xff, 0xe5, 0x40, ++ 0x77, 0x1a, 0xea, 0x33, 0xdc, 0x27, 0x69, 0xc1, 0x9c, 0x03, 0x28, 0x6f, ++ 0xb9, 0x43, 0xa1, 0x7c, 0xee, 0x1a, 0x68, 0xc7, 0x04, 0xed, 0xd4, 0x60, ++ 0x20, 0x10, 0xbf, 0xbb, 0x4b, 0x21, 0xfe, 0xfb, 0x62, 0x7c, 0x2e, 0x8d, ++ 0xaf, 0x06, 0xcc, 0x3f, 0xf2, 0xb3, 0x52, 0xfa, 0x72, 0x70, 0xbf, 0x14, ++ 0xf8, 0xe5, 0x45, 0xa4, 0xc3, 0xda, 0x29, 0x6a, 0xd0, 0x02, 0xf6, 0xf0, ++ 0x2b, 0xa6, 0x50, 0xbe, 0x42, 0xfb, 0xd2, 0x37, 0x59, 0x14, 0x18, 0xe7, ++ 0x9a, 0x14, 0xe0, 0x93, 0x91, 0x43, 0xf3, 0xc3, 0x7a, 0x71, 0xfe, 0x40, ++ 0xbe, 0x07, 0x3e, 0xfb, 0x03, 0xb6, 0xf7, 0xb7, 0x5f, 0x4f, 0x2e, 0xa0, ++ 0x38, 0xfe, 0xa1, 0x29, 0x3a, 0xe2, 0xad, 0xc5, 0xc4, 0xcf, 0x23, 0x05, ++ 0x7f, 0xaf, 0x7a, 0x78, 0xbe, 0x0b, 0x17, 0xd5, 0xea, 0xd4, 0xf1, 0x14, ++ 0xa7, 0x64, 0x9a, 0xc7, 0x83, 0x71, 0xa6, 0x79, 0xe2, 0xfc, 0xca, 0x11, ++ 0x95, 0x6d, 0xdc, 0x37, 0x88, 0x1c, 0xfd, 0xbb, 0xa0, 0xdb, 0x2b, 0xe9, ++ 0xe6, 0x39, 0x21, 0x6a, 0xd7, 0xb8, 0x5f, 0xf3, 0xb1, 0xa0, 0xe3, 0xc7, ++ 0xa2, 0xde, 0xbc, 0xa3, 0x2f, 0x66, 0xe3, 0xf9, 0xab, 0xf5, 0xdd, 0x66, ++ 0xb2, 0x47, 0x58, 0x49, 0x6f, 0xa1, 0xdf, 0x39, 0xc8, 0x7c, 0x36, 0x6e, ++ 0xfd, 0x76, 0x5e, 0x14, 0x7f, 0xd7, 0x77, 0xbd, 0xcd, 0xf3, 0x35, 0x58, ++ 0x6f, 0x61, 0x74, 0x7e, 0xba, 0x6b, 0x32, 0x6f, 0x57, 0xf2, 0x93, 0x6a, ++ 0x71, 0x06, 0x76, 0x39, 0xa2, 0xc7, 0xd7, 0xcf, 0xdf, 0x9f, 0x11, 0x7f, ++ 0x27, 0x02, 0x7f, 0x8f, 0x22, 0xfe, 0x3e, 0x89, 0xf6, 0xf6, 0x7c, 0xab, ++ 0x9e, 0x70, 0x1d, 0x3c, 0x7b, 0x01, 0x45, 0x61, 0x78, 0x06, 0x7e, 0xea, ++ 0xa6, 0x7c, 0x23, 0x99, 0x77, 0xb4, 0x8a, 0xf9, 0xe9, 0xb9, 0x06, 0xd8, ++ 0x01, 0xf9, 0xd9, 0x1f, 0x7c, 0xc0, 0x82, 0xf8, 0x5f, 0xcb, 0x3a, 0xe9, ++ 0xfd, 0xfa, 0xb2, 0x1b, 0x73, 0x10, 0xae, 0x67, 0x7d, 0xd5, 0xe9, 0xe8, ++ 0x4f, 0xb4, 0x37, 0x3f, 0x9f, 0x0e, 0xa3, 0x5c, 0xb4, 0xed, 0x81, 0x59, ++ 0x18, 0x9f, 0x5d, 0x18, 0x5a, 0xf1, 0x3c, 0x3e, 0x17, 0x3c, 0xa6, 0x9c, ++ 0x44, 0xff, 0x15, 0xd6, 0x87, 0x79, 0x32, 0xc6, 0x4f, 0x94, 0x86, 0xb6, ++ 0xe1, 0xd0, 0xdf, 0xd2, 0xbd, 0x95, 0x6d, 0x99, 0xf0, 0x7e, 0xbe, 0xca, ++ 0xe9, 0xc1, 0x5e, 0xe2, 0xf4, 0x00, 0xbe, 0xf1, 0xa9, 0x49, 0x03, 0xe7, ++ 0x09, 0xeb, 0xc1, 0x39, 0x99, 0xe6, 0xe1, 0xa3, 0x79, 0xa8, 0xae, 0x39, ++ 0x86, 0xf5, 0x50, 0xb3, 0x89, 0xf9, 0x94, 0x94, 0x48, 0xfe, 0x7c, 0xff, ++ 0xfa, 0x28, 0xbb, 0xe5, 0xaf, 0x99, 0xe8, 0x0f, 0x69, 0x7d, 0xb4, 0xff, ++ 0x5e, 0x7f, 0xc8, 0x9a, 0x84, 0x74, 0x5e, 0xcb, 0xb8, 0xfe, 0x8e, 0xc4, ++ 0x3f, 0xa4, 0xde, 0x66, 0xc4, 0xe7, 0xb7, 0xb0, 0x38, 0x0f, 0xd6, 0xfb, ++ 0x50, 0xf0, 0xf5, 0x87, 0xd9, 0x8c, 0xf8, 0xfa, 0x43, 0x05, 0x1c, 0x3c, ++ 0x6f, 0xc4, 0x9e, 0x64, 0x39, 0x81, 0x74, 0xef, 0xa8, 0x88, 0xfe, 0xfd, ++ 0xd0, 0x14, 0x2a, 0x75, 0x8d, 0x22, 0xfd, 0x9c, 0x87, 0xf3, 0x7d, 0x21, ++ 0x7d, 0x91, 0x8e, 0x71, 0xb3, 0x5b, 0x52, 0x6c, 0x1e, 0x15, 0xcb, 0x13, ++ 0x43, 0x39, 0x7c, 0x1f, 0xb5, 0x5f, 0xce, 0xb3, 0x0b, 0xf1, 0x91, 0xb8, ++ 0xd7, 0xfd, 0x66, 0x1e, 0x87, 0x8a, 0x1d, 0x97, 0x52, 0xf6, 0xc2, 0x3f, ++ 0xd0, 0x7e, 0xb0, 0x5a, 0x58, 0x10, 0xf7, 0x37, 0x60, 0x7d, 0xb3, 0x52, ++ 0x5c, 0xd7, 0xc3, 0x2d, 0xb4, 0xae, 0x5a, 0x10, 0xb5, 0x18, 0x3f, 0xab, ++ 0xf2, 0xeb, 0x83, 0xb5, 0xdf, 0x2a, 0xda, 0xed, 0xfe, 0x82, 0xfb, 0xc1, ++ 0x41, 0x98, 0x0f, 0x9e, 0x97, 0x1c, 0xd0, 0x8f, 0x5b, 0xf4, 0x13, 0xc7, ++ 0xfb, 0x91, 0x7a, 0x04, 0xfb, 0x23, 0x39, 0x92, 0xc6, 0x0c, 0xfd, 0xcd, ++ 0xc2, 0x24, 0x17, 0xa0, 0xcb, 0x2b, 0x4e, 0x1f, 0x8d, 0xbf, 0xd9, 0x94, ++ 0x48, 0x72, 0xe7, 0xe3, 0x11, 0x81, 0x6a, 0xa4, 0x97, 0x8c, 0xff, 0x48, ++ 0xff, 0xb0, 0x3b, 0xf7, 0xfd, 0x3c, 0xf2, 0xe3, 0xcf, 0xb7, 0x64, 0xa1, ++ 0x9d, 0x0e, 0xfc, 0xcb, 0xf3, 0x12, 0xa7, 0x73, 0xf9, 0xf4, 0x8a, 0x59, ++ 0x0f, 0x22, 0xfc, 0x4a, 0x65, 0x2e, 0xc5, 0xff, 0xa5, 0xdc, 0xbd, 0xba, ++ 0x8c, 0xc7, 0xcb, 0xae, 0x96, 0xf1, 0xb1, 0x8a, 0x98, 0xf8, 0x58, 0x4c, ++ 0x5c, 0x86, 0x55, 0x0c, 0x1e, 0x2f, 0x63, 0xcc, 0x63, 0xc6, 0x7e, 0xc7, ++ 0xb2, 0x37, 0x25, 0x7e, 0x28, 0x1e, 0x73, 0xb4, 0x42, 0x23, 0xba, 0x07, ++ 0x81, 0xee, 0x18, 0x6f, 0x3e, 0x2a, 0xfc, 0xd4, 0xca, 0x78, 0xee, 0x9f, ++ 0x77, 0x4e, 0x4e, 0x26, 0x7e, 0x4a, 0xba, 0x22, 0x6f, 0xd0, 0x7d, 0x15, ++ 0xf9, 0xbc, 0x47, 0xc4, 0x57, 0xef, 0x05, 0x3b, 0x88, 0x45, 0xc5, 0xd5, ++ 0xef, 0x29, 0x69, 0xb4, 0x61, 0x9e, 0xc1, 0x96, 0x42, 0x85, 0xf6, 0xbb, ++ 0xee, 0xab, 0x8a, 0xab, 0x8d, 0xce, 0x73, 0xdf, 0x3b, 0xcd, 0xcc, 0xf7, ++ 0x53, 0xa7, 0x57, 0xee, 0x44, 0xbc, 0x15, 0x3a, 0x42, 0x55, 0xa4, 0xae, ++ 0x7d, 0x9a, 0x8e, 0xf3, 0x50, 0xc4, 0xbc, 0xc6, 0xb9, 0x01, 0xef, 0x26, ++ 0x6c, 0xda, 0x2f, 0xe2, 0xa4, 0x1e, 0x1b, 0x8f, 0x4b, 0x55, 0x93, 0xbe, ++ 0x96, 0xf4, 0xbe, 0x54, 0x7d, 0xfd, 0x94, 0x16, 0xda, 0x14, 0x87, 0xf3, ++ 0x4e, 0x61, 0xb4, 0xfe, 0x9c, 0x1d, 0x76, 0x92, 0xa3, 0x6a, 0xa7, 0x2f, ++ 0x8c, 0x29, 0xd7, 0x5f, 0x4e, 0x5b, 0x78, 0x27, 0xd1, 0x51, 0xf3, 0x17, ++ 0x60, 0x3f, 0x47, 0x4a, 0xe3, 0x98, 0x03, 0xea, 0x7f, 0x7e, 0xc4, 0x42, ++ 0xfe, 0xfd, 0x21, 0xd3, 0xca, 0x9f, 0x62, 0x3e, 0x7c, 0xdf, 0x1b, 0x56, ++ 0x86, 0xfb, 0x9e, 0x9d, 0xce, 0x4c, 0x0d, 0xf5, 0x45, 0xe7, 0x17, 0x97, ++ 0x55, 0xd3, 0xd3, 0x39, 0x75, 0x36, 0xe3, 0x71, 0xce, 0x78, 0x13, 0x08, ++ 0x88, 0x22, 0x37, 0x7b, 0xf4, 0xdf, 0x90, 0x58, 0xe2, 0xdc, 0x59, 0xa7, ++ 0xc2, 0xba, 0x19, 0xc5, 0xdb, 0x7c, 0xf1, 0x26, 0xf0, 0xc1, 0x3a, 0x4d, ++ 0xec, 0xec, 0x0c, 0x18, 0xd7, 0x7e, 0x87, 0xf7, 0xc1, 0x89, 0xc4, 0x72, ++ 0x7e, 0x15, 0xe7, 0xd9, 0x55, 0x11, 0xb8, 0x1f, 0xd7, 0x53, 0x29, 0x6b, ++ 0x20, 0xf8, 0x3e, 0x8b, 0xbf, 0x76, 0x17, 0xf4, 0x7b, 0x5f, 0x92, 0x8d, ++ 0xf8, 0xc4, 0x5f, 0xe1, 0x7f, 0x80, 0x8f, 0x93, 0xb5, 0xcd, 0x85, 0xf1, ++ 0x4d, 0x9f, 0xa9, 0x30, 0x3c, 0xc7, 0xdb, 0x66, 0x01, 0xb9, 0x5c, 0x88, ++ 0x71, 0x92, 0x38, 0xbe, 0x27, 0xc5, 0xb8, 0x7d, 0xef, 0x3f, 0x97, 0x4f, ++ 0xfd, 0xef, 0x98, 0xcc, 0xf7, 0xf9, 0x5a, 0xd3, 0x7d, 0x3d, 0x78, 0x60, ++ 0x64, 0x48, 0xbc, 0xb9, 0xb5, 0xbe, 0xfe, 0xb8, 0x08, 0xf1, 0x5b, 0x16, ++ 0xc5, 0xf3, 0x24, 0x1e, 0xa3, 0xe9, 0xe5, 0x2e, 0x35, 0xd0, 0x2b, 0x60, ++ 0x8e, 0xa6, 0x57, 0x19, 0xd0, 0x6b, 0x7c, 0x34, 0xbd, 0x7c, 0xca, 0xd7, ++ 0xa1, 0xd7, 0xed, 0x98, 0x5c, 0x36, 0x69, 0x20, 0x7f, 0x06, 0xab, 0xf4, ++ 0x07, 0xaa, 0x4b, 0xb8, 0x5e, 0xc3, 0x14, 0xb9, 0x4a, 0x6b, 0x76, 0x21, ++ 0xda, 0xeb, 0x47, 0xe2, 0x32, 0x0b, 0xa3, 0xf7, 0xf5, 0x24, 0x5f, 0x4a, ++ 0x3e, 0x1d, 0x84, 0x3f, 0x37, 0x1c, 0x43, 0xf9, 0x90, 0xa5, 0xb9, 0x31, ++ 0x7e, 0x6a, 0x9d, 0x17, 0x47, 0xfb, 0x2d, 0x92, 0x5f, 0x25, 0x9f, 0xfe, ++ 0x75, 0x4a, 0x3f, 0xbf, 0x7a, 0xcb, 0xe1, 0xb9, 0xcc, 0xe1, 0x9f, 0x85, ++ 0x32, 0x24, 0x96, 0x5f, 0x31, 0x1e, 0x16, 0xcd, 0x97, 0x35, 0x43, 0xf2, ++ 0x2f, 0x73, 0x47, 0xaf, 0xd7, 0xf9, 0x60, 0x3f, 0x24, 0x24, 0xa1, 0xdd, ++ 0x73, 0xea, 0xb1, 0xce, 0x28, 0xbe, 0xac, 0x69, 0xf8, 0x54, 0xe3, 0xf2, ++ 0xe3, 0xc2, 0x8c, 0xb8, 0xd2, 0x48, 0xfc, 0x6e, 0x7e, 0x85, 0xc2, 0xde, ++ 0x89, 0xa6, 0x2f, 0xfc, 0x7b, 0xa7, 0x40, 0xcc, 0x8f, 0xec, 0x1e, 0x8d, ++ 0xfc, 0x2d, 0x89, 0xc7, 0x4b, 0xc5, 0xb7, 0xf9, 0x5b, 0xcd, 0x05, 0x68, ++ 0xc7, 0x6d, 0xc6, 0xf3, 0x89, 0x80, 0xaf, 0x76, 0xc5, 0xe3, 0x1b, 0x86, ++ 0x71, 0xad, 0x86, 0xb7, 0x6f, 0xc5, 0xf7, 0x6d, 0xe2, 0x7c, 0x70, 0xb0, ++ 0xd0, 0xc2, 0xed, 0x2b, 0xb1, 0x4e, 0x64, 0x7b, 0x5f, 0x4e, 0xab, 0x7a, ++ 0x07, 0xf9, 0xd6, 0x39, 0xf9, 0x74, 0xfc, 0x6a, 0xa8, 0xf7, 0x79, 0x9a, ++ 0x49, 0x47, 0xe4, 0xb4, 0xe9, 0x2b, 0xff, 0x8d, 0xd6, 0xdd, 0x89, 0x78, ++ 0x86, 0xdf, 0xb9, 0x92, 0x7b, 0x6a, 0x1f, 0xa5, 0x75, 0x34, 0x86, 0xe1, ++ 0xfe, 0xe0, 0xe7, 0x37, 0x07, 0x46, 0xe0, 0x7e, 0xfd, 0xdd, 0x40, 0xa7, ++ 0x77, 0x28, 0x99, 0x3a, 0x34, 0xcc, 0x44, 0x7b, 0x59, 0xbd, 0xc3, 0x70, ++ 0x1d, 0x01, 0x72, 0xd3, 0xf9, 0x33, 0x90, 0xce, 0xdf, 0x33, 0x51, 0x1e, ++ 0x22, 0xf8, 0x3b, 0x53, 0x46, 0x0a, 0xbf, 0xc3, 0x27, 0xea, 0xf7, 0x52, ++ 0xfd, 0xbb, 0x2d, 0xdb, 0x6c, 0x71, 0xd8, 0x4f, 0xae, 0xcd, 0xbd, 0x3b, ++ 0x8a, 0xdf, 0x67, 0x88, 0xf8, 0x3a, 0x1e, 0x23, 0xe7, 0xfb, 0x67, 0x2d, ++ 0x3a, 0xda, 0x65, 0x7a, 0x19, 0xd7, 0xbf, 0x0f, 0x36, 0xed, 0x99, 0xf6, ++ 0xde, 0x68, 0x1c, 0x4f, 0xe7, 0xb4, 0xf7, 0x60, 0x3c, 0xc9, 0x73, 0x43, ++ 0x2c, 0x00, 0x7c, 0x1c, 0x57, 0x10, 0xd4, 0x31, 0x05, 0xc4, 0xf6, 0xe5, ++ 0x4c, 0x05, 0xcf, 0x2f, 0xb0, 0xcb, 0x58, 0x27, 0xf2, 0x0d, 0xbe, 0x6f, ++ 0x1e, 0x1f, 0x69, 0xdf, 0x5c, 0xc6, 0xd7, 0x99, 0x0d, 0xed, 0x15, 0xa0, ++ 0x9f, 0x6d, 0x53, 0x50, 0x4f, 0x8a, 0x92, 0x7f, 0x36, 0x93, 0x12, 0x18, ++ 0x2c, 0xdf, 0xe5, 0x8e, 0x29, 0x1a, 0xff, 0x6e, 0x13, 0xa3, 0x72, 0xdb, ++ 0xd1, 0xed, 0x74, 0x9e, 0x3f, 0x39, 0xcf, 0xa3, 0x60, 0xde, 0xb3, 0x6d, ++ 0xd3, 0x36, 0x86, 0xfb, 0x31, 0xf6, 0x30, 0x7f, 0x9f, 0x92, 0xe7, 0x53, ++ 0x56, 0x45, 0xb5, 0x9b, 0x32, 0x17, 0xc6, 0x1d, 0xc5, 0x17, 0xf3, 0xf1, ++ 0x24, 0x01, 0xc8, 0x1b, 0xdb, 0x6e, 0x60, 0xcc, 0x12, 0xa4, 0x43, 0x1c, ++ 0xc5, 0x1f, 0x63, 0xfb, 0x9d, 0x9f, 0x5a, 0xd5, 0xad, 0xb9, 0x86, 0xe6, ++ 0x93, 0x58, 0x7e, 0x63, 0x82, 0xdf, 0x24, 0xdf, 0xc8, 0x79, 0xd2, 0xc9, ++ 0x94, 0xa8, 0x73, 0xf9, 0xd5, 0x23, 0xb9, 0x3d, 0xdc, 0xb6, 0xd1, 0xb2, ++ 0x0b, 0xed, 0xed, 0xf2, 0xb2, 0x44, 0xc2, 0xef, 0x67, 0x29, 0x55, 0x09, ++ 0xec, 0x22, 0x7a, 0x65, 0x27, 0xf0, 0x41, 0xd0, 0x8a, 0xfe, 0xb1, 0x8d, ++ 0x9e, 0xbb, 0xc1, 0xbf, 0x0e, 0x8e, 0x41, 0xff, 0x38, 0x9d, 0xe0, 0x27, ++ 0xc0, 0xbf, 0xc6, 0xe7, 0x1e, 0xf0, 0xaf, 0xf1, 0xf9, 0x14, 0xf8, 0xd7, ++ 0x58, 0xbe, 0x17, 0xfc, 0x6b, 0x84, 0x7f, 0x01, 0xfe, 0x35, 0xc2, 0x9d, ++ 0xe0, 0x5f, 0x23, 0xbc, 0x1f, 0xfc, 0x6b, 0x84, 0x0f, 0x80, 0x7f, 0x8d, ++ 0xf0, 0x2f, 0xc1, 0xbf, 0xc6, 0x67, 0x17, 0xf8, 0xd7, 0xf8, 0xfc, 0x0d, ++ 0xf8, 0xd7, 0x58, 0x7e, 0x10, 0xfc, 0x6b, 0x84, 0x67, 0x58, 0x81, 0x3f, ++ 0x70, 0x3e, 0x05, 0xc1, 0xf4, 0x85, 0x40, 0xd7, 0xf6, 0x3b, 0x2c, 0x3e, ++ 0xcc, 0x17, 0xdc, 0x20, 0xe8, 0x7a, 0xcc, 0x37, 0x32, 0xd9, 0x03, 0xf4, ++ 0xb7, 0x17, 0x98, 0x28, 0xf6, 0x6d, 0x7f, 0xf9, 0x07, 0x0c, 0xe7, 0x63, ++ 0x4f, 0x37, 0xd1, 0xf9, 0xaf, 0xcd, 0xe9, 0x3f, 0x60, 0x37, 0xa2, 0xdf, ++ 0x5a, 0xea, 0x24, 0xbb, 0xa9, 0xed, 0xe7, 0xdc, 0x1e, 0xb1, 0x6b, 0x0f, ++ 0x32, 0x94, 0x3b, 0x3b, 0x95, 0x60, 0x2d, 0xf3, 0x30, 0xb6, 0xb8, 0x6c, ++ 0x6c, 0x0d, 0xee, 0xf3, 0xe5, 0xa5, 0x6f, 0xa8, 0x4a, 0x02, 0xf8, 0x86, ++ 0xb2, 0x89, 0x3b, 0x6c, 0xb0, 0x3e, 0xf2, 0xf5, 0x05, 0x8b, 0x9b, 0xa3, ++ 0x60, 0xdd, 0xe9, 0x5d, 0xbb, 0xcf, 0x1d, 0x81, 0x47, 0x14, 0xee, 0xd2, ++ 0xc0, 0x33, 0x61, 0x37, 0x76, 0x15, 0xed, 0xc0, 0xa3, 0x3f, 0x38, 0x0e, ++ 0xcc, 0x13, 0xae, 0x2b, 0x2b, 0xa9, 0x69, 0x06, 0x16, 0x0a, 0x8f, 0x64, ++ 0x64, 0x57, 0xf4, 0xe5, 0x5a, 0x28, 0x3f, 0x67, 0x15, 0xd2, 0x6b, 0x34, ++ 0x8e, 0x9f, 0xc7, 0x0d, 0xaf, 0x62, 0x2d, 0xe9, 0xb8, 0x6f, 0x39, 0x42, ++ 0x07, 0xef, 0x47, 0xa1, 0xfa, 0x61, 0x96, 0x72, 0xe9, 0xf5, 0x37, 0x94, ++ 0xe9, 0xf4, 0x3e, 0xf6, 0xbb, 0x8b, 0xd5, 0x33, 0x95, 0x5c, 0x52, 0x3d, ++ 0xa6, 0x5e, 0xa4, 0x3d, 0x2c, 0x57, 0x2e, 0xd2, 0x8e, 0x4d, 0x59, 0x64, ++ 0xeb, 0x81, 0xb1, 0x6f, 0x35, 0x0b, 0x39, 0x95, 0xea, 0x20, 0x39, 0xd5, ++ 0x8e, 0x71, 0x1c, 0xc0, 0x7b, 0xbb, 0x9d, 0x3f, 0xbb, 0xa7, 0xf0, 0xb8, ++ 0xc1, 0xae, 0x29, 0x55, 0xde, 0x29, 0xf0, 0xf4, 0x4e, 0xe1, 0x74, 0x6d, ++ 0xb7, 0x07, 0xdd, 0x55, 0xd8, 0xff, 0x78, 0x13, 0xe5, 0x2d, 0xb0, 0x8d, ++ 0xb9, 0x7f, 0x18, 0x09, 0xfd, 0x7d, 0xfb, 0xf7, 0x1a, 0xc3, 0xbc, 0x4f, ++ 0xc9, 0x9f, 0xed, 0x82, 0x0f, 0x46, 0x8f, 0x70, 0xd2, 0xf9, 0x7b, 0x76, ++ 0xa7, 0x8d, 0xf6, 0xed, 0x2f, 0x1f, 0xf1, 0xf3, 0xd6, 0x24, 0x80, 0x47, ++ 0x3f, 0xea, 0xf1, 0x60, 0x7e, 0xc3, 0x56, 0xe6, 0x89, 0x43, 0x3e, 0x09, ++ 0xde, 0x6b, 0xa2, 0xfc, 0xc6, 0xa7, 0x4b, 0x46, 0x25, 0x2d, 0x80, 0xea, ++ 0xe3, 0x26, 0x3d, 0x9b, 0x84, 0x72, 0xfd, 0xa4, 0x90, 0x37, 0x21, 0x91, ++ 0x17, 0xd4, 0xdc, 0xb6, 0x7a, 0x04, 0xea, 0xb1, 0xcf, 0x5f, 0xe3, 0xf2, ++ 0xf0, 0xc7, 0x42, 0x3e, 0xed, 0x32, 0xf7, 0x34, 0x10, 0x3d, 0x27, 0x39, ++ 0xc8, 0xee, 0x60, 0x6c, 0x1b, 0xd9, 0x17, 0xcd, 0xe9, 0x40, 0x6c, 0xd0, ++ 0x91, 0xa6, 0x0c, 0xfe, 0xb4, 0x98, 0xdd, 0x4b, 0xb1, 0x9e, 0x05, 0x0c, ++ 0x01, 0xcc, 0xbf, 0xb6, 0x7c, 0x31, 0xd9, 0x86, 0x7e, 0x5d, 0xcb, 0x39, ++ 0xeb, 0x1c, 0x9e, 0x1f, 0xdb, 0x43, 0x76, 0x87, 0xc5, 0x1e, 0x70, 0x27, ++ 0xc2, 0xfb, 0x6d, 0x41, 0x13, 0xc9, 0x85, 0x16, 0xdd, 0x41, 0xf9, 0x6c, ++ 0x5b, 0x1d, 0xde, 0x6e, 0x3c, 0xcf, 0x1c, 0x74, 0x9b, 0x28, 0xef, 0x75, ++ 0x6b, 0xa1, 0x89, 0xf0, 0xd8, 0xea, 0xb8, 0x36, 0x84, 0xf6, 0xbc, 0xa6, ++ 0x34, 0xd7, 0xa2, 0x1e, 0x0b, 0xb9, 0xf7, 0xdb, 0x72, 0xe1, 0x7d, 0xa8, ++ 0xd0, 0x44, 0x79, 0x8c, 0x21, 0xdf, 0xc2, 0x39, 0x08, 0x07, 0x03, 0x1a, ++ 0xe5, 0x59, 0xd1, 0x0f, 0x96, 0x07, 0x92, 0xe8, 0x1c, 0xf7, 0x56, 0xd6, ++ 0xf7, 0xd2, 0x44, 0x2c, 0xaf, 0xe1, 0x76, 0x57, 0x5b, 0xda, 0x7f, 0x1f, ++ 0x8d, 0xc7, 0x38, 0xf7, 0x35, 0x6e, 0x0f, 0xdf, 0x56, 0x61, 0x3a, 0xe6, ++ 0x81, 0x51, 0x4a, 0x98, 0x09, 0xfd, 0xeb, 0xde, 0x4d, 0xf1, 0x38, 0x8e, ++ 0x25, 0x4c, 0xf8, 0xad, 0x41, 0xf2, 0x53, 0x5d, 0x56, 0x4e, 0xbf, 0xef, ++ 0x1f, 0xb9, 0xc2, 0x3d, 0x92, 0xec, 0x8a, 0xa8, 0xfd, 0x2b, 0x2b, 0xc6, ++ 0xe4, 0x3c, 0x36, 0x0f, 0x94, 0x4f, 0x70, 0x78, 0xe7, 0xa0, 0x1f, 0xa9, ++ 0x39, 0xbd, 0x36, 0xcc, 0xef, 0x6b, 0x75, 0x7b, 0x6d, 0x2b, 0x68, 0xfe, ++ 0x3c, 0x2f, 0x8d, 0xf2, 0x2f, 0xa0, 0xdd, 0x16, 0xb7, 0x89, 0xfc, 0x59, ++ 0x2c, 0xbf, 0xb1, 0x90, 0xd4, 0xe1, 0xf1, 0xbc, 0x52, 0x91, 0x72, 0xaf, ++ 0xe3, 0xbc, 0x7f, 0x70, 0x04, 0xf1, 0xa1, 0xdd, 0xc4, 0x58, 0xae, 0x8e, ++ 0xe3, 0xd3, 0x82, 0xd1, 0xfb, 0x83, 0xb6, 0x51, 0x15, 0xdd, 0x3a, 0xcc, ++ 0xa3, 0x7d, 0x75, 0x12, 0xcd, 0x43, 0x53, 0x3c, 0x04, 0xb3, 0x9b, 0x34, ++ 0x1a, 0xf7, 0x70, 0x3d, 0x8e, 0xce, 0x2f, 0x3f, 0x68, 0x99, 0xd7, 0x8d, ++ 0xf6, 0xe1, 0x70, 0xdb, 0x2d, 0xb4, 0x8f, 0x95, 0x51, 0xab, 0x19, 0xf6, ++ 0x99, 0x86, 0x05, 0x8c, 0x70, 0xea, 0x62, 0x23, 0x9c, 0xcc, 0xb4, 0xc8, ++ 0x3e, 0x15, 0xf4, 0xfb, 0xae, 0xe0, 0x9b, 0x58, 0xbc, 0xc5, 0xe2, 0x23, ++ 0xc3, 0xdd, 0xfa, 0x1a, 0x8e, 0x3f, 0x23, 0x40, 0x87, 0x6b, 0x07, 0x8c, ++ 0x7f, 0xbb, 0xfb, 0xa1, 0xc4, 0x4a, 0x86, 0xe3, 0x74, 0xd0, 0x38, 0xd3, ++ 0x1c, 0x2b, 0x2b, 0xd1, 0x7e, 0x4a, 0x65, 0xfe, 0x66, 0xe4, 0xbf, 0x7f, ++ 0x75, 0x9c, 0x13, 0xdc, 0x0b, 0x6d, 0xb9, 0xd0, 0xff, 0x84, 0x14, 0x13, ++ 0x99, 0x47, 0x13, 0x59, 0xdf, 0x26, 0x6c, 0x77, 0xab, 0xe0, 0xf7, 0xf6, ++ 0x5c, 0x4e, 0xcf, 0xc8, 0xba, 0x52, 0x39, 0xbf, 0x4f, 0xa9, 0xca, 0x9c, ++ 0x92, 0x8a, 0xfb, 0x04, 0x26, 0x70, 0xcc, 0x22, 0xed, 0xe7, 0x06, 0xc1, ++ 0x41, 0x33, 0xec, 0x13, 0x24, 0x19, 0xe0, 0xd1, 0xdb, 0x86, 0x1b, 0xea, ++ 0x8f, 0xe9, 0x18, 0x69, 0x28, 0x1f, 0x1b, 0xba, 0xcc, 0x50, 0x3e, 0x6e, ++ 0x8f, 0xd7, 0x00, 0x8f, 0xef, 0x2c, 0x37, 0xd4, 0x9f, 0xd8, 0x55, 0x65, ++ 0x80, 0x8b, 0xc2, 0x57, 0x1a, 0xea, 0x17, 0x77, 0x2f, 0x34, 0xc0, 0x93, ++ 0x7a, 0x96, 0x1a, 0xea, 0x4f, 0x3e, 0xb1, 0xd2, 0x50, 0x3e, 0xa5, 0x77, ++ 0xad, 0xa1, 0x7c, 0xea, 0xa9, 0x46, 0x03, 0x3c, 0xad, 0xef, 0xbb, 0x86, ++ 0xfa, 0xd2, 0x9e, 0x8f, 0xd5, 0x8f, 0xa9, 0x53, 0xbe, 0x99, 0x1d, 0x6f, ++ 0x4d, 0x1f, 0x6e, 0xb8, 0xc7, 0x26, 0xd6, 0x4f, 0x88, 0xb5, 0xf3, 0x6d, ++ 0x5f, 0xb6, 0xe8, 0x9b, 0x90, 0x9f, 0x5d, 0x16, 0xe2, 0x67, 0x0d, 0xf5, ++ 0x39, 0xee, 0x2b, 0xdf, 0xc1, 0xfd, 0x21, 0xdb, 0x74, 0x8f, 0x8e, 0xf2, ++ 0x25, 0x5e, 0xc8, 0xd3, 0x57, 0xa6, 0xfb, 0x46, 0x22, 0xdd, 0x2a, 0x5d, ++ 0x36, 0xd2, 0x0b, 0x9a, 0x83, 0xd7, 0xd3, 0x1c, 0xb3, 0xc9, 0x5e, 0xc9, ++ 0xe9, 0xb0, 0xd0, 0xfd, 0x3a, 0x9a, 0x9b, 0xf5, 0x97, 0xc7, 0xa3, 0x7c, ++ 0x6e, 0x0a, 0x4e, 0xcb, 0x1b, 0x1d, 0x19, 0xb7, 0xdd, 0xbd, 0x8d, 0xee, ++ 0xa9, 0xa8, 0x74, 0xcd, 0x61, 0x98, 0x77, 0x24, 0xbf, 0xd7, 0xdc, 0x3e, ++ 0x16, 0x70, 0x62, 0x7f, 0x3a, 0xb7, 0x93, 0xdc, 0x41, 0xaa, 0x67, 0xd7, ++ 0xe1, 0xfb, 0xa8, 0x79, 0x1c, 0x32, 0x99, 0x98, 0x03, 0xe5, 0x38, 0xf8, ++ 0x6d, 0x18, 0x1f, 0x19, 0xca, 0x4f, 0x93, 0xfe, 0x99, 0xf4, 0xcb, 0x86, ++ 0xf2, 0xc7, 0xa4, 0x1f, 0x96, 0x63, 0x62, 0x71, 0xf8, 0xdc, 0xa5, 0xf4, ++ 0xde, 0x8a, 0x7e, 0x7a, 0x61, 0xc3, 0x6b, 0x55, 0xc3, 0x18, 0xf9, 0x6b, ++ 0xd5, 0xa8, 0x47, 0xee, 0xc3, 0xf3, 0xd9, 0xe8, 0xa7, 0x4d, 0xe0, 0x76, ++ 0x56, 0x5b, 0xda, 0x95, 0x3a, 0xc6, 0x6d, 0xda, 0x73, 0x3b, 0xbb, 0x47, ++ 0xe2, 0x78, 0x52, 0x4d, 0x14, 0x17, 0x05, 0xbb, 0xd9, 0xb3, 0x30, 0xca, ++ 0x5e, 0x5c, 0x2f, 0xe8, 0xa9, 0x8d, 0x6c, 0xef, 0x45, 0xfd, 0xd7, 0x98, ++ 0x68, 0xd3, 0xd1, 0x5e, 0xd2, 0x6c, 0xbb, 0xa6, 0xbd, 0x07, 0xf8, 0xda, ++ 0x69, 0xee, 0x7d, 0x12, 0xe3, 0x10, 0xad, 0x8a, 0x7b, 0x5d, 0x27, 0xca, ++ 0xc5, 0x3b, 0x1c, 0x94, 0xef, 0xf1, 0xa0, 0xc0, 0x9b, 0xee, 0x34, 0x15, ++ 0x6f, 0x82, 0x76, 0x3b, 0x9b, 0x7d, 0x1a, 0x9e, 0xc3, 0xef, 0xbc, 0x9b, ++ 0x79, 0x5a, 0x71, 0x7d, 0xa4, 0x54, 0x6e, 0x4a, 0x84, 0xf7, 0xa3, 0xb3, ++ 0x56, 0x98, 0x30, 0xdc, 0x33, 0x26, 0xaf, 0x79, 0x13, 0x3e, 0x03, 0xc2, ++ 0x5e, 0x1e, 0x5b, 0xb8, 0xcb, 0x94, 0x0c, 0xe5, 0xe3, 0x4a, 0x2a, 0x17, ++ 0x63, 0x7c, 0x4b, 0x75, 0x43, 0x7f, 0x17, 0x89, 0x37, 0xab, 0xae, 0x0e, ++ 0x86, 0xf3, 0x61, 0x79, 0xda, 0x49, 0xe4, 0x2b, 0xb4, 0xee, 0x2f, 0xc0, ++ 0xd0, 0x2b, 0x93, 0x6c, 0xb4, 0xff, 0x68, 0x47, 0x7a, 0x2b, 0xf4, 0x24, ++ 0x3c, 0xd8, 0xcf, 0x39, 0x42, 0x76, 0x84, 0xf3, 0x38, 0x5e, 0xec, 0x3e, ++ 0x25, 0x14, 0xaf, 0x70, 0xbb, 0x15, 0xf3, 0xe5, 0x2a, 0x93, 0x3a, 0x88, ++ 0xbe, 0xd2, 0x9e, 0x45, 0x3b, 0x17, 0xdb, 0xf7, 0x57, 0x04, 0xd6, 0x23, ++ 0x1f, 0xa5, 0xcc, 0x35, 0xd2, 0x55, 0xb3, 0x3d, 0x46, 0xf8, 0xd8, 0x6a, ++ 0xe2, 0xeb, 0xa2, 0x3d, 0x51, 0x7f, 0x19, 0xf5, 0x73, 0x7b, 0x6e, 0x5e, ++ 0x12, 0xee, 0x5b, 0xf5, 0xcb, 0x11, 0x21, 0x57, 0xee, 0x10, 0xfa, 0x53, ++ 0xbe, 0x97, 0x72, 0xe5, 0x23, 0xf4, 0x1d, 0x52, 0x23, 0xf6, 0x0d, 0xf0, ++ 0x79, 0x07, 0xc6, 0xd9, 0xec, 0xda, 0x36, 0x3a, 0x7f, 0x69, 0xbf, 0x6b, ++ 0x1b, 0x43, 0xbe, 0xb6, 0xe3, 0x69, 0x75, 0xb2, 0xf7, 0x83, 0xba, 0x9f, ++ 0xf4, 0x87, 0xdf, 0x90, 0x6f, 0x56, 0x3d, 0x72, 0xb1, 0x0d, 0xf5, 0xf5, ++ 0xd9, 0x14, 0x2f, 0xd9, 0xb3, 0xf6, 0x8d, 0xbf, 0xa4, 0xf1, 0xc5, 0xe2, ++ 0xcd, 0xde, 0xcb, 0xf3, 0xce, 0x86, 0xc2, 0xab, 0x2b, 0xff, 0x61, 0xd2, ++ 0xef, 0x20, 0x80, 0x75, 0x3c, 0xb7, 0x73, 0x34, 0xcd, 0x51, 0x1b, 0x1d, ++ 0xdf, 0x94, 0xcf, 0x64, 0x21, 0xf7, 0xcd, 0x32, 0x3f, 0x08, 0x3c, 0x09, ++ 0xd4, 0x67, 0x67, 0x65, 0xfe, 0x91, 0x2f, 0x9e, 0x8f, 0x2f, 0x91, 0xc3, ++ 0xc7, 0xf2, 0x97, 0xd2, 0xf8, 0x6e, 0x4d, 0xf5, 0x0e, 0xbb, 0x98, 0xbd, ++ 0x6d, 0x07, 0x7f, 0x33, 0x10, 0x45, 0xf7, 0xbb, 0x35, 0xbf, 0x0d, 0xf1, ++ 0xd0, 0x76, 0x7e, 0xc1, 0x1c, 0x9a, 0xb7, 0x46, 0x8b, 0x81, 0x6d, 0xfd, ++ 0xa2, 0x70, 0x17, 0xc5, 0x8d, 0x85, 0xbf, 0x94, 0x2c, 0xf0, 0xab, 0x23, ++ 0x3e, 0x01, 0x8f, 0x39, 0x16, 0x7e, 0x5e, 0xc0, 0x93, 0x32, 0x97, 0xee, ++ 0x2d, 0x93, 0x71, 0x8f, 0xe7, 0xa7, 0x24, 0x51, 0xb9, 0x27, 0xc8, 0x54, ++ 0x1e, 0xaf, 0xeb, 0xcf, 0x4f, 0x37, 0x5d, 0x98, 0x48, 0x63, 0xd5, 0x2d, ++ 0x52, 0xef, 0x92, 0x29, 0xcb, 0xf5, 0x14, 0xfc, 0x7f, 0x04, 0xf3, 0x52, ++ 0x46, 0xb5, 0x6b, 0xc6, 0x7c, 0x76, 0xa1, 0xc7, 0xa5, 0x9e, 0x1e, 0xbd, ++ 0xcd, 0x58, 0x3e, 0xa6, 0xc3, 0x08, 0x8f, 0x0d, 0x0d, 0xf8, 0xfe, 0xdf, ++ 0x51, 0xcf, 0x5f, 0xc3, 0x7f, 0x07, 0x3d, 0x60, 0x2c, 0x7f, 0x58, 0xe8, ++ 0xeb, 0x6b, 0x50, 0x5f, 0xe3, 0xbe, 0xd5, 0xb7, 0x78, 0x5e, 0x88, 0x0d, ++ 0x46, 0x74, 0x81, 0xeb, 0xd9, 0x88, 0xde, 0x03, 0x39, 0x90, 0xdd, 0x19, ++ 0xae, 0x44, 0xb1, 0x99, 0x75, 0x9b, 0x66, 0xc8, 0x27, 0x19, 0x1e, 0xa3, ++ 0x0f, 0xfd, 0x15, 0x3a, 0xe1, 0xcb, 0xdf, 0xad, 0x99, 0x51, 0xcf, 0xca, ++ 0xb8, 0x4c, 0xac, 0x1c, 0x56, 0xee, 0x3c, 0xbd, 0x01, 0xd7, 0x4b, 0x65, ++ 0x7c, 0xbc, 0x8e, 0xf2, 0x13, 0xe3, 0x18, 0x01, 0x2b, 0xf7, 0xcb, 0x03, ++ 0xe0, 0xa7, 0xdc, 0xa7, 0x79, 0xfe, 0x54, 0x83, 0x7e, 0x55, 0xb7, 0x4a, ++ 0xf9, 0x52, 0x92, 0x4e, 0xb1, 0x74, 0x9d, 0x5a, 0x2e, 0xed, 0x5c, 0xff, ++ 0x1f, 0xa7, 0x90, 0x7f, 0xdc, 0x5b, 0x8c, 0xfe, 0x3a, 0xf6, 0x17, 0x88, ++ 0xea, 0x4f, 0xc6, 0x57, 0x0e, 0x4d, 0x0f, 0xbc, 0x89, 0xf5, 0x64, 0x9c, ++ 0xe5, 0xcc, 0x1c, 0xed, 0x79, 0x45, 0x8f, 0xc4, 0x51, 0x64, 0x5c, 0xc0, ++ 0x3b, 0x85, 0xaf, 0x9f, 0xad, 0x9e, 0xd7, 0x1b, 0x8e, 0xc1, 0x38, 0x8e, ++ 0x9d, 0xb0, 0x52, 0x0c, 0x64, 0x96, 0xfa, 0x72, 0x77, 0x13, 0xe6, 0x43, ++ 0x65, 0x6b, 0x24, 0xbf, 0xdc, 0x93, 0xd7, 0xfd, 0x14, 0xfd, 0xef, 0xaa, ++ 0x3f, 0x43, 0x39, 0xcc, 0xe3, 0x98, 0xae, 0x0f, 0x23, 0xbb, 0xbc, 0xdb, ++ 0x4c, 0x71, 0x80, 0x2a, 0xc1, 0xc7, 0x55, 0xc2, 0xdf, 0x92, 0xf1, 0x96, ++ 0xcf, 0x84, 0x3e, 0xe9, 0x9b, 0x22, 0xed, 0x9c, 0x60, 0x1c, 0xf7, 0xeb, ++ 0xc3, 0x71, 0x68, 0xbf, 0x8e, 0xdb, 0x03, 0xb2, 0xd7, 0x48, 0xcf, 0x78, ++ 0x5e, 0xce, 0xe3, 0x6a, 0xe3, 0x3b, 0x63, 0xcb, 0x7d, 0x94, 0xa7, 0x74, ++ 0x99, 0xe0, 0x17, 0xcc, 0x2f, 0xab, 0x4c, 0xc3, 0xb4, 0x2e, 0x0e, 0x77, ++ 0x32, 0x25, 0xd9, 0x0d, 0x74, 0x9c, 0xb8, 0xb8, 0xf7, 0x28, 0xba, 0x0e, ++ 0x85, 0x2f, 0x3e, 0x1f, 0x87, 0x7c, 0xb8, 0xcf, 0xce, 0xed, 0xb5, 0xa7, ++ 0x04, 0x3f, 0xa4, 0x31, 0xc5, 0x83, 0x79, 0xf8, 0x69, 0x7b, 0x1c, 0x9e, ++ 0x10, 0xd4, 0x73, 0xaa, 0x6c, 0x5f, 0x0f, 0xcc, 0xc3, 0x73, 0x5c, 0x33, ++ 0xe4, 0x93, 0x4d, 0x38, 0x68, 0x84, 0x0b, 0x59, 0x14, 0x9c, 0x8b, 0xe3, ++ 0x30, 0xc2, 0xf7, 0xea, 0x0d, 0xb8, 0xc5, 0xcc, 0xee, 0xad, 0x01, 0x9b, ++ 0x1c, 0xa6, 0xec, 0x28, 0x17, 0x79, 0x47, 0xf9, 0x2c, 0x1f, 0xf9, 0x6b, ++ 0x96, 0xea, 0x28, 0x42, 0xff, 0xa9, 0xb1, 0xd2, 0xc1, 0x10, 0xaf, 0xd6, ++ 0xb7, 0xc7, 0xfc, 0xb8, 0x07, 0xe5, 0xc5, 0x6b, 0xfc, 0x7e, 0x2a, 0x77, ++ 0xbc, 0xfe, 0x40, 0x35, 0x7c, 0xef, 0x7e, 0x29, 0xd9, 0xd3, 0xac, 0x47, ++ 0xe8, 0xff, 0x14, 0xf8, 0xd1, 0xa8, 0x1f, 0x7e, 0x74, 0xc1, 0xc3, 0x5a, ++ 0xcd, 0x51, 0x71, 0x2d, 0xa0, 0x67, 0x1e, 0xed, 0x23, 0xbb, 0xa9, 0xbc, ++ 0x13, 0xe8, 0x8a, 0xf0, 0x7e, 0xf0, 0xab, 0xf3, 0x68, 0x1f, 0xb9, 0x80, ++ 0xde, 0xff, 0x12, 0xfc, 0x6a, 0x84, 0xbb, 0xc0, 0xaf, 0xc6, 0xe7, 0x6f, ++ 0xc0, 0xaf, 0xc6, 0xf7, 0x07, 0xc1, 0xaf, 0x46, 0xd8, 0x37, 0xbd, 0x72, ++ 0x2c, 0xc6, 0xc3, 0xde, 0x84, 0x7a, 0xc8, 0x17, 0x71, 0x45, 0x07, 0x6c, ++ 0xa3, 0x30, 0x9e, 0xed, 0x50, 0xe9, 0x7c, 0x4d, 0x2c, 0x3f, 0x6e, 0x69, ++ 0x78, 0xd7, 0x71, 0x1d, 0xc8, 0xaa, 0xa9, 0x1d, 0xd9, 0x73, 0x53, 0x91, ++ 0x1f, 0x6e, 0x53, 0xe9, 0x1c, 0xf2, 0xd8, 0xdf, 0x64, 0xcf, 0x45, 0xbf, ++ 0x35, 0x3a, 0xae, 0x16, 0x1d, 0x57, 0x8c, 0xc4, 0xd5, 0x7a, 0x15, 0x19, ++ 0x57, 0xb3, 0x02, 0x7d, 0x5e, 0x98, 0xac, 0xf3, 0xbc, 0x45, 0x19, 0x5f, ++ 0x0b, 0xf0, 0xf8, 0xda, 0x57, 0xb7, 0xe3, 0x93, 0xed, 0x50, 0xbc, 0x72, ++ 0x40, 0x3b, 0xfd, 0x71, 0x4b, 0x5b, 0xf0, 0xbd, 0x02, 0x3c, 0x9a, 0xa5, ++ 0xb0, 0x04, 0x78, 0xff, 0xf1, 0x1d, 0xff, 0xf9, 0x04, 0xea, 0x99, 0xd4, ++ 0x8c, 0xc0, 0x54, 0x9c, 0x77, 0xdd, 0xa4, 0x77, 0x2c, 0xdc, 0xee, 0xe6, ++ 0xe7, 0xa6, 0xb2, 0xc4, 0x3a, 0xda, 0x61, 0xe7, 0x79, 0xa3, 0x59, 0x22, ++ 0xdf, 0x27, 0x36, 0x5e, 0x39, 0x7d, 0xe6, 0xdb, 0xb7, 0xa6, 0x02, 0xca, ++ 0xe6, 0x97, 0x8f, 0x59, 0x86, 0xfe, 0xff, 0xf4, 0x5b, 0xde, 0x2e, 0xce, ++ 0x01, 0xf8, 0x87, 0xe5, 0x3f, 0x58, 0x86, 0x79, 0xbd, 0xd3, 0x7f, 0xf6, ++ 0xf6, 0x33, 0x99, 0x80, 0xa7, 0x7f, 0xfe, 0x66, 0x11, 0x2f, 0x7f, 0xf0, ++ 0xed, 0xb3, 0x59, 0x1e, 0xcc, 0xbb, 0xf8, 0xde, 0x32, 0xcc, 0xf3, 0x75, ++ 0x25, 0x73, 0xfd, 0xb6, 0x43, 0x9c, 0x3f, 0x92, 0xf8, 0xbd, 0x5e, 0xac, ++ 0xf7, 0xfa, 0x8d, 0x8f, 0x92, 0x1e, 0x07, 0x3b, 0x83, 0x21, 0x3e, 0x5a, ++ 0xd2, 0xfc, 0xa4, 0x5f, 0x3f, 0x49, 0xe9, 0x73, 0xad, 0x80, 0xfa, 0xf5, ++ 0xa9, 0x7d, 0x69, 0x2b, 0x2f, 0xa2, 0x0f, 0xea, 0x37, 0x3e, 0x41, 0xdf, ++ 0xef, 0x50, 0x3c, 0xa7, 0x42, 0x38, 0xee, 0x29, 0x36, 0x9e, 0x5f, 0x2a, ++ 0xf4, 0xcd, 0x19, 0xc1, 0xbb, 0x52, 0xdf, 0x34, 0xda, 0x39, 0x28, 0xc7, ++ 0xc3, 0x58, 0x3a, 0xbd, 0x7f, 0x50, 0xc4, 0x81, 0x98, 0x2f, 0x93, 0xbe, ++ 0x4b, 0xb6, 0x73, 0xf8, 0x98, 0xab, 0x9c, 0xf4, 0xd2, 0xfd, 0x55, 0xfa, ++ 0xab, 0x3a, 0xdf, 0x9f, 0x24, 0xff, 0xf8, 0x98, 0xeb, 0xb2, 0xef, 0x63, ++ 0xfe, 0x5c, 0xcb, 0x1c, 0x8d, 0xf6, 0x0d, 0x1f, 0x74, 0x78, 0xed, 0xa8, ++ 0xb7, 0x36, 0x8b, 0x79, 0x41, 0xfb, 0x41, 0xca, 0x53, 0x99, 0x65, 0xa3, ++ 0xfd, 0x1c, 0x96, 0xb2, 0x98, 0xd6, 0x75, 0x92, 0xec, 0x27, 0xa5, 0x86, ++ 0xf2, 0x0e, 0x92, 0xc4, 0x78, 0x8e, 0x97, 0xc7, 0x85, 0x31, 0x3e, 0xd0, ++ 0x52, 0x6d, 0xdb, 0x8d, 0x72, 0xf4, 0x07, 0x8e, 0x91, 0xd4, 0x5e, 0x4b, ++ 0x99, 0x25, 0x88, 0x71, 0x19, 0x09, 0x6f, 0x2a, 0x87, 0xf1, 0x00, 0x3e, ++ 0x13, 0x5d, 0x49, 0xb9, 0xd4, 0x9f, 0x90, 0x73, 0x32, 0x6e, 0xcc, 0x70, ++ 0xf7, 0x0c, 0xda, 0xad, 0x12, 0xd3, 0xae, 0x92, 0xf9, 0x0c, 0x36, 0xf3, ++ 0xe9, 0x68, 0xfb, 0xda, 0xc1, 0x7a, 0x88, 0x7f, 0x3c, 0x26, 0x5d, 0x45, ++ 0xfb, 0x30, 0x79, 0xaa, 0x4e, 0xf2, 0xab, 0x98, 0x79, 0x16, 0xe3, 0x7b, ++ 0x8b, 0xd2, 0x10, 0x44, 0x66, 0xc4, 0x79, 0x98, 0xa2, 0xe7, 0xa1, 0x57, ++ 0x1b, 0xe7, 0xa1, 0xcf, 0x32, 0xcc, 0x43, 0x69, 0xb4, 0x85, 0xd1, 0x2e, ++ 0x6c, 0x99, 0x05, 0xf3, 0x80, 0xfa, 0xc7, 0x9d, 0xa5, 0x34, 0xde, 0x58, ++ 0xba, 0xc9, 0xf9, 0x7c, 0xb7, 0x9c, 0xf3, 0x73, 0xec, 0x3c, 0x99, 0xd8, ++ 0x37, 0x92, 0xe7, 0x04, 0xaa, 0xdc, 0x15, 0x07, 0x70, 0x5c, 0xb3, 0x4c, ++ 0xbe, 0x56, 0x1c, 0xd7, 0xf3, 0xff, 0xa8, 0x49, 0xc1, 0x0b, 0x23, 0x67, ++ 0xb3, 0x06, 0x0d, 0xdf, 0x8f, 0x8a, 0xe4, 0xed, 0xb4, 0x7e, 0x9d, 0xbc, ++ 0x88, 0xe9, 0xef, 0x2a, 0x7c, 0x9f, 0xeb, 0x16, 0x0b, 0xcd, 0x6f, 0xe7, ++ 0x34, 0x8e, 0x87, 0x87, 0x2d, 0xa1, 0x5c, 0x3a, 0xc0, 0xa1, 0x85, 0x32, ++ 0x70, 0x7f, 0x77, 0x28, 0x3e, 0xee, 0x2a, 0xe7, 0x72, 0x3f, 0xc2, 0xc7, ++ 0x3e, 0x86, 0xeb, 0xab, 0x25, 0xc9, 0xc7, 0xf9, 0xd8, 0xdd, 0xe7, 0x6a, ++ 0x46, 0x3e, 0x4e, 0xec, 0x4b, 0xdb, 0x44, 0xf3, 0x0a, 0x0f, 0x4a, 0x9f, ++ 0x58, 0x7e, 0x8e, 0xa5, 0xd7, 0x31, 0xbc, 0x13, 0x81, 0xf4, 0x62, 0x50, ++ 0x45, 0xfc, 0x7f, 0x15, 0x7d, 0x25, 0x5d, 0x63, 0xf7, 0xbd, 0x24, 0xbf, ++ 0x24, 0x4f, 0x75, 0x4b, 0x7a, 0xa7, 0xd3, 0x3c, 0xc3, 0x39, 0x86, 0xfd, ++ 0x40, 0x68, 0x41, 0x1f, 0x6c, 0x1f, 0x7c, 0x33, 0xb4, 0xa7, 0x47, 0xed, ++ 0x9f, 0x59, 0xd2, 0xfd, 0x64, 0x67, 0x9b, 0x53, 0x3c, 0x05, 0x18, 0x6f, ++ 0x6e, 0xf9, 0x52, 0x1d, 0xf4, 0x7c, 0xe4, 0x59, 0x81, 0xa7, 0x66, 0x57, ++ 0x1c, 0xd9, 0xdf, 0x2d, 0x2e, 0x6e, 0x7f, 0x1f, 0x71, 0x5d, 0x69, 0xf0, ++ 0x9b, 0xaa, 0xc1, 0x8f, 0xc2, 0xfd, 0x62, 0x35, 0x99, 0x75, 0xe2, 0xba, ++ 0x52, 0x13, 0x96, 0x52, 0x1c, 0x4d, 0x1d, 0x86, 0x96, 0x17, 0xb1, 0x85, ++ 0xd1, 0xae, 0x4d, 0x98, 0xcb, 0xed, 0x5a, 0xb7, 0xf7, 0xa2, 0xe7, 0xa4, ++ 0xb4, 0x5e, 0xd5, 0x70, 0x7f, 0xda, 0x00, 0xbb, 0x36, 0xe9, 0x4a, 0x6e, ++ 0xd7, 0xba, 0x2c, 0x64, 0xd7, 0xee, 0x70, 0x5a, 0x16, 0xef, 0x1a, 0x44, ++ 0xee, 0xbc, 0x54, 0xce, 0xfd, 0x9f, 0x23, 0x38, 0x8f, 0x41, 0xfc, 0x46, ++ 0xf0, 0x17, 0x29, 0x9e, 0x29, 0xfd, 0x45, 0x8b, 0x3b, 0x40, 0x7e, 0x9f, ++ 0x9c, 0xe7, 0x4b, 0x82, 0xdf, 0x65, 0x7d, 0xab, 0xbb, 0x81, 0x61, 0x7c, ++ 0x4d, 0xb5, 0x78, 0x74, 0xb4, 0x63, 0x55, 0x71, 0x8e, 0x15, 0xf3, 0x97, ++ 0x0b, 0xa2, 0xec, 0x02, 0xd9, 0xff, 0x0b, 0xe5, 0xfc, 0x1c, 0xfe, 0x33, ++ 0xd3, 0x39, 0xfd, 0x64, 0x1e, 0xfb, 0xf4, 0x57, 0x95, 0x86, 0xc1, 0xf0, ++ 0xae, 0x4d, 0x95, 0x76, 0xc9, 0xe0, 0x7c, 0xf7, 0x2f, 0xf0, 0x0d, 0xc9, ++ 0x09, 0xaf, 0xc3, 0xe2, 0x43, 0xbb, 0xc3, 0xeb, 0x48, 0xa7, 0x7c, 0xef, ++ 0xa1, 0xbe, 0xc3, 0xad, 0xea, 0x53, 0x49, 0x11, 0x39, 0xe3, 0xf9, 0xb2, ++ 0x54, 0x25, 0x7d, 0xa4, 0x79, 0x28, 0x7f, 0xbf, 0xd3, 0xdc, 0xfb, 0xcc, ++ 0xab, 0xe8, 0x0f, 0x3e, 0xef, 0x20, 0xbd, 0x23, 0xed, 0x71, 0x30, 0x56, ++ 0x29, 0xff, 0x18, 0xfc, 0x5e, 0x9f, 0x07, 0x1a, 0xd9, 0xf7, 0x4f, 0x58, ++ 0x89, 0xa6, 0x88, 0xbf, 0x0b, 0xfe, 0x57, 0xf6, 0xd4, 0xa8, 0xfd, 0xc7, ++ 0xa3, 0x8d, 0x27, 0x69, 0xff, 0x27, 0xd6, 0x4e, 0x8d, 0x8d, 0x27, 0xf4, ++ 0xaf, 0x73, 0xd7, 0x13, 0xb9, 0x7c, 0x1c, 0xa1, 0x0c, 0x5c, 0xb7, 0x4a, ++ 0x63, 0xd9, 0x30, 0xe4, 0xa7, 0xd8, 0x75, 0x2e, 0x9f, 0xd9, 0xe9, 0xc5, ++ 0x97, 0xad, 0x82, 0x71, 0x65, 0x67, 0x14, 0xd1, 0x53, 0xbe, 0x7f, 0x84, ++ 0xa9, 0x73, 0x06, 0xbb, 0x1f, 0xad, 0xa4, 0x1f, 0xff, 0x5c, 0x3f, 0x8f, ++ 0x85, 0xce, 0x12, 0x54, 0xd2, 0xcb, 0x25, 0x53, 0x81, 0x8e, 0x1f, 0xdf, ++ 0xf6, 0x7a, 0x9a, 0x47, 0xc7, 0x73, 0xb4, 0x9f, 0x92, 0x7e, 0x3e, 0xd3, ++ 0x50, 0x96, 0xb0, 0x05, 0xf9, 0xbc, 0x20, 0x89, 0xe4, 0x6a, 0x96, 0x38, ++ 0x1f, 0x26, 0xc7, 0x93, 0x75, 0xf3, 0x91, 0xc4, 0x24, 0x07, 0xe6, 0xe9, ++ 0xf5, 0x8d, 0xc5, 0xfc, 0xb6, 0x50, 0x93, 0xff, 0xb2, 0x6a, 0x33, 0xf9, ++ 0x17, 0xbe, 0xc1, 0xc6, 0x1b, 0x98, 0xca, 0xf5, 0x11, 0x0b, 0x8f, 0x60, ++ 0xd1, 0xf7, 0xff, 0xe8, 0x29, 0x3d, 0x57, 0x8c, 0x01, 0x7c, 0xeb, 0x0e, ++ 0x93, 0x47, 0xa7, 0x75, 0xe5, 0x26, 0xbd, 0x27, 0xd7, 0x7f, 0xa5, 0x96, ++ 0x58, 0xed, 0x06, 0xfe, 0xce, 0x6e, 0x62, 0x1e, 0x87, 0x8e, 0x57, 0x23, ++ 0xbb, 0x29, 0x1e, 0x96, 0x7d, 0x41, 0x25, 0x3e, 0xcb, 0x3e, 0xc6, 0xef, ++ 0x6f, 0x1e, 0x91, 0xd2, 0xa7, 0xe0, 0xbd, 0x5b, 0xfd, 0xfd, 0x88, 0x3c, ++ 0x26, 0xb9, 0xaf, 0xf2, 0x59, 0x43, 0x35, 0xad, 0xcb, 0xec, 0x61, 0x8c, ++ 0xf5, 0x50, 0xdc, 0xd2, 0x4f, 0xfb, 0x0f, 0x9f, 0xa5, 0x84, 0x17, 0xe0, ++ 0xba, 0xfe, 0xec, 0x21, 0x3e, 0xa2, 0xec, 0x47, 0x8d, 0xe5, 0xa0, 0x6b, ++ 0x29, 0x5e, 0xbd, 0xfa, 0xb6, 0xb8, 0x90, 0x0e, 0x4d, 0x8f, 0xb8, 0x0b, ++ 0xc6, 0x87, 0xe3, 0xf9, 0xa9, 0xc2, 0xb2, 0x72, 0x71, 0x1c, 0xc7, 0x72, ++ 0xb7, 0x60, 0xbc, 0xe7, 0x57, 0xf1, 0x14, 0xef, 0x51, 0x3b, 0xf2, 0x28, ++ 0x5e, 0xb3, 0x26, 0x23, 0x30, 0x07, 0xf9, 0xe1, 0xe3, 0x90, 0xfe, 0x6d, ++ 0xd3, 0x28, 0x31, 0x59, 0xa8, 0x57, 0xf7, 0x9d, 0x38, 0xba, 0x2f, 0x60, ++ 0x87, 0xd2, 0x73, 0x05, 0xe5, 0x4b, 0xdc, 0x6e, 0x62, 0x8f, 0x0f, 0x12, ++ 0x8f, 0x5a, 0x33, 0x95, 0xfb, 0x89, 0xb5, 0x82, 0xcf, 0xb3, 0xd3, 0x4b, ++ 0x39, 0xbd, 0xd3, 0x4b, 0x2e, 0x5b, 0x95, 0x7c, 0xe9, 0xeb, 0xe8, 0x87, ++ 0x42, 0x5e, 0x6f, 0x4d, 0x08, 0xd1, 0xfe, 0x9c, 0xcc, 0xfb, 0xba, 0xd7, ++ 0x3c, 0x38, 0x5f, 0xbd, 0x3e, 0xd5, 0x24, 0xe8, 0x94, 0x63, 0xc8, 0x03, ++ 0xb3, 0xa1, 0xf7, 0x03, 0xfc, 0xa2, 0x2a, 0xc2, 0xde, 0xdb, 0xf3, 0xd4, ++ 0x53, 0x4f, 0xa5, 0x31, 0x7e, 0x84, 0x70, 0x24, 0xdf, 0x87, 0x8c, 0xde, ++ 0x2f, 0x8e, 0xcb, 0x0b, 0x51, 0x61, 0x9c, 0xc7, 0x47, 0x72, 0x47, 0x71, ++ 0xfb, 0xb8, 0x7c, 0x75, 0x37, 0xa4, 0x07, 0x81, 0xbf, 0xb7, 0x7c, 0xa1, ++ 0x0e, 0xda, 0xff, 0xa3, 0x82, 0x7e, 0xcd, 0xd9, 0xdf, 0x4e, 0xc7, 0xfa, ++ 0xd5, 0xba, 0x87, 0x9e, 0x47, 0xb2, 0x4b, 0x4f, 0xac, 0x00, 0xfc, 0x39, ++ 0x1c, 0x16, 0x66, 0x8d, 0x92, 0xbf, 0x92, 0x4f, 0x62, 0xf5, 0x7b, 0xa3, ++ 0x73, 0xe4, 0x45, 0xfd, 0x77, 0x0b, 0xc8, 0x61, 0xfd, 0x22, 0xf1, 0x05, ++ 0x8b, 0xc8, 0xef, 0xda, 0x7c, 0x74, 0x8a, 0x0d, 0xef, 0x07, 0xdd, 0xec, ++ 0xf0, 0xf6, 0xa0, 0xdd, 0xb5, 0xd9, 0x91, 0xe2, 0xa5, 0xf8, 0xbb, 0x03, ++ 0xe4, 0x45, 0x54, 0x3c, 0xca, 0xe1, 0x78, 0x81, 0xf8, 0xd0, 0xe1, 0xe1, ++ 0x71, 0x3a, 0x07, 0xca, 0x5d, 0x8c, 0x47, 0xe1, 0xfc, 0x0b, 0x71, 0xfc, ++ 0x2f, 0xd0, 0xfc, 0x65, 0xbd, 0x26, 0x21, 0x7f, 0x1c, 0x9e, 0x30, 0xed, ++ 0x93, 0xda, 0x3d, 0xdb, 0xa8, 0x9e, 0x4d, 0xf3, 0xd3, 0xf9, 0x38, 0x5b, ++ 0x0a, 0xa3, 0xbc, 0x05, 0x9b, 0x9b, 0xdf, 0x2b, 0x1a, 0x97, 0x67, 0x62, ++ 0xb6, 0x41, 0xe4, 0xf0, 0xc6, 0xa9, 0xdc, 0xff, 0xdb, 0x5c, 0xe8, 0xed, ++ 0xa9, 0xa2, 0xf1, 0x69, 0x78, 0x6c, 0x8a, 0x6d, 0x4e, 0xf7, 0xa6, 0x93, ++ 0x1e, 0x44, 0x3c, 0xc3, 0xf7, 0xc7, 0x9c, 0xa5, 0x09, 0xd1, 0xf8, 0x79, ++ 0x56, 0xc8, 0x83, 0x96, 0x23, 0x7c, 0x7e, 0xfe, 0x8d, 0x19, 0xee, 0xea, ++ 0x62, 0xf4, 0x67, 0xfd, 0x7b, 0x51, 0x1e, 0x6c, 0x76, 0xac, 0xb4, 0xe1, ++ 0x7d, 0x5d, 0xaa, 0xb3, 0xe4, 0xa2, 0xed, 0x1c, 0x12, 0xf4, 0x8a, 0xb4, ++ 0xb3, 0x3d, 0xad, 0x3a, 0x99, 0xda, 0x79, 0x16, 0xf9, 0x5f, 0x75, 0x7a, ++ 0xdd, 0xd8, 0x8e, 0x59, 0xdc, 0x8f, 0x3a, 0x40, 0x8f, 0x89, 0x71, 0x7c, ++ 0xd3, 0x38, 0x1a, 0x60, 0x90, 0xf2, 0x74, 0x08, 0x2f, 0x44, 0x98, 0xb0, ++ 0x81, 0x2e, 0xb1, 0x4f, 0x07, 0xc6, 0xc3, 0x92, 0x07, 0xfb, 0x8e, 0xcb, ++ 0xc5, 0x5c, 0xe1, 0xb7, 0x80, 0x5c, 0xfc, 0x13, 0x8e, 0xbf, 0xae, 0xf0, ++ 0x9d, 0x17, 0xf8, 0x1a, 0xe3, 0xfe, 0x4a, 0xd2, 0x15, 0x3c, 0x0f, 0xe8, ++ 0x0c, 0x70, 0x36, 0xde, 0x4b, 0x15, 0x9b, 0x67, 0x11, 0x6b, 0xbf, 0x48, ++ 0xbd, 0x23, 0xf5, 0x10, 0xb4, 0xa3, 0x62, 0x3b, 0x0f, 0xa3, 0xfd, 0x32, ++ 0x26, 0xb2, 0x8e, 0x64, 0x1c, 0x27, 0xb3, 0xd6, 0xcf, 0xd7, 0x4b, 0x8a, ++ 0x9f, 0xf8, 0x05, 0xec, 0x19, 0x1d, 0xd7, 0x8b, 0x2a, 0xf2, 0xf8, 0x06, ++ 0xe8, 0x81, 0x0a, 0x8e, 0x3f, 0xc5, 0x55, 0xa6, 0xa3, 0xbe, 0xa8, 0x3e, ++ 0xdf, 0x9b, 0x89, 0xdf, 0x1d, 0x72, 0x9e, 0xca, 0xe4, 0xf6, 0xab, 0x71, ++ 0x7f, 0xf9, 0xf8, 0x3f, 0x9e, 0xb0, 0x63, 0xf9, 0x67, 0xb5, 0x55, 0x17, ++ 0xb5, 0x53, 0xe4, 0x7e, 0xf2, 0x50, 0xfb, 0xc8, 0xae, 0xef, 0x7e, 0xb8, ++ 0x21, 0xda, 0x4e, 0x19, 0x6a, 0x5f, 0xf9, 0xab, 0xf6, 0x93, 0x8f, 0xba, ++ 0x2c, 0x14, 0xb7, 0xdb, 0xa9, 0x18, 0xcf, 0xbf, 0x0f, 0xab, 0xe0, 0xf2, ++ 0x2f, 0x49, 0xcc, 0x6f, 0xd7, 0x94, 0x80, 0xbd, 0x22, 0x15, 0xeb, 0xf9, ++ 0x3d, 0xfc, 0x40, 0x33, 0x8f, 0xcb, 0xbc, 0x32, 0x3d, 0xe0, 0xa8, 0xc0, ++ 0x38, 0x5a, 0xbb, 0x85, 0x05, 0x91, 0xef, 0xfe, 0x51, 0x9a, 0x1e, 0x88, ++ 0x6a, 0xe7, 0x52, 0xf1, 0x2c, 0xe3, 0xef, 0xc3, 0x85, 0x1d, 0x35, 0xdc, ++ 0xf1, 0x84, 0x82, 0xeb, 0x74, 0x78, 0x6d, 0x48, 0xc1, 0xf8, 0x79, 0x66, ++ 0x6d, 0xa7, 0xe2, 0xbb, 0x48, 0xbd, 0xff, 0x12, 0xeb, 0x59, 0xd6, 0x37, ++ 0x8b, 0xf6, 0x67, 0x68, 0x7d, 0x2a, 0xea, 0xab, 0x19, 0x6e, 0xae, 0x17, ++ 0x33, 0xcf, 0x69, 0xac, 0x20, 0x4a, 0xee, 0xf4, 0x4e, 0xe5, 0x76, 0x94, ++ 0x59, 0xd8, 0xed, 0xae, 0xa3, 0x4f, 0xda, 0xb1, 0xbd, 0xa3, 0x26, 0x7f, ++ 0x7b, 0x3e, 0xea, 0x07, 0x97, 0x49, 0x7f, 0x3c, 0x6a, 0xbd, 0x9b, 0x6f, ++ 0xf6, 0xda, 0xaa, 0xa2, 0xe6, 0xd7, 0x82, 0xfb, 0x42, 0x83, 0xd0, 0xd1, ++ 0x57, 0x21, 0xf5, 0x60, 0x98, 0xf4, 0xb7, 0xd4, 0xb7, 0x66, 0xa9, 0x27, ++ 0x52, 0x34, 0x83, 0x9e, 0xa8, 0x8f, 0xe7, 0x7c, 0x2c, 0xed, 0x9d, 0xfa, ++ 0x72, 0xee, 0x07, 0xd5, 0xc7, 0x73, 0x7f, 0xfc, 0xc5, 0xf4, 0xc0, 0x14, ++ 0xc4, 0xf3, 0x27, 0xe5, 0x1f, 0xce, 0x1f, 0xa5, 0xe3, 0x39, 0xd8, 0xb0, ++ 0x39, 0x25, 0xf7, 0xab, 0xf7, 0x47, 0xfa, 0xed, 0x1b, 0x53, 0x68, 0x85, ++ 0xf4, 0x63, 0x90, 0xff, 0x3b, 0xcd, 0x7a, 0x57, 0x2f, 0xd9, 0x59, 0x2e, ++ 0x3a, 0x3f, 0x21, 0xed, 0xaa, 0xa2, 0x9f, 0x29, 0xa3, 0xb0, 0x9e, 0x47, ++ 0xf1, 0x91, 0xfd, 0x37, 0x09, 0x6f, 0x1a, 0x51, 0x71, 0xab, 0x96, 0xdb, ++ 0x83, 0x60, 0x67, 0x5d, 0x59, 0x91, 0xca, 0xaf, 0xe4, 0x8f, 0xe6, 0x03, ++ 0x16, 0x73, 0xaf, 0xe0, 0x50, 0xf3, 0xf4, 0xe2, 0x7d, 0xa6, 0xa9, 0x18, ++ 0x0f, 0xec, 0xa1, 0x78, 0xed, 0x7d, 0xe7, 0x95, 0x41, 0xcf, 0x41, 0xdc, ++ 0x57, 0x21, 0xed, 0xa5, 0xfe, 0xfd, 0x41, 0x43, 0xdc, 0x35, 0x53, 0xe8, ++ 0xbd, 0x4c, 0x51, 0xae, 0x63, 0xdc, 0x35, 0x17, 0xf7, 0xbb, 0x8c, 0x71, ++ 0xd1, 0xe2, 0x6e, 0x23, 0x3c, 0xa9, 0xc7, 0x08, 0x4f, 0x3e, 0x11, 0x13, ++ 0x67, 0x0d, 0xfa, 0xfe, 0x03, 0xcf, 0xf9, 0x61, 0x3e, 0x01, 0x36, 0xba, ++ 0x03, 0xd6, 0x1f, 0xca, 0x8f, 0x55, 0x62, 0x1f, 0x34, 0x2b, 0x18, 0xaa, ++ 0xc4, 0xf3, 0xe1, 0xd9, 0xac, 0x93, 0xf6, 0x1b, 0x33, 0x6b, 0x93, 0x0c, ++ 0xf8, 0x9e, 0xae, 0x8a, 0x3c, 0x0c, 0xbc, 0xde, 0x58, 0x8e, 0x13, 0x7e, ++ 0x32, 0xb5, 0x79, 0x1f, 0xe0, 0xf7, 0x9b, 0xfa, 0xe7, 0x15, 0x64, 0x86, ++ 0xbc, 0xfe, 0xea, 0x55, 0xdf, 0xc6, 0xab, 0x30, 0xd9, 0x36, 0x7e, 0xbe, ++ 0xcf, 0x06, 0x9d, 0x23, 0xbe, 0xd6, 0x5c, 0xb1, 0x70, 0x16, 0xd2, 0x7b, ++ 0x40, 0xfc, 0xb6, 0xc1, 0x18, 0xb7, 0xcd, 0x8c, 0x2e, 0x07, 0x3c, 0xac, ++ 0xde, 0x61, 0x3c, 0x27, 0xe8, 0xf7, 0x15, 0x91, 0x7f, 0xb0, 0xe8, 0x5b, ++ 0xc6, 0xf3, 0x82, 0x32, 0x1f, 0x1d, 0xe7, 0x9b, 0xe9, 0x1d, 0xd8, 0xff, ++ 0x57, 0xf7, 0x0b, 0xff, 0x92, 0x06, 0xf6, 0x2f, 0xdb, 0x7d, 0x18, 0xe4, ++ 0x12, 0xc9, 0x5d, 0x71, 0x8f, 0x70, 0x36, 0x16, 0x61, 0x3b, 0x5a, 0x58, ++ 0xc1, 0x7d, 0xef, 0xe1, 0x0d, 0x8c, 0xee, 0x13, 0xce, 0xbc, 0x8d, 0xf9, ++ 0x06, 0xdb, 0x3f, 0x38, 0x20, 0xf0, 0x15, 0x8b, 0x67, 0x16, 0x9c, 0x41, ++ 0xf8, 0x9b, 0x29, 0xde, 0x0d, 0x77, 0xf0, 0x3c, 0xd5, 0xe1, 0xb7, 0x99, ++ 0xc8, 0x4e, 0x1c, 0x0e, 0xf2, 0x82, 0xfe, 0xce, 0xc0, 0x3a, 0xf0, 0x35, ++ 0x00, 0xce, 0x5c, 0xa7, 0x93, 0x9d, 0x79, 0x75, 0xad, 0x89, 0xa1, 0xde, ++ 0x60, 0xe7, 0x9b, 0x0c, 0xdf, 0xc3, 0x70, 0x29, 0xbe, 0x2a, 0xe9, 0xfe, ++ 0xb0, 0x83, 0xe7, 0xe1, 0x66, 0xd7, 0xb1, 0x90, 0x09, 0xe7, 0xd3, 0x70, ++ 0x19, 0xad, 0x33, 0x1a, 0xd7, 0xc8, 0x08, 0x3f, 0x00, 0xbe, 0x0c, 0xf7, ++ 0x09, 0x5c, 0x5d, 0x66, 0x3c, 0xa7, 0x9b, 0x1d, 0x73, 0x3e, 0x57, 0xf2, ++ 0x41, 0x66, 0xcc, 0xfb, 0x6b, 0x2a, 0xdc, 0x86, 0x75, 0x01, 0xfa, 0xef, ++ 0x40, 0x05, 0xc9, 0x0f, 0xae, 0x17, 0x47, 0xa3, 0x5e, 0x84, 0x21, 0x7d, ++ 0x3c, 0xe5, 0xc4, 0x13, 0x98, 0x6f, 0x37, 0x7d, 0x13, 0xe3, 0xf7, 0xd9, ++ 0x24, 0xc6, 0xf1, 0xfb, 0x6c, 0x22, 0xfb, 0x13, 0xea, 0x05, 0xe0, 0xd7, ++ 0xa3, 0xb6, 0x99, 0x05, 0x68, 0xc7, 0x6c, 0x75, 0xc7, 0x99, 0x30, 0x0f, ++ 0xe2, 0x50, 0x62, 0xef, 0x4f, 0x58, 0x22, 0xf8, 0x8d, 0x15, 0x2c, 0x58, ++ 0x9d, 0x85, 0xf7, 0x1c, 0xf6, 0x8d, 0x53, 0x00, 0x7e, 0xbd, 0xa2, 0x7e, ++ 0x67, 0xfb, 0x34, 0x28, 0xb7, 0xf7, 0x3d, 0x8d, 0xc1, 0x65, 0x87, 0xe3, ++ 0xdb, 0x37, 0xcc, 0xc9, 0x8e, 0xc0, 0x2e, 0xd7, 0x3d, 0x04, 0xb3, 0x32, ++ 0xa6, 0xe3, 0x7d, 0x40, 0x98, 0x73, 0x8a, 0xeb, 0x2e, 0xce, 0x7d, 0xe5, ++ 0x1e, 0xbc, 0xe7, 0x3a, 0xae, 0xd0, 0x41, 0xc1, 0xca, 0x38, 0x66, 0xbc, ++ 0x77, 0xa7, 0xb5, 0x5c, 0xbf, 0x17, 0xf3, 0x48, 0x5a, 0x47, 0x9b, 0xc4, ++ 0xf9, 0xe8, 0xa8, 0x72, 0x98, 0xc7, 0x8c, 0x69, 0x6e, 0x99, 0xff, 0x46, ++ 0xf9, 0x78, 0x6c, 0x0e, 0xcf, 0x0b, 0x88, 0x6e, 0x1f, 0xf3, 0xb2, 0x87, ++ 0x6c, 0xff, 0x4a, 0x68, 0xbf, 0xe4, 0x6b, 0xb4, 0x6f, 0xe3, 0xe3, 0x4f, ++ 0xc3, 0x57, 0xa0, 0x7f, 0xd2, 0x70, 0xfc, 0x18, 0x17, 0xc7, 0xf6, 0x91, ++ 0xbe, 0x18, 0x44, 0x8a, 0xee, 0x5f, 0xb4, 0xa7, 0xb1, 0xe0, 0x2e, 0xdc, ++ 0xcf, 0x81, 0xfe, 0x1c, 0x0a, 0xef, 0xcf, 0x8d, 0x79, 0x2a, 0x69, 0xcc, ++ 0x98, 0x97, 0xd0, 0xdf, 0x9f, 0x1b, 0xfa, 0x1b, 0xff, 0xff, 0x60, 0x3e, ++ 0x8b, 0x07, 0xd2, 0xc3, 0x7c, 0x31, 0x7a, 0x2c, 0xfd, 0x7a, 0xf4, 0x68, ++ 0x35, 0xf9, 0x68, 0xbc, 0xc1, 0x09, 0x0e, 0xf2, 0x8f, 0xf0, 0xfe, 0x2a, ++ 0xbc, 0xa7, 0xce, 0x2e, 0xfa, 0xb3, 0x8b, 0xfb, 0xba, 0x10, 0xaf, 0xad, ++ 0xa5, 0x11, 0xbc, 0x82, 0x7d, 0x48, 0xed, 0x42, 0xf5, 0xe6, 0x0b, 0x02, ++ 0xcf, 0x98, 0x77, 0x98, 0xe6, 0xb6, 0x10, 0x9e, 0x87, 0xc2, 0xdb, 0x51, ++ 0x37, 0xcf, 0x93, 0xba, 0xdb, 0x1d, 0x17, 0x6a, 0xce, 0xfd, 0xff, 0x40, ++ 0xaf, 0x74, 0x4e, 0xaf, 0xe8, 0xfe, 0xd0, 0xce, 0xbc, 0xe4, 0xfe, 0x96, ++ 0x42, 0x7f, 0x29, 0x97, 0xde, 0x1f, 0xe2, 0x17, 0xd7, 0x4f, 0x3f, 0x7e, ++ 0x81, 0x26, 0x9b, 0xd2, 0x2e, 0x1d, 0xbf, 0x30, 0xaa, 0xe0, 0xa5, 0xe0, ++ 0xf7, 0x28, 0xb4, 0x6b, 0x8a, 0xc2, 0x6b, 0x24, 0x1f, 0x69, 0xbb, 0x1b, ++ 0xfd, 0x05, 0xbb, 0xd9, 0x6f, 0xc3, 0xfc, 0xcc, 0xb9, 0xd3, 0x12, 0x69, ++ 0x7c, 0x85, 0x29, 0x0b, 0x6d, 0x94, 0x9f, 0x90, 0xba, 0x90, 0xf2, 0x8d, ++ 0xdb, 0x0a, 0x1d, 0xf4, 0xf7, 0x05, 0xda, 0xf2, 0xbe, 0x65, 0x33, 0x47, ++ 0xe9, 0xe9, 0xb6, 0xc2, 0x1a, 0x2a, 0x87, 0xfa, 0x94, 0x47, 0x55, 0x18, ++ 0x8e, 0xc3, 0xf0, 0x05, 0x1b, 0xcf, 0x7a, 0x28, 0x3e, 0x70, 0x77, 0x45, ++ 0x75, 0x3a, 0xfa, 0x8b, 0xc1, 0x06, 0x9e, 0x97, 0x25, 0xf3, 0x94, 0xa4, ++ 0x3e, 0x64, 0x62, 0x3f, 0x94, 0xe6, 0x05, 0x1f, 0x26, 0x4c, 0x3b, 0xd0, ++ 0x77, 0x14, 0xea, 0xdf, 0xdd, 0x50, 0x42, 0x79, 0x68, 0x09, 0x89, 0xff, ++ 0x4d, 0xf9, 0x57, 0x5b, 0x6b, 0x3d, 0x1e, 0x2c, 0xff, 0x89, 0x9d, 0xef, ++ 0x6b, 0xfe, 0x48, 0xec, 0x6b, 0x21, 0xa3, 0x52, 0x7c, 0x6d, 0x42, 0xf9, ++ 0xa3, 0xb8, 0xbf, 0xeb, 0x1d, 0xdd, 0xa8, 0xd0, 0x7e, 0xe6, 0xba, 0x8b, ++ 0xef, 0x67, 0x7a, 0x3f, 0xed, 0xa9, 0xc2, 0x3c, 0x2e, 0xb6, 0x82, 0xe7, ++ 0x69, 0xa5, 0xd7, 0x68, 0x31, 0xfa, 0xd0, 0xb8, 0x6e, 0xb7, 0x22, 0x5e, ++ 0x79, 0x3e, 0x55, 0x48, 0xe1, 0xf8, 0x35, 0xb4, 0xb7, 0x69, 0x5a, 0x2a, ++ 0xe1, 0xed, 0xee, 0xbc, 0xdd, 0x0c, 0xff, 0xde, 0xd0, 0x33, 0xd0, 0x96, ++ 0x6a, 0x5c, 0x5f, 0x26, 0xcc, 0x6b, 0x8a, 0x5d, 0x8f, 0x9a, 0xc5, 0x47, ++ 0xf7, 0x8b, 0xb1, 0x46, 0x13, 0x8d, 0x23, 0x13, 0x53, 0x05, 0x40, 0xc5, ++ 0x79, 0xc7, 0xcf, 0x4d, 0x5f, 0x01, 0xef, 0xb3, 0x6e, 0xd2, 0xe8, 0x1e, ++ 0xdf, 0x61, 0x85, 0x77, 0x51, 0x7e, 0x13, 0x58, 0xff, 0x64, 0x6f, 0x14, ++ 0x16, 0xbe, 0x5c, 0x85, 0xf0, 0x80, 0x79, 0xae, 0x32, 0xce, 0x23, 0x76, ++ 0x5e, 0xb1, 0xe3, 0x96, 0xf7, 0x1b, 0x4b, 0x7a, 0x79, 0x3f, 0xf5, 0xc4, ++ 0xa3, 0xdf, 0xe5, 0x1d, 0xbd, 0x90, 0xf2, 0xcf, 0xe8, 0x47, 0xae, 0x77, ++ 0x35, 0x66, 0x3e, 0x60, 0x27, 0xdb, 0x53, 0x4c, 0x74, 0x0f, 0x5c, 0x5c, ++ 0x5e, 0xd4, 0xbc, 0x98, 0xa1, 0x9e, 0xf0, 0xeb, 0xfe, 0x67, 0xe1, 0x06, ++ 0xd0, 0x55, 0xb4, 0x8e, 0x62, 0xf7, 0xc9, 0xfe, 0x0f, 0x3f, 0x2f, 0x64, ++ 0x65, 0x1e, 0x9b, 0x85, 0xbe, 0x93, 0xe7, 0x6b, 0xf8, 0xfe, 0xdb, 0x70, ++ 0x5c, 0x3b, 0x48, 0xf7, 0x1c, 0xc6, 0xf3, 0xc0, 0x63, 0xbf, 0x2f, 0xe5, ++ 0xdf, 0xb3, 0x74, 0xbe, 0x1f, 0x67, 0x8d, 0x63, 0x36, 0x3c, 0x5f, 0xa3, ++ 0xac, 0x8d, 0xa3, 0xb8, 0xa6, 0xd5, 0x0a, 0x30, 0x9e, 0xbf, 0x11, 0xf7, ++ 0x8c, 0x3d, 0x2c, 0xe2, 0x70, 0xcd, 0x0a, 0xd3, 0x32, 0xbc, 0xd1, 0xfd, ++ 0x85, 0x29, 0x8f, 0x5e, 0xb5, 0x5d, 0x95, 0x87, 0xfe, 0xc4, 0x51, 0xdb, ++ 0x22, 0x37, 0x9d, 0x6b, 0x13, 0xfe, 0x95, 0x39, 0xd1, 0x4f, 0x79, 0x8c, ++ 0xac, 0x20, 0xc9, 0xe0, 0xa7, 0x1e, 0x15, 0xe7, 0xd3, 0x1a, 0x6f, 0xce, ++ 0x1d, 0x86, 0x71, 0xbd, 0x04, 0x28, 0xeb, 0x41, 0x7f, 0x5b, 0xf3, 0xd8, ++ 0x90, 0xde, 0x32, 0x9e, 0xe2, 0x1a, 0xd5, 0x7b, 0x3d, 0xea, 0xf1, 0xdf, ++ 0x3e, 0xf7, 0xc9, 0x0d, 0x36, 0xd4, 0xdb, 0xe8, 0x1c, 0x97, 0x33, 0xd6, ++ 0x3d, 0xed, 0xc3, 0x9d, 0x78, 0xbf, 0xb0, 0x5c, 0x9f, 0xd6, 0x73, 0xfc, ++ 0x9e, 0x8e, 0x7e, 0x58, 0x6b, 0xa0, 0x3c, 0x11, 0xeb, 0xb9, 0x1c, 0xc3, ++ 0xfb, 0xb0, 0xf0, 0xcf, 0xfa, 0xfd, 0x96, 0x14, 0xad, 0x9a, 0xee, 0x9f, ++ 0x12, 0x7e, 0x43, 0x25, 0x73, 0xb7, 0xe2, 0x77, 0x95, 0x80, 0x1c, 0xc3, ++ 0xbd, 0x00, 0xe2, 0xde, 0x8f, 0x81, 0xed, 0x67, 0x19, 0xde, 0x87, 0xc1, ++ 0xef, 0x8e, 0xde, 0x27, 0x18, 0xba, 0xfd, 0x78, 0xc3, 0xfd, 0x02, 0x56, ++ 0xf0, 0x83, 0x06, 0x6f, 0x3f, 0x3f, 0xa6, 0x7d, 0xf7, 0xa0, 0xed, 0x47, ++ 0xda, 0x4d, 0x36, 0xb4, 0xdb, 0xa6, 0x71, 0xb9, 0x11, 0x4c, 0x89, 0x0b, ++ 0x0d, 0x16, 0xf7, 0xfb, 0x72, 0x5a, 0xd5, 0x7b, 0xb8, 0xa4, 0x87, 0xca, ++ 0x63, 0xfb, 0x62, 0x9a, 0xc8, 0xbf, 0xb7, 0x81, 0x44, 0xc3, 0x7d, 0x29, ++ 0xc1, 0x3f, 0x5b, 0xd2, 0x1b, 0x28, 0xaf, 0x4d, 0x8d, 0xe3, 0xfb, 0xa8, ++ 0x66, 0x10, 0x23, 0xc8, 0x4f, 0xc7, 0x9c, 0xb5, 0x3c, 0x1f, 0x23, 0xcb, ++ 0x98, 0xd7, 0x26, 0xef, 0x15, 0x69, 0xc3, 0xfb, 0x42, 0xa0, 0xbc, 0xca, ++ 0x61, 0xb4, 0xd7, 0x2b, 0x59, 0xdf, 0xb1, 0x89, 0x0a, 0xfa, 0xaf, 0x46, ++ 0x7b, 0x7d, 0x3a, 0x4a, 0x52, 0xdc, 0xaf, 0x62, 0xb1, 0x76, 0x7c, 0x03, ++ 0xed, 0x9b, 0x9a, 0xb3, 0x8c, 0x72, 0xa1, 0x43, 0xac, 0x17, 0x93, 0xb3, ++ 0xa4, 0x87, 0xf2, 0xe0, 0x52, 0x1d, 0x94, 0xe7, 0x30, 0x54, 0xdc, 0xe1, ++ 0xcd, 0x26, 0x46, 0xf9, 0x59, 0xe6, 0x78, 0x7f, 0x03, 0xea, 0xbc, 0xb4, ++ 0xe9, 0xda, 0x88, 0xb6, 0x32, 0x80, 0x13, 0x38, 0x9f, 0xe5, 0x4d, 0xcf, ++ 0x58, 0x8e, 0x71, 0xde, 0x37, 0x05, 0x3f, 0xb7, 0x81, 0x1c, 0xa0, 0xf3, ++ 0xa3, 0x8d, 0xc3, 0x76, 0xa9, 0x51, 0xed, 0xd6, 0x58, 0xc2, 0xa3, 0x51, ++ 0xaf, 0xd4, 0x98, 0xf8, 0xb9, 0x00, 0xfa, 0x81, 0xfe, 0xdf, 0x4c, 0x1d, ++ 0x4e, 0xf1, 0xd7, 0xd8, 0x7e, 0xe5, 0xbd, 0x31, 0x12, 0x5e, 0xd6, 0xa0, ++ 0x4c, 0xcb, 0x8b, 0x9a, 0xdf, 0x9b, 0x62, 0x7d, 0xf4, 0xf7, 0x77, 0x6b, ++ 0xe6, 0x2e, 0xb4, 0x6b, 0xfb, 0xfb, 0xb3, 0x86, 0x27, 0x51, 0x7f, 0xfd, ++ 0x79, 0x46, 0xa2, 0xbf, 0xb4, 0x6f, 0xd6, 0xdf, 0x5f, 0xc4, 0xfa, 0x96, ++ 0xfd, 0x2d, 0xfb, 0xb6, 0x71, 0x7e, 0xcb, 0x2c, 0x3d, 0x34, 0xbf, 0x65, ++ 0xe2, 0xbe, 0x52, 0xd9, 0xdf, 0x5f, 0x70, 0x7e, 0xb9, 0xdf, 0xa0, 0x3f, ++ 0x91, 0x1f, 0xd6, 0xdf, 0xdf, 0x77, 0x8c, 0xf3, 0x5b, 0x66, 0xed, 0xa1, ++ 0xf9, 0x2d, 0xeb, 0xf7, 0x2f, 0x45, 0x7f, 0x69, 0xdf, 0xac, 0x3f, 0x99, ++ 0xff, 0x60, 0xb5, 0x36, 0xd4, 0x22, 0x3f, 0x0d, 0x95, 0x07, 0x21, 0xf3, ++ 0x1f, 0x26, 0x77, 0x64, 0x1a, 0xf2, 0x1f, 0x58, 0x30, 0x73, 0x6e, 0x65, ++ 0x1e, 0x63, 0x0f, 0x28, 0x9c, 0x2f, 0x56, 0x1d, 0x1a, 0xfd, 0x53, 0xe4, ++ 0x8b, 0xb3, 0x73, 0x1b, 0x3d, 0x64, 0xa7, 0x08, 0x7f, 0x8f, 0xce, 0x0b, ++ 0xa9, 0x74, 0x5e, 0x88, 0xf4, 0xe8, 0xd5, 0x59, 0xdc, 0x0e, 0x91, 0xed, ++ 0xef, 0x69, 0x2a, 0x63, 0xbe, 0x31, 0x3c, 0x4e, 0x84, 0xcf, 0x82, 0x0a, ++ 0x85, 0xce, 0x23, 0x8c, 0x2d, 0x53, 0x7c, 0xb8, 0xef, 0xb6, 0x03, 0xe4, ++ 0x07, 0xde, 0x7f, 0xb7, 0x13, 0xd6, 0x39, 0x96, 0x87, 0x9a, 0xd2, 0xe9, ++ 0xb9, 0xbb, 0x49, 0xa7, 0xe7, 0x63, 0xe0, 0x5f, 0xfa, 0x28, 0x2e, 0xe6, ++ 0x21, 0xf8, 0x87, 0xd3, 0x79, 0xdc, 0xe5, 0x81, 0x0c, 0xf7, 0x92, 0x55, ++ 0x68, 0x7f, 0x54, 0xc6, 0xf1, 0x7c, 0xec, 0x8a, 0xa9, 0x60, 0xd9, 0x46, ++ 0xfc, 0x37, 0x58, 0x2f, 0x47, 0xed, 0x98, 0xf7, 0x78, 0x2d, 0x2b, 0xc2, ++ 0x73, 0x68, 0xf9, 0x1d, 0x1c, 0x9f, 0x29, 0xd5, 0x69, 0x74, 0xdf, 0x7d, ++ 0x5c, 0xd1, 0xf1, 0x9e, 0x26, 0x80, 0xb7, 0x94, 0xa9, 0x3a, 0xe6, 0x99, ++ 0x6f, 0xd1, 0x07, 0x8f, 0xf3, 0x6c, 0x9b, 0xce, 0xe3, 0xbf, 0x5b, 0x44, ++ 0x1e, 0x65, 0x10, 0xcf, 0x49, 0x92, 0x52, 0x01, 0x7f, 0x12, 0xe6, 0xbf, ++ 0x5c, 0x90, 0x8a, 0xa9, 0x73, 0xe9, 0xfc, 0xcd, 0xd5, 0xdf, 0x49, 0x24, ++ 0xfb, 0xa6, 0xe6, 0x5b, 0xbd, 0x4e, 0x37, 0x8c, 0xe3, 0x06, 0xa5, 0xe8, ++ 0x3f, 0xf2, 0x00, 0x1f, 0x7f, 0x15, 0xf6, 0xcd, 0xf2, 0x9c, 0x2b, 0x49, ++ 0x1e, 0xc4, 0xfa, 0xa7, 0x29, 0xa8, 0xa9, 0x4a, 0x30, 0xbf, 0x50, 0x0d, ++ 0x85, 0xe0, 0xd7, 0x45, 0xce, 0x45, 0xe4, 0xdf, 0x2e, 0xba, 0x86, 0xb1, ++ 0x24, 0xf8, 0xfe, 0x6a, 0xfc, 0x0e, 0xf4, 0xd4, 0xab, 0xc2, 0x3e, 0x7a, ++ 0xa5, 0xd7, 0xca, 0xd0, 0xff, 0x0b, 0x56, 0xf3, 0xfd, 0xec, 0x1b, 0xee, ++ 0x32, 0xfa, 0xa5, 0x0f, 0xd8, 0xc3, 0x6e, 0xb4, 0x0b, 0x1f, 0x28, 0x4a, ++ 0x61, 0x48, 0x8f, 0x9a, 0xdb, 0x8c, 0xe5, 0x5b, 0x2c, 0x7c, 0xbd, 0x2d, ++ 0x8a, 0xf1, 0x53, 0xaf, 0x8e, 0xc9, 0x03, 0x92, 0xf7, 0x1f, 0x6e, 0xc1, ++ 0x5f, 0xa7, 0x00, 0x3e, 0xa7, 0x8b, 0x7b, 0x5f, 0x44, 0x1e, 0xd0, 0x55, ++ 0xd3, 0x75, 0xae, 0xaf, 0xb3, 0x92, 0x28, 0xe9, 0x5b, 0x9e, 0xcf, 0xb4, ++ 0x5a, 0xd9, 0xa0, 0xfb, 0x94, 0xb2, 0xbd, 0xbd, 0x28, 0xb7, 0x50, 0xce, ++ 0xa6, 0xf8, 0x08, 0x0f, 0x32, 0x6f, 0x8e, 0xa9, 0x7b, 0x8b, 0xf0, 0x7b, ++ 0xd9, 0x9f, 0xfc, 0xee, 0x61, 0x65, 0x6f, 0xc6, 0xc5, 0xe2, 0xa9, 0x60, ++ 0x07, 0x9e, 0xec, 0x2d, 0xe0, 0xfa, 0x1e, 0xed, 0xf5, 0xdd, 0xd3, 0x8d, ++ 0xf9, 0x4a, 0x67, 0xe7, 0x8e, 0xfc, 0x7e, 0x35, 0x1b, 0x8c, 0x6f, 0xfb, ++ 0x34, 0x8c, 0x53, 0xc8, 0xf1, 0xff, 0x6f, 0xf1, 0x6b, 0xcd, 0x74, 0x3e, ++ 0xdf, 0x57, 0x67, 0x7e, 0x56, 0xc2, 0xcf, 0xdd, 0x65, 0xb1, 0xe8, 0xf3, ++ 0x76, 0x32, 0x1f, 0x6c, 0x51, 0x3f, 0xac, 0xd1, 0x7d, 0xc2, 0x32, 0x1f, ++ 0x90, 0xa5, 0xf7, 0x15, 0x22, 0xbd, 0xff, 0x7d, 0x5a, 0xbc, 0xe7, 0x1e, ++ 0xe2, 0x3f, 0x61, 0x8f, 0x84, 0xdf, 0x30, 0x5d, 0x88, 0xff, 0xfa, 0xed, ++ 0xf5, 0x8f, 0x23, 0xdd, 0x97, 0x6d, 0x38, 0xbf, 0x2a, 0xda, 0x1b, 0x0a, ++ 0xcf, 0x43, 0xdd, 0x37, 0x41, 0x3f, 0x51, 0xf9, 0x92, 0x2d, 0xcd, 0x9e, ++ 0x74, 0x3a, 0x5f, 0x97, 0xca, 0xf7, 0xdf, 0x86, 0xa7, 0x54, 0x7d, 0x80, ++ 0xe7, 0xb9, 0xb0, 0xfc, 0x1d, 0x03, 0x7f, 0x19, 0xcf, 0x6d, 0xb5, 0x1c, ++ 0x79, 0x52, 0x41, 0xbf, 0xe5, 0x27, 0x78, 0xde, 0xcd, 0x1c, 0xe9, 0x17, ++ 0xe3, 0xc3, 0x6d, 0x0e, 0x6c, 0x37, 0xc4, 0xe3, 0x4a, 0xe1, 0x27, 0x29, ++ 0x2e, 0x9c, 0x55, 0x1b, 0x56, 0x5a, 0x0b, 0x23, 0xe7, 0x83, 0x62, 0xe5, ++ 0x62, 0xd6, 0x3a, 0xe3, 0xf9, 0xb3, 0xd8, 0x7b, 0x14, 0xe7, 0x39, 0x7a, ++ 0x35, 0x45, 0xc7, 0x7d, 0x80, 0x3e, 0x3a, 0xd7, 0x98, 0x33, 0x43, 0xec, ++ 0xdb, 0x20, 0x8e, 0xb1, 0x5e, 0x2a, 0xb7, 0x27, 0xd5, 0x4c, 0x13, 0xcf, ++ 0x1f, 0x19, 0xa1, 0x73, 0xfb, 0x32, 0xaf, 0x2f, 0x27, 0x7a, 0x1f, 0x44, ++ 0x9d, 0xc1, 0xed, 0x86, 0x79, 0xf1, 0xaf, 0xdf, 0xa6, 0x83, 0xe8, 0xfd, ++ 0xc7, 0xa1, 0xbb, 0x96, 0x63, 0x9e, 0xd4, 0xbc, 0x84, 0xd7, 0x6f, 0xcb, ++ 0x05, 0xf8, 0xfc, 0xa1, 0xef, 0x2d, 0xc7, 0x3c, 0xaa, 0x79, 0x99, 0xaf, ++ 0x7f, 0x96, 0x0b, 0xf2, 0xf6, 0xcb, 0x43, 0xff, 0x87, 0x97, 0x8f, 0x7b, ++ 0xfd, 0xb3, 0x91, 0x68, 0x23, 0x1e, 0x6e, 0xe2, 0xe5, 0x53, 0x19, 0x21, ++ 0xc9, 0x74, 0x38, 0xb8, 0x9c, 0xf6, 0x87, 0x66, 0xc8, 0x7b, 0x13, 0x7b, ++ 0xe8, 0xbc, 0x76, 0x2a, 0x1e, 0xac, 0x98, 0xf4, 0xcd, 0x9f, 0xaa, 0xd5, ++ 0x34, 0xe8, 0xba, 0x74, 0xcc, 0x90, 0x71, 0x4b, 0x46, 0xe7, 0xb3, 0xfd, ++ 0x07, 0x7f, 0x77, 0x02, 0xe5, 0x94, 0x5f, 0xc6, 0x79, 0x7d, 0xc6, 0x7d, ++ 0x4f, 0x26, 0xee, 0x4d, 0xbc, 0x4a, 0xb2, 0x57, 0x8a, 0x8b, 0xec, 0xa5, ++ 0x2b, 0xf1, 0x77, 0xc0, 0xe7, 0x55, 0xe2, 0xbe, 0x1d, 0x93, 0x2d, 0x4c, ++ 0x78, 0x1d, 0x13, 0xb9, 0xcf, 0xe4, 0xa1, 0xaf, 0x73, 0xdf, 0x4e, 0xe4, ++ 0x7c, 0x3c, 0xbf, 0x3f, 0xa8, 0x65, 0x23, 0x0b, 0x18, 0xef, 0x45, 0xf4, ++ 0x09, 0xfe, 0xe7, 0x79, 0x44, 0x72, 0x3c, 0xb2, 0xff, 0x01, 0xe3, 0xc2, ++ 0x7b, 0x01, 0x93, 0xa2, 0xc7, 0xb5, 0x83, 0xda, 0x91, 0xe3, 0xfa, 0xa4, ++ 0xc8, 0x1a, 0x54, 0x26, 0x46, 0xf6, 0x71, 0xe5, 0xb8, 0x3e, 0x51, 0xfa, ++ 0x76, 0x62, 0xd0, 0xa3, 0xee, 0xd8, 0x2f, 0x57, 0x20, 0xdd, 0x3e, 0x71, ++ 0xf6, 0xe5, 0xe0, 0xdf, 0x37, 0x39, 0x3e, 0xe3, 0x1d, 0xa2, 0xe3, 0x27, ++ 0xa9, 0x7d, 0x3b, 0x15, 0x4f, 0x14, 0x6c, 0xe6, 0x74, 0xf4, 0x1e, 0xde, ++ 0x4e, 0xf6, 0x54, 0x45, 0x86, 0xcf, 0x3b, 0x23, 0x15, 0xef, 0x0f, 0xe0, ++ 0xf7, 0x16, 0xb4, 0x0b, 0x3b, 0x72, 0x6b, 0x6a, 0x20, 0x88, 0x7e, 0x3d, ++ 0xf0, 0x1b, 0xe5, 0x71, 0x06, 0xb3, 0xf9, 0xb9, 0x86, 0xea, 0x12, 0xe3, ++ 0xdf, 0x61, 0xab, 0x10, 0xfc, 0xf5, 0x9b, 0x19, 0x7c, 0xff, 0x78, 0x96, ++ 0x75, 0x5b, 0xc3, 0x6b, 0x25, 0x78, 0x8f, 0xba, 0xc2, 0x9a, 0xa1, 0x7e, ++ 0xfd, 0xf9, 0xb3, 0x16, 0xf4, 0xfb, 0xe7, 0x1d, 0xe4, 0x7f, 0xa7, 0x75, ++ 0xfd, 0x81, 0xb7, 0x2d, 0xf4, 0x77, 0x19, 0x10, 0x86, 0x76, 0xd6, 0xef, ++ 0xb0, 0x0c, 0xfa, 0x77, 0xe0, 0x0e, 0xcf, 0x50, 0x25, 0xdd, 0x0d, 0xfe, ++ 0xca, 0xf3, 0xd9, 0xf9, 0x6d, 0x29, 0x30, 0x9e, 0xf5, 0xab, 0xf8, 0xfd, ++ 0xd8, 0x8d, 0xbf, 0x4e, 0x9c, 0x85, 0x70, 0xe3, 0x0a, 0x9c, 0x25, 0xfe, ++ 0x3d, 0xbd, 0x7d, 0xb3, 0xf0, 0xb3, 0x65, 0xfe, 0x23, 0x6d, 0xf8, 0x5c, ++ 0xce, 0x7a, 0x9f, 0xc7, 0x73, 0x7f, 0x4b, 0x02, 0x46, 0x3f, 0xe2, 0xfa, ++ 0x5a, 0xa3, 0xdd, 0xbf, 0xac, 0xc1, 0x68, 0xaf, 0x2f, 0xdf, 0x06, 0xd4, ++ 0x01, 0xbd, 0xb6, 0x7c, 0x63, 0x66, 0xcc, 0x3d, 0x7e, 0xfc, 0x7e, 0xc0, ++ 0x25, 0x82, 0x9e, 0x4b, 0xd2, 0xef, 0xed, 0xc1, 0x7b, 0x07, 0x96, 0xb0, ++ 0x98, 0xfb, 0x01, 0x83, 0x3c, 0x8e, 0x74, 0x3d, 0x9f, 0x01, 0x3c, 0x8d, ++ 0xf1, 0x91, 0x79, 0xf8, 0xf7, 0xa4, 0x70, 0x1e, 0xeb, 0x54, 0x8a, 0xf3, ++ 0x3e, 0x9f, 0xbd, 0x59, 0xc3, 0xf3, 0x70, 0xf5, 0x0d, 0xfc, 0x5e, 0xb2, ++ 0x59, 0x5d, 0x9f, 0x5a, 0xa8, 0x1c, 0xea, 0xe1, 0x7e, 0x53, 0xda, 0x70, ++ 0x7e, 0x0f, 0x9e, 0x94, 0x9f, 0x52, 0xbf, 0x5f, 0xff, 0xdc, 0x2e, 0x33, ++ 0xc6, 0x0b, 0x62, 0xef, 0x09, 0x5c, 0xbe, 0x78, 0x0e, 0xdd, 0x07, 0xbe, ++ 0x58, 0x5f, 0xcb, 0xf5, 0xfb, 0x88, 0x3f, 0xce, 0x4a, 0x82, 0xf7, 0xb1, ++ 0xf7, 0xff, 0xd5, 0x74, 0x71, 0xfd, 0x5e, 0xb3, 0x51, 0x09, 0xe1, 0x7d, ++ 0xbb, 0xd7, 0xd7, 0x1a, 0xfd, 0x81, 0x65, 0xac, 0xa7, 0x0d, 0xfd, 0x99, ++ 0x65, 0x0d, 0xc6, 0xf7, 0xcb, 0x37, 0x1a, 0xe1, 0xef, 0xcd, 0x10, 0x7a, ++ 0x6d, 0x1c, 0x1b, 0x87, 0xeb, 0x63, 0xd3, 0x0c, 0x45, 0xa3, 0x73, 0xd5, ++ 0x02, 0x3e, 0x9d, 0xfd, 0xc7, 0x57, 0xc2, 0xd0, 0x7f, 0x55, 0x86, 0xbf, ++ 0x6d, 0x06, 0xf0, 0xc9, 0x3a, 0x4b, 0x78, 0x02, 0xea, 0xb9, 0xaa, 0x8c, ++ 0x00, 0xc1, 0xb2, 0x1c, 0xde, 0xaf, 0xe7, 0x7a, 0x88, 0xeb, 0x7f, 0x13, ++ 0xac, 0x24, 0x92, 0xbf, 0x66, 0x1e, 0xb7, 0x08, 0xd6, 0xf1, 0x7b, 0xd9, ++ 0xae, 0x1f, 0x60, 0x0f, 0x44, 0xd9, 0x0b, 0xea, 0x40, 0xb8, 0x4b, 0xca, ++ 0x4f, 0xbb, 0xff, 0x36, 0xf2, 0xc3, 0x9e, 0x53, 0xe8, 0xef, 0x82, 0x57, ++ 0x6b, 0x3e, 0x2d, 0x29, 0xca, 0x4f, 0x8e, 0xe5, 0xc3, 0x5f, 0x0b, 0xbe, ++ 0x7e, 0x85, 0xf5, 0x16, 0xe2, 0xb8, 0xf2, 0x91, 0xe9, 0x80, 0x2e, 0xf9, ++ 0x8b, 0xf8, 0xdf, 0x7d, 0xce, 0x3f, 0xbc, 0x82, 0xf2, 0x2c, 0xf3, 0x8b, ++ 0x15, 0x8f, 0x89, 0xd6, 0xb1, 0x89, 0x6d, 0xc4, 0xfb, 0xc4, 0x40, 0x5e, ++ 0xa0, 0x5c, 0x40, 0xfb, 0x13, 0xef, 0xc9, 0xc8, 0x57, 0x3b, 0x17, 0x93, ++ 0x9c, 0x9e, 0x68, 0x71, 0xf3, 0xfb, 0x76, 0xd2, 0x59, 0xf4, 0xfa, 0xf7, ++ 0x3d, 0xc9, 0x14, 0xc4, 0x17, 0x0e, 0x1d, 0xfb, 0xbd, 0x2a, 0xab, 0x9b, ++ 0xee, 0xdb, 0x98, 0xdf, 0x71, 0xef, 0xa7, 0x28, 0xe7, 0xf2, 0x46, 0xf9, ++ 0xbc, 0x0f, 0xc0, 0xf8, 0xb6, 0x8a, 0xfb, 0xb4, 0xb7, 0xfe, 0x5a, 0x21, ++ 0x7b, 0x76, 0x7d, 0xe1, 0x0b, 0x24, 0x0f, 0x87, 0x01, 0x5b, 0x60, 0xbf, ++ 0xeb, 0xd3, 0x85, 0x5c, 0xec, 0x32, 0xde, 0x83, 0x31, 0x0c, 0xe5, 0x14, ++ 0x1e, 0x68, 0x99, 0x5b, 0x48, 0xfd, 0x66, 0xc8, 0xfd, 0x07, 0x99, 0xe7, ++ 0x1b, 0xae, 0xa2, 0x7b, 0xa5, 0x86, 0x89, 0x7e, 0x7f, 0x3f, 0x4b, 0xa7, ++ 0x79, 0xa7, 0xad, 0xed, 0x54, 0x70, 0xde, 0xd9, 0x2c, 0xd8, 0x8c, 0x71, ++ 0xa8, 0x3d, 0x28, 0x0b, 0x53, 0x23, 0x4f, 0xb9, 0x4f, 0x70, 0x4d, 0x64, ++ 0xff, 0xbc, 0x02, 0xe9, 0x59, 0x97, 0xde, 0x4b, 0xf7, 0xc2, 0xc8, 0xfd, ++ 0xf3, 0x41, 0xea, 0xcd, 0x46, 0xb9, 0x33, 0xa0, 0x9e, 0x8f, 0x19, 0xf2, ++ 0x80, 0x66, 0xa9, 0xe7, 0x5d, 0xb8, 0xbf, 0xdd, 0xf8, 0xdc, 0xa8, 0x8b, ++ 0xe6, 0x75, 0xa8, 0x36, 0xe3, 0xfd, 0x90, 0x66, 0xb7, 0xf1, 0x7e, 0xc8, ++ 0xab, 0x0a, 0x8c, 0xeb, 0x7b, 0x9e, 0xc7, 0xb8, 0xae, 0xaf, 0x2e, 0x1b, ++ 0x65, 0x28, 0x5f, 0xe0, 0x1b, 0x67, 0x28, 0x5f, 0x34, 0xa7, 0xd8, 0x00, ++ 0x5f, 0xe3, 0x9f, 0x6a, 0xa8, 0x7f, 0xdd, 0xe2, 0x99, 0xc6, 0x38, 0x42, ++ 0xba, 0xf1, 0x7e, 0x48, 0xbb, 0x6e, 0xbc, 0x1f, 0x32, 0xbe, 0xc0, 0x78, ++ 0x3f, 0xa4, 0xd3, 0x63, 0xbc, 0x1f, 0x92, 0xa5, 0x74, 0x52, 0x5e, 0x9a, ++ 0xc5, 0x16, 0xec, 0x0d, 0xe8, 0x78, 0xbf, 0x00, 0xbf, 0x87, 0x56, 0xca, ++ 0xe9, 0x71, 0x2e, 0x1b, 0x5d, 0x2a, 0x17, 0x57, 0x6c, 0x77, 0xe0, 0xb3, ++ 0xbd, 0xc8, 0x1a, 0x46, 0xba, 0xb5, 0x0f, 0xe7, 0xfb, 0xb9, 0xd6, 0x17, ++ 0x6f, 0x4f, 0x0f, 0x23, 0xd6, 0x13, 0xf6, 0xda, 0x2a, 0xe1, 0xf9, 0xb4, ++ 0x12, 0xaa, 0xc2, 0xfd, 0x28, 0x9b, 0xf0, 0x1b, 0x2f, 0xbb, 0x8b, 0x19, ++ 0xe4, 0xf8, 0x95, 0x33, 0xb9, 0x1c, 0x97, 0x4f, 0xe6, 0x0b, 0xc4, 0x57, ++ 0x62, 0x5c, 0x76, 0x8f, 0x9e, 0xc9, 0xf3, 0xb6, 0x7b, 0x2e, 0xbb, 0x58, ++ 0x7e, 0xc5, 0xa5, 0x3e, 0xff, 0x2f, 0xc2, 0x78, 0x4b, 0x6b, 0x00, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0b, 0xed, 0x5a, 0x7d, 0x50, 0x54, 0x57, 0x96, 0x3f, 0xb7, 0xfb, ++ 0x75, 0xd3, 0x0d, 0x88, 0x0d, 0x28, 0x1f, 0x41, 0xf4, 0xa1, 0xa0, 0x26, ++ 0x20, 0x69, 0x41, 0x8c, 0x4e, 0x66, 0x36, 0xaf, 0xbb, 0x81, 0x69, 0x3f, ++ 0x32, 0x69, 0xfc, 0x98, 0x60, 0x10, 0xd3, 0xec, 0xe8, 0x16, 0x13, 0x81, ++ 0x26, 0xd1, 0x4c, 0x91, 0xaa, 0xdd, 0xa2, 0x55, 0x86, 0x34, 0x66, 0xfe, ++ 0x48, 0xac, 0x4c, 0xc6, 0xa4, 0x52, 0xb5, 0xad, 0x15, 0x33, 0x99, 0xa9, ++ 0x71, 0x17, 0x13, 0x56, 0xdb, 0x4d, 0xeb, 0x36, 0x2a, 0xae, 0xc9, 0x9a, ++ 0xb1, 0xdd, 0x31, 0x19, 0x4d, 0x2a, 0x29, 0x74, 0xdd, 0x4c, 0xac, 0x8c, ++ 0x0a, 0x31, 0xe3, 0x98, 0x5d, 0x77, 0xdd, 0x73, 0xee, 0x7d, 0x8f, 0xee, ++ 0xd7, 0x3c, 0x12, 0xb2, 0x35, 0x95, 0xaa, 0x9d, 0x5a, 0x28, 0xea, 0x72, ++ 0xdf, 0xbb, 0x9f, 0xe7, 0xfb, 0xfc, 0xce, 0xb3, 0xa5, 0x03, 0xc0, 0x22, ++ 0xfc, 0x3b, 0x68, 0x0b, 0xef, 0x2b, 0x01, 0xb8, 0x97, 0xe1, 0xff, 0x4b, ++ 0x01, 0xee, 0xd0, 0xcf, 0x03, 0x00, 0xa7, 0xeb, 0x5c, 0x16, 0xa5, 0x06, ++ 0xa0, 0xe2, 0xaf, 0x95, 0x65, 0x30, 0x0d, 0xdf, 0x45, 0xc0, 0x51, 0x86, ++ 0xe3, 0xf6, 0x5a, 0x41, 0xa1, 0x7e, 0xf0, 0xa0, 0x95, 0xcf, 0xab, 0x88, ++ 0x0c, 0x9b, 0x94, 0xcc, 0xc4, 0xbc, 0xe7, 0x14, 0x5c, 0x68, 0x3a, 0xc0, ++ 0x4f, 0x7d, 0xee, 0x65, 0xb4, 0x7e, 0x47, 0x94, 0x39, 0x00, 0xc7, 0x75, ++ 0xec, 0xbe, 0x64, 0x95, 0x2b, 0xa8, 0x3f, 0x98, 0xa5, 0x60, 0x5b, 0xe9, ++ 0xbb, 0x64, 0x85, 0xcc, 0xe4, 0xe7, 0x17, 0xad, 0xf4, 0xbc, 0x43, 0x1a, ++ 0x49, 0x77, 0x60, 0xfb, 0xf7, 0xfd, 0x66, 0x6f, 0xb8, 0x22, 0xb1, 0xae, ++ 0xd6, 0xba, 0x14, 0x2b, 0x5f, 0xff, 0x64, 0x31, 0xb6, 0x78, 0x8e, 0xe6, ++ 0x27, 0xcd, 0xe1, 0x34, 0x3a, 0x3b, 0x28, 0x2b, 0x5d, 0x8b, 0x01, 0x1a, ++ 0xe9, 0x5f, 0x19, 0x9f, 0x1f, 0x18, 0x89, 0x99, 0x71, 0xff, 0xe6, 0x76, ++ 0xe6, 0x0c, 0xe2, 0xa3, 0x46, 0xf9, 0xb1, 0x95, 0x90, 0x85, 0xff, 0xf8, ++ 0x2d, 0x97, 0x86, 0x6d, 0x00, 0x36, 0xfc, 0xbd, 0x33, 0x1b, 0xcf, 0x59, ++ 0x98, 0xb5, 0x17, 0xee, 0xe5, 0xf3, 0x01, 0xf2, 0x00, 0x1e, 0x05, 0xf1, ++ 0xf3, 0xc8, 0x92, 0x98, 0x05, 0x4c, 0x00, 0x4d, 0xad, 0x62, 0x3c, 0xfd, ++ 0xdc, 0xc1, 0xbf, 0x47, 0xd7, 0xd4, 0x5f, 0x61, 0x95, 0xb8, 0x6e, 0x67, ++ 0xca, 0xf3, 0x19, 0xbd, 0xa3, 0xe6, 0x2c, 0x9a, 0x2f, 0x5d, 0x1a, 0x9e, ++ 0xaf, 0x3e, 0x27, 0xba, 0x2a, 0x53, 0xa6, 0x7d, 0x5c, 0x8e, 0x9d, 0x72, ++ 0xa8, 0xb8, 0x33, 0x07, 0xe0, 0xbc, 0xcf, 0x64, 0x78, 0xaf, 0x87, 0x3c, ++ 0x12, 0xbf, 0xd7, 0x79, 0xbf, 0x87, 0xd3, 0xfb, 0xa7, 0x48, 0x37, 0x33, ++ 0x23, 0x3a, 0xa6, 0xd2, 0x49, 0xd0, 0xef, 0xab, 0xe8, 0xb3, 0x1f, 0xcf, ++ 0x9e, 0xcc, 0xa7, 0xd4, 0x71, 0x6b, 0x3c, 0x82, 0x4f, 0xfb, 0x19, 0x34, ++ 0xf6, 0x67, 0x8e, 0x7f, 0xff, 0x33, 0x95, 0x8f, 0x7b, 0x59, 0xbc, 0x0a, ++ 0xcc, 0x00, 0x01, 0x1f, 0x0a, 0xcc, 0x54, 0xa4, 0x87, 0xad, 0x65, 0xf3, ++ 0xe5, 0x6a, 0xa2, 0xff, 0xcd, 0x5e, 0x46, 0xf4, 0xff, 0x07, 0x06, 0x69, ++ 0xb8, 0xfe, 0x07, 0x83, 0x6f, 0xe5, 0xc9, 0x53, 0x00, 0xac, 0x07, 0x86, ++ 0xf2, 0x86, 0x71, 0xbd, 0x40, 0xff, 0x50, 0x1e, 0x2c, 0x00, 0x68, 0xb3, ++ 0xc8, 0xdb, 0xa4, 0x69, 0x5c, 0x0e, 0x9c, 0xdb, 0x90, 0x2f, 0x1d, 0x91, ++ 0x18, 0x3f, 0x7f, 0x7b, 0x7f, 0xf5, 0x20, 0x3d, 0x6f, 0x8f, 0x30, 0xa7, ++ 0x1d, 0x8f, 0x1a, 0x18, 0x18, 0xad, 0xe7, 0xf7, 0x84, 0xe1, 0x5e, 0x47, ++ 0x26, 0xed, 0x6b, 0x7c, 0xae, 0x66, 0xc5, 0xc4, 0xcf, 0xd5, 0xaa, 0xc8, ++ 0xbc, 0x0d, 0xf8, 0x71, 0xcf, 0x69, 0x34, 0x3f, 0x2d, 0x1c, 0x66, 0xc4, ++ 0xf7, 0x61, 0x2b, 0x97, 0x8b, 0xc3, 0x0c, 0x9e, 0xc5, 0xfe, 0xde, 0x3e, ++ 0x5b, 0x63, 0xd8, 0x60, 0x9d, 0x75, 0x44, 0x6f, 0x94, 0xef, 0x13, 0x7d, ++ 0x56, 0x90, 0x50, 0x4e, 0xda, 0x70, 0x3e, 0xdd, 0xe3, 0x64, 0xf1, 0x49, ++ 0xab, 0x8d, 0xe4, 0xe6, 0x00, 0xde, 0x8b, 0xd1, 0x3d, 0xce, 0xae, 0xcd, ++ 0xa0, 0xf5, 0xb7, 0x5a, 0x40, 0x66, 0x89, 0xf3, 0x5d, 0x2d, 0x8e, 0x7f, ++ 0x44, 0xf7, 0xbf, 0xb0, 0xd1, 0x02, 0x41, 0x7c, 0xbe, 0x63, 0xa3, 0x99, ++ 0xd3, 0xfb, 0xc2, 0x56, 0x33, 0x5f, 0xc7, 0xbc, 0xe9, 0xdf, 0x7b, 0x8b, ++ 0xb0, 0xbf, 0x0e, 0xe5, 0x2f, 0x0d, 0x8f, 0x7a, 0x7c, 0xe3, 0x8d, 0x93, ++ 0x45, 0xb8, 0xee, 0x85, 0x56, 0xec, 0xe3, 0x7d, 0x3d, 0x9b, 0x2c, 0x5c, ++ 0xff, 0xd6, 0x3d, 0xce, 0xf8, 0xf8, 0x54, 0xf9, 0xd5, 0xe4, 0xf5, 0x25, ++ 0x55, 0x3e, 0xd7, 0xf9, 0xf5, 0xf2, 0x96, 0x2a, 0xaf, 0xe3, 0xe4, 0xb4, ++ 0xf5, 0xeb, 0xc9, 0x69, 0x0f, 0xc9, 0x69, 0x06, 0x97, 0xd3, 0xca, 0x3b, ++ 0x66, 0xce, 0xf7, 0xba, 0x7c, 0x92, 0x9f, 0xa7, 0xc0, 0xb9, 0x8f, 0xf4, ++ 0xe7, 0xf6, 0x71, 0x4b, 0x3e, 0x9e, 0x77, 0x76, 0xaf, 0xc3, 0xb9, 0x1d, ++ 0xfb, 0x0b, 0xcc, 0xe1, 0x1f, 0xe7, 0x91, 0x5d, 0x38, 0x2e, 0xde, 0x2f, ++ 0x6c, 0xdb, 0xc3, 0x48, 0x5f, 0xf0, 0xf0, 0x8f, 0xd0, 0xbd, 0x8a, 0x42, ++ 0x56, 0xd8, 0xc9, 0x48, 0x8e, 0x04, 0xbf, 0x7e, 0xa6, 0xf2, 0x4b, 0x86, ++ 0x11, 0x96, 0x41, 0xfa, 0x2a, 0xc5, 0x67, 0xfb, 0x50, 0x3e, 0x70, 0x6b, ++ 0x85, 0xf8, 0xfc, 0xba, 0x05, 0x1a, 0x0f, 0x54, 0xd0, 0x73, 0x61, 0x5f, ++ 0x16, 0x1c, 0x2a, 0xd8, 0xb3, 0x33, 0x49, 0x6e, 0xeb, 0x55, 0x79, 0xb4, ++ 0x99, 0xc0, 0xdf, 0x8f, 0xe3, 0xca, 0xad, 0xe0, 0x3f, 0x90, 0x49, 0xe3, ++ 0xfb, 0xef, 0x6a, 0xc0, 0x75, 0xf6, 0xe3, 0x7c, 0x7a, 0x3e, 0x53, 0x5d, ++ 0xaf, 0x6c, 0xce, 0x48, 0x7d, 0x03, 0xb6, 0x87, 0x68, 0x7f, 0xe4, 0xf3, ++ 0x1e, 0xf5, 0x1c, 0x5a, 0xff, 0x07, 0x24, 0xff, 0xd8, 0xc2, 0xcb, 0x26, ++ 0x06, 0x48, 0xf7, 0x07, 0x6d, 0x82, 0xee, 0xcb, 0xbb, 0x62, 0xeb, 0xe9, ++ 0x1e, 0x8b, 0x66, 0xf8, 0x7f, 0x4e, 0xf6, 0x6f, 0xe5, 0xcc, 0xf7, 0xda, ++ 0x00, 0xed, 0x44, 0x68, 0xf6, 0xdb, 0x15, 0x7e, 0x3a, 0x1f, 0x38, 0x4d, ++ 0x44, 0xf7, 0x80, 0x4a, 0xf7, 0xe3, 0x4b, 0x7f, 0xf7, 0xf2, 0x16, 0xbc, ++ 0xaf, 0xfd, 0xee, 0x74, 0xce, 0xd7, 0x86, 0x63, 0x2f, 0xc6, 0x89, 0xcf, ++ 0x1d, 0xa5, 0x12, 0x10, 0xdf, 0xed, 0x65, 0x8b, 0xf2, 0xfd, 0x06, 0xf2, ++ 0xa7, 0xb5, 0x81, 0x5b, 0x25, 0xe0, 0xcf, 0x4d, 0xf4, 0x3b, 0xa2, 0xa3, ++ 0xf5, 0x8a, 0x81, 0x5e, 0x6f, 0x50, 0xf5, 0x75, 0x81, 0x55, 0xdc, 0x1f, ++ 0xa2, 0x48, 0xa4, 0x42, 0x6e, 0x8f, 0xa5, 0x25, 0x55, 0x89, 0x71, 0xda, ++ 0xfd, 0x01, 0xb6, 0xf3, 0xfb, 0xd9, 0xcb, 0x5e, 0xe1, 0x7c, 0xda, 0xf2, ++ 0x38, 0x2c, 0x34, 0xf3, 0x13, 0x3f, 0xc7, 0xd7, 0x69, 0x6a, 0x3b, 0xcb, ++ 0x5a, 0x70, 0x9d, 0x87, 0x2d, 0x8a, 0x25, 0x13, 0xe9, 0xfc, 0xde, 0xd4, ++ 0xc6, 0xcd, 0x97, 0xcb, 0x00, 0xde, 0xee, 0x46, 0x13, 0x89, 0x17, 0x39, ++ 0xdd, 0x6d, 0x03, 0xff, 0x3c, 0x80, 0x5f, 0x77, 0x3b, 0x78, 0x3f, 0xde, ++ 0x5d, 0xc0, 0xfb, 0xff, 0xda, 0x2d, 0xf3, 0x76, 0xde, 0x4c, 0xdf, 0xdb, ++ 0x0a, 0xae, 0xb3, 0xf6, 0x44, 0x67, 0x19, 0xd1, 0xeb, 0x78, 0xf1, 0x0b, ++ 0x3e, 0x37, 0xee, 0x73, 0xfd, 0xb4, 0x85, 0xd3, 0x01, 0xc0, 0xcd, 0xe9, ++ 0xb4, 0x45, 0x95, 0xbd, 0x1b, 0x51, 0x33, 0xd8, 0xf0, 0xfd, 0x8d, 0x01, ++ 0x16, 0x06, 0x96, 0x38, 0xff, 0x86, 0x5b, 0x45, 0xe0, 0x47, 0x7b, 0xf2, ++ 0x3e, 0xed, 0x87, 0x13, 0xdb, 0xbb, 0x7e, 0xc3, 0xed, 0x9c, 0xb3, 0x75, ++ 0xb4, 0x5e, 0xce, 0x24, 0xb9, 0xba, 0xd8, 0x4b, 0xfd, 0x40, 0xd7, 0x1f, ++ 0xea, 0x01, 0xdb, 0x8f, 0xd0, 0x4f, 0x90, 0x7c, 0x05, 0x22, 0x0c, 0x0a, ++ 0x70, 0x9d, 0xf5, 0xb7, 0x72, 0xf9, 0xfc, 0xf6, 0xc8, 0x59, 0xab, 0x4c, ++ 0x72, 0x60, 0x1a, 0xa9, 0x27, 0xfa, 0x07, 0x8f, 0x32, 0x20, 0xb9, 0x0c, ++ 0x74, 0x8e, 0x72, 0xfb, 0xf9, 0x32, 0xde, 0x4b, 0xc1, 0x73, 0xa7, 0xbb, ++ 0xb2, 0x39, 0x5d, 0x02, 0xd1, 0x85, 0x26, 0xc1, 0xcf, 0x45, 0x26, 0xe2, ++ 0xff, 0x13, 0x2a, 0xff, 0x07, 0xef, 0xf9, 0x8f, 0x2c, 0xb2, 0x5f, 0xb6, ++ 0x2e, 0xf9, 0xcc, 0xfd, 0xc4, 0xc7, 0x53, 0x66, 0xce, 0xc7, 0x9d, 0xee, ++ 0x91, 0x2c, 0x87, 0x01, 0x5f, 0xce, 0xe3, 0xba, 0x90, 0x26, 0xce, 0x4f, ++ 0x6d, 0xea, 0xfb, 0x46, 0x6b, 0xb0, 0xcc, 0x89, 0xf3, 0x1a, 0x55, 0xb9, ++ 0x4d, 0x7d, 0x6f, 0x75, 0x09, 0xb9, 0x44, 0x0a, 0x5b, 0x7c, 0x53, 0x04, ++ 0xad, 0x18, 0xd2, 0x6d, 0xbd, 0x2a, 0x5f, 0xcd, 0x78, 0x95, 0xa9, 0x39, ++ 0xd8, 0x8f, 0xb0, 0x58, 0x3a, 0xea, 0x6d, 0x73, 0xd4, 0x73, 0x45, 0xa2, ++ 0xb6, 0x93, 0xc1, 0x25, 0x9d, 0x3d, 0x00, 0xb8, 0xa4, 0xe9, 0xb3, 0x79, ++ 0x62, 0x79, 0x9b, 0x6c, 0xdb, 0x41, 0xeb, 0x95, 0x25, 0xd9, 0x4b, 0x3f, ++ 0x2e, 0x3a, 0x3f, 0xb1, 0x5f, 0x53, 0x6b, 0x06, 0x39, 0xd1, 0xa4, 0xfd, ++ 0x83, 0xfc, 0x1e, 0x69, 0xc5, 0xa5, 0xf9, 0x7e, 0x83, 0x7b, 0x8e, 0xc9, ++ 0xfb, 0x70, 0x11, 0xc8, 0xc8, 0xaf, 0x8e, 0x10, 0x03, 0x19, 0xe5, 0xbe, ++ 0xfd, 0x56, 0x39, 0x6f, 0xaf, 0x1d, 0x7e, 0x5a, 0x26, 0x3d, 0xb1, 0xa5, ++ 0x8f, 0xbc, 0x40, 0x7e, 0x01, 0xe6, 0x9a, 0x1c, 0xfb, 0x90, 0xbf, 0xed, ++ 0x41, 0x50, 0x92, 0xfd, 0xdc, 0xa8, 0x5b, 0xe8, 0xed, 0xa8, 0x5b, 0xe8, ++ 0xf1, 0x4c, 0x17, 0x93, 0x3e, 0xb6, 0x71, 0xbb, 0x55, 0x4e, 0xf7, 0x76, ++ 0x17, 0xfa, 0x4b, 0x5c, 0x78, 0x8e, 0xdf, 0x17, 0xbf, 0x97, 0x75, 0x0c, ++ 0x1f, 0xb7, 0x59, 0x63, 0x95, 0x60, 0xfc, 0xbc, 0x03, 0xd0, 0x1f, 0xdb, ++ 0x48, 0x9f, 0x70, 0xdf, 0x72, 0xe4, 0xcf, 0xeb, 0x06, 0xe7, 0xbe, 0xe9, ++ 0x76, 0xcf, 0xa5, 0x79, 0x33, 0xe1, 0x59, 0x2e, 0xdf, 0x80, 0xf2, 0x4d, ++ 0x72, 0x95, 0x7a, 0xcf, 0x85, 0x2e, 0x71, 0x2e, 0x4d, 0x9f, 0xd7, 0x1d, ++ 0xbb, 0x62, 0x1d, 0x26, 0xb9, 0x8d, 0x18, 0xeb, 0x33, 0xf3, 0xb8, 0x16, ++ 0xd2, 0xba, 0x7d, 0x00, 0x5e, 0x23, 0x3f, 0xf7, 0x47, 0xf5, 0x9e, 0xed, ++ 0xbb, 0x19, 0xa7, 0x57, 0x60, 0x77, 0x2e, 0xa7, 0xd3, 0x55, 0xd8, 0xed, ++ 0x73, 0xa3, 0x5c, 0x5e, 0xc5, 0x73, 0xec, 0x45, 0xb9, 0xbc, 0xee, 0xf3, ++ 0x65, 0x64, 0xe3, 0xfc, 0xeb, 0x7e, 0x5f, 0x46, 0x4e, 0x66, 0x42, 0xff, ++ 0x3b, 0x76, 0x67, 0xf0, 0x79, 0x7d, 0xa5, 0xab, 0x72, 0x5b, 0xb0, 0x5f, ++ 0x4f, 0x72, 0x8f, 0xfb, 0x5d, 0x8b, 0x78, 0x6c, 0x44, 0xe7, 0x0d, 0xbb, ++ 0x85, 0xde, 0x69, 0xfb, 0x7d, 0x14, 0x5b, 0x97, 0x4b, 0xfa, 0x53, 0x63, ++ 0x19, 0xb1, 0x3a, 0xf1, 0xfd, 0x8c, 0xe8, 0xc5, 0x2c, 0x8a, 0xeb, 0x6a, ++ 0x0e, 0xaf, 0xce, 0x25, 0xfd, 0x9b, 0xe8, 0x9c, 0x8b, 0xdd, 0xc2, 0x2e, ++ 0xb5, 0x77, 0x6d, 0xd9, 0x7c, 0x39, 0x57, 0xc8, 0x83, 0x19, 0xf5, 0x69, ++ 0xb3, 0xea, 0xc7, 0x02, 0xdb, 0x63, 0x56, 0xa2, 0xff, 0xe6, 0x2e, 0xe0, ++ 0xf2, 0x3b, 0x78, 0xf0, 0x83, 0x0e, 0xd2, 0xdf, 0x6b, 0xd1, 0x0c, 0x07, ++ 0xf9, 0xbd, 0xab, 0x47, 0x32, 0x82, 0x64, 0xef, 0xaf, 0x1f, 0x4d, 0x0b, ++ 0xa3, 0x25, 0x86, 0x36, 0x92, 0x77, 0xb4, 0x67, 0x57, 0x2d, 0xc3, 0xdf, ++ 0xe3, 0xf1, 0xe3, 0x61, 0xb3, 0x23, 0x88, 0xe3, 0x02, 0x47, 0x3f, 0x7d, ++ 0x81, 0xf4, 0x31, 0x70, 0x10, 0xb5, 0x11, 0xd7, 0xdd, 0x1c, 0x7d, 0x7a, ++ 0x94, 0xfc, 0x5b, 0x5b, 0x74, 0xd9, 0x15, 0x89, 0xda, 0x5f, 0x7d, 0xb3, ++ 0xfa, 0xd0, 0xde, 0xf5, 0x23, 0x7e, 0x5f, 0xad, 0xff, 0x69, 0xb7, 0x4d, ++ 0x26, 0xfb, 0x79, 0x4d, 0x12, 0x76, 0x62, 0x73, 0xe4, 0x0d, 0x1e, 0xcf, ++ 0x6e, 0xbe, 0x7d, 0xa3, 0xd2, 0x57, 0x41, 0xf7, 0xfc, 0xcf, 0xc5, 0x64, ++ 0xcf, 0x02, 0xff, 0x74, 0x63, 0x31, 0xd9, 0xb1, 0xc0, 0x9b, 0x37, 0x16, ++ 0xd3, 0xfb, 0xc0, 0xa1, 0x8c, 0x4e, 0xa3, 0xf8, 0xa4, 0xd5, 0x63, 0xe6, ++ 0xfc, 0xd7, 0xfc, 0x63, 0xc9, 0x39, 0x49, 0x49, 0x1e, 0x97, 0xad, 0xfa, ++ 0xaf, 0x92, 0x9e, 0x67, 0xbd, 0xb3, 0x91, 0x7e, 0x35, 0x67, 0xd7, 0x38, ++ 0xcd, 0x72, 0xe2, 0x7d, 0x4d, 0x99, 0xc9, 0x47, 0xe3, 0x6b, 0xde, 0xad, ++ 0xcd, 0xdd, 0x94, 0x34, 0xaf, 0x27, 0x2e, 0x79, 0xe9, 0xf9, 0xa2, 0xb3, ++ 0xb5, 0x19, 0x1b, 0x93, 0xe4, 0xd2, 0xea, 0xb1, 0xa8, 0x76, 0x08, 0xb5, ++ 0x1a, 0xed, 0xcf, 0x3a, 0x95, 0x86, 0xeb, 0x0a, 0x7e, 0x12, 0x37, 0x57, ++ 0x52, 0x5f, 0x0a, 0xaa, 0x71, 0x04, 0xbb, 0xc3, 0xe3, 0x6d, 0x90, 0x25, ++ 0xe4, 0x73, 0x13, 0xfd, 0x87, 0xaa, 0xd8, 0x17, 0x97, 0x78, 0x3c, 0x13, ++ 0x6c, 0x35, 0x87, 0xcb, 0xf0, 0x7d, 0x53, 0xdc, 0xa4, 0xd8, 0x2b, 0xe9, ++ 0x3d, 0xce, 0x4b, 0x8a, 0x33, 0x00, 0x7c, 0x2b, 0x16, 0x10, 0xbf, 0x7f, ++ 0x38, 0xdd, 0xb9, 0x53, 0xe6, 0xfe, 0x1e, 0xba, 0xa9, 0xff, 0x54, 0x59, ++ 0x98, 0xfc, 0x3d, 0x04, 0x6d, 0x43, 0xa5, 0x49, 0x71, 0xd0, 0xba, 0xb8, ++ 0x29, 0x96, 0x86, 0x72, 0xd3, 0x18, 0x4d, 0x8b, 0x51, 0x3c, 0xb4, 0x2e, ++ 0x2e, 0x5d, 0xe4, 0x7d, 0x35, 0x3e, 0xfa, 0xc8, 0xf1, 0xfa, 0x8f, 0x67, ++ 0x03, 0x8f, 0x8f, 0x2e, 0x27, 0xc7, 0x39, 0x18, 0x0f, 0x5d, 0xd6, 0xc7, ++ 0x4b, 0x30, 0x85, 0xce, 0xab, 0xc5, 0x4b, 0xef, 0x51, 0x5c, 0x85, 0xf1, ++ 0x6c, 0xf3, 0xd6, 0x98, 0x85, 0xfc, 0x15, 0xc6, 0x49, 0xba, 0xf1, 0x8f, ++ 0x36, 0x7e, 0xf7, 0x0a, 0xa3, 0x38, 0xa9, 0x4b, 0xff, 0xbc, 0x24, 0x2e, ++ 0x99, 0x1e, 0xc4, 0x7b, 0x96, 0xa0, 0xb9, 0x23, 0x32, 0xf4, 0xc5, 0x9f, ++ 0xb7, 0x91, 0x7e, 0x68, 0x71, 0x26, 0xf1, 0x6b, 0xc0, 0x40, 0xdf, 0x2b, ++ 0x55, 0x3d, 0xd1, 0xf4, 0xa8, 0x27, 0x6e, 0xe2, 0x7c, 0xe8, 0x89, 0xbb, ++ 0x6d, 0xa5, 0xd8, 0xce, 0x53, 0xdf, 0x0f, 0x38, 0x4c, 0x10, 0xc4, 0xf5, ++ 0x7b, 0xa2, 0xab, 0xf7, 0x31, 0x8a, 0xcb, 0x6e, 0x3f, 0x9c, 0x41, 0xf4, ++ 0xea, 0x39, 0xb7, 0x0a, 0xb6, 0x93, 0xbe, 0x3b, 0xdc, 0xb6, 0x32, 0x9a, ++ 0x77, 0xfb, 0xbb, 0xb6, 0xb5, 0x15, 0x09, 0xf9, 0x18, 0x67, 0x3f, 0x5c, ++ 0xaa, 0x7d, 0x1c, 0x8b, 0x07, 0x8c, 0xfd, 0xdc, 0x27, 0x2e, 0x35, 0xae, ++ 0xfa, 0x86, 0xfc, 0xdd, 0xe5, 0x3f, 0x17, 0x7f, 0xa7, 0xf8, 0x3f, 0x25, ++ 0xfb, 0x5d, 0xf1, 0x9a, 0xdc, 0x44, 0xf1, 0x21, 0xde, 0xe7, 0x1e, 0x8a, ++ 0x67, 0x53, 0xfd, 0x84, 0x66, 0x7f, 0xb5, 0x75, 0x8b, 0x54, 0x3e, 0x8f, ++ 0xb7, 0xbf, 0x57, 0x78, 0xfc, 0x82, 0xf9, 0x2f, 0xb7, 0xbf, 0x45, 0x6e, ++ 0x99, 0x8f, 0x9b, 0x11, 0x6d, 0xc8, 0xe5, 0x79, 0xf1, 0xb9, 0x35, 0xb9, ++ 0x72, 0xe6, 0xf8, 0xf5, 0xe7, 0x48, 0x4e, 0x53, 0x4e, 0xc5, 0xf8, 0xf5, ++ 0xb5, 0x78, 0x2d, 0x10, 0x54, 0x86, 0x6c, 0x94, 0xc7, 0x28, 0x66, 0xae, ++ 0x9f, 0x81, 0x35, 0x2c, 0xcc, 0xa8, 0xef, 0x63, 0x3c, 0xce, 0x0e, 0xac, ++ 0xb7, 0x84, 0xe9, 0xbd, 0x76, 0x9e, 0xf8, 0x1a, 0xc6, 0xc7, 0xad, 0x75, ++ 0xb2, 0xb0, 0x9d, 0x25, 0xe2, 0x3f, 0x2d, 0x3e, 0x1c, 0x7b, 0xbf, 0x08, ++ 0xdf, 0x97, 0x24, 0xe2, 0x45, 0x2d, 0x2e, 0x8c, 0xfb, 0x18, 0xcf, 0x83, ++ 0xd6, 0x28, 0x16, 0xfe, 0x7e, 0xde, 0x4c, 0x7f, 0x8e, 0xbb, 0x86, 0xee, ++ 0x67, 0xe7, 0xcf, 0x6b, 0x96, 0x8a, 0x75, 0xd1, 0x0e, 0x0c, 0x51, 0x7e, ++ 0xf4, 0xf0, 0xf7, 0x19, 0x70, 0x3b, 0xa0, 0xc6, 0x8b, 0x9a, 0x7c, 0xa6, ++ 0xc6, 0x93, 0x9f, 0x45, 0xe7, 0x4c, 0x85, 0x2f, 0x89, 0x2b, 0x5e, 0x56, ++ 0xe5, 0x52, 0xd3, 0xaf, 0x99, 0x29, 0x7a, 0xa1, 0xf9, 0xa9, 0x7a, 0xd5, ++ 0x4f, 0x77, 0x90, 0x9f, 0xae, 0x26, 0x3f, 0xfd, 0x85, 0x95, 0xf4, 0x60, ++ 0xa2, 0xb8, 0x1b, 0xfd, 0xf4, 0x5c, 0x37, 0x9f, 0x07, 0x7c, 0xfe, 0xa2, ++ 0x77, 0x25, 0x9f, 0x51, 0xde, 0x7d, 0x58, 0x5d, 0x77, 0xb1, 0xc6, 0xb7, ++ 0xf8, 0x09, 0x17, 0x9d, 0xb7, 0x18, 0xe2, 0xdb, 0x28, 0x5f, 0x9c, 0xc8, ++ 0x7f, 0xe6, 0x79, 0x4c, 0x3a, 0xbb, 0x90, 0xfa, 0xbe, 0x7e, 0x92, 0x7a, ++ 0xdc, 0xa2, 0xc6, 0x0b, 0xdf, 0x94, 0x1e, 0x37, 0xab, 0xf1, 0xd7, 0xff, ++ 0x75, 0x3d, 0x1e, 0x8b, 0xff, 0xac, 0xc6, 0xf7, 0xbc, 0xe9, 0x76, 0xfd, ++ 0x15, 0xc9, 0x6f, 0xba, 0xb9, 0x33, 0xee, 0x22, 0xbd, 0xfb, 0x17, 0xd4, ++ 0x3b, 0x79, 0xfc, 0xb8, 0x22, 0x2d, 0x9f, 0x94, 0x40, 0xc7, 0x9f, 0xa1, ++ 0x62, 0xab, 0x89, 0xf2, 0x9e, 0x40, 0xab, 0xc0, 0x01, 0x42, 0xd9, 0xf2, ++ 0x19, 0x9e, 0x9f, 0xbc, 0x65, 0x06, 0x5a, 0x67, 0xf3, 0xad, 0x42, 0x1e, ++ 0xa7, 0x3d, 0x76, 0x2b, 0x9b, 0xb7, 0xa1, 0x42, 0x10, 0x7e, 0xf4, 0xc9, ++ 0x12, 0x8e, 0xdb, 0x3c, 0xf6, 0xda, 0x59, 0x8b, 0x82, 0xf3, 0x9b, 0xb6, ++ 0xb2, 0x85, 0x84, 0x07, 0x35, 0xb5, 0xea, 0xef, 0x13, 0x9a, 0xae, 0x70, ++ 0x9c, 0x2d, 0x78, 0x84, 0xf1, 0x78, 0x39, 0x54, 0xd8, 0x7f, 0x92, 0xf4, ++ 0x2a, 0xb8, 0x6f, 0x8e, 0x4c, 0xeb, 0x37, 0xd3, 0x65, 0x09, 0x0f, 0x69, ++ 0xcd, 0x0e, 0xef, 0x20, 0xfc, 0x82, 0x70, 0x9c, 0x7b, 0xe9, 0x79, 0x7a, ++ 0x82, 0x0e, 0xb8, 0x4f, 0xbb, 0xfa, 0xfc, 0x7e, 0x15, 0xdf, 0x81, 0x94, ++ 0x38, 0xe0, 0xcd, 0xc1, 0x0b, 0x1c, 0xef, 0x09, 0x0c, 0x30, 0x20, 0xfd, ++ 0xb5, 0x46, 0xd1, 0x7e, 0x90, 0x3d, 0x39, 0x25, 0xf0, 0x8e, 0x8e, 0xa8, ++ 0xb0, 0x0b, 0x9f, 0x74, 0xd9, 0xb9, 0x3d, 0xf9, 0x44, 0x12, 0xf7, 0x08, ++ 0x74, 0xb1, 0xf0, 0x36, 0x96, 0x88, 0x23, 0xae, 0x44, 0x9f, 0xcb, 0x23, ++ 0x3d, 0x1b, 0x17, 0x4f, 0x28, 0x18, 0x4f, 0xe4, 0x25, 0xe2, 0x89, 0xf6, ++ 0x57, 0xde, 0xe5, 0xf6, 0x30, 0x35, 0x7e, 0xc8, 0x19, 0x10, 0xfb, 0x04, ++ 0xda, 0xcc, 0x61, 0xc2, 0x63, 0x86, 0x8a, 0x17, 0x33, 0xea, 0xb7, 0x63, ++ 0x3e, 0x98, 0x4f, 0x71, 0xa2, 0x2c, 0x3f, 0x54, 0x24, 0xce, 0x05, 0x61, ++ 0x6e, 0x57, 0x14, 0x1d, 0x4e, 0xb2, 0xf7, 0x2e, 0xe1, 0xf7, 0x3f, 0x3b, ++ 0xf5, 0x6f, 0x3c, 0x8f, 0x6c, 0x3a, 0xcc, 0x20, 0x97, 0xc7, 0x1d, 0x4a, ++ 0xbc, 0x34, 0x2f, 0x11, 0x77, 0x3c, 0x1a, 0x5a, 0xce, 0xfd, 0xbf, 0x16, ++ 0x67, 0x3c, 0x3a, 0xeb, 0xe4, 0x50, 0x11, 0xad, 0xa7, 0xc6, 0x19, 0x0e, ++ 0xfc, 0x25, 0xfc, 0x30, 0x35, 0xce, 0xe8, 0x88, 0x9c, 0xb5, 0x50, 0x5e, ++ 0x30, 0x2e, 0x9e, 0x48, 0x89, 0x23, 0x5e, 0x77, 0xeb, 0x71, 0xc1, 0x59, ++ 0x92, 0xc0, 0x59, 0x67, 0x45, 0x99, 0x83, 0xf0, 0xa4, 0x59, 0x2a, 0x3d, ++ 0xef, 0xeb, 0x4b, 0xe7, 0x71, 0x71, 0xfd, 0x87, 0x1b, 0x73, 0x49, 0xcf, ++ 0x35, 0xfe, 0x5c, 0x6b, 0x10, 0xfc, 0xba, 0x76, 0xe1, 0x73, 0x17, 0xcd, ++ 0x5b, 0xfc, 0xa1, 0xe4, 0x20, 0x7b, 0xfb, 0xe6, 0x85, 0xad, 0xbf, 0x29, ++ 0x12, 0x7d, 0xd9, 0x26, 0xd3, 0xbc, 0xad, 0x19, 0x94, 0x87, 0x5c, 0xfb, ++ 0xf0, 0x89, 0x0c, 0xa2, 0xe7, 0x9b, 0xd8, 0x02, 0xea, 0xeb, 0xa1, 0xf3, ++ 0x92, 0x21, 0x7e, 0x28, 0xab, 0xf6, 0x08, 0xfd, 0xdb, 0x3f, 0xbb, 0x39, ++ 0xfe, 0x2b, 0x17, 0x71, 0x5c, 0x47, 0x42, 0xff, 0x36, 0x25, 0x81, 0xbf, ++ 0xa4, 0xce, 0x7b, 0xc0, 0x23, 0xec, 0x41, 0x08, 0xd3, 0x0c, 0x8e, 0x3b, ++ 0x1e, 0x06, 0x2e, 0xbf, 0xa1, 0x42, 0xff, 0x72, 0xde, 0x7f, 0x71, 0x36, ++ 0xec, 0xe3, 0xb8, 0x8f, 0x90, 0xd7, 0x37, 0xa2, 0xd9, 0x0e, 0x8a, 0xf7, ++ 0xca, 0xf1, 0xb2, 0x5d, 0x68, 0x27, 0xfe, 0x2e, 0x1d, 0x7a, 0xec, 0x55, ++ 0x24, 0xcf, 0xfe, 0xb7, 0xb9, 0x7e, 0xbc, 0x68, 0xe2, 0xf2, 0x8b, 0xf3, ++ 0x83, 0x8c, 0xfa, 0x07, 0x64, 0xee, 0xef, 0x88, 0x64, 0xeb, 0x71, 0x7c, ++ 0xa5, 0x15, 0xcf, 0x52, 0x05, 0x62, 0x33, 0xd4, 0xb7, 0x7b, 0x54, 0xbe, ++ 0x15, 0x62, 0x1e, 0x4a, 0xf9, 0x20, 0x9e, 0x66, 0xcd, 0x1d, 0xa4, 0x53, ++ 0xf9, 0x8c, 0x53, 0x5f, 0x10, 0x1f, 0x2b, 0xd3, 0x41, 0xa2, 0xf5, 0x9f, ++ 0xb1, 0xf8, 0x77, 0xde, 0x8d, 0x53, 0x9e, 0x19, 0x94, 0x9c, 0xdb, 0x68, ++ 0x8e, 0xe4, 0xcc, 0x6d, 0xc0, 0x7b, 0x3d, 0x63, 0x17, 0x4b, 0x3d, 0x73, ++ 0x18, 0xe5, 0x15, 0xcf, 0x85, 0xd2, 0xcd, 0xcf, 0xd5, 0x51, 0x71, 0xf2, ++ 0x3c, 0xcd, 0x67, 0xb2, 0x03, 0xd6, 0xe3, 0xfc, 0x8e, 0x82, 0xcc, 0x18, ++ 0xe1, 0x67, 0x10, 0xb1, 0xfc, 0x7e, 0x4c, 0x2e, 0x51, 0x0e, 0x18, 0xed, ++ 0x53, 0x29, 0xe4, 0xed, 0xe3, 0xf9, 0x14, 0x1b, 0x2a, 0xec, 0x0e, 0x9a, ++ 0x9a, 0xb7, 0xeb, 0x64, 0x61, 0x17, 0xbe, 0xef, 0x03, 0xca, 0x83, 0x76, ++ 0x2c, 0xe9, 0x04, 0xca, 0x3b, 0x4f, 0xd6, 0x81, 0x1a, 0x07, 0xd9, 0x82, ++ 0x97, 0x71, 0xfc, 0x5a, 0x9c, 0x31, 0x15, 0x9f, 0x4f, 0x2f, 0xf4, 0x17, ++ 0x52, 0x5c, 0xd1, 0x5e, 0x30, 0x6c, 0x15, 0x71, 0xc5, 0x88, 0x95, 0xe2, ++ 0x8a, 0xb9, 0x2e, 0x6d, 0xbc, 0xc0, 0xed, 0x4c, 0x38, 0x9e, 0xec, 0xe5, ++ 0xce, 0xf9, 0xaf, 0x73, 0x79, 0x6b, 0xa2, 0xe7, 0x49, 0xfa, 0x0c, 0xc9, ++ 0xf8, 0x9e, 0x79, 0x7c, 0xbf, 0xc5, 0x3d, 0xd1, 0xfe, 0xb2, 0xc8, 0xe7, ++ 0x52, 0xf6, 0x5f, 0x94, 0xfd, 0x59, 0x1e, 0xcf, 0x5f, 0xfe, 0xeb, 0x8f, ++ 0x59, 0xdc, 0x9f, 0x45, 0x6f, 0x70, 0xbf, 0x73, 0x7d, 0x24, 0x0d, 0xe2, ++ 0x1c, 0xb7, 0x1b, 0x16, 0x38, 0x75, 0xd4, 0xc2, 0xf3, 0xf5, 0xeb, 0x98, ++ 0x07, 0x4d, 0x4f, 0xf2, 0x67, 0x3b, 0x5c, 0x82, 0x0e, 0xc7, 0xa2, 0x1e, ++ 0x2e, 0x8f, 0x03, 0xf1, 0xda, 0x0c, 0x1a, 0xff, 0x4b, 0x97, 0xd8, 0xaf, ++ 0xef, 0xdc, 0x9a, 0xd5, 0x0f, 0x92, 0x9c, 0xc4, 0x25, 0x67, 0x19, 0x3f, ++ 0xa5, 0xc8, 0x6b, 0x06, 0xe2, 0x52, 0x8d, 0x88, 0x0f, 0xc6, 0xd1, 0xa9, ++ 0xca, 0x6d, 0x70, 0x4e, 0x5b, 0xba, 0xb0, 0xe7, 0xa9, 0xf2, 0x79, 0xc9, ++ 0x2d, 0xe4, 0xfa, 0x12, 0xdd, 0x1b, 0xcf, 0xe1, 0xb9, 0x20, 0xf2, 0x95, ++ 0xc0, 0x56, 0x51, 0x3f, 0x70, 0xa8, 0xfa, 0x16, 0xe8, 0x64, 0xdc, 0xae, ++ 0x9c, 0x2c, 0xce, 0x63, 0x1a, 0x8e, 0x9c, 0x6f, 0x54, 0x5f, 0x38, 0x3c, ++ 0xc2, 0xed, 0x6c, 0xf3, 0x0f, 0x99, 0x33, 0x28, 0x4f, 0x5c, 0x5f, 0xd8, ++ 0xa5, 0xe6, 0x19, 0xa9, 0x76, 0xa8, 0x23, 0x72, 0x40, 0xf0, 0x2d, 0x15, ++ 0xb7, 0xf5, 0xd6, 0x73, 0xbb, 0x33, 0x59, 0xdc, 0x16, 0x28, 0x1b, 0x5e, ++ 0x9c, 0xb0, 0xd3, 0xdf, 0xf1, 0xa8, 0x76, 0x65, 0x81, 0xc0, 0x71, 0x4f, ++ 0xb8, 0x1d, 0xfc, 0xbe, 0x39, 0x9d, 0x0b, 0x5d, 0xf9, 0x90, 0xb8, 0xbf, ++ 0x01, 0x3d, 0xf7, 0x7b, 0x6a, 0xc6, 0xd3, 0xd3, 0x60, 0x5c, 0xb4, 0xd6, ++ 0x80, 0xee, 0x06, 0xe3, 0xfe, 0xf0, 0xc0, 0xe4, 0xd6, 0xab, 0x56, 0x26, ++ 0xb7, 0x9e, 0x6b, 0x92, 0xe3, 0x5a, 0x94, 0xc9, 0xed, 0x7b, 0x68, 0x92, ++ 0xeb, 0xed, 0x99, 0xe4, 0x7a, 0x4f, 0x1a, 0xe9, 0x2d, 0xb2, 0x5d, 0xc4, ++ 0x03, 0x0e, 0x21, 0x37, 0x75, 0xe6, 0xdb, 0x59, 0x24, 0xff, 0x4f, 0x1c, ++ 0x99, 0x93, 0xff, 0x65, 0xf1, 0xac, 0x19, 0x0d, 0xad, 0x9c, 0xc4, 0x7f, ++ 0x8b, 0x23, 0x1d, 0xe4, 0x24, 0xbf, 0xbf, 0x62, 0x7e, 0xae, 0xae, 0xff, ++ 0xa0, 0xb3, 0x48, 0x37, 0xfe, 0xa1, 0x25, 0x73, 0x74, 0xef, 0x1b, 0x94, ++ 0x72, 0xdd, 0xfb, 0xd5, 0xde, 0x6a, 0x5d, 0x7f, 0xad, 0xef, 0x7e, 0xdd, ++ 0xf8, 0x87, 0x1b, 0x3d, 0xba, 0x7e, 0x5a, 0xc1, 0x72, 0xdd, 0x78, 0xbb, ++ 0xbc, 0x4a, 0xd7, 0xcf, 0x98, 0xff, 0x88, 0x6e, 0x7c, 0x08, 0x75, 0x66, ++ 0x09, 0xda, 0xcf, 0x34, 0x6b, 0x66, 0x88, 0xa1, 0xfc, 0x4f, 0x71, 0xfe, ++ 0xa5, 0x6e, 0x7c, 0x7a, 0xb5, 0x3d, 0x93, 0xf4, 0x22, 0xb4, 0x30, 0x2d, ++ 0x46, 0xf2, 0x9e, 0xf6, 0xd6, 0xa6, 0x20, 0xbd, 0x7b, 0x9a, 0xfd, 0x64, ++ 0x24, 0x46, 0xd4, 0xcd, 0x3a, 0xd8, 0xc8, 0x50, 0x65, 0xa5, 0xec, 0x57, ++ 0x6c, 0xa4, 0x27, 0x2b, 0x97, 0x8a, 0xba, 0x40, 0x5f, 0xad, 0x2d, 0xbc, ++ 0x87, 0xe2, 0x9c, 0xbb, 0xb2, 0x2a, 0x69, 0xbe, 0x46, 0xaf, 0x7d, 0x75, ++ 0x22, 0xfe, 0x72, 0x54, 0x8c, 0x06, 0x73, 0x91, 0xce, 0x33, 0x95, 0x78, ++ 0x6d, 0x2e, 0xea, 0xf3, 0xf5, 0xa5, 0xc0, 0xf3, 0x87, 0xeb, 0x76, 0x51, ++ 0x1f, 0x00, 0xc9, 0x51, 0xd8, 0xc0, 0xf9, 0xe7, 0x28, 0x5c, 0x85, 0x76, ++ 0x3f, 0x64, 0x37, 0xae, 0x33, 0x35, 0xd6, 0xa9, 0x79, 0xf1, 0x04, 0xf6, ++ 0xe4, 0x74, 0x9d, 0xeb, 0x17, 0xa4, 0x2f, 0x0e, 0x8a, 0xcb, 0x0d, 0xf8, ++ 0xa8, 0xa8, 0x78, 0xbd, 0x23, 0x02, 0x1c, 0xb7, 0x01, 0x49, 0x2e, 0x5c, ++ 0xc5, 0xf7, 0x95, 0x0b, 0xc9, 0xdf, 0x4c, 0x3d, 0x21, 0x9e, 0x67, 0xc5, ++ 0x40, 0xd9, 0xc3, 0xcf, 0x25, 0x97, 0xac, 0xe2, 0x71, 0xb4, 0x5c, 0x42, ++ 0xe7, 0xdb, 0xa5, 0xd6, 0xbf, 0x72, 0x96, 0xcf, 0x2d, 0x21, 0xbc, 0x2e, ++ 0x07, 0xfd, 0x2e, 0xd5, 0x47, 0x9e, 0xa3, 0x3a, 0x09, 0xcf, 0x03, 0x1c, ++ 0x7c, 0x9c, 0xb6, 0x9f, 0xb3, 0x56, 0xec, 0xb7, 0xcb, 0x02, 0x8c, 0xea, ++ 0x59, 0xc1, 0xbb, 0x19, 0x8f, 0x53, 0xc1, 0x31, 0x55, 0x57, 0xdf, 0x38, ++ 0x6d, 0x89, 0x5d, 0x6e, 0x61, 0xbc, 0xbe, 0x71, 0x82, 0xce, 0xff, 0x8e, ++ 0x29, 0x56, 0xb1, 0xb7, 0x44, 0xf0, 0x85, 0xe8, 0x5b, 0x31, 0xe0, 0xe0, ++ 0x75, 0x97, 0x5f, 0x2f, 0xfd, 0xf9, 0x7c, 0x3f, 0xdf, 0x47, 0xd4, 0x3b, ++ 0xb6, 0x38, 0xc4, 0x90, 0xe3, 0x94, 0x6f, 0xe0, 0x39, 0xb6, 0x1c, 0xa9, ++ 0xe6, 0xf2, 0xdb, 0x74, 0x6c, 0xe9, 0x6f, 0xd7, 0x53, 0x5c, 0x58, 0x2a, ++ 0x71, 0x3a, 0x8f, 0x8b, 0xc7, 0xd5, 0x3c, 0xeb, 0xbc, 0x9a, 0x27, 0x6a, ++ 0x79, 0xd6, 0x30, 0xe5, 0x8b, 0x49, 0x79, 0xc7, 0x79, 0x8f, 0x69, 0x22, ++ 0xbb, 0x74, 0xde, 0x63, 0xa0, 0x57, 0xbb, 0x98, 0xc8, 0x83, 0x83, 0xef, ++ 0x88, 0x3c, 0xb8, 0xda, 0xea, 0x9c, 0xd3, 0x99, 0xc4, 0xa7, 0xcb, 0x6a, ++ 0x3c, 0xde, 0x12, 0x13, 0x78, 0xac, 0x96, 0xdf, 0x56, 0x2a, 0x61, 0x53, ++ 0x1e, 0xd2, 0xa1, 0xfa, 0x29, 0x73, 0x2c, 0x0d, 0xfd, 0x75, 0x75, 0xef, ++ 0x02, 0x2b, 0xd9, 0xed, 0xea, 0xde, 0xe2, 0x74, 0x8e, 0x2f, 0x6d, 0x3c, ++ 0x60, 0xd2, 0xe8, 0x6d, 0xc4, 0xf7, 0x6b, 0xea, 0x39, 0xfb, 0x4e, 0x8d, ++ 0xf0, 0xfa, 0xc4, 0x1b, 0x29, 0x75, 0x4a, 0x67, 0xad, 0x95, 0xbf, 0xff, ++ 0x5b, 0x55, 0x1e, 0x9d, 0xb5, 0xc0, 0xdb, 0x2d, 0x65, 0xd2, 0x0e, 0x72, ++ 0xc3, 0x53, 0xbf, 0xed, 0x30, 0x1b, 0xe1, 0xe3, 0xcd, 0x18, 0xff, 0xd3, ++ 0xf9, 0x5a, 0x42, 0xe2, 0xbc, 0x5a, 0x3d, 0xa4, 0x39, 0x26, 0x7b, 0x68, ++ 0x9f, 0x8b, 0x43, 0x23, 0xbd, 0xd4, 0x56, 0xb5, 0x96, 0x78, 0x38, 0x7e, ++ 0xd8, 0x36, 0xda, 0x4b, 0xfe, 0x33, 0x70, 0xfb, 0xc6, 0xc9, 0x07, 0x38, ++ 0x1e, 0x60, 0x95, 0x29, 0xbe, 0x4a, 0x5d, 0xf7, 0x50, 0x9d, 0x99, 0xcb, ++ 0xc5, 0x1b, 0x14, 0x90, 0x10, 0xbd, 0x96, 0x49, 0x61, 0x1a, 0x57, 0xbd, ++ 0x4c, 0xe2, 0xfc, 0xce, 0x69, 0xb6, 0xf3, 0x7c, 0x3c, 0xc7, 0x02, 0xe6, ++ 0x4c, 0xea, 0x37, 0x08, 0x7f, 0x56, 0xe5, 0x9d, 0xe6, 0xa1, 0x3e, 0xac, ++ 0xc9, 0xe6, 0xfe, 0xb8, 0xea, 0x94, 0x9c, 0xbd, 0xa9, 0x22, 0x91, 0xef, ++ 0xe7, 0x2c, 0xdb, 0x3a, 0x9d, 0xe8, 0xf4, 0x55, 0x75, 0x22, 0x0d, 0x37, ++ 0x98, 0x37, 0x53, 0x99, 0x4a, 0x7e, 0xe3, 0xeb, 0xd6, 0x89, 0xda, 0x4f, ++ 0x9f, 0xb3, 0xd2, 0xbd, 0x37, 0x0c, 0xeb, 0xeb, 0x44, 0x5a, 0xdd, 0x67, ++ 0xa2, 0x3a, 0x91, 0x56, 0xa7, 0x0d, 0x78, 0x3f, 0xd7, 0xd5, 0x95, 0x03, ++ 0xd2, 0x48, 0x3d, 0xe1, 0x2b, 0xd5, 0x47, 0x2e, 0xf2, 0x3a, 0x71, 0x20, ++ 0xc2, 0x1c, 0x05, 0x25, 0x89, 0xfa, 0x51, 0x60, 0x60, 0xd4, 0xca, 0xe9, ++ 0xab, 0xd6, 0x8d, 0x70, 0xbc, 0x95, 0xe6, 0x0d, 0x74, 0x8b, 0xfa, 0xd1, ++ 0x41, 0xdc, 0x9f, 0xda, 0x08, 0xde, 0x57, 0xc1, 0x73, 0xfc, 0x23, 0xde, ++ 0x97, 0xda, 0x28, 0xde, 0x97, 0x9e, 0x1f, 0xed, 0x9e, 0xcf, 0xdb, 0x58, ++ 0xb7, 0x93, 0xb7, 0xc7, 0xba, 0x97, 0xf0, 0xb6, 0x1a, 0xc5, 0xa6, 0x30, ++ 0x87, 0xea, 0x4e, 0xa3, 0xbc, 0xee, 0x54, 0x53, 0xab, 0xaf, 0x5b, 0x68, ++ 0x75, 0x09, 0x77, 0xa1, 0x6f, 0x49, 0x6d, 0x8d, 0xae, 0x6e, 0xc1, 0xfb, ++ 0xa9, 0x75, 0x0b, 0x73, 0xba, 0xc8, 0x47, 0x03, 0xa7, 0x2c, 0xce, 0xbd, ++ 0xf8, 0x3c, 0x70, 0xda, 0xc6, 0xed, 0xac, 0x2b, 0xda, 0x32, 0x8b, 0xe2, ++ 0xb2, 0x9b, 0x67, 0xfd, 0xb3, 0x1c, 0xbc, 0x0e, 0x90, 0xcb, 0xf3, 0xca, ++ 0x31, 0xf9, 0x55, 0x9c, 0xf6, 0x6c, 0xca, 0x07, 0x7c, 0x4e, 0x3b, 0xd5, ++ 0x0b, 0xaa, 0x07, 0xaf, 0x58, 0x65, 0x6e, 0x77, 0x62, 0x45, 0x50, 0x40, ++ 0xf8, 0x53, 0xdc, 0x4a, 0x79, 0x3f, 0xd1, 0x41, 0xe1, 0xf1, 0x9c, 0xcb, ++ 0x4e, 0x74, 0xfd, 0x4a, 0x7c, 0x3f, 0xf2, 0xff, 0xf8, 0xfe, 0xd7, 0xc1, ++ 0xf7, 0xa3, 0x75, 0x02, 0xdf, 0xd7, 0xec, 0x47, 0x95, 0xcf, 0xa4, 0xec, ++ 0xa1, 0xf6, 0x94, 0x62, 0xdf, 0x94, 0x64, 0x1f, 0xfa, 0x7c, 0x02, 0x27, ++ 0xee, 0x2b, 0x9d, 0xcd, 0xf5, 0xef, 0x79, 0xdf, 0xec, 0xec, 0x8d, 0xc9, ++ 0x78, 0xbe, 0x57, 0xe4, 0x71, 0x39, 0xcb, 0x4a, 0xed, 0xc9, 0xcf, 0x59, ++ 0xbd, 0x45, 0xc4, 0x7d, 0x0c, 0x7c, 0x46, 0x76, 0xac, 0xb7, 0x76, 0x42, ++ 0x7b, 0xdb, 0x6b, 0x1c, 0xdf, 0x19, 0xd7, 0x05, 0xfa, 0xbc, 0xc2, 0x8e, ++ 0x68, 0xb8, 0xff, 0xf8, 0x3a, 0x81, 0xf3, 0xad, 0xd2, 0x24, 0xbc, 0xff, ++ 0xda, 0x3b, 0x28, 0xa7, 0x98, 0xb7, 0x0e, 0x1e, 0x4e, 0xe3, 0xfe, 0xfc, ++ 0xe6, 0x91, 0xb4, 0xbd, 0x14, 0x7f, 0x57, 0x79, 0x37, 0xce, 0x9a, 0x82, ++ 0xfd, 0xaa, 0xf3, 0x69, 0x50, 0x22, 0xfc, 0x91, 0xae, 0xbe, 0xd0, 0xe4, ++ 0x35, 0x29, 0xf6, 0x2c, 0xa3, 0x7a, 0x82, 0x52, 0x64, 0x42, 0xb9, 0x1d, ++ 0x57, 0x37, 0xf0, 0x9a, 0xb8, 0x7d, 0x1f, 0xab, 0x1b, 0x78, 0xa5, 0x8b, ++ 0xbc, 0xaf, 0xc6, 0xe9, 0x1b, 0x46, 0x7f, 0x37, 0xa5, 0x84, 0x11, 0xfd, ++ 0xc3, 0x21, 0xca, 0x33, 0xde, 0x68, 0x67, 0xce, 0x41, 0x18, 0x5f, 0x47, ++ 0xc0, 0x85, 0x8b, 0x60, 0x09, 0xde, 0xc2, 0x7b, 0x8e, 0xd7, 0x95, 0x9d, ++ 0x9d, 0xcc, 0x29, 0xcb, 0x5f, 0x5d, 0x5f, 0xc8, 0x53, 0x71, 0x86, 0x8e, ++ 0x48, 0xb6, 0x99, 0xe4, 0xbc, 0xf9, 0x04, 0x40, 0x2e, 0x33, 0xaa, 0x33, ++ 0x78, 0x79, 0xbc, 0x5f, 0x05, 0xcf, 0x86, 0x6a, 0xe9, 0x7b, 0xac, 0x52, ++ 0x93, 0x83, 0xfc, 0x59, 0x2a, 0x5e, 0x40, 0x72, 0x42, 0xfe, 0x3f, 0x15, ++ 0x27, 0x8c, 0xaa, 0x7c, 0x8c, 0xd6, 0x0a, 0x7f, 0x53, 0xe7, 0x11, 0xfe, ++ 0xa6, 0x4a, 0x8d, 0x4b, 0xb4, 0x79, 0xa9, 0xfc, 0xcf, 0x56, 0xfd, 0xd3, ++ 0x44, 0xb8, 0x23, 0x53, 0xe3, 0x9f, 0x1e, 0x6f, 0x55, 0x1f, 0xf1, 0x2f, ++ 0xb8, 0xd2, 0x04, 0xe4, 0x07, 0x7a, 0xbc, 0x6e, 0x5b, 0x69, 0xd2, 0x7a, ++ 0x67, 0x6a, 0xc5, 0x77, 0x4b, 0xbb, 0xa8, 0x6e, 0x31, 0x2d, 0xb9, 0x6e, ++ 0x21, 0xea, 0x13, 0xa9, 0xf5, 0x0a, 0xcd, 0x4e, 0x55, 0x0f, 0x7e, 0x51, ++ 0x4f, 0xfc, 0x7f, 0x3e, 0x2a, 0xf0, 0xa4, 0x40, 0x81, 0xc0, 0x37, 0xab, ++ 0x8f, 0xba, 0x4e, 0x91, 0xde, 0x27, 0xce, 0x29, 0xee, 0xf7, 0x3c, 0xf2, ++ 0x38, 0xce, 0xe3, 0x28, 0x67, 0x36, 0x88, 0x7b, 0x81, 0x4d, 0xe0, 0x5e, ++ 0x1c, 0x67, 0xa8, 0x5a, 0xf9, 0xf9, 0xb1, 0x0c, 0xa2, 0x9f, 0x0f, 0xfd, ++ 0x15, 0xd9, 0xa5, 0xd3, 0xa5, 0x3b, 0x32, 0xc9, 0x9e, 0xac, 0x94, 0x6a, ++ 0x98, 0xcc, 0xf1, 0xee, 0x31, 0xfc, 0x9b, 0xf0, 0xa9, 0xd5, 0x67, 0x5a, ++ 0x97, 0x03, 0xf9, 0xff, 0xb5, 0x0b, 0xcf, 0x12, 0xdd, 0xd7, 0xae, 0xb7, ++ 0xf0, 0xef, 0x90, 0x34, 0x7f, 0xb5, 0xfa, 0x4c, 0x63, 0xbd, 0x78, 0xbf, ++ 0x67, 0x7b, 0x3a, 0xbd, 0x9f, 0xcf, 0x9c, 0x76, 0x99, 0x9e, 0x7b, 0xdd, ++ 0xf4, 0x7c, 0xc5, 0xaf, 0x62, 0x84, 0xf4, 0xc1, 0x83, 0x74, 0x7b, 0xd4, ++ 0x9b, 0xf8, 0xe9, 0xcb, 0x12, 0xe9, 0xcb, 0xbc, 0x99, 0xfe, 0xeb, 0xa4, ++ 0x3f, 0xd5, 0x0d, 0x2a, 0x0e, 0xbe, 0x5e, 0xf8, 0xd7, 0xb5, 0xd1, 0x06, ++ 0x0b, 0x64, 0x8e, 0xf7, 0x77, 0xc7, 0x8b, 0x6f, 0xf2, 0x3c, 0xfa, 0x46, ++ 0xb4, 0x9a, 0xe3, 0xdb, 0xb9, 0x54, 0x7f, 0xad, 0x48, 0xf8, 0x8b, 0xea, ++ 0x23, 0xe8, 0x87, 0xa6, 0xfc, 0xe9, 0xfc, 0x50, 0x76, 0x9d, 0xc8, 0x07, ++ 0xef, 0x45, 0x3f, 0x44, 0xe7, 0xc9, 0x69, 0x10, 0x75, 0xc2, 0x54, 0xfe, ++ 0x9f, 0x51, 0xe3, 0xc9, 0x89, 0xfc, 0xca, 0x44, 0x76, 0x94, 0xfc, 0x88, ++ 0x69, 0x89, 0xd0, 0x1b, 0x56, 0x90, 0xf0, 0xbf, 0x32, 0xe5, 0xd7, 0xf7, ++ 0x25, 0xfc, 0xb0, 0x23, 0x82, 0xfd, 0xfc, 0x2f, 0xc1, 0xbd, 0x55, 0xb9, ++ 0xce, 0x9e, 0x20, 0x0e, 0x73, 0xab, 0xf2, 0x3b, 0xe1, 0xf7, 0x1b, 0x91, ++ 0x6f, 0x06, 0x07, 0xff, 0x8b, 0xba, 0x3f, 0x8f, 0x7a, 0x96, 0x96, 0xe7, ++ 0x68, 0x78, 0xb8, 0x96, 0x17, 0xbd, 0xa8, 0xd2, 0x59, 0x6b, 0x5f, 0x52, ++ 0xdb, 0x54, 0xbc, 0x4c, 0xc3, 0xc9, 0xf2, 0x15, 0x80, 0xae, 0x2f, 0xc1, ++ 0xc9, 0xf2, 0x09, 0x47, 0xcb, 0x21, 0xb3, 0x5d, 0xc1, 0x71, 0xbb, 0x42, ++ 0xf5, 0x0c, 0x63, 0xb8, 0x59, 0x2c, 0xc7, 0x74, 0xa7, 0x1c, 0xc7, 0xa9, ++ 0xb8, 0x9d, 0x86, 0x9f, 0xe5, 0x6d, 0xe8, 0x67, 0x14, 0x67, 0x14, 0x43, ++ 0x70, 0x1b, 0xd9, 0x97, 0x21, 0x2b, 0xb8, 0x0e, 0x4c, 0xa3, 0xef, 0xf6, ++ 0x18, 0x6c, 0x23, 0xfd, 0x0e, 0x37, 0xf0, 0x38, 0x67, 0xe8, 0xa5, 0xf7, ++ 0x7b, 0x7f, 0x41, 0xdf, 0x1b, 0x0e, 0x30, 0x07, 0xb9, 0x9f, 0xf6, 0xfe, ++ 0xb3, 0xdc, 0x4f, 0xb7, 0x63, 0x5c, 0xc3, 0xe3, 0xa1, 0xe8, 0xa7, 0x02, ++ 0xa7, 0xea, 0x17, 0xdf, 0x9b, 0xb6, 0x47, 0x98, 0x62, 0x84, 0x83, 0x0e, ++ 0xaa, 0xfe, 0xb9, 0x56, 0x01, 0x6e, 0x37, 0xda, 0xd5, 0xef, 0xfa, 0xea, ++ 0x07, 0x84, 0x5e, 0x27, 0x70, 0xa2, 0x1f, 0x49, 0xc9, 0x38, 0x51, 0x40, ++ 0x8e, 0x4f, 0xd7, 0xbe, 0x17, 0x0c, 0x0b, 0xff, 0x64, 0xf8, 0x5d, 0x5f, ++ 0x07, 0x8c, 0xf0, 0xef, 0x01, 0x3b, 0x5a, 0x99, 0x33, 0x86, 0xcf, 0x53, ++ 0x71, 0xa3, 0x54, 0xbc, 0xe8, 0x59, 0xf5, 0x3b, 0xc0, 0x09, 0x71, 0x23, ++ 0xe5, 0xeb, 0x7d, 0xef, 0xb7, 0xbd, 0x6e, 0xec, 0x7b, 0x3f, 0x8e, 0x3f, ++ 0xef, 0xf3, 0x08, 0xbb, 0xd0, 0xe8, 0x67, 0x8c, 0xd6, 0xb7, 0x99, 0x7c, ++ 0x6d, 0xfc, 0xbb, 0xdf, 0xa3, 0xcc, 0x61, 0xf4, 0xfd, 0xe8, 0x6e, 0x55, ++ 0xee, 0x57, 0xa8, 0xf8, 0xed, 0xab, 0x56, 0x21, 0x0f, 0xaf, 0x7e, 0x8b, ++ 0x85, 0x29, 0x9e, 0x5b, 0x01, 0x02, 0xa7, 0x7d, 0xf5, 0x68, 0x0b, 0xc7, ++ 0x6f, 0x5f, 0xad, 0x62, 0x4e, 0x13, 0xdd, 0x53, 0xc5, 0x6b, 0x97, 0xab, ++ 0xf4, 0xb8, 0x3b, 0x81, 0xd7, 0x3e, 0x4f, 0x78, 0xed, 0xf7, 0xd0, 0x9d, ++ 0x10, 0x4e, 0xbb, 0x42, 0xe5, 0x3f, 0x40, 0x98, 0x9f, 0xab, 0x61, 0x77, ++ 0x7a, 0x8c, 0xe2, 0x8d, 0x67, 0x2c, 0xfd, 0x05, 0xa4, 0x8f, 0xda, 0xf7, ++ 0x46, 0x5e, 0x15, 0x47, 0x4d, 0x4f, 0x83, 0x4e, 0x23, 0xfd, 0xec, 0xa9, ++ 0x73, 0x79, 0xeb, 0x6a, 0x68, 0xdc, 0x84, 0xf1, 0xce, 0x2b, 0x75, 0x06, ++ 0xf8, 0xce, 0x55, 0x8f, 0x58, 0xf7, 0x97, 0x75, 0x18, 0xa7, 0xcf, 0x07, ++ 0xa3, 0x38, 0x7d, 0x7f, 0xdd, 0x74, 0x5d, 0x9c, 0xce, 0xfb, 0xa9, 0x71, ++ 0xfa, 0x9f, 0x0a, 0xaf, 0xf5, 0xd0, 0x3d, 0x8d, 0xcf, 0xff, 0xdf, 0x93, ++ 0xc4, 0xed, 0x1e, 0xaf, 0x9d, 0xdc, 0xb8, 0x4d, 0x75, 0x06, 0xf1, 0xdf, ++ 0x0e, 0x15, 0x3f, 0x49, 0xa5, 0x6f, 0x66, 0xbd, 0x66, 0x87, 0x67, 0x38, ++ 0xb8, 0x3c, 0x8d, 0x9d, 0x1f, 0x44, 0x3d, 0x57, 0xc5, 0xbd, 0x86, 0x54, ++ 0x3f, 0x17, 0x62, 0xf2, 0x6f, 0xef, 0xe7, 0xf5, 0x2f, 0x0b, 0xaf, 0x7f, ++ 0x69, 0x76, 0x26, 0x34, 0x45, 0xac, 0xff, 0x81, 0x6a, 0x5f, 0xb4, 0xf6, ++ 0xa6, 0xda, 0x86, 0x2c, 0xc6, 0x38, 0x0d, 0xab, 0x17, 0x7e, 0xea, 0xdb, ++ 0x85, 0xca, 0xfb, 0xc4, 0xc7, 0xf2, 0xd7, 0xf4, 0xb8, 0xd9, 0x82, 0x7e, ++ 0x3d, 0x6e, 0x76, 0x6f, 0x24, 0x47, 0xd7, 0x5f, 0x18, 0xbb, 0x4b, 0x37, ++ 0xbe, 0xfa, 0xd4, 0x6c, 0xdd, 0xfb, 0x9a, 0xf8, 0x3d, 0xba, 0xf7, 0xf7, ++ 0x9d, 0xaf, 0xd2, 0xf5, 0x97, 0x0e, 0x7f, 0x4b, 0x37, 0xfe, 0xfe, 0x4f, ++ 0xdc, 0xba, 0xfe, 0x77, 0x46, 0xf4, 0xb8, 0xd9, 0x03, 0xb7, 0xf4, 0xb8, ++ 0x99, 0x26, 0xdf, 0x2e, 0x94, 0x88, 0xe4, 0x79, 0x1e, 0xdb, 0x0f, 0x74, ++ 0xe3, 0x8a, 0x5a, 0xf5, 0xf7, 0x2a, 0xee, 0xd4, 0xdf, 0x6b, 0x56, 0x97, ++ 0xfe, 0x5e, 0xda, 0xba, 0x25, 0x41, 0xfd, 0xfd, 0xe6, 0x84, 0xf4, 0xf7, ++ 0xcb, 0x21, 0x5c, 0xbf, 0xe2, 0x7f, 0x8f, 0xeb, 0xff, 0x4d, 0xad, 0xcc, ++ 0xe9, 0x7f, 0x2c, 0x3a, 0xc7, 0x4e, 0xf3, 0x76, 0x79, 0x4b, 0xed, 0x14, ++ 0xc7, 0x4c, 0x2f, 0x14, 0xf2, 0xaa, 0x8d, 0xfb, 0x1f, 0xac, 0x27, 0xe8, ++ 0xd9, 0x70, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 csem_int_table_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe3, 0x14, ++ 0x60, 0x60, 0xf8, 0x51, 0x0f, 0xc1, 0xd3, 0xf9, 0x19, 0x18, 0x36, 0xf3, ++ 0x23, 0xf8, 0xf4, 0xc0, 0xc7, 0x98, 0x19, 0x18, 0x8e, 0x83, 0x30, 0x23, ++ 0x03, 0xc3, 0x3e, 0x20, 0xde, 0x0a, 0xc4, 0x6b, 0x80, 0xf8, 0x3d, 0x03, ++ 0x03, 0xc3, 0x52, 0x20, 0x3d, 0x07, 0x88, 0x27, 0x03, 0x71, 0x17, 0x10, ++ 0xbf, 0x04, 0x8a, 0xd5, 0xb1, 0x62, 0x37, 0x87, 0x85, 0x8d, 0x81, 0x81, ++ 0x0d, 0x88, 0x4f, 0x02, 0xcd, 0x3a, 0xc5, 0x4c, 0xbc, 0xfd, 0x8a, 0x7c, ++ 0x08, 0xf6, 0x21, 0x5e, 0x06, 0x86, 0xb5, 0x40, 0x7c, 0x94, 0x97, 0xbe, ++ 0x61, 0x30, 0xd8, 0xf0, 0x0c, 0x41, 0xfa, 0xd9, 0xf5, 0x0c, 0x6a, 0xd7, ++ 0x6e, 0xd1, 0x81, 0xf7, 0x37, 0x08, 0xb3, 0x8a, 0x33, 0x30, 0x30, 0x4a, ++ 0x20, 0xf8, 0xfd, 0x12, 0xa8, 0xf2, 0x6c, 0xe2, 0x08, 0x76, 0x96, 0x0c, ++ 0x65, 0x76, 0x95, 0x01, 0xf5, 0x03, 0x00, 0x29, 0x51, 0x28, 0x15, 0x80, ++ 0x03, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 csem_pram_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, ++ 0x09, 0x78, 0x54, 0x45, 0xb6, 0x70, 0xdd, 0xee, 0x7b, 0x7b, 0x49, 0xba, ++ 0x3b, 0x9d, 0x90, 0x95, 0x25, 0x74, 0x80, 0x20, 0x2a, 0x4b, 0xcb, 0x12, ++ 0x01, 0x11, 0x3b, 0x21, 0x89, 0x01, 0x03, 0x06, 0x44, 0x09, 0x28, 0xd2, ++ 0x6c, 0x21, 0x84, 0x24, 0x9d, 0x01, 0x66, 0x1e, 0x3e, 0xfd, 0xff, 0x6e, ++ 0x08, 0x42, 0xc4, 0xd1, 0x89, 0x8a, 0x1a, 0xfc, 0x19, 0x5f, 0x83, 0xe0, ++ 0x04, 0x07, 0x9d, 0xe0, 0xa0, 0x13, 0x9d, 0xc0, 0x34, 0x8b, 0x88, 0x33, ++ 0xe8, 0x04, 0xc7, 0x05, 0x97, 0x79, 0x5f, 0x40, 0x1e, 0x20, 0x42, 0x12, ++ 0xa3, 0x38, 0xe8, 0xf3, 0xc9, 0xab, 0x73, 0xaa, 0x6e, 0xba, 0xeb, 0x76, ++ 0x37, 0x69, 0xb7, 0xff, 0xf9, 0x7f, 0xff, 0x84, 0x0f, 0x8a, 0xba, 0x55, ++ 0xf7, 0xd4, 0xa9, 0xb3, 0xd5, 0xa9, 0x53, 0x75, 0x4f, 0x14, 0x92, 0x42, ++ 0x92, 0xfa, 0x13, 0x72, 0x09, 0x7e, 0x6e, 0x20, 0xe4, 0x55, 0x85, 0x10, ++ 0xfa, 0xa8, 0xbb, 0xec, 0x90, 0x3a, 0x87, 0xcb, 0x03, 0x83, 0xed, 0x6b, ++ 0xbd, 0x2e, 0xe2, 0x32, 0x12, 0xf2, 0x80, 0xd7, 0x84, 0xe5, 0x7a, 0x6f, ++ 0x3a, 0x71, 0x5d, 0x41, 0x9f, 0x8f, 0xd6, 0x15, 0xf9, 0x2d, 0x84, 0xdc, ++ 0xef, 0xb5, 0xe3, 0xf3, 0xc7, 0xbd, 0x25, 0x58, 0x3e, 0xea, 0x2d, 0xc5, ++ 0xf2, 0x11, 0xaf, 0x1b, 0xfb, 0x3d, 0xe4, 0x2d, 0xc7, 0xf2, 0x57, 0xde, ++ 0x1a, 0x2c, 0xef, 0xf5, 0x16, 0x61, 0x7b, 0x9d, 0x77, 0x15, 0xd6, 0x6f, ++ 0x54, 0x16, 0xa4, 0xc1, 0xb8, 0x84, 0xb8, 0x4c, 0x59, 0xc9, 0x84, 0x78, ++ 0x5e, 0x1e, 0x38, 0x72, 0x03, 0xad, 0xad, 0xcf, 0x1c, 0x9f, 0x20, 0x8f, ++ 0xa6, 0xf5, 0xbf, 0xea, 0x89, 0x3e, 0x8b, 0xbe, 0x37, 0x5a, 0x2e, 0xf2, ++ 0x0f, 0xa5, 0x0d, 0x72, 0x49, 0x51, 0xd6, 0xe8, 0x60, 0x3f, 0x15, 0xcf, ++ 0x1b, 0x95, 0xbc, 0xbe, 0x00, 0xe7, 0xf1, 0xb1, 0x3a, 0xd6, 0xcf, 0x54, ++ 0xf3, 0x5a, 0x76, 0xe4, 0x7e, 0x59, 0x64, 0x0c, 0xc5, 0x73, 0xac, 0x8c, ++ 0xf8, 0x13, 0x4b, 0xc9, 0xe4, 0xec, 0xe4, 0x88, 0xfd, 0x06, 0x03, 0xbc, ++ 0x47, 0x86, 0xb2, 0x79, 0x12, 0xbb, 0xf3, 0xb5, 0x41, 0x91, 0xe1, 0x5d, ++ 0x0d, 0xf0, 0x1e, 0x1a, 0xca, 0xf1, 0x4b, 0xb6, 0x4f, 0x1e, 0x14, 0x19, ++ 0x9e, 0x13, 0xfa, 0xfd, 0xca, 0xc9, 0xe1, 0xa5, 0x77, 0x1e, 0x1e, 0x18, ++ 0xb9, 0xdf, 0x18, 0xe8, 0x57, 0xe7, 0xe4, 0xf0, 0xfa, 0xfa, 0x4c, 0x03, ++ 0x22, 0x8f, 0x3b, 0x1e, 0xfa, 0xc5, 0xc0, 0x27, 0x8a, 0x13, 0x21, 0xbe, ++ 0x16, 0xa3, 0x3f, 0x3b, 0xeb, 0xfb, 0xf3, 0x8b, 0xb8, 0xe8, 0x5f, 0x8a, ++ 0x4f, 0xc7, 0x5e, 0xf3, 0xd6, 0x0d, 0x12, 0xf2, 0x6f, 0x1a, 0xd0, 0x69, ++ 0xad, 0x7d, 0xf9, 0x99, 0x2d, 0x74, 0x9c, 0xf6, 0x96, 0x61, 0x4e, 0xbd, ++ 0x83, 0x90, 0xcf, 0x5c, 0xce, 0x04, 0xbb, 0x25, 0x26, 0xbe, 0xdd, 0x02, ++ 0xf3, 0x88, 0x81, 0x6f, 0xa5, 0x30, 0x4e, 0x0c, 0x7c, 0x9b, 0x1b, 0x23, ++ 0xdf, 0x16, 0x40, 0xbf, 0x18, 0xf8, 0xb6, 0x04, 0xfa, 0xc5, 0xc0, 0xb7, ++ 0xca, 0x18, 0xf9, 0xf6, 0xb3, 0x9f, 0x08, 0xdf, 0xee, 0x05, 0x3c, 0xbe, ++ 0x07, 0xdf, 0x36, 0xc4, 0xa8, 0x6f, 0xbf, 0x8a, 0x91, 0x6f, 0x1b, 0x63, ++ 0xe4, 0xdb, 0xa6, 0x18, 0xf5, 0xed, 0xc9, 0x18, 0xf9, 0xf6, 0x54, 0x28, ++ 0xdf, 0xd4, 0xe7, 0x6a, 0xb9, 0x83, 0x48, 0x68, 0x17, 0x6f, 0x54, 0x4a, ++ 0x76, 0x40, 0x3f, 0x4f, 0x66, 0x9b, 0x6d, 0x40, 0xd6, 0x4f, 0x82, 0x7f, ++ 0x7b, 0xbe, 0xa7, 0xde, 0xed, 0x8f, 0x91, 0x7f, 0xaf, 0xc6, 0xc8, 0xbf, ++ 0x23, 0x40, 0x9f, 0x18, 0xf8, 0x77, 0x34, 0x46, 0xfe, 0xbd, 0x13, 0x23, ++ 0xff, 0x3e, 0x88, 0x51, 0xef, 0xda, 0x70, 0x9d, 0xb1, 0xc8, 0x5f, 0xb5, ++ 0x0d, 0x21, 0xf8, 0x73, 0x69, 0x00, 0xfc, 0x6b, 0xb1, 0x9f, 0xba, 0x9a, ++ 0xd7, 0xf5, 0x80, 0x77, 0x12, 0x21, 0x19, 0xe1, 0x72, 0xa0, 0x96, 0x94, ++ 0xa3, 0x28, 0x0f, 0x32, 0x71, 0xb7, 0xb3, 0x75, 0xab, 0xe0, 0x9b, 0x4b, ++ 0x39, 0x84, 0xac, 0x30, 0xd1, 0xff, 0xd2, 0xf7, 0x7d, 0x79, 0x24, 0xa0, ++ 0xa7, 0xe3, 0xfb, 0x6c, 0xc4, 0x5f, 0x2b, 0x09, 0xfd, 0x3f, 0x07, 0x3c, ++ 0x09, 0xc9, 0xff, 0xe6, 0x52, 0xaa, 0xd0, 0xdf, 0xa7, 0x8b, 0xd8, 0x9f, ++ 0xe8, 0xa0, 0xfd, 0x61, 0x90, 0x2b, 0xca, 0xff, 0xcd, 0xde, 0x21, 0x58, ++ 0xd6, 0x73, 0x39, 0xda, 0x5c, 0xa4, 0x43, 0x79, 0xf0, 0x25, 0x1b, 0x50, ++ 0xbe, 0x9e, 0xf0, 0x3a, 0xb1, 0xbd, 0xc1, 0x3b, 0x16, 0xcb, 0xc7, 0xb8, ++ 0x5c, 0x6e, 0xe4, 0x72, 0xf4, 0x00, 0xc8, 0xdd, 0x15, 0x20, 0x87, 0xa5, ++ 0x5c, 0xae, 0x98, 0xdc, 0x11, 0x52, 0xe2, 0x28, 0xa7, 0x74, 0xed, 0xd8, ++ 0x13, 0x4f, 0x36, 0x38, 0x50, 0xae, 0xcc, 0x12, 0xe0, 0x29, 0x33, 0x79, ++ 0xbb, 0x77, 0xcf, 0x95, 0x5b, 0x37, 0x50, 0xf8, 0x9b, 0x6b, 0x74, 0x57, ++ 0x6e, 0x0b, 0x91, 0xb3, 0x27, 0x8a, 0x54, 0xf9, 0xa2, 0x92, 0x99, 0x1c, ++ 0xec, 0xf7, 0x44, 0xf9, 0x09, 0xdb, 0x82, 0xa1, 0x48, 0x6f, 0x1b, 0xc0, ++ 0x69, 0x28, 0xd6, 0xa9, 0xfd, 0x7c, 0xa1, 0xfd, 0x1a, 0xdc, 0xdd, 0xfd, ++ 0x7a, 0x41, 0xbf, 0xc7, 0x8a, 0xb9, 0x7c, 0xc9, 0x24, 0x10, 0x3a, 0xee, ++ 0x63, 0xa5, 0xdd, 0xfd, 0xd2, 0x25, 0x4a, 0x97, 0x7b, 0x25, 0x52, 0xda, ++ 0x64, 0x09, 0xe7, 0xcb, 0x14, 0x89, 0xe9, 0x29, 0x55, 0x14, 0xe4, 0x87, ++ 0xcc, 0xe9, 0xbb, 0x3f, 0xef, 0x2c, 0x69, 0xa3, 0xef, 0xdb, 0xec, 0x23, ++ 0xd3, 0x08, 0x2d, 0x9f, 0x04, 0xfd, 0x44, 0xfd, 0x73, 0x60, 0xa9, 0xbe, ++ 0x5f, 0x4f, 0xe9, 0xec, 0xa6, 0xf4, 0xc8, 0x34, 0x92, 0x9a, 0x26, 0xc0, ++ 0x97, 0xb4, 0x4a, 0x0a, 0xc5, 0x57, 0x1e, 0xeb, 0x48, 0x04, 0x39, 0x7a, ++ 0x68, 0x9c, 0x8b, 0x48, 0x56, 0x42, 0xfa, 0x43, 0x3b, 0x1d, 0xbf, 0xcf, ++ 0xe8, 0x36, 0x92, 0x45, 0xcb, 0xc4, 0xf1, 0x6d, 0x44, 0x1a, 0x06, 0xfd, ++ 0x68, 0x3b, 0xad, 0xa7, 0xf0, 0xf6, 0x8c, 0xa1, 0xb4, 0x9d, 0xc2, 0x79, ++ 0x08, 0xda, 0xad, 0xc1, 0xf6, 0x54, 0xde, 0x9e, 0xe6, 0xe0, 0xef, 0x5f, ++ 0xc7, 0xda, 0x1f, 0xf6, 0x12, 0x1c, 0x5f, 0xed, 0x77, 0x1f, 0xe5, 0xb3, ++ 0x9b, 0xe2, 0xb7, 0x8e, 0xe2, 0x8b, 0xcf, 0x8b, 0x89, 0x0b, 0xe8, 0x28, ++ 0x53, 0x76, 0xfa, 0x43, 0xe6, 0x3f, 0x5b, 0xd2, 0xe3, 0xbc, 0x2b, 0x79, ++ 0xa9, 0xe2, 0x7f, 0x5f, 0xf6, 0xa9, 0x8c, 0xf9, 0x43, 0x83, 0xf8, 0x9a, ++ 0x07, 0x5f, 0xcc, 0x98, 0x1f, 0x82, 0xdf, 0x7d, 0x83, 0xe7, 0x60, 0x5d, ++ 0xc5, 0xc7, 0x7c, 0x45, 0x25, 0xd6, 0xfb, 0xaf, 0xea, 0x4d, 0x3d, 0x31, ++ 0xae, 0x0f, 0x24, 0x9c, 0xce, 0xa9, 0x33, 0x07, 0x08, 0xed, 0x0e, 0xd9, ++ 0x89, 0x7e, 0x9a, 0xe3, 0x88, 0x9e, 0xf8, 0x28, 0xbf, 0x1c, 0x54, 0x3c, ++ 0x23, 0xf1, 0xe7, 0x0b, 0x2a, 0xce, 0x3f, 0xa8, 0xfe, 0xb9, 0x18, 0x3d, ++ 0xb4, 0xed, 0x77, 0x6b, 0xe8, 0xb0, 0x2e, 0x43, 0xa4, 0x83, 0xa1, 0xb7, ++ 0x48, 0x87, 0x75, 0xbd, 0x45, 0x3a, 0x18, 0xfa, 0x5c, 0x9e, 0x0e, 0x53, ++ 0x24, 0x07, 0xc2, 0x8f, 0x46, 0x0f, 0x75, 0xdc, 0x0d, 0x57, 0x8a, 0xe3, ++ 0xc6, 0x5d, 0x25, 0x8e, 0xbb, 0xe1, 0x2a, 0x71, 0xdc, 0xb8, 0xab, 0x7f, ++ 0x98, 0x71, 0xd7, 0xf7, 0x13, 0xc7, 0x35, 0x66, 0x8a, 0xe3, 0xae, 0xcf, ++ 0x14, 0xc7, 0x35, 0xf6, 0xff, 0x7e, 0xe3, 0x12, 0xd9, 0x49, 0x1f, 0x32, ++ 0x73, 0x41, 0x1c, 0xf0, 0xcf, 0x3c, 0xc1, 0xbe, 0x5d, 0x20, 0xee, 0x87, ++ 0x41, 0xbf, 0xc1, 0xce, 0xe9, 0x93, 0x83, 0x76, 0x4e, 0xb6, 0x97, 0x10, ++ 0xb7, 0x25, 0xc8, 0x4f, 0x22, 0xd3, 0x97, 0x73, 0x42, 0xe1, 0xdc, 0x29, ++ 0xd8, 0x55, 0x0a, 0xe7, 0xff, 0x70, 0x38, 0xae, 0xcb, 0xc3, 0xb1, 0x6b, ++ 0xe0, 0xcc, 0xd5, 0xc2, 0xd9, 0xc6, 0xe1, 0x90, 0x50, 0x3b, 0x1d, 0x06, ++ 0x87, 0xdc, 0xa1, 0x9d, 0xc7, 0x6f, 0xf9, 0x7b, 0x01, 0x5d, 0xc8, 0xf8, ++ 0x74, 0x7d, 0x25, 0x25, 0xd6, 0xd0, 0xf7, 0x9c, 0x9a, 0xf1, 0x6f, 0xd7, ++ 0x8e, 0xbf, 0x1b, 0xec, 0x18, 0xcc, 0x43, 0x77, 0xd9, 0xf1, 0x1d, 0x1a, ++ 0xba, 0xce, 0xd1, 0xe2, 0xb3, 0x87, 0xc3, 0x21, 0xba, 0xcb, 0xd1, 0x83, ++ 0xd8, 0x35, 0x70, 0x66, 0x6b, 0xe1, 0x1c, 0xe2, 0x70, 0x02, 0xd2, 0x65, ++ 0xe1, 0x94, 0x6a, 0xe7, 0xf1, 0xba, 0xca, 0x57, 0x49, 0x58, 0xbf, 0x28, ++ 0x3d, 0x86, 0x05, 0xdf, 0xeb, 0xc8, 0xeb, 0x3c, 0x85, 0x7e, 0xd0, 0x8b, ++ 0x8a, 0x63, 0x3b, 0x6d, 0x97, 0xfe, 0x64, 0x0d, 0xdc, 0x40, 0xfb, 0x1f, ++ 0xd9, 0x22, 0xf9, 0x8d, 0xb4, 0x1e, 0xd8, 0x1b, 0x8f, 0xeb, 0xc7, 0xf9, ++ 0x6d, 0xd3, 0xb1, 0xbe, 0xef, 0x1a, 0x23, 0xae, 0x13, 0xe7, 0x9d, 0x93, ++ 0xfd, 0x46, 0x6a, 0x4f, 0x26, 0xbd, 0xf0, 0xb6, 0x0d, 0xec, 0x4b, 0xd5, ++ 0x0b, 0x7a, 0x19, 0xea, 0xba, 0xbd, 0x1f, 0xdb, 0xda, 0x28, 0x5e, 0x1e, ++ 0x63, 0xeb, 0x83, 0xd7, 0xd1, 0xe7, 0x9d, 0x2f, 0xe8, 0xc9, 0x56, 0x94, ++ 0xc6, 0x42, 0x1d, 0xd0, 0xfd, 0x14, 0x97, 0x4d, 0xb2, 0x8a, 0xd5, 0xcb, ++ 0xcc, 0xac, 0x5a, 0xb5, 0x65, 0xdf, 0x9d, 0x00, 0xb7, 0xbc, 0xd9, 0x48, ++ 0xcc, 0x14, 0x4e, 0xd5, 0x4b, 0x4b, 0xa6, 0x5d, 0x47, 0xeb, 0x4b, 0x0e, ++ 0x2b, 0x04, 0xba, 0x54, 0x6d, 0x5f, 0x6d, 0xe8, 0x4d, 0xeb, 0x4b, 0xfd, ++ 0x52, 0x13, 0xd4, 0x3b, 0xf2, 0x48, 0x39, 0xe8, 0xd3, 0x9a, 0xbd, 0xff, ++ 0xd9, 0x0e, 0xeb, 0xd1, 0xf9, 0xdd, 0x4a, 0x36, 0x8c, 0x7f, 0x96, 0xae, ++ 0x13, 0x0e, 0x6a, 0x8f, 0x8f, 0x58, 0x5b, 0x53, 0x67, 0x52, 0x3c, 0x2a, ++ 0xfc, 0xbb, 0x0a, 0xe1, 0xbd, 0x8a, 0x9d, 0x92, 0x93, 0x5a, 0x38, 0x8a, ++ 0xef, 0xf6, 0x43, 0x19, 0x80, 0xef, 0x0e, 0xc9, 0x69, 0xa4, 0xf4, 0x5e, ++ 0xd6, 0x18, 0x4f, 0x1c, 0xaa, 0xbd, 0xa3, 0x7f, 0x4f, 0xed, 0xd6, 0xe3, ++ 0xfc, 0x97, 0xd3, 0xf9, 0x13, 0x0a, 0x6f, 0x09, 0xa9, 0x2f, 0x04, 0x7a, ++ 0x56, 0x01, 0x71, 0x60, 0x7c, 0xa7, 0xd1, 0x6f, 0x96, 0x82, 0xfa, 0x76, ++ 0xd6, 0x7b, 0x18, 0xc7, 0x53, 0xeb, 0x55, 0x3b, 0xe8, 0x78, 0xf4, 0xfd, ++ 0xea, 0xe7, 0x24, 0x27, 0x4c, 0xb5, 0x5a, 0x47, 0xdc, 0x80, 0x67, 0xfb, ++ 0x4b, 0xe6, 0xd2, 0xa7, 0x2c, 0x30, 0xcf, 0xd5, 0x86, 0xc1, 0x56, 0x98, ++ 0xdf, 0x7a, 0x03, 0xf4, 0x5b, 0xe2, 0x9f, 0xff, 0xa2, 0xd9, 0x01, 0x78, ++ 0x6e, 0x31, 0x14, 0x02, 0xbe, 0x9b, 0xb7, 0x18, 0xca, 0x86, 0x02, 0xfd, ++ 0xc8, 0xbc, 0x92, 0xa1, 0x80, 0xdf, 0x5f, 0x44, 0xfc, 0x1a, 0xf4, 0x2e, ++ 0x98, 0xef, 0xf2, 0x6b, 0x8c, 0x5b, 0xf5, 0xc0, 0x4f, 0x4b, 0x60, 0xd0, ++ 0x0c, 0x6b, 0xb8, 0x9d, 0x3d, 0x4b, 0xd7, 0x2b, 0x47, 0xc8, 0xfa, 0x59, ++ 0x41, 0x98, 0xdd, 0x27, 0xb2, 0xdf, 0x30, 0x7d, 0x58, 0xf0, 0xf9, 0x4b, ++ 0xfa, 0x44, 0x94, 0x83, 0x65, 0x8d, 0x7a, 0xe2, 0x08, 0xb5, 0x1b, 0x5c, ++ 0x3e, 0x7c, 0x47, 0x09, 0xf3, 0x63, 0xf6, 0x58, 0xfd, 0xdb, 0xb3, 0x82, ++ 0x7c, 0x5c, 0x6e, 0xe7, 0xf2, 0xca, 0xf9, 0xb8, 0x3c, 0x91, 0xf3, 0x55, ++ 0xee, 0xcc, 0x99, 0x31, 0x2c, 0x1c, 0x9f, 0x07, 0x81, 0x2f, 0x46, 0xe6, ++ 0x1f, 0x41, 0xf9, 0x30, 0x5d, 0x37, 0x1d, 0xe8, 0xff, 0x38, 0x90, 0x7e, ++ 0x8f, 0x51, 0xff, 0xc9, 0x81, 0xfe, 0x91, 0x13, 0x9f, 0x3f, 0x41, 0xfd, ++ 0x24, 0x28, 0x37, 0x53, 0x3f, 0x09, 0xca, 0x27, 0xa9, 0x9f, 0x04, 0xa5, ++ 0x9f, 0xfa, 0x49, 0xd0, 0x6f, 0x2b, 0xf5, 0x93, 0xa0, 0xdc, 0x46, 0xfd, ++ 0x24, 0x78, 0xfe, 0x34, 0xf5, 0xcf, 0xa1, 0x6c, 0xa4, 0xfe, 0x39, 0x3c, ++ 0x7f, 0x86, 0xfa, 0xe5, 0x50, 0xee, 0xf4, 0xfa, 0xf0, 0xf9, 0x73, 0xde, ++ 0x3a, 0x2c, 0x9b, 0xbc, 0xf5, 0x58, 0x3e, 0xef, 0x6d, 0xc0, 0x72, 0xb7, ++ 0xd7, 0x8f, 0xfd, 0x5e, 0xf4, 0x36, 0x62, 0xd9, 0xec, 0x6d, 0xc2, 0xe7, ++ 0x2f, 0x7b, 0x9b, 0xb1, 0x6c, 0xf1, 0x06, 0xb0, 0xdc, 0x0b, 0x7c, 0xa6, ++ 0x65, 0xc0, 0xdb, 0x8a, 0xe5, 0x7e, 0xef, 0x31, 0x2c, 0x0f, 0x7a, 0xdb, ++ 0xf0, 0xbd, 0x43, 0xde, 0x33, 0x58, 0xfe, 0x92, 0xd3, 0xdd, 0x36, 0x81, ++ 0xe4, 0xca, 0x54, 0x5e, 0x6c, 0x2e, 0x62, 0x07, 0x36, 0x25, 0x15, 0xbb, ++ 0x72, 0xc1, 0x5f, 0x49, 0x2a, 0x61, 0xf5, 0xd4, 0x3b, 0x7c, 0xb9, 0x06, ++ 0x5a, 0x4f, 0x75, 0xd3, 0x3a, 0xa5, 0x63, 0xef, 0xca, 0x40, 0xae, 0x91, ++ 0xd6, 0x7b, 0xd7, 0xb0, 0xf6, 0xcc, 0x7b, 0x48, 0x9e, 0x89, 0xd6, 0x33, ++ 0x7d, 0xac, 0x7d, 0xc0, 0x2f, 0x5d, 0x79, 0x66, 0x5a, 0x1f, 0x50, 0xcf, ++ 0xda, 0x07, 0x6f, 0xf6, 0xe5, 0xc5, 0xd1, 0xfa, 0x60, 0x3f, 0x6b, 0xbf, ++ 0x6a, 0x67, 0x20, 0x2f, 0x9e, 0xd6, 0xaf, 0x6a, 0x62, 0xed, 0xc3, 0x5b, ++ 0xc8, 0x24, 0x0b, 0xad, 0x0f, 0x0f, 0xb0, 0xfa, 0xc8, 0x23, 0xae, 0x49, ++ 0x56, 0x5a, 0x1f, 0xd9, 0xca, 0xea, 0x39, 0x1f, 0xfa, 0x26, 0xd9, 0x68, ++ 0x3d, 0xa7, 0x8d, 0xbd, 0x3f, 0xfe, 0x5c, 0x60, 0x52, 0x02, 0xad, 0x8f, ++ 0xef, 0x64, 0xed, 0x13, 0xbf, 0x26, 0xf9, 0x76, 0x5a, 0x9f, 0x48, 0x24, ++ 0xac, 0xe7, 0x59, 0x72, 0xf3, 0x13, 0x69, 0x3d, 0xcf, 0xce, 0xea, 0x85, ++ 0x7d, 0xe7, 0xcb, 0x8e, 0x08, 0xeb, 0xfb, 0x5e, 0xa5, 0x6d, 0x21, 0x98, ++ 0xb4, 0x9f, 0xeb, 0x72, 0x72, 0x65, 0xea, 0x27, 0xec, 0x35, 0xb4, 0xad, ++ 0x00, 0x93, 0xbb, 0x5e, 0x77, 0x43, 0xae, 0x3c, 0x8e, 0xd2, 0x4f, 0x21, ++ 0x8b, 0xa0, 0x7d, 0x93, 0xae, 0x88, 0xd5, 0x0d, 0x64, 0x25, 0xb4, 0xff, ++ 0x56, 0x37, 0x1d, 0xeb, 0xfb, 0x15, 0x07, 0xb6, 0xef, 0xd1, 0xcd, 0x61, ++ 0x75, 0x83, 0x03, 0xdb, 0xff, 0xaa, 0x5b, 0x88, 0xf5, 0x83, 0x8a, 0x0b, ++ 0xdb, 0x8f, 0xeb, 0x2a, 0x59, 0xdd, 0xe0, 0xc2, 0xf6, 0xcf, 0x74, 0x3f, ++ 0xc7, 0xf1, 0x0e, 0x29, 0x6e, 0x6c, 0x57, 0xf4, 0xff, 0x9b, 0xd5, 0x0d, ++ 0x6e, 0x6c, 0x7f, 0x58, 0x5e, 0x9f, 0x9b, 0x4f, 0xfb, 0x57, 0xea, 0xdd, ++ 0x1e, 0x1d, 0x95, 0xeb, 0x5a, 0xc9, 0x5d, 0x4e, 0x06, 0x82, 0xbc, 0x36, ++ 0xa5, 0x83, 0x3d, 0x5c, 0xc7, 0xfd, 0xd6, 0x59, 0x3a, 0x07, 0xca, 0xfd, ++ 0xba, 0x0c, 0x03, 0xea, 0xd9, 0xde, 0xff, 0xca, 0x79, 0x0a, 0xf5, 0x0c, ++ 0x7e, 0x92, 0xa1, 0x5e, 0xf6, 0x34, 0xf8, 0xbd, 0x14, 0xce, 0x2a, 0x84, ++ 0xa3, 0x50, 0x38, 0xfa, 0x9e, 0xe1, 0x4c, 0xfc, 0x66, 0xac, 0x00, 0x67, ++ 0xe2, 0x37, 0xe5, 0x2a, 0x9c, 0xd5, 0x08, 0xc7, 0x1c, 0x1b, 0x9c, 0xbd, ++ 0xdf, 0x8c, 0x17, 0xf1, 0xf9, 0xa6, 0x42, 0x85, 0xb3, 0x41, 0x47, 0xed, ++ 0x7d, 0xad, 0x35, 0xb6, 0x79, 0x4d, 0xbc, 0x34, 0x41, 0xc4, 0xe7, 0x52, ++ 0xa5, 0x0a, 0xe7, 0x11, 0xc4, 0x27, 0x31, 0x36, 0x7c, 0x02, 0xca, 0xb5, ++ 0x02, 0x9c, 0x80, 0xb2, 0x44, 0x85, 0xb3, 0x19, 0xe1, 0xa4, 0xc4, 0x86, ++ 0x8f, 0xcb, 0x30, 0x4e, 0x80, 0xe3, 0x32, 0x2c, 0x55, 0xe1, 0x6c, 0x47, ++ 0x38, 0x19, 0xb1, 0xc1, 0x09, 0x18, 0xae, 0x13, 0xf1, 0x31, 0x2c, 0x53, ++ 0xe1, 0x3c, 0x87, 0xf4, 0xe9, 0x17, 0xdb, 0xbc, 0x5c, 0xc6, 0xeb, 0x45, ++ 0x7c, 0x8c, 0x55, 0x2a, 0x9c, 0x3f, 0x20, 0x3e, 0x59, 0xb1, 0xc1, 0xd9, ++ 0x6f, 0x15, 0xe9, 0xb3, 0xdf, 0xda, 0x4d, 0x9f, 0x00, 0xc2, 0xc9, 0x8e, ++ 0x6d, 0x5e, 0x79, 0x36, 0x91, 0x3e, 0x79, 0xb6, 0x6e, 0xfa, 0xbc, 0x86, ++ 0x70, 0xae, 0x8c, 0x0d, 0xce, 0x7e, 0x9b, 0x48, 0x9f, 0xfd, 0xb6, 0x6e, ++ 0xfa, 0xbc, 0x89, 0x70, 0x86, 0xc5, 0x36, 0xaf, 0xbc, 0x04, 0x91, 0x3e, ++ 0x79, 0x09, 0xdd, 0xf4, 0xf9, 0x00, 0xe1, 0x5c, 0x13, 0x1b, 0x3e, 0x07, ++ 0x53, 0x44, 0xfa, 0x1c, 0x4c, 0xe9, 0xa6, 0xcf, 0x49, 0x84, 0x33, 0x26, ++ 0x36, 0x7c, 0xf2, 0x53, 0x45, 0xfa, 0xe4, 0xa7, 0x76, 0xd3, 0xe7, 0x3c, ++ 0xc2, 0x19, 0x17, 0x1b, 0x9c, 0x83, 0xa9, 0x22, 0x7d, 0x0e, 0xa6, 0x76, ++ 0xd3, 0xe7, 0x0b, 0x84, 0x73, 0x7d, 0x6c, 0xf3, 0xca, 0x4f, 0x13, 0xe9, ++ 0x93, 0x9f, 0xd6, 0x4d, 0x9f, 0x4b, 0x08, 0x27, 0xd7, 0xdd, 0x88, 0xf8, ++ 0x10, 0x0a, 0xc7, 0x1a, 0x1d, 0xce, 0xa1, 0x7e, 0x22, 0x7d, 0x0e, 0xf5, ++ 0xeb, 0xa6, 0x8f, 0x49, 0x0f, 0x70, 0x0a, 0x28, 0x9c, 0x81, 0x3d, 0xc3, ++ 0x29, 0xcc, 0x14, 0xe9, 0x53, 0x98, 0xd9, 0x4d, 0x9f, 0x44, 0x3d, 0xe8, ++ 0xc5, 0xe4, 0xd8, 0xe0, 0x1c, 0xca, 0x14, 0xe9, 0x73, 0x28, 0xb3, 0x9b, ++ 0x3e, 0xbd, 0x11, 0x9f, 0xa9, 0xb1, 0xcd, 0xab, 0xb0, 0xbf, 0x48, 0x9f, ++ 0xc2, 0xfe, 0x8c, 0x3e, 0x1e, 0x63, 0xe7, 0x24, 0x3b, 0xf8, 0x8d, 0x89, ++ 0xc4, 0xb9, 0x95, 0xbe, 0x32, 0x29, 0xf9, 0x67, 0x07, 0x61, 0xdd, 0x51, ++ 0x2c, 0xc4, 0x09, 0x60, 0x8f, 0x48, 0x81, 0x6d, 0x00, 0x9f, 0xae, 0xad, ++ 0xe8, 0x97, 0xca, 0x4e, 0xd5, 0x0f, 0x72, 0x12, 0xf0, 0x73, 0x8b, 0x6d, ++ 0x0e, 0x27, 0xc4, 0x03, 0xf4, 0xaa, 0xbf, 0x43, 0x5a, 0x71, 0x3f, 0x62, ++ 0xd9, 0x99, 0x28, 0xc4, 0x9b, 0x5e, 0xd2, 0xe7, 0x0d, 0x07, 0x7c, 0xad, ++ 0xd4, 0x2b, 0x0c, 0xf5, 0x7b, 0x12, 0xc6, 0xc6, 0x09, 0xfe, 0x56, 0xa2, ++ 0x2b, 0x49, 0xa8, 0xf7, 0x2a, 0xea, 0x2d, 0xf4, 0x4f, 0x29, 0x19, 0x20, ++ 0xb4, 0xa7, 0x95, 0x5e, 0x25, 0xb4, 0x67, 0xb8, 0x47, 0x0a, 0xf5, 0x3e, ++ 0xe5, 0xe3, 0x85, 0xfe, 0xfd, 0x6a, 0xf2, 0x84, 0x7a, 0xff, 0x55, 0x53, ++ 0x84, 0xfe, 0x59, 0xbe, 0x19, 0x42, 0x7d, 0x60, 0xdd, 0x1c, 0xa1, 0x7f, ++ 0x76, 0xfd, 0x02, 0xa1, 0xfd, 0x8a, 0x86, 0x0a, 0xa1, 0xfd, 0x4a, 0xff, ++ 0x72, 0xa1, 0x7e, 0x75, 0xe3, 0xbf, 0x0a, 0xfd, 0x87, 0x35, 0xad, 0x11, ++ 0xda, 0x47, 0x34, 0x6f, 0x10, 0xda, 0xaf, 0x09, 0x3c, 0x2c, 0xd4, 0x47, ++ 0x1d, 0x7e, 0x42, 0xe8, 0x3f, 0xa6, 0x75, 0xab, 0xd0, 0x7e, 0xed, 0xb1, ++ 0x67, 0x84, 0xf6, 0x71, 0x6d, 0xcf, 0x0b, 0xf5, 0xeb, 0xce, 0xbc, 0x2c, ++ 0xf4, 0xbf, 0xbe, 0x73, 0xbf, 0x50, 0xbf, 0xe1, 0xe2, 0x9f, 0x85, 0xfe, ++ 0xb9, 0xe4, 0x6f, 0x42, 0x7d, 0x92, 0xe9, 0x03, 0xa1, 0x7f, 0x81, 0xfd, ++ 0x23, 0xa1, 0xfd, 0xc6, 0xf4, 0x4f, 0x34, 0x7e, 0xac, 0x18, 0xbf, 0xa8, ++ 0xcd, 0x25, 0xcc, 0x9f, 0xcd, 0x30, 0xa0, 0x3f, 0x1b, 0xb0, 0x1a, 0xb0, ++ 0x6e, 0xd8, 0x6b, 0x66, 0xfb, 0x1b, 0xa8, 0x27, 0x43, 0x1c, 0xa2, 0x18, ++ 0xeb, 0x86, 0xfd, 0x0b, 0x1d, 0xc9, 0x10, 0x0f, 0x00, 0x00, 0xd4, 0x9f, ++ 0xc8, 0xed, 0x5d, 0x7e, 0x05, 0xc4, 0xab, 0x7e, 0x31, 0xde, 0x7d, 0x05, ++ 0xc4, 0x71, 0x7f, 0x61, 0x70, 0x8f, 0xb0, 0x47, 0xf0, 0x83, 0xda, 0x65, ++ 0xf7, 0x3d, 0x7a, 0x8c, 0x27, 0xb6, 0x4a, 0x24, 0x1d, 0x4a, 0x87, 0x0e, ++ 0xca, 0x38, 0x3d, 0x8f, 0x27, 0x18, 0x99, 0xfc, 0xae, 0xcf, 0xca, 0x79, ++ 0xca, 0x17, 0xa2, 0x07, 0x75, 0xfd, 0xa8, 0x7f, 0x41, 0xeb, 0xeb, 0xf5, ++ 0x14, 0x8f, 0x31, 0x41, 0xfd, 0x59, 0xdf, 0xaf, 0x2c, 0x7d, 0x7e, 0xc8, ++ 0x38, 0xeb, 0xfa, 0x19, 0x4a, 0xb7, 0x0e, 0x65, 0xcf, 0x17, 0x5a, 0x60, ++ 0xbc, 0x92, 0xfb, 0x60, 0x3c, 0x8f, 0xa1, 0x73, 0x30, 0xe0, 0xa5, 0x1d, ++ 0xc7, 0x38, 0x60, 0xac, 0x30, 0x8e, 0x29, 0xb3, 0x1c, 0xc7, 0xd9, 0x08, ++ 0xe3, 0xa4, 0x04, 0xc7, 0x31, 0x66, 0x96, 0x6b, 0xc6, 0x31, 0x95, 0x6e, ++ 0xe5, 0xcf, 0xf9, 0x38, 0x8f, 0x81, 0xde, 0x44, 0x1b, 0x67, 0xfd, 0x80, ++ 0xf1, 0xe2, 0x7c, 0x32, 0x2b, 0x70, 0x9c, 0x2d, 0x9a, 0x71, 0xd6, 0x67, ++ 0x56, 0x68, 0xc6, 0x89, 0x63, 0xf3, 0xa1, 0xcf, 0xf9, 0x38, 0x4f, 0x5d, ++ 0x6e, 0x1c, 0xe3, 0xc0, 0x09, 0xe2, 0x7c, 0xfa, 0x57, 0xe2, 0x38, 0xcf, ++ 0x69, 0xe7, 0xd3, 0xbf, 0x52, 0x33, 0x8e, 0x05, 0xc7, 0x81, 0xe7, 0x30, ++ 0x0e, 0xe9, 0x4b, 0x77, 0x31, 0x69, 0x94, 0xcf, 0xc6, 0xce, 0x32, 0x94, ++ 0x83, 0x3f, 0x99, 0x31, 0x4e, 0x66, 0xe8, 0x53, 0xf1, 0x1b, 0xa8, 0x93, ++ 0x0f, 0xcc, 0x24, 0x1b, 0xc6, 0x71, 0xd0, 0x71, 0x69, 0x3f, 0x32, 0x24, ++ 0x89, 0x0a, 0x35, 0x21, 0xff, 0xa2, 0x4f, 0x42, 0xfe, 0x7c, 0x11, 0x47, ++ 0xf9, 0x1f, 0x12, 0x4f, 0x0b, 0xee, 0xc7, 0x7d, 0xb8, 0xaf, 0x5f, 0xcc, ++ 0x51, 0x24, 0x7e, 0x8a, 0x11, 0xdd, 0x27, 0x55, 0x73, 0xd9, 0x5c, 0xb4, ++ 0x73, 0x7a, 0xe6, 0x0a, 0x07, 0x2d, 0x9b, 0x0f, 0x0c, 0x7a, 0x04, 0xc6, ++ 0xd9, 0x68, 0x75, 0x66, 0xd3, 0x7a, 0x7b, 0xf3, 0x24, 0xc3, 0xc2, 0x08, ++ 0xf2, 0xb4, 0xb8, 0x5e, 0x39, 0xd5, 0x16, 0x22, 0xe7, 0xdd, 0xfb, 0xb3, ++ 0x3c, 0x32, 0xa4, 0x86, 0x8e, 0xbf, 0x22, 0xce, 0x8e, 0xf8, 0xa8, 0x75, ++ 0xb5, 0x4c, 0xd2, 0x89, 0xcf, 0x4f, 0xd0, 0x7d, 0x17, 0xa1, 0xfb, 0x93, ++ 0x0f, 0xe9, 0x3e, 0x85, 0xd0, 0xfd, 0xca, 0x47, 0x0a, 0xdb, 0x67, 0xfe, ++ 0x3b, 0xdd, 0x9f, 0x41, 0xbd, 0x8d, 0xee, 0xcf, 0xa0, 0x9d, 0x90, 0xd5, ++ 0xf8, 0xde, 0x09, 0x1e, 0x67, 0x3e, 0xf1, 0x4b, 0xc9, 0x0f, 0xf4, 0xfe, ++ 0xe2, 0xae, 0x9f, 0x29, 0xb8, 0x4e, 0xf8, 0xc8, 0x5b, 0xe9, 0xa9, 0x10, ++ 0x4d, 0x60, 0x3f, 0xf3, 0x56, 0xc5, 0x53, 0x26, 0x04, 0xf1, 0x9b, 0xef, ++ 0xeb, 0x25, 0xd4, 0xa9, 0x39, 0xee, 0xa3, 0x4b, 0xc7, 0x7d, 0x2d, 0xc6, ++ 0x0f, 0x3a, 0x5f, 0x32, 0xfa, 0xb7, 0x02, 0x5d, 0xeb, 0xfa, 0x50, 0x9a, ++ 0xf2, 0x7e, 0x03, 0x08, 0x79, 0x77, 0xef, 0xd4, 0x43, 0x92, 0x0d, 0xab, ++ 0x7d, 0x74, 0x63, 0x09, 0x99, 0x59, 0x33, 0xbd, 0x20, 0x0d, 0xb5, 0x48, ++ 0xea, 0xb7, 0x9c, 0xe2, 0x39, 0x63, 0xf7, 0x35, 0x0a, 0x7d, 0x83, 0xb4, ++ 0x2b, 0x6d, 0x77, 0x3a, 0x2d, 0x41, 0xb8, 0xc4, 0xa5, 0x9c, 0x00, 0xfa, ++ 0x98, 0xe8, 0x1f, 0x80, 0x73, 0x4b, 0x11, 0xad, 0x87, 0x8c, 0x7f, 0x6b, ++ 0x89, 0x58, 0x9f, 0x45, 0xe4, 0x60, 0x9d, 0xf2, 0xfb, 0xa4, 0x7e, 0x00, ++ 0x61, 0xf1, 0x7f, 0x3e, 0xae, 0xc3, 0xa5, 0x00, 0x5f, 0x4b, 0xe8, 0x1c, ++ 0x33, 0x28, 0xab, 0x67, 0x41, 0x39, 0x12, 0x9a, 0x59, 0xbc, 0xa6, 0xd4, ++ 0xce, 0xde, 0x55, 0xf1, 0xf1, 0x2c, 0x54, 0x48, 0x00, 0xf7, 0xd7, 0xbe, ++ 0x14, 0x88, 0x63, 0x13, 0x5f, 0x32, 0xf6, 0x9b, 0xa3, 0xee, 0x93, 0x35, ++ 0xf8, 0x95, 0x2a, 0x26, 0x57, 0x09, 0xa5, 0x6b, 0xe9, 0x7c, 0x3d, 0xd2, ++ 0x55, 0x8b, 0xef, 0xfb, 0x7b, 0xe3, 0x5d, 0xba, 0xe1, 0xb4, 0xac, 0x7b, ++ 0x44, 0x81, 0xd0, 0x6c, 0x4f, 0xf8, 0xcf, 0x76, 0x8b, 0xed, 0xa4, 0x9c, ++ 0x8d, 0xa7, 0xd2, 0x55, 0x95, 0x97, 0x53, 0x9c, 0xbf, 0x27, 0x80, 0xff, ++ 0xb4, 0x3c, 0x0d, 0xfc, 0xa7, 0x78, 0x9f, 0xe4, 0xfc, 0x0f, 0xca, 0x31, ++ 0xe3, 0xbf, 0xc7, 0xe8, 0x9e, 0x06, 0xfc, 0xef, 0xdc, 0xa4, 0x27, 0xc8, ++ 0x2f, 0xce, 0xf7, 0xdb, 0x38, 0xdf, 0x17, 0xd7, 0x8b, 0x7c, 0xbf, 0x0d, ++ 0xce, 0xe3, 0x68, 0xff, 0xdb, 0x56, 0x66, 0xb1, 0x78, 0x53, 0x43, 0x2f, ++ 0x81, 0xbf, 0x74, 0xe2, 0x22, 0x1d, 0xea, 0x1f, 0x2a, 0xa0, 0x66, 0x35, ++ 0x0c, 0xff, 0xbf, 0x73, 0x39, 0x98, 0x53, 0xb7, 0xeb, 0x15, 0x60, 0xef, ++ 0xed, 0xe5, 0x9a, 0xf9, 0x71, 0x3e, 0xdc, 0xc9, 0xf9, 0x30, 0x57, 0x43, ++ 0x8f, 0xdb, 0x38, 0xdf, 0xe6, 0x72, 0xbe, 0x2d, 0x21, 0xbe, 0x7b, 0x33, ++ 0x30, 0x7e, 0xe1, 0x57, 0x20, 0xae, 0x37, 0xbb, 0x5c, 0x22, 0x60, 0x2f, ++ 0x3c, 0x77, 0xab, 0x7c, 0x6b, 0x13, 0xf8, 0xe6, 0x56, 0xf9, 0xa6, 0xc1, ++ 0xf7, 0x4e, 0xce, 0xb7, 0x3b, 0xef, 0x62, 0x7c, 0xd3, 0xe2, 0xdd, 0xc6, ++ 0xf9, 0xd6, 0xd6, 0xf0, 0x99, 0x42, 0x06, 0x84, 0xe3, 0xad, 0xc5, 0x73, ++ 0xde, 0x2a, 0xcd, 0xbc, 0x7c, 0x5a, 0xbe, 0xd5, 0x73, 0xb9, 0xb4, 0x1b, ++ 0xc0, 0x9f, 0x9a, 0xee, 0xca, 0x5d, 0x71, 0x32, 0xa4, 0xff, 0x2d, 0x45, ++ 0x93, 0x57, 0x9c, 0x0c, 0xb1, 0x0b, 0xb7, 0x96, 0x4c, 0x17, 0xea, 0xb3, ++ 0x4a, 0x67, 0x0b, 0xfd, 0x67, 0xbb, 0xe7, 0x0b, 0xed, 0xb7, 0x97, 0x2f, ++ 0x15, 0xda, 0xe7, 0xd6, 0xfc, 0x4c, 0xa8, 0xcf, 0x5b, 0x75, 0x97, 0xd0, ++ 0x7f, 0xbe, 0x6f, 0xb5, 0xd0, 0xbe, 0xb0, 0xee, 0x3e, 0xa1, 0x7d, 0x71, ++ 0xfd, 0x43, 0x42, 0x7d, 0x49, 0xc3, 0x26, 0xa1, 0xff, 0x52, 0xff, 0x16, ++ 0xa1, 0x7d, 0x59, 0xe3, 0x0e, 0xa1, 0xbd, 0xaa, 0x69, 0x97, 0x50, 0xf7, ++ 0x34, 0xbf, 0x24, 0xf4, 0xd7, 0xed, 0xbd, 0xf2, 0x66, 0x90, 0xaf, 0x23, ++ 0x6f, 0xeb, 0x09, 0xc4, 0xfb, 0x2e, 0x38, 0x4f, 0x63, 0x9c, 0xf1, 0x82, ++ 0x53, 0x71, 0x42, 0x9f, 0x93, 0x5e, 0x07, 0xca, 0xf1, 0x29, 0xef, 0x10, ++ 0x2c, 0xcf, 0x78, 0x9d, 0x28, 0xe7, 0x67, 0xbd, 0x63, 0xb1, 0xac, 0x06, ++ 0x99, 0x1c, 0x07, 0x76, 0xf6, 0x80, 0x05, 0xe2, 0xa7, 0x9e, 0x38, 0x6a, ++ 0xf7, 0x13, 0xe9, 0x3a, 0x2e, 0x8f, 0x5b, 0x53, 0x37, 0x01, 0xd6, 0x1b, ++ 0xda, 0x3e, 0x9e, 0x90, 0x7f, 0x95, 0x6f, 0x58, 0xe3, 0xeb, 0x4b, 0xb5, ++ 0x00, 0xe2, 0xde, 0x94, 0xfe, 0xc5, 0x0d, 0x06, 0x12, 0x18, 0x45, 0xa8, ++ 0x74, 0xf7, 0xee, 0x96, 0xe7, 0x4e, 0x7d, 0x48, 0x7b, 0x5b, 0x0f, 0xed, ++ 0x0d, 0x32, 0x09, 0xf4, 0x0a, 0x6f, 0x2f, 0x6e, 0x8b, 0xfc, 0xbc, 0x43, ++ 0xea, 0x1c, 0x9c, 0x01, 0x71, 0xd9, 0xf7, 0x8c, 0x64, 0x7b, 0x48, 0xbc, ++ 0x31, 0xfc, 0xbc, 0x85, 0xf4, 0x01, 0xbf, 0x22, 0x5a, 0xfb, 0x39, 0x1d, ++ 0x29, 0x0f, 0x3d, 0xef, 0xd9, 0x2a, 0xb3, 0x73, 0x9e, 0x23, 0xfa, 0xbc, ++ 0xad, 0x32, 0xc5, 0xab, 0xd2, 0xc0, 0xf4, 0xbf, 0xf2, 0xf9, 0x8c, 0x3c, ++ 0x62, 0x83, 0x7a, 0x60, 0x70, 0x8d, 0xe5, 0x32, 0xe3, 0x35, 0x51, 0x64, ++ 0xd2, 0x80, 0xcf, 0x03, 0x05, 0xbd, 0x5f, 0xd2, 0x70, 0x75, 0x50, 0xcf, ++ 0x09, 0x8c, 0xc3, 0xec, 0xe9, 0x52, 0xff, 0x28, 0xe1, 0xf9, 0xb2, 0xc6, ++ 0xeb, 0x84, 0xf7, 0xde, 0x90, 0xdc, 0x5b, 0x00, 0x8f, 0x73, 0xfb, 0xf4, ++ 0xb8, 0x5e, 0x93, 0xc0, 0x81, 0xcc, 0x5b, 0x86, 0x01, 0x7e, 0xae, 0xad, ++ 0x32, 0xac, 0xa3, 0xcd, 0x29, 0xe8, 0x77, 0xb5, 0x7a, 0x5d, 0x2b, 0x4e, ++ 0x2a, 0x84, 0xbc, 0xe9, 0x2d, 0xc2, 0xf2, 0x2d, 0x6f, 0x09, 0x96, 0xef, ++ 0x78, 0x4b, 0xb1, 0x3c, 0xe6, 0x75, 0x63, 0xf9, 0xbe, 0xb7, 0x1c, 0xcb, ++ 0x0f, 0xbd, 0x35, 0x58, 0xfe, 0xbb, 0x77, 0x15, 0x96, 0x6d, 0x5e, 0x1f, ++ 0x96, 0x27, 0xbc, 0x75, 0x58, 0x9e, 0xf4, 0xd6, 0x63, 0x79, 0xca, 0xdb, ++ 0x80, 0xe5, 0x19, 0xaf, 0x1f, 0xcb, 0xb3, 0xde, 0x46, 0x2c, 0xcf, 0x79, ++ 0x9b, 0xb0, 0x6c, 0xf7, 0x36, 0x63, 0xa9, 0xda, 0xcf, 0x9e, 0xe4, 0xef, ++ 0x0c, 0x5f, 0x5f, 0xcf, 0x82, 0x1c, 0x1a, 0xc3, 0xe5, 0xec, 0xe0, 0xda, ++ 0x79, 0x6b, 0xea, 0xfa, 0x06, 0xe5, 0xec, 0xb0, 0x5c, 0x86, 0x72, 0xa6, ++ 0xd2, 0xb7, 0xb8, 0xc1, 0xc8, 0xe5, 0x21, 0x55, 0x90, 0x87, 0xbf, 0xc2, ++ 0x3a, 0x9c, 0x02, 0xf2, 0xd2, 0x43, 0x7b, 0x83, 0xc2, 0xe5, 0x30, 0xda, ++ 0xfb, 0x91, 0xdb, 0x41, 0xde, 0x7a, 0xff, 0x08, 0xf2, 0x46, 0xc8, 0x1a, ++ 0x94, 0x03, 0x0b, 0xc8, 0xdd, 0xf7, 0x90, 0x37, 0x02, 0xa7, 0x08, 0x29, ++ 0x20, 0x4f, 0x7d, 0x34, 0xf2, 0x24, 0xca, 0xa1, 0x2a, 0x47, 0xaa, 0x9e, ++ 0xbf, 0x21, 0x95, 0x9c, 0x03, 0xf9, 0x52, 0xe5, 0xca, 0x22, 0x33, 0x7f, ++ 0x48, 0x95, 0xab, 0xfb, 0xc1, 0x4f, 0x8c, 0xe0, 0x6f, 0xf5, 0x56, 0x24, ++ 0xbe, 0xfe, 0x31, 0xff, 0x88, 0x04, 0x72, 0x75, 0x40, 0xb2, 0xe5, 0xfc, ++ 0xbc, 0x82, 0xf8, 0x5c, 0x58, 0xef, 0xe2, 0x63, 0xd7, 0x52, 0x70, 0xad, ++ 0xd0, 0x4f, 0xf6, 0x0f, 0x81, 0x75, 0xa4, 0x6b, 0xc8, 0x57, 0x83, 0x21, ++ 0xbe, 0xdf, 0x75, 0x8c, 0x0a, 0x41, 0x56, 0xf4, 0xf9, 0x69, 0xe5, 0x25, ++ 0x3a, 0xdd, 0x5d, 0xb8, 0x7f, 0x28, 0xf3, 0x53, 0xe6, 0xf7, 0x0a, 0x6f, ++ 0x37, 0xc7, 0x31, 0xba, 0x9a, 0x75, 0xa4, 0x88, 0x8c, 0x84, 0xf3, 0xe5, ++ 0x9c, 0x63, 0x6e, 0xca, 0xcf, 0xb8, 0x3f, 0x5d, 0x3d, 0x12, 0xf6, 0xcd, ++ 0xf4, 0xb9, 0x4c, 0x92, 0x00, 0x8e, 0xdf, 0x39, 0x3d, 0xc2, 0x79, 0x01, ++ 0x19, 0x44, 0x90, 0xce, 0x3d, 0xd1, 0x57, 0xed, 0x7f, 0xea, 0x89, 0xff, ++ 0xcc, 0x81, 0x73, 0x7f, 0x0b, 0xe8, 0x39, 0x9d, 0x7b, 0xdc, 0x01, 0x7d, ++ 0x0d, 0xd3, 0xdf, 0xa7, 0x9c, 0xb7, 0x84, 0x9c, 0x2f, 0x79, 0x8c, 0xce, ++ 0x74, 0x88, 0x83, 0x77, 0x66, 0x1b, 0xec, 0xcc, 0x7f, 0x98, 0x24, 0xd2, ++ 0x91, 0x4c, 0xc2, 0xf3, 0x03, 0x95, 0x8e, 0x07, 0xb2, 0xbf, 0x18, 0x0c, ++ 0xe7, 0x33, 0xf7, 0x51, 0x39, 0x04, 0xfd, 0xea, 0x1a, 0x34, 0x38, 0x81, ++ 0x5c, 0x46, 0x3e, 0x7a, 0xb2, 0xf7, 0x3d, 0xd1, 0x73, 0x01, 0xcc, 0x37, ++ 0x26, 0x7a, 0x1a, 0x08, 0x9c, 0x73, 0x51, 0x7a, 0x6e, 0x85, 0xfb, 0x8e, ++ 0xb1, 0xd2, 0xb3, 0x27, 0x3b, 0xd9, 0x93, 0x7d, 0x3c, 0xb1, 0x81, 0xd1, ++ 0xf9, 0x08, 0xf7, 0x4f, 0xa3, 0xd1, 0x59, 0x3d, 0x0f, 0xd3, 0xe2, 0x71, ++ 0x8b, 0x22, 0x73, 0x3e, 0x70, 0x39, 0x26, 0x77, 0x68, 0xe8, 0x5f, 0x2a, ++ 0xd0, 0xbf, 0xaf, 0xd5, 0x81, 0xfd, 0x0f, 0xee, 0xfd, 0x20, 0x13, 0xce, ++ 0xf1, 0xba, 0x76, 0x5f, 0x91, 0x40, 0x86, 0x86, 0xbe, 0x5f, 0xc0, 0xce, ++ 0x7b, 0xba, 0xdf, 0xcf, 0x17, 0xf4, 0x40, 0xfa, 0xd3, 0xdf, 0x33, 0x61, ++ 0x7f, 0x7c, 0xf0, 0x85, 0x77, 0xb1, 0x5c, 0x4b, 0x98, 0x1e, 0x6e, 0xb4, ++ 0x94, 0xcc, 0x55, 0xc6, 0x04, 0xe1, 0xc5, 0x7a, 0x8f, 0x20, 0xda, 0xbc, ++ 0x3c, 0x8a, 0x24, 0xce, 0xab, 0x07, 0xfd, 0xec, 0x48, 0x55, 0xf5, 0xb3, ++ 0x35, 0x13, 0xe4, 0x69, 0x37, 0xb7, 0x03, 0x61, 0xf3, 0xeb, 0x41, 0x3e, ++ 0xd5, 0xf9, 0x1d, 0x80, 0xf9, 0x51, 0x38, 0x53, 0x41, 0xa6, 0xe9, 0x3c, ++ 0xf2, 0xe5, 0x92, 0xbb, 0x84, 0xf9, 0x8d, 0x4e, 0xc1, 0x79, 0xf7, 0x34, ++ 0x3f, 0x4f, 0x82, 0x81, 0x48, 0x23, 0x28, 0x7e, 0x56, 0x83, 0x81, 0x24, ++ 0x50, 0x79, 0x54, 0xdc, 0x6b, 0x15, 0xdc, 0xd7, 0x39, 0xdb, 0x7c, 0x10, ++ 0xa7, 0xd8, 0x1b, 0xef, 0xac, 0xa5, 0x2c, 0xf1, 0xd8, 0xce, 0xbe, 0x11, ++ 0x70, 0xc0, 0x7b, 0x62, 0x3c, 0x63, 0x59, 0xa3, 0xb9, 0x46, 0xf4, 0x9f, ++ 0x12, 0x6b, 0x44, 0xff, 0x29, 0xa3, 0x26, 0xd4, 0x7f, 0xea, 0x3a, 0xfc, ++ 0x94, 0xcd, 0x4d, 0xf1, 0x5b, 0x9e, 0xae, 0xaf, 0x39, 0xd9, 0x0b, 0xd6, ++ 0x39, 0x17, 0x5f, 0xe7, 0xd8, 0xba, 0xaa, 0xe2, 0x57, 0xd5, 0x94, 0x55, ++ 0x63, 0x11, 0xe0, 0x88, 0xf5, 0xae, 0x7a, 0xa9, 0x88, 0xdd, 0xc3, 0x71, ++ 0x24, 0xcc, 0x8c, 0x70, 0xde, 0xa7, 0x96, 0xcb, 0xd3, 0x0d, 0x38, 0xce, ++ 0xd9, 0xc6, 0x81, 0x09, 0x30, 0xee, 0x59, 0xaf, 0xa9, 0x86, 0xad, 0xaf, ++ 0xf6, 0x1a, 0x36, 0x6e, 0x7a, 0x4d, 0xe8, 0xfa, 0x5a, 0xb9, 0x2a, 0xbe, ++ 0xe6, 0xe4, 0xa8, 0x20, 0x7e, 0xd1, 0xe0, 0xfe, 0xd0, 0xf8, 0x51, 0x89, ++ 0x20, 0x1f, 0x99, 0x60, 0x5d, 0xa4, 0x6d, 0x03, 0xa3, 0xf7, 0x8f, 0xca, ++ 0x4f, 0xf9, 0x73, 0x03, 0x9e, 0xab, 0xb7, 0x28, 0x5f, 0x80, 0xff, 0x6e, ++ 0x1e, 0xa2, 0xfa, 0xef, 0x32, 0xd6, 0x55, 0xb8, 0x9e, 0x26, 0xbd, 0xcf, ++ 0x38, 0x02, 0x9e, 0xef, 0x14, 0xc6, 0xa3, 0xef, 0x39, 0xd4, 0xb3, 0x71, ++ 0x78, 0x2f, 0xba, 0xdc, 0xc8, 0xe4, 0x94, 0xca, 0x4f, 0x3d, 0x9c, 0x77, ++ 0x11, 0xbe, 0x3f, 0x30, 0x21, 0x9f, 0xdd, 0x14, 0x62, 0x02, 0x85, 0xd7, ++ 0x21, 0x5b, 0xea, 0x40, 0xae, 0xfc, 0x0a, 0xd3, 0x67, 0x0f, 0x97, 0xd3, ++ 0x2a, 0x53, 0x9b, 0xc1, 0xed, 0x40, 0x72, 0xb7, 0x82, 0x5c, 0x2f, 0x18, ++ 0xab, 0xca, 0xb9, 0x63, 0xd6, 0x07, 0xd4, 0x4e, 0x7f, 0xfc, 0x17, 0x05, ++ 0xef, 0x99, 0x91, 0xaf, 0x29, 0xf4, 0x9c, 0xe0, 0x55, 0x87, 0x45, 0xa4, ++ 0xc4, 0x06, 0x41, 0xd5, 0x05, 0xbb, 0x97, 0x15, 0xc3, 0xba, 0xfd, 0xf1, ++ 0x8b, 0x37, 0xf1, 0x7d, 0x7a, 0x7d, 0x0e, 0xcc, 0xfb, 0x3c, 0xd1, 0x15, ++ 0x81, 0x5d, 0x3a, 0x4f, 0xde, 0xb4, 0x8d, 0x0a, 0xd1, 0xd7, 0xd3, 0x0a, ++ 0x8b, 0x63, 0x91, 0x3a, 0xb6, 0xcf, 0xf1, 0xd1, 0x3f, 0x30, 0xbf, 0xc5, ++ 0xf5, 0xe2, 0xbe, 0x67, 0x49, 0x83, 0x58, 0x2f, 0x23, 0x33, 0x52, 0xc1, ++ 0xde, 0x96, 0x6d, 0x54, 0x88, 0x9f, 0xe2, 0xbe, 0x14, 0xf6, 0x4d, 0xea, ++ 0xbc, 0xa9, 0xfd, 0x7d, 0x57, 0xb1, 0x23, 0x72, 0x4b, 0x48, 0xcd, 0x3a, ++ 0xd8, 0xa7, 0x3f, 0xa6, 0xb0, 0x78, 0xcf, 0x02, 0x3b, 0x91, 0xfb, 0x50, ++ 0x7b, 0x5d, 0xf5, 0x87, 0x5f, 0xe7, 0x40, 0xdc, 0xa7, 0x5d, 0x61, 0xfe, ++ 0xae, 0x7a, 0x1e, 0xbe, 0x34, 0x89, 0xed, 0x07, 0x2b, 0x66, 0xfa, 0x0d, ++ 0x2e, 0xda, 0xff, 0xa3, 0xdd, 0xa3, 0x6e, 0xa3, 0x16, 0x97, 0xbe, 0xef, ++ 0x5f, 0x87, 0xfe, 0xcf, 0x74, 0xe2, 0xdc, 0x4e, 0xc2, 0xe9, 0xbe, 0xb0, ++ 0x4e, 0xc4, 0xaf, 0x27, 0xfc, 0xb5, 0xf8, 0xaa, 0x7e, 0x50, 0xd8, 0xb9, ++ 0x3c, 0xc7, 0x23, 0xb9, 0x51, 0x8a, 0x78, 0x5f, 0xea, 0x6b, 0x6e, 0xe7, ++ 0x54, 0xfd, 0x48, 0x32, 0xd8, 0x85, 0xb8, 0x4f, 0x9a, 0xa6, 0xae, 0xca, ++ 0x81, 0xc2, 0xe5, 0xc0, 0xaf, 0xb8, 0xad, 0x86, 0x14, 0xc6, 0x77, 0xe0, ++ 0xa3, 0x24, 0x77, 0x1a, 0xdc, 0x21, 0xfd, 0x0c, 0xc1, 0x7e, 0x49, 0x86, ++ 0x31, 0xd1, 0xfb, 0x19, 0xa1, 0x9f, 0x1e, 0xfb, 0xa5, 0xb1, 0x7e, 0x9d, ++ 0x85, 0xb8, 0x3f, 0x26, 0x54, 0x9e, 0x86, 0x06, 0xfb, 0x99, 0x83, 0xf0, ++ 0xfa, 0xb2, 0x71, 0xc5, 0x7e, 0x55, 0x7f, 0x78, 0xf6, 0x45, 0x1f, 0x95, ++ 0x97, 0x8a, 0xdf, 0x3d, 0x6a, 0x23, 0x74, 0xdd, 0xfc, 0x58, 0xae, 0x4f, ++ 0x75, 0xd2, 0xe7, 0x95, 0xdb, 0xef, 0xb5, 0xb9, 0x68, 0x79, 0x46, 0xf6, ++ 0xd9, 0x80, 0x9f, 0x1f, 0xfb, 0xf5, 0x11, 0xef, 0xfb, 0xde, 0x62, 0x50, ++ 0xe9, 0xe1, 0xb2, 0x48, 0x10, 0x4f, 0xe3, 0xf2, 0x49, 0xea, 0x7c, 0x18, ++ 0xa7, 0xf8, 0x62, 0xbb, 0x62, 0xc7, 0x73, 0x84, 0x46, 0x63, 0xc0, 0x48, ++ 0xe5, 0xb3, 0x7a, 0xf7, 0xd2, 0x62, 0x32, 0x1c, 0xeb, 0xc7, 0x59, 0x7d, ++ 0xfd, 0xa7, 0x7a, 0xa8, 0x37, 0x8b, 0xfc, 0xaa, 0xf8, 0xcd, 0xa3, 0xa9, ++ 0x0e, 0x76, 0x4f, 0x88, 0xc5, 0x93, 0x48, 0x00, 0xfd, 0xdc, 0xea, 0x6d, ++ 0xff, 0x51, 0x08, 0xeb, 0x85, 0x87, 0x74, 0xa2, 0x9c, 0x69, 0xdf, 0x83, ++ 0xf1, 0x2f, 0x26, 0xa1, 0x5e, 0xcf, 0x37, 0x24, 0x84, 0xb7, 0xe3, 0xc5, ++ 0xe0, 0x54, 0x78, 0x9f, 0xfd, 0x78, 0x76, 0xdf, 0xff, 0xa9, 0xde, 0x06, ++ 0xe5, 0xe4, 0xd3, 0xa0, 0x47, 0x1e, 0x8d, 0x9c, 0x94, 0x73, 0xbf, 0x15, ++ 0xe8, 0x05, 0xfb, 0xfd, 0x7c, 0x83, 0x35, 0x19, 0xed, 0xfd, 0xb5, 0xe4, ++ 0x5a, 0xd0, 0x77, 0x95, 0x2e, 0xc4, 0xcf, 0xfc, 0xd7, 0xda, 0x1d, 0x8f, ++ 0x0f, 0x3f, 0x4e, 0xf1, 0x3a, 0xb7, 0xed, 0x2f, 0x36, 0x69, 0x68, 0xa8, ++ 0x9d, 0x60, 0xf2, 0xd6, 0xd5, 0xb4, 0xf0, 0xdf, 0x4c, 0xba, 0xe8, 0xf6, ++ 0xa4, 0x9d, 0xca, 0x63, 0xa8, 0x9f, 0x44, 0x01, 0xe3, 0x7b, 0x8e, 0x66, ++ 0xee, 0x77, 0xb7, 0xb0, 0xb2, 0x52, 0x09, 0xd8, 0xe0, 0x3e, 0x4e, 0xe5, ++ 0x16, 0xc5, 0x49, 0x25, 0x91, 0x54, 0x3e, 0xab, 0x27, 0x70, 0x3f, 0x81, ++ 0xbc, 0x67, 0xf4, 0x43, 0x7c, 0x74, 0xd9, 0xb3, 0xaf, 0xbc, 0x33, 0x9e, ++ 0xd2, 0x7f, 0xd9, 0x2e, 0x25, 0xb9, 0x98, 0x4d, 0xc7, 0x22, 0xa5, 0x06, ++ 0xf9, 0xe3, 0xa1, 0x7f, 0x57, 0x8d, 0x0c, 0xf2, 0xa3, 0xe2, 0xf7, 0xaf, ++ 0x18, 0x1c, 0xc3, 0xd8, 0xf3, 0x7b, 0x92, 0x82, 0x7c, 0x59, 0xb6, 0x6b, ++ 0x9f, 0x81, 0x0c, 0x0b, 0xa7, 0xe3, 0xa4, 0xa6, 0x7d, 0x86, 0x36, 0x4b, ++ 0x04, 0xfe, 0x34, 0x1d, 0x2f, 0x84, 0xf5, 0xb6, 0x76, 0xc7, 0x3f, 0x0c, ++ 0x10, 0x57, 0xfc, 0x78, 0xaf, 0x44, 0xd2, 0xb2, 0xc2, 0xdf, 0x2f, 0xdf, ++ 0xf2, 0x0a, 0xae, 0x7b, 0x40, 0x27, 0xe4, 0x27, 0xe7, 0x57, 0x37, 0xff, ++ 0xc2, 0xf8, 0x16, 0x98, 0xf6, 0xf2, 0x68, 0xec, 0x67, 0x07, 0x7b, 0xd8, ++ 0x13, 0xdf, 0xb2, 0x61, 0x3f, 0x97, 0x82, 0xf2, 0xfd, 0xdc, 0xcb, 0x70, ++ 0x8f, 0xe9, 0x7d, 0xa3, 0x13, 0xe8, 0x50, 0xfe, 0xdc, 0x0a, 0x1b, 0xcc, ++ 0xe7, 0xb4, 0x5c, 0xc3, 0xe4, 0xfc, 0xd7, 0xf7, 0xa6, 0x82, 0xbe, 0x97, ++ 0x2b, 0xbe, 0x54, 0x3b, 0x96, 0xec, 0x79, 0xf9, 0x93, 0x3f, 0x47, 0xf9, ++ 0x5b, 0x72, 0xf4, 0xe7, 0xa9, 0xe8, 0x3f, 0x10, 0x57, 0x86, 0x0e, 0x6d, ++ 0xb3, 0x2f, 0x03, 0xe6, 0xb9, 0x78, 0xf3, 0xad, 0x38, 0xcf, 0x32, 0xe2, ++ 0x46, 0x39, 0x2c, 0xff, 0xb5, 0xbe, 0x04, 0xee, 0x99, 0x5e, 0x90, 0x49, ++ 0xd1, 0xae, 0x08, 0x7a, 0xf2, 0x17, 0x03, 0xdb, 0xbf, 0x9c, 0xde, 0x4a, ++ 0x99, 0x4b, 0xe7, 0x79, 0x1a, 0xf0, 0x03, 0xfb, 0xf6, 0xa6, 0xde, 0xbf, ++ 0x1d, 0xe3, 0xe6, 0x3f, 0xc3, 0x7b, 0x70, 0x3f, 0xe7, 0x73, 0xa6, 0x2b, ++ 0x21, 0xd6, 0x2f, 0x98, 0x18, 0xbf, 0xb6, 0x18, 0x74, 0x6a, 0x3c, 0xd4, ++ 0x24, 0xc8, 0xef, 0xb6, 0xf5, 0xad, 0xc0, 0xa7, 0xb3, 0xfd, 0x5c, 0x69, ++ 0x70, 0xee, 0x41, 0xe9, 0xe0, 0xe3, 0x74, 0x93, 0x2e, 0x51, 0xb8, 0xfa, ++ 0xa3, 0x05, 0x69, 0x8c, 0x4f, 0xc4, 0x21, 0xe7, 0xf0, 0xf7, 0xa8, 0xbd, ++ 0x9f, 0x04, 0xcf, 0xa1, 0x7f, 0xab, 0xe2, 0x32, 0x0f, 0x17, 0xde, 0xe3, ++ 0xf6, 0x91, 0x8d, 0xbf, 0x92, 0x8f, 0x4f, 0xf1, 0x8e, 0x83, 0xf5, 0xeb, ++ 0x74, 0x6a, 0x64, 0xff, 0xef, 0x1f, 0x7c, 0x7e, 0xf4, 0xa7, 0x95, 0x84, ++ 0xc8, 0x59, 0x88, 0xbe, 0x33, 0xfd, 0xdf, 0x76, 0x1f, 0xd3, 0x77, 0x55, ++ 0xff, 0xfd, 0xd3, 0x8b, 0xa0, 0xfd, 0xf3, 0xb7, 0x98, 0x1e, 0xc1, 0x7b, ++ 0xb0, 0x5e, 0x50, 0xbc, 0x02, 0x69, 0xd8, 0xbe, 0x6f, 0xa6, 0x84, 0xf6, ++ 0x81, 0xee, 0xb3, 0x23, 0xe9, 0xf9, 0x36, 0x85, 0xeb, 0xb9, 0xd8, 0x4e, ++ 0x77, 0x38, 0xb8, 0xfe, 0xab, 0x72, 0x42, 0xf1, 0x97, 0xa5, 0x84, 0x50, ++ 0x79, 0xa1, 0xe3, 0x24, 0x21, 0x1f, 0x70, 0x7f, 0x5c, 0xb6, 0x91, 0xbe, ++ 0x1f, 0xe2, 0x97, 0x79, 0x60, 0x5c, 0xec, 0x67, 0x08, 0x3e, 0x0f, 0x59, ++ 0x37, 0x96, 0x70, 0xbb, 0x70, 0x48, 0x63, 0x0f, 0xc8, 0xe6, 0x94, 0x98, ++ 0xfc, 0xe8, 0x4a, 0xc5, 0xff, 0xf4, 0x13, 0xa0, 0xbf, 0xef, 0x19, 0x9d, ++ 0x3e, 0x07, 0xe8, 0xaf, 0x52, 0x02, 0xf3, 0xff, 0x64, 0xe7, 0x81, 0x77, ++ 0xe6, 0x50, 0x39, 0xff, 0xa4, 0x49, 0xd5, 0x5b, 0xd1, 0xae, 0x6a, 0xf5, ++ 0xb6, 0xfc, 0xf9, 0x31, 0x24, 0x92, 0xde, 0x7e, 0x62, 0xa1, 0xfb, 0xae, ++ 0x48, 0x7a, 0x4b, 0x9f, 0x47, 0xd4, 0x5b, 0x4b, 0x1b, 0xca, 0xf3, 0xff, ++ 0x2d, 0xbb, 0xaa, 0xd2, 0xaf, 0x5d, 0x43, 0x3f, 0xb0, 0x8f, 0x2f, 0x3b, ++ 0xa2, 0xd3, 0x51, 0x6b, 0x1f, 0x37, 0x18, 0x1c, 0x11, 0xed, 0x23, 0xfd, ++ 0x79, 0x8b, 0xe4, 0x84, 0xcb, 0xa1, 0x2a, 0x7f, 0xaa, 0xdc, 0x55, 0xfc, ++ 0xb6, 0xaa, 0x3f, 0xd8, 0xa1, 0x6e, 0xf9, 0x54, 0xe5, 0xaf, 0x5b, 0x3e, ++ 0x55, 0xf9, 0xd3, 0xce, 0x57, 0xa4, 0x9f, 0xb6, 0xfd, 0x0f, 0xa0, 0xdf, ++ 0x14, 0xaf, 0xdb, 0x4d, 0x9b, 0xa6, 0x81, 0xff, 0x6c, 0xea, 0x24, 0x18, ++ 0x87, 0xcf, 0x9d, 0xa9, 0xc7, 0x7b, 0x9a, 0xa6, 0xcf, 0x09, 0xbb, 0xa7, ++ 0x71, 0x47, 0x3c, 0xd6, 0x67, 0xe9, 0xdb, 0x7e, 0x0f, 0x3e, 0xe1, 0x07, ++ 0x55, 0xb3, 0x86, 0xc1, 0x3a, 0x7f, 0x3b, 0xf1, 0x29, 0xec, 0xdc, 0xbe, ++ 0x5e, 0x41, 0x3f, 0xf6, 0xeb, 0x4b, 0x97, 0x26, 0xd0, 0xf9, 0xcc, 0xe1, ++ 0xf4, 0xbd, 0x9d, 0x92, 0x7b, 0x2a, 0xe5, 0x47, 0xa9, 0x2c, 0x05, 0xe2, ++ 0x28, 0x9e, 0xb3, 0x65, 0xe2, 0x4b, 0x48, 0x82, 0x78, 0xb2, 0x44, 0x4e, ++ 0x84, 0xe0, 0x71, 0x7b, 0xb9, 0x58, 0x87, 0x9f, 0x89, 0xa9, 0x41, 0x38, ++ 0x3d, 0xf5, 0xff, 0xb6, 0x7e, 0xf7, 0x77, 0x2d, 0x8f, 0x52, 0xbe, 0x9e, ++ 0xc8, 0x26, 0xe4, 0x6f, 0x50, 0xe2, 0xfe, 0x83, 0x3a, 0xd6, 0x21, 0xf2, ++ 0x34, 0xbd, 0x85, 0x9d, 0x63, 0x78, 0x46, 0x4b, 0xfe, 0x01, 0xa8, 0x87, ++ 0x6d, 0x72, 0x49, 0xc8, 0x3e, 0xc2, 0x63, 0x64, 0xf6, 0xe7, 0x68, 0xfe, ++ 0x2d, 0x63, 0x80, 0x7e, 0xb9, 0xb3, 0x86, 0x25, 0x30, 0x39, 0x1f, 0x8c, ++ 0xfb, 0x45, 0x0f, 0xb7, 0x63, 0x5d, 0x3e, 0x47, 0x02, 0xd8, 0xf7, 0xae, ++ 0x96, 0x81, 0xb8, 0x2f, 0xec, 0x3a, 0xbc, 0xd0, 0xea, 0x8e, 0x60, 0xcf, ++ 0x0e, 0x70, 0x39, 0x7b, 0x85, 0x9f, 0xc3, 0x74, 0x58, 0xa4, 0x7a, 0x3d, ++ 0x95, 0xfb, 0x0e, 0xd2, 0x89, 0x7e, 0x8d, 0xcf, 0x62, 0x8e, 0x18, 0x97, ++ 0x9b, 0x63, 0x54, 0xed, 0x34, 0xe7, 0x1b, 0xfd, 0xd1, 0xd3, 0xf1, 0x4b, ++ 0xb9, 0x1c, 0xce, 0xa6, 0xaf, 0x26, 0x8c, 0x0c, 0xe1, 0xdb, 0xcc, 0xa9, ++ 0x1f, 0xcb, 0xb6, 0x70, 0x3e, 0xc0, 0xcf, 0x89, 0x90, 0x7d, 0xc5, 0xf7, ++ 0xa5, 0x2f, 0xc8, 0x35, 0xd0, 0xf7, 0x80, 0xb9, 0xad, 0xb0, 0x24, 0x42, ++ 0xfc, 0xa6, 0x92, 0xd3, 0x6f, 0xe2, 0xfe, 0x2f, 0x0d, 0xb0, 0xee, 0xe5, ++ 0xb7, 0xe4, 0xca, 0x40, 0xc7, 0x7c, 0x8b, 0x5e, 0x88, 0x87, 0x2c, 0x32, ++ 0x72, 0x7d, 0x1d, 0x4a, 0x86, 0x02, 0x5e, 0x13, 0xf7, 0x2f, 0x7d, 0x60, ++ 0x0c, 0x95, 0x63, 0xcf, 0x61, 0xbd, 0xd3, 0x4c, 0xe7, 0xe7, 0x69, 0xf9, ++ 0xd4, 0xe0, 0x8e, 0xb0, 0xbf, 0xd3, 0xd2, 0x13, 0xe0, 0x83, 0x7f, 0xb9, ++ 0xd5, 0xc8, 0xfc, 0xe5, 0xb7, 0x95, 0x92, 0xc5, 0x40, 0xd7, 0xb7, 0x6f, ++ 0x65, 0xe7, 0xbd, 0x7f, 0x33, 0x38, 0xab, 0x22, 0xe1, 0x99, 0x6e, 0x66, ++ 0xfe, 0xe6, 0x6c, 0x52, 0x72, 0x61, 0xb4, 0xf4, 0xd3, 0xa3, 0x6f, 0xee, ++ 0x2c, 0x6b, 0x20, 0x8f, 0xd2, 0xa3, 0xcb, 0xc2, 0xee, 0x6b, 0x87, 0xcb, ++ 0x1f, 0xd3, 0xfb, 0x2e, 0xbb, 0xe4, 0x5f, 0x2d, 0x81, 0x1c, 0xea, 0x59, ++ 0x3d, 0x99, 0xdd, 0x6f, 0x2e, 0x24, 0xee, 0x07, 0x26, 0x48, 0xa8, 0xef, ++ 0x37, 0x84, 0xda, 0xaf, 0xdc, 0xe6, 0xe9, 0xcf, 0xc2, 0x7d, 0x9a, 0xea, ++ 0x16, 0xc9, 0xae, 0xa3, 0xed, 0xd5, 0x72, 0x9b, 0x01, 0xe4, 0xd8, 0xd3, ++ 0xbc, 0x4b, 0x06, 0xbf, 0xfd, 0x26, 0x07, 0x71, 0xe1, 0xfe, 0x5a, 0xae, ++ 0x19, 0x36, 0x33, 0x24, 0xfe, 0x45, 0x97, 0x3d, 0xa4, 0xd7, 0x81, 0xaf, ++ 0xe6, 0xcc, 0x05, 0xfa, 0x7e, 0x36, 0xd3, 0x48, 0x00, 0x2f, 0xd7, 0xd0, ++ 0x4f, 0x6d, 0xb0, 0xfe, 0x7f, 0xd6, 0x32, 0x0a, 0xf5, 0x20, 0xda, 0xbc, ++ 0x5e, 0xf7, 0x92, 0x69, 0xf9, 0x0a, 0xc0, 0x61, 0xf6, 0x4c, 0x2b, 0x0f, ++ 0x85, 0xc9, 0xf1, 0x42, 0xfd, 0xd6, 0x49, 0xa4, 0x2f, 0x9c, 0x03, 0x4f, ++ 0x34, 0xb6, 0xad, 0x70, 0x46, 0xe0, 0x5f, 0xbe, 0x89, 0xc9, 0x59, 0xcc, ++ 0xf6, 0xcd, 0xf4, 0xff, 0x99, 0x7d, 0x9b, 0x40, 0xed, 0x1b, 0x93, 0x6b, ++ 0x25, 0xd4, 0xbe, 0x59, 0x4c, 0x61, 0xf6, 0x2d, 0x2d, 0x92, 0x7d, 0x5b, ++ 0xbe, 0xda, 0x91, 0x06, 0x72, 0xb1, 0x7c, 0xcf, 0x40, 0xfc, 0x7e, 0x6b, ++ 0xf9, 0x6b, 0x8b, 0x53, 0x22, 0xd9, 0xb7, 0x57, 0xf9, 0xbe, 0xf7, 0x35, ++ 0x7e, 0x0f, 0xbc, 0xa3, 0x2f, 0xb5, 0x6f, 0x23, 0x42, 0xec, 0x5b, 0x5f, ++ 0x6a, 0xdf, 0x22, 0xc4, 0xc9, 0xbf, 0x88, 0xd5, 0xbe, 0x99, 0xfe, 0x67, ++ 0xf4, 0xef, 0x55, 0xb0, 0x6f, 0x11, 0xe6, 0x6b, 0x36, 0x89, 0xf6, 0xad, ++ 0xa8, 0x65, 0x35, 0xda, 0xb7, 0xa2, 0xbe, 0x7a, 0xe1, 0xbe, 0x12, 0x31, ++ 0x51, 0xfb, 0x16, 0x7f, 0x39, 0xfb, 0x36, 0xff, 0xd1, 0x5b, 0xb1, 0xae, ++ 0x38, 0xe3, 0x23, 0xc8, 0x0f, 0xd0, 0x15, 0xec, 0xdb, 0x6b, 0xdc, 0xce, ++ 0xc1, 0x38, 0x60, 0xe7, 0x6e, 0x30, 0xb1, 0xf8, 0x66, 0xac, 0x76, 0xae, ++ 0x5f, 0xac, 0x76, 0xee, 0x7f, 0x88, 0xce, 0xaa, 0x9d, 0x5b, 0xde, 0x4f, ++ 0x42, 0xff, 0x25, 0x5c, 0x0e, 0x99, 0x9d, 0x5b, 0x9e, 0xc5, 0xec, 0xdc, ++ 0xf2, 0x3d, 0xcc, 0xce, 0x2d, 0xcf, 0x66, 0x76, 0x4e, 0x6b, 0xdf, 0xf2, ++ 0xc2, 0xec, 0x1b, 0x7b, 0xbf, 0x7a, 0x08, 0x7d, 0x1f, 0xf7, 0x8f, 0x59, ++ 0x8f, 0xdf, 0x01, 0xf7, 0x09, 0x4b, 0x15, 0xa7, 0x89, 0xf6, 0x2f, 0x76, ++ 0xa8, 0xdf, 0x4f, 0xd4, 0x8c, 0x09, 0xb5, 0x77, 0x37, 0x98, 0x64, 0xa4, ++ 0x73, 0x98, 0xbd, 0x73, 0x7e, 0x8a, 0xdf, 0xc1, 0xf4, 0x64, 0xef, 0xfe, ++ 0x0a, 0xf6, 0x2e, 0x1b, 0xed, 0xd8, 0x20, 0xd0, 0x23, 0xad, 0x7c, 0x4c, ++ 0x19, 0x14, 0x2f, 0xdc, 0x67, 0x7b, 0xfb, 0xcb, 0x53, 0xbf, 0xfd, 0x1d, ++ 0xe8, 0xcb, 0xeb, 0x7a, 0xbc, 0x2f, 0xf4, 0xae, 0x8e, 0xed, 0x8f, 0xf6, ++ 0x7e, 0x79, 0x6a, 0x14, 0xe8, 0xdd, 0x43, 0x26, 0x66, 0x7f, 0x97, 0x98, ++ 0x18, 0x3f, 0xdb, 0xbd, 0x3e, 0xb4, 0xa7, 0x93, 0x86, 0x32, 0x7d, 0xaf, ++ 0xba, 0x87, 0xd1, 0xaf, 0x7a, 0xb7, 0xc4, 0xe6, 0xbb, 0x52, 0xef, 0x77, ++ 0xc0, 0x3a, 0xf0, 0xd5, 0x45, 0xdc, 0x3f, 0xcf, 0xdd, 0xc3, 0xf6, 0xcf, ++ 0xb3, 0x8c, 0xad, 0x29, 0xf1, 0x70, 0x2f, 0xe9, 0x5f, 0x14, 0xc2, 0xbe, ++ 0xfb, 0x20, 0xc5, 0xf3, 0x43, 0xe4, 0xa1, 0xf4, 0x62, 0x05, 0xc6, 0x01, ++ 0x9f, 0x8f, 0xb3, 0x6d, 0x85, 0xfd, 0x65, 0xa9, 0x4c, 0x4c, 0xe0, 0xc7, ++ 0xce, 0x3b, 0x3c, 0xe5, 0x63, 0xf0, 0x5f, 0xe7, 0x5d, 0xac, 0x43, 0xbf, ++ 0x77, 0x1e, 0x3c, 0x87, 0x73, 0x12, 0x7e, 0x4f, 0x42, 0xbd, 0x47, 0x31, ++ 0xa7, 0x79, 0xd7, 0x2b, 0x7d, 0x48, 0xf8, 0xfd, 0x88, 0x89, 0x46, 0xc6, ++ 0x87, 0x89, 0x2b, 0x24, 0xff, 0x96, 0x2c, 0xb8, 0x8f, 0x20, 0xb6, 0xcf, ++ 0xd3, 0xf8, 0xf5, 0xeb, 0xf8, 0x3c, 0xa9, 0x3f, 0x8b, 0x74, 0x21, 0x7f, ++ 0xd5, 0x47, 0x8c, 0xdf, 0xad, 0xd3, 0xd2, 0xc3, 0xc9, 0xe6, 0x5f, 0xb5, ++ 0x52, 0x2f, 0xd2, 0xa3, 0x46, 0x8a, 0x48, 0x0f, 0xca, 0xd1, 0xe2, 0xf9, ++ 0xa9, 0xc1, 0xf9, 0xcf, 0x7d, 0xa1, 0x6d, 0x5d, 0x1f, 0x68, 0x5f, 0x2a, ++ 0xe1, 0x7e, 0x4a, 0xa5, 0x87, 0x76, 0x9e, 0x2a, 0x7d, 0xd4, 0xfd, 0xca, ++ 0x3c, 0xae, 0x23, 0x9e, 0x96, 0x5d, 0x0a, 0xf0, 0x4b, 0x3b, 0x7f, 0x95, ++ 0x7e, 0x61, 0xf3, 0x56, 0xe9, 0xa9, 0x99, 0x7f, 0x9d, 0x6a, 0x3f, 0xae, ++ 0x26, 0xc3, 0x40, 0xdf, 0xde, 0xd5, 0xb9, 0x1f, 0x18, 0x03, 0xf2, 0xf1, ++ 0x67, 0x4a, 0x07, 0x8a, 0xd7, 0x6d, 0xb3, 0xb3, 0xd3, 0x42, 0xed, 0xf1, ++ 0x83, 0xdc, 0x2e, 0x4d, 0x75, 0x1f, 0xcf, 0x4f, 0x75, 0x00, 0xdd, 0xd8, ++ 0x77, 0x89, 0x73, 0xca, 0x77, 0xbd, 0x92, 0x4a, 0xe7, 0x73, 0xb3, 0x2b, ++ 0x6b, 0x24, 0x7c, 0x3f, 0x7c, 0xeb, 0x57, 0x06, 0x37, 0xc4, 0x17, 0x0e, ++ 0x98, 0x3b, 0xd1, 0xbe, 0xa9, 0xf2, 0xf5, 0x09, 0x97, 0xf7, 0x00, 0x87, ++ 0xf3, 0x76, 0x6f, 0x7b, 0x3e, 0xae, 0x23, 0xcd, 0x92, 0x1d, 0xf5, 0x26, ++ 0xa0, 0xb1, 0x5f, 0xfc, 0xfe, 0x98, 0xe7, 0x1e, 0xa6, 0x57, 0x07, 0xa4, ++ 0x7f, 0xac, 0xeb, 0x33, 0x1a, 0xe9, 0x0a, 0xcb, 0x00, 0x29, 0x54, 0xd7, ++ 0x21, 0xe0, 0x03, 0xfd, 0xef, 0xd4, 0x16, 0xc6, 0x07, 0x0f, 0xf0, 0x81, ++ 0xfe, 0x77, 0x1a, 0xe9, 0x3c, 0x04, 0x74, 0xae, 0x4e, 0x96, 0x9c, 0x01, ++ 0xe8, 0xdf, 0xbc, 0xeb, 0x5e, 0x90, 0x9b, 0x57, 0xcd, 0xf4, 0x39, 0xe8, ++ 0x6f, 0xb9, 0xe4, 0x64, 0xdf, 0x97, 0x11, 0x4b, 0x46, 0xea, 0x65, 0xe5, ++ 0x53, 0x8e, 0x24, 0x9f, 0x18, 0x9c, 0xc8, 0x09, 0xae, 0x8b, 0xf3, 0xa0, ++ 0x5f, 0x52, 0xb8, 0xdf, 0x31, 0xd1, 0xd8, 0xfa, 0x36, 0xe0, 0x31, 0x91, ++ 0xea, 0xc3, 0x16, 0x12, 0xee, 0x87, 0xa8, 0x7c, 0x1f, 0x42, 0xff, 0x5c, ++ 0x8a, 0x74, 0xef, 0xa7, 0x07, 0x39, 0xfe, 0x98, 0xcb, 0xe7, 0xab, 0x40, ++ 0x6f, 0x0b, 0xd0, 0xb5, 0xd3, 0x00, 0xfe, 0x8c, 0x27, 0xc0, 0xd6, 0x0f, ++ 0xb5, 0xdd, 0x23, 0x3b, 0xf2, 0x91, 0x3e, 0x2a, 0xbd, 0x9b, 0xe9, 0xfa, ++ 0x30, 0x9a, 0xd1, 0x5b, 0x17, 0x81, 0x9e, 0x37, 0xab, 0x75, 0x4e, 0x4f, ++ 0x4f, 0x8b, 0xa4, 0xc0, 0xfb, 0x93, 0xe9, 0xfe, 0xb5, 0x97, 0x04, 0xa7, ++ 0x5b, 0x5f, 0x1e, 0x52, 0xe5, 0x18, 0xbe, 0x87, 0xd3, 0xd2, 0x03, 0xe2, ++ 0x01, 0x19, 0x21, 0x7a, 0x0f, 0xf6, 0x29, 0xf4, 0x7c, 0xb2, 0xba, 0xf9, ++ 0x28, 0xd2, 0x65, 0xca, 0x4a, 0xea, 0x5e, 0x85, 0xd0, 0x1d, 0xec, 0xd6, ++ 0xe5, 0xe8, 0x13, 0x4d, 0x2f, 0xaa, 0x9b, 0x7f, 0x18, 0xbd, 0xf8, 0x44, ++ 0xa3, 0x17, 0x7b, 0xcd, 0x9d, 0x7f, 0x19, 0x01, 0xf1, 0xaf, 0x3d, 0x12, ++ 0xda, 0x07, 0xd2, 0x92, 0x28, 0xec, 0xf7, 0xe3, 0xcd, 0xcc, 0xcf, 0x38, ++ 0x60, 0x76, 0xa3, 0xfc, 0x76, 0xbe, 0xa6, 0xe0, 0xfd, 0x73, 0xad, 0x1d, ++ 0xf9, 0x9a, 0xcb, 0x3d, 0xec, 0x2f, 0x42, 0xbf, 0xfb, 0x9b, 0x04, 0x13, ++ 0x01, 0x3b, 0x67, 0x37, 0x93, 0x8f, 0x54, 0x3c, 0x06, 0x30, 0x39, 0x0a, ++ 0xb5, 0xdf, 0xaf, 0x9a, 0xdd, 0xc8, 0xaf, 0x68, 0xf0, 0xe3, 0xf8, 0x3a, ++ 0x1c, 0xcd, 0x7f, 0x52, 0xeb, 0x37, 0xc2, 0x78, 0x70, 0x1f, 0xd1, 0x21, ++ 0x8e, 0x17, 0xe6, 0x5f, 0xf0, 0xf8, 0x4f, 0x4f, 0xf3, 0x4a, 0xe3, 0xe3, ++ 0x7e, 0xd7, 0x79, 0x75, 0x9f, 0x67, 0x92, 0x56, 0x03, 0x61, 0xf1, 0xff, ++ 0x15, 0xc6, 0x90, 0x73, 0xa9, 0xdb, 0xf8, 0xb9, 0x40, 0x77, 0x9c, 0x2c, ++ 0xd8, 0xcf, 0x6e, 0xba, 0x4c, 0x3f, 0x88, 0xbf, 0x04, 0xe8, 0xbc, 0x5f, ++ 0xdd, 0xf9, 0x14, 0xc6, 0x7f, 0xcf, 0x3f, 0x73, 0x7c, 0x1a, 0xc8, 0xef, ++ 0xb2, 0x3f, 0xea, 0x89, 0x89, 0xf2, 0xb9, 0x7d, 0xa7, 0x95, 0x04, 0xd8, ++ 0xbd, 0x0b, 0x03, 0xac, 0xb3, 0x15, 0xbb, 0xf5, 0x11, 0xcf, 0x51, 0x08, ++ 0xa9, 0x65, 0xdf, 0x39, 0xfe, 0xce, 0x8a, 0xf6, 0xa5, 0xe2, 0x79, 0xa3, ++ 0xbf, 0x98, 0xbe, 0x5f, 0xf1, 0xe2, 0x47, 0xc3, 0x21, 0x6e, 0xd5, 0xbe, ++ 0x86, 0xd9, 0x19, 0xdf, 0x33, 0x5c, 0x3e, 0x7c, 0x6d, 0xc3, 0xe1, 0x7c, ++ 0xbd, 0x42, 0x66, 0xe7, 0xc2, 0x5a, 0x78, 0xd7, 0x71, 0x79, 0x39, 0xf7, ++ 0x52, 0x7c, 0x29, 0xd8, 0x49, 0xa9, 0x91, 0x7d, 0xbf, 0x5a, 0xd1, 0x34, ++ 0x4b, 0x31, 0x86, 0xec, 0xd3, 0x47, 0x9a, 0x15, 0x1c, 0x97, 0xf6, 0xc3, ++ 0x7b, 0xcb, 0xbe, 0x1d, 0x12, 0xc6, 0xcb, 0xc3, 0xf1, 0x5b, 0xcd, 0xe0, ++ 0xed, 0x60, 0xf6, 0xaf, 0xa2, 0x59, 0xf1, 0xc3, 0x77, 0xb0, 0x15, 0x8d, ++ 0x5b, 0x70, 0x7f, 0xeb, 0x69, 0xfc, 0xd4, 0x00, 0x7e, 0xdd, 0xa4, 0xdf, ++ 0x3d, 0xcb, 0xbe, 0xaf, 0x6d, 0xd6, 0x8b, 0xf1, 0xc3, 0x46, 0x7d, 0xc0, ++ 0x88, 0x71, 0x4e, 0xfd, 0x71, 0xe3, 0x70, 0xa6, 0xb7, 0x92, 0x10, 0x8f, ++ 0xaa, 0x42, 0xbd, 0xac, 0x6e, 0xe2, 0x71, 0x32, 0x4d, 0xfc, 0x68, 0xd9, ++ 0xef, 0xf6, 0xbc, 0xe8, 0xa3, 0xa4, 0x59, 0xf6, 0xfb, 0xdf, 0xd8, 0xc0, ++ 0xde, 0x9c, 0x6d, 0xdd, 0x6e, 0xc3, 0xf8, 0x5c, 0x23, 0x8b, 0xbf, 0xc9, ++ 0x16, 0x39, 0x72, 0x7c, 0xae, 0xa7, 0xb8, 0x5c, 0xd3, 0x7d, 0x3c, 0x2e, ++ 0x37, 0xf5, 0x34, 0x19, 0x1e, 0x1e, 0x97, 0x3b, 0x0b, 0xff, 0xa1, 0x7a, ++ 0x38, 0xdf, 0xcc, 0xf5, 0x55, 0x8d, 0x6b, 0x36, 0xf6, 0x8a, 0xe9, 0xfc, ++ 0x7c, 0xd9, 0xb3, 0x17, 0x9e, 0x84, 0xf3, 0xa4, 0x73, 0xcf, 0x7f, 0xf2, ++ 0x24, 0xe0, 0x5f, 0xf9, 0xcd, 0x67, 0x4f, 0xde, 0x0d, 0xe7, 0x12, 0x7b, ++ 0xcd, 0x76, 0x58, 0xff, 0x3c, 0xcf, 0xbc, 0x8d, 0xf1, 0x77, 0xf5, 0xbd, ++ 0xbb, 0xb9, 0x9c, 0xb7, 0xef, 0xf8, 0xcd, 0xd3, 0x4f, 0x50, 0x3d, 0x6c, ++ 0x7f, 0xcf, 0x88, 0xf7, 0xb6, 0xda, 0xf7, 0x9c, 0xce, 0x84, 0xef, 0x19, ++ 0xdb, 0x77, 0x7d, 0x99, 0x0a, 0xf1, 0xcd, 0x95, 0x7b, 0x0a, 0x70, 0x3f, ++ 0xb3, 0xf2, 0x85, 0x49, 0x69, 0x97, 0xbb, 0x7f, 0x02, 0xf2, 0xe9, 0x8f, ++ 0xe1, 0xfc, 0x44, 0xcb, 0x8f, 0x03, 0xbb, 0xf5, 0x04, 0xbe, 0xe7, 0x3c, ++ 0x7f, 0xcc, 0x88, 0xfe, 0x47, 0x77, 0x9c, 0xb5, 0xa9, 0x8a, 0xc5, 0xaf, ++ 0x1d, 0x3c, 0xbe, 0xba, 0x33, 0xf2, 0x79, 0x95, 0x1a, 0x0f, 0xac, 0xde, ++ 0x7d, 0xcb, 0xcd, 0xd7, 0xc3, 0x3a, 0xb8, 0x5b, 0x71, 0x3a, 0xf0, 0x39, ++ 0x8f, 0x0f, 0xf6, 0x14, 0x57, 0x7d, 0x8b, 0xf2, 0x75, 0x44, 0x0c, 0xfc, ++ 0xdb, 0xc9, 0xe3, 0xe7, 0x4d, 0x53, 0x23, 0xc6, 0x55, 0xcf, 0xc3, 0x7f, ++ 0x28, 0x9f, 0x36, 0x99, 0xc5, 0xb8, 0xea, 0x85, 0xdd, 0x8b, 0xff, 0xed, ++ 0x09, 0x68, 0xdb, 0xdd, 0x2b, 0x6a, 0x5c, 0x35, 0x10, 0x03, 0xdd, 0xd4, ++ 0xf3, 0xb0, 0x32, 0xb3, 0x6b, 0x9b, 0x19, 0xf4, 0xe3, 0xf9, 0xdf, 0x62, ++ 0x1c, 0x1b, 0xf8, 0x46, 0x7d, 0x72, 0xd2, 0xfe, 0xec, 0x85, 0x4c, 0x88, ++ 0x47, 0x9c, 0x51, 0x3a, 0xef, 0xc4, 0x7b, 0xca, 0x7b, 0x8c, 0x78, 0xcf, ++ 0xa8, 0x62, 0xcf, 0xbb, 0xa8, 0x2f, 0xed, 0x2f, 0x1c, 0xc5, 0x73, 0x26, ++ 0xc2, 0xcf, 0xa3, 0xda, 0x49, 0xf7, 0x0f, 0x3b, 0x37, 0xe0, 0x7b, 0x1d, ++ 0xcf, 0x36, 0x2b, 0x8b, 0xc7, 0x72, 0xfa, 0x43, 0xbc, 0xd6, 0x61, 0xc3, ++ 0xe7, 0x3c, 0x2e, 0xcb, 0xe4, 0x58, 0x8d, 0xd7, 0x46, 0x8b, 0xd3, 0xbe, ++ 0x6f, 0x66, 0xf7, 0xa1, 0xd4, 0xf3, 0xb9, 0xaa, 0x6d, 0x1f, 0x18, 0x88, ++ 0x26, 0xfe, 0x2d, 0x8d, 0x05, 0x7e, 0x1d, 0x17, 0xce, 0x15, 0xd5, 0x79, ++ 0x6b, 0xe1, 0xd9, 0x81, 0x0e, 0xd7, 0x86, 0x9e, 0x3f, 0x44, 0x8b, 0x87, ++ 0x73, 0xbb, 0x1a, 0xc6, 0x2f, 0x76, 0xee, 0xd0, 0xbe, 0x85, 0x9f, 0x47, ++ 0x74, 0x9f, 0x33, 0x10, 0xd2, 0x77, 0x24, 0x9c, 0x8f, 0xb3, 0x73, 0x73, ++ 0x8f, 0x5f, 0x7a, 0x37, 0x12, 0x7f, 0xd5, 0xf3, 0x87, 0xb7, 0xb5, 0xfa, ++ 0xe9, 0x8f, 0xed, 0xdc, 0xa1, 0x67, 0xbc, 0xbf, 0x1b, 0x5d, 0x5e, 0x35, ++ 0xb3, 0xfd, 0xad, 0x4a, 0x9f, 0x73, 0x5f, 0x47, 0xb6, 0xd3, 0x9d, 0x5c, ++ 0xdf, 0xe9, 0x3a, 0xd3, 0x61, 0xc6, 0x73, 0x63, 0xb6, 0xce, 0xcc, 0xe3, ++ 0xeb, 0x4c, 0x35, 0xa5, 0x1b, 0xfb, 0xee, 0x8d, 0xe1, 0x7b, 0x8e, 0xef, ++ 0x03, 0xcf, 0x3d, 0xa3, 0xf7, 0xc3, 0x7e, 0x79, 0x5d, 0xd3, 0x01, 0xb4, ++ 0xb7, 0x5a, 0x3d, 0xaf, 0x26, 0x2c, 0xfe, 0xa5, 0x1d, 0x4f, 0x8a, 0x63, ++ 0xfe, 0x41, 0x75, 0xf3, 0xbe, 0xe1, 0x60, 0x8f, 0xce, 0xed, 0x7f, 0x09, ++ 0xe5, 0xaf, 0x7a, 0xe7, 0x71, 0x83, 0x8f, 0xc2, 0x39, 0xd4, 0xf8, 0x7b, ++ 0x43, 0xdb, 0xd0, 0xa0, 0xbc, 0x83, 0x1d, 0xf7, 0x87, 0xd8, 0xf1, 0x73, ++ 0xcf, 0xed, 0x1b, 0xce, 0xce, 0x45, 0x22, 0xe7, 0x69, 0xb1, 0x71, 0xf8, ++ 0x9e, 0x16, 0x11, 0xbe, 0x67, 0xe7, 0xa7, 0x02, 0xfc, 0x65, 0xbe, 0x26, ++ 0x83, 0xdd, 0xd2, 0xf3, 0x38, 0x67, 0x65, 0xd7, 0x2c, 0x98, 0xef, 0xd9, ++ 0x56, 0x85, 0xc0, 0x7d, 0xf6, 0xb3, 0x4d, 0xfa, 0x22, 0x7f, 0x84, 0x71, ++ 0x3f, 0x83, 0x75, 0x6c, 0x4c, 0x90, 0x4e, 0xeb, 0xac, 0xec, 0x3b, 0x3e, ++ 0x7d, 0x92, 0x01, 0xfd, 0xcc, 0x95, 0xd6, 0xb1, 0xc7, 0xe0, 0xfb, 0xf1, ++ 0x95, 0x56, 0x83, 0x03, 0xf6, 0xdb, 0xb5, 0xab, 0xd9, 0xbd, 0xca, 0xda, ++ 0xff, 0xe5, 0x4c, 0x07, 0xbe, 0xd4, 0x26, 0xde, 0x86, 0xe7, 0x46, 0xf5, ++ 0x1a, 0x3a, 0xda, 0x93, 0xed, 0xb9, 0xb0, 0x0f, 0xb7, 0xe7, 0x97, 0x8c, ++ 0x06, 0xb1, 0xd2, 0xda, 0x83, 0x44, 0x97, 0x4e, 0xc0, 0x7b, 0xa5, 0xb5, ++ 0x28, 0xcd, 0x61, 0x81, 0xbc, 0x5e, 0xcc, 0x4f, 0x21, 0xb2, 0x13, 0xbf, ++ 0x33, 0xd4, 0xdb, 0x0a, 0x8b, 0x60, 0x1e, 0x7a, 0xbb, 0xce, 0x6e, 0x8e, ++ 0xb8, 0xbe, 0x32, 0x78, 0x8a, 0x85, 0xe5, 0xcd, 0x50, 0xec, 0xe2, 0x77, ++ 0x7f, 0xdf, 0x21, 0x0f, 0x06, 0x81, 0x7c, 0x1c, 0xdf, 0x3a, 0x0f, 0x46, ++ 0xa7, 0x26, 0x0f, 0x46, 0xf9, 0x8d, 0xff, 0xaf, 0xe5, 0xc1, 0xf0, 0xc1, ++ 0x38, 0x3f, 0x81, 0x3c, 0x18, 0x01, 0x8c, 0xef, 0xa8, 0x79, 0x30, 0x92, ++ 0x7f, 0xe4, 0x3c, 0x18, 0x10, 0x5f, 0x1a, 0x1d, 0x92, 0x07, 0xa3, 0x53, ++ 0x93, 0x07, 0x83, 0xf3, 0xf1, 0x9f, 0x79, 0x30, 0xfe, 0x99, 0x07, 0x03, ++ 0x4a, 0x35, 0x0f, 0xc6, 0x3b, 0x1b, 0xca, 0x0a, 0x20, 0x4f, 0x85, 0x9a, ++ 0x07, 0xe3, 0xcc, 0x06, 0x4f, 0x01, 0xe4, 0xa5, 0x50, 0xf3, 0x60, 0x7c, ++ 0xb5, 0x61, 0x15, 0xab, 0xf3, 0x3c, 0x18, 0x96, 0xfb, 0x57, 0x17, 0x84, ++ 0xe6, 0xc1, 0xc8, 0xbc, 0x7f, 0x03, 0xb6, 0xab, 0x79, 0x30, 0x9c, 0xf7, ++ 0x3f, 0x52, 0x10, 0x9a, 0x07, 0x23, 0xef, 0xfe, 0xcd, 0x05, 0xa1, 0x79, ++ 0x30, 0x66, 0xde, 0xbf, 0xbd, 0x20, 0x34, 0x0f, 0x46, 0xd9, 0xfd, 0xcf, ++ 0x15, 0x08, 0x79, 0x30, 0xd6, 0xfe, 0xa1, 0x00, 0xf2, 0x60, 0xbc, 0x1e, ++ 0xef, 0x6e, 0x8d, 0x4b, 0x89, 0x9e, 0x07, 0xa3, 0x39, 0xce, 0x11, 0x53, ++ 0x1e, 0x0c, 0x0a, 0xe7, 0x3d, 0x84, 0x13, 0x25, 0x0f, 0x86, 0x16, 0x4e, ++ 0xb4, 0x3c, 0x18, 0x14, 0xce, 0x89, 0xb8, 0x31, 0xd1, 0xf3, 0x60, 0x84, ++ 0xe1, 0x13, 0x25, 0x0f, 0x06, 0x85, 0xf3, 0x09, 0xc2, 0x89, 0x92, 0x07, ++ 0x23, 0x0c, 0x9f, 0x28, 0x79, 0x30, 0x28, 0x9c, 0xcf, 0x71, 0x5e, 0x51, ++ 0xf2, 0x60, 0x68, 0xe1, 0x44, 0xcb, 0x83, 0x41, 0xe1, 0xfc, 0x17, 0xc2, ++ 0x89, 0x92, 0x07, 0x43, 0x0b, 0x27, 0x5a, 0x1e, 0x0c, 0x0a, 0xc7, 0x10, ++ 0x9f, 0x12, 0x3d, 0x0f, 0x46, 0x18, 0x3e, 0x51, 0xf2, 0x60, 0x50, 0x38, ++ 0x09, 0x08, 0x27, 0x4a, 0x1e, 0x8c, 0x30, 0x7c, 0xa2, 0xe4, 0xc1, 0xa0, ++ 0x70, 0xd2, 0x11, 0x4e, 0x94, 0x3c, 0x18, 0x5a, 0x38, 0xd1, 0xf2, 0x60, ++ 0x50, 0x38, 0x59, 0x08, 0x27, 0x4a, 0x1e, 0x0c, 0x2d, 0x9c, 0x68, 0x79, ++ 0x30, 0x28, 0x9c, 0xab, 0xe2, 0xc7, 0x44, 0xcf, 0x83, 0x11, 0x86, 0x4f, ++ 0x94, 0x3c, 0x18, 0x14, 0xce, 0x28, 0xc4, 0x27, 0x4a, 0x1e, 0x8c, 0x30, ++ 0x7c, 0xa2, 0xe4, 0xc1, 0xa0, 0x70, 0x26, 0x20, 0x9c, 0x28, 0x79, 0x30, ++ 0xb4, 0x70, 0xa2, 0xe5, 0xc1, 0xa0, 0x70, 0x0a, 0x70, 0x5e, 0x51, 0xf2, ++ 0x60, 0x68, 0xe1, 0x44, 0xcb, 0x83, 0x41, 0xe1, 0x4c, 0x43, 0x7c, 0xa2, ++ 0xe4, 0xc1, 0x08, 0xc3, 0x27, 0x4a, 0x1e, 0x0c, 0x0a, 0x67, 0x16, 0xe2, ++ 0x13, 0x25, 0x0f, 0x46, 0x18, 0x3e, 0x51, 0xf2, 0x60, 0x50, 0x38, 0x6e, ++ 0xc4, 0x27, 0x4a, 0x1e, 0x0c, 0x2d, 0x9c, 0x68, 0x79, 0x30, 0x28, 0x9c, ++ 0xa5, 0x08, 0x27, 0x4a, 0x1e, 0x0c, 0x2d, 0x9c, 0x68, 0x79, 0x30, 0x28, ++ 0x9c, 0xe5, 0x08, 0x27, 0x4a, 0x1e, 0x8c, 0x30, 0x7c, 0xa2, 0xe4, 0xc1, ++ 0xa0, 0x70, 0xee, 0x46, 0x38, 0x51, 0xf2, 0x60, 0x84, 0xe1, 0xf3, 0x5d, ++ 0xf3, 0x60, 0x98, 0x03, 0x83, 0xa4, 0x81, 0x98, 0x07, 0x03, 0xf3, 0x71, ++ 0x76, 0xe7, 0xc1, 0x48, 0xfe, 0xd6, 0x79, 0x30, 0x7e, 0x05, 0xf8, 0xfe, ++ 0x33, 0x0f, 0xc6, 0x3f, 0xf3, 0x60, 0xfc, 0x18, 0x79, 0x30, 0x6e, 0xb5, ++ 0xba, 0xff, 0x1e, 0x8f, 0xfb, 0xc6, 0xef, 0x96, 0x07, 0xe3, 0x4c, 0xbc, ++ 0x26, 0x6f, 0x44, 0x0f, 0x79, 0x30, 0x6e, 0xb5, 0x96, 0x9c, 0x05, 0x79, ++ 0xfe, 0xb6, 0x79, 0x30, 0x2e, 0xc4, 0x7f, 0xbb, 0x3c, 0x18, 0x74, 0x9c, ++ 0x7f, 0x5c, 0x6e, 0x9c, 0x68, 0x79, 0x30, 0x74, 0x96, 0x6f, 0x97, 0x07, ++ 0x83, 0x8e, 0x23, 0x5b, 0xc6, 0x5c, 0x66, 0x3e, 0x51, 0xf2, 0x60, 0x24, ++ 0x58, 0xc4, 0xfc, 0x21, 0x3f, 0x56, 0x1e, 0x8c, 0x63, 0xf1, 0x49, 0x38, ++ 0x9f, 0x68, 0x79, 0x30, 0x7e, 0x72, 0xf9, 0x26, 0xe8, 0x36, 0x0b, 0xf6, ++ 0x69, 0xd3, 0x51, 0x14, 0xc9, 0x4f, 0x26, 0xff, 0xc4, 0x68, 0x0b, 0x8f, ++ 0x1b, 0xfe, 0x50, 0xf9, 0x27, 0x60, 0xd2, 0x39, 0x3f, 0xa5, 0xfc, 0x13, ++ 0x6a, 0x1e, 0x83, 0x26, 0x05, 0xd6, 0xc3, 0xf7, 0x39, 0xdf, 0xdf, 0xe1, ++ 0x72, 0xf1, 0x01, 0xcf, 0x43, 0x71, 0x2c, 0x6a, 0x1e, 0x0a, 0xff, 0x54, ++ 0x8c, 0xef, 0x2e, 0x15, 0xf3, 0x50, 0x4c, 0xe1, 0x7c, 0x9c, 0xed, 0x16, ++ 0xe5, 0x61, 0x0a, 0x61, 0xe7, 0x28, 0x53, 0xf2, 0xb3, 0xfc, 0xb5, 0xb0, ++ 0x5f, 0x2f, 0xd7, 0xe4, 0xa1, 0x18, 0x22, 0x9e, 0xd3, 0x17, 0xbb, 0x8f, ++ 0xe6, 0x53, 0x70, 0x64, 0xaa, 0x53, 0x9c, 0xc7, 0x51, 0x2e, 0x0f, 0xd3, ++ 0x4a, 0x3f, 0x3d, 0x08, 0xec, 0xb9, 0x79, 0x6c, 0xe4, 0x3c, 0x14, 0x33, ++ 0x38, 0x3f, 0xa6, 0x6b, 0xe8, 0x32, 0x85, 0xf3, 0x6d, 0x3a, 0x2f, 0x6f, ++ 0x87, 0x4f, 0x73, 0xa8, 0x3c, 0x17, 0x97, 0x1f, 0x95, 0x81, 0xae, 0xd3, ++ 0x1c, 0x6d, 0x32, 0xc6, 0xe9, 0x6f, 0x52, 0xf9, 0xe7, 0x10, 0xf8, 0x37, ++ 0x93, 0xc3, 0xd5, 0xe2, 0x3b, 0x83, 0xf3, 0x6f, 0xc6, 0x64, 0xc6, 0x3f, ++ 0x2d, 0xde, 0x6f, 0x01, 0xff, 0x28, 0xde, 0x6f, 0x95, 0x8f, 0x42, 0xfe, ++ 0x69, 0xf1, 0xd6, 0xe2, 0xa9, 0xe5, 0x3f, 0x09, 0xe5, 0x77, 0x48, 0xfe, ++ 0x90, 0x5c, 0x22, 0xe6, 0x9f, 0x98, 0x64, 0x12, 0xf3, 0x4f, 0x14, 0xd8, ++ 0xc5, 0xfc, 0x13, 0x37, 0xa6, 0x8b, 0xf9, 0x27, 0x26, 0x3b, 0xc4, 0xfc, ++ 0x13, 0x37, 0x0d, 0x11, 0xf3, 0x4f, 0x4c, 0x75, 0x8a, 0xf9, 0x27, 0x6e, ++ 0x1e, 0x2b, 0xe6, 0x9f, 0x98, 0xee, 0x5a, 0xad, 0xc9, 0x7f, 0x71, 0x9f, ++ 0x26, 0xff, 0xc5, 0x43, 0x9a, 0xfc, 0x17, 0x9b, 0x34, 0xf9, 0x2f, 0xb6, ++ 0x68, 0xf2, 0x5f, 0xec, 0xd0, 0xe4, 0xbf, 0xd8, 0xa5, 0xc9, 0x7f, 0xf1, ++ 0x92, 0x26, 0xff, 0xc5, 0x3e, 0xa1, 0xbe, 0xb0, 0xee, 0x35, 0xa1, 0xff, ++ 0xe2, 0xfa, 0xa3, 0x42, 0x7d, 0x49, 0xc3, 0x7b, 0x42, 0xff, 0xa5, 0xfe, ++ 0xe3, 0x42, 0xfb, 0xb2, 0xc6, 0x8f, 0x85, 0xf6, 0xaa, 0xa6, 0x4f, 0x85, ++ 0xba, 0xa7, 0xf9, 0x4b, 0xa1, 0x7f, 0x4f, 0xf9, 0x07, 0xde, 0xe2, 0xdf, ++ 0x43, 0xbf, 0xc3, 0xbf, 0x87, 0x3e, 0xc6, 0xbf, 0x87, 0x7e, 0xbf, 0x87, ++ 0xfc, 0x17, 0xef, 0x58, 0x96, 0xae, 0x0b, 0xcd, 0x7f, 0xf1, 0xbe, 0xc5, ++ 0xb3, 0x0e, 0xf2, 0x12, 0x1c, 0xb7, 0x38, 0x78, 0x5e, 0x81, 0xc8, 0xf9, ++ 0x2d, 0xba, 0xdb, 0xa3, 0xe4, 0xbf, 0x08, 0xbe, 0xff, 0xed, 0xf3, 0x5f, ++ 0xa4, 0x24, 0xff, 0xf0, 0xf9, 0x08, 0x74, 0x56, 0xf6, 0x3d, 0x60, 0x6f, ++ 0x4b, 0x9e, 0xce, 0x9a, 0xf2, 0xdd, 0xf3, 0x11, 0xdc, 0x5a, 0x22, 0x7e, ++ 0xd7, 0x3d, 0xab, 0x54, 0xfc, 0xae, 0x5b, 0x67, 0x65, 0xdf, 0x6b, 0xcf, ++ 0x76, 0x8b, 0xdf, 0x77, 0xdf, 0x5e, 0x2e, 0x7e, 0xdf, 0x3d, 0x22, 0xce, ++ 0x2d, 0x01, 0x1e, 0xda, 0xfc, 0x17, 0xbd, 0x2d, 0x2e, 0x9d, 0x15, 0xec, ++ 0x25, 0xcf, 0x53, 0x10, 0x80, 0xef, 0x74, 0xb3, 0x21, 0xde, 0x56, 0x84, ++ 0xe5, 0x41, 0xc8, 0x7f, 0x91, 0x0d, 0xf1, 0xb6, 0x52, 0x2c, 0x0f, 0x43, ++ 0xfe, 0x0b, 0x5a, 0xfe, 0x19, 0xf2, 0x5f, 0xd0, 0xf2, 0x08, 0xe4, 0xbf, ++ 0xa0, 0xe5, 0x1b, 0x90, 0xff, 0x22, 0x1b, 0xf2, 0x67, 0xf8, 0x78, 0xfe, ++ 0x8c, 0x3a, 0x9e, 0x3f, 0xa3, 0x9e, 0xe7, 0xcf, 0x68, 0xe0, 0xf9, 0x33, ++ 0xfc, 0x3c, 0x7f, 0x46, 0x23, 0xcf, 0x9f, 0xd1, 0xc4, 0xf3, 0x67, 0x34, ++ 0xf3, 0xfc, 0x19, 0x01, 0x84, 0x73, 0xc2, 0x7b, 0x18, 0xcb, 0x93, 0xde, ++ 0x56, 0x2c, 0x4f, 0x79, 0x8f, 0x61, 0x79, 0xc6, 0xdb, 0x86, 0xe5, 0x59, ++ 0xef, 0x19, 0x2c, 0xcf, 0x79, 0x3b, 0xb1, 0x6c, 0xf7, 0x5e, 0xc4, 0x32, ++ 0xd6, 0xfc, 0x19, 0xaa, 0x5c, 0x7e, 0x08, 0x7e, 0xc3, 0x15, 0x30, 0x3e, ++ 0x93, 0x67, 0x55, 0x4e, 0xaf, 0x7e, 0xe0, 0x91, 0x75, 0xa1, 0xf9, 0x33, ++ 0x46, 0x3c, 0xb0, 0x09, 0xe5, 0x34, 0x5a, 0xde, 0x8c, 0x1c, 0xf8, 0xa6, ++ 0x2f, 0x25, 0x7a, 0xde, 0x8c, 0xee, 0xf6, 0x28, 0x79, 0x33, 0x82, 0xef, ++ 0x47, 0xcf, 0x9b, 0x91, 0x36, 0xfa, 0xc7, 0xcb, 0x9b, 0x31, 0xd7, 0xf2, ++ 0xc3, 0xe4, 0xcd, 0x98, 0x5b, 0x23, 0xe6, 0x75, 0x98, 0xb7, 0xea, 0xf2, ++ 0x79, 0x33, 0x46, 0xc4, 0x95, 0xdc, 0x82, 0xf2, 0xc7, 0xe5, 0x71, 0xae, ++ 0x25, 0xb6, 0xbc, 0x19, 0x3e, 0xab, 0xc4, 0xbf, 0xcb, 0xa7, 0x74, 0x01, ++ 0xbf, 0x8b, 0xd2, 0x05, 0xd7, 0xeb, 0x1e, 0xf2, 0x0e, 0x1c, 0xb4, 0x3e, ++ 0x3d, 0x04, 0xf6, 0x13, 0x5d, 0x43, 0xae, 0xba, 0x6c, 0xbe, 0x07, 0xad, ++ 0x5c, 0x44, 0xa7, 0x37, 0xcb, 0xef, 0x30, 0xe7, 0x47, 0xce, 0x97, 0xd1, ++ 0x13, 0x5d, 0xd5, 0xfe, 0xef, 0x57, 0xb0, 0x3c, 0x0e, 0x73, 0x2d, 0xdf, ++ 0x32, 0x5f, 0x46, 0x0f, 0xf9, 0x16, 0x0e, 0x66, 0x7f, 0x81, 0x76, 0x32, ++ 0xd6, 0x7c, 0x19, 0x3d, 0xad, 0x0f, 0x3d, 0xd1, 0x73, 0xc6, 0x8f, 0x9c, ++ 0x2f, 0xa3, 0x27, 0xbb, 0xda, 0x93, 0x3d, 0x7d, 0x73, 0x0a, 0xa3, 0x73, ++ 0xef, 0x1e, 0xe8, 0xac, 0x7e, 0x2f, 0x5d, 0x69, 0x6a, 0x3d, 0x84, 0x2f, ++ 0xdb, 0x5d, 0xa8, 0xda, 0x32, 0xff, 0x1e, 0x3e, 0x77, 0xa6, 0x1d, 0xe3, ++ 0x33, 0x1d, 0x3b, 0xf9, 0xbd, 0x38, 0x17, 0x71, 0xd8, 0x53, 0xd9, 0xf7, ++ 0xfa, 0xe0, 0x6f, 0x76, 0x3c, 0x9f, 0x30, 0x9c, 0xe0, 0x77, 0xfc, 0x76, ++ 0xe2, 0xa2, 0xfc, 0x89, 0xe7, 0xcf, 0xa5, 0x9d, 0xfb, 0xf6, 0xc1, 0xbd, ++ 0x80, 0xb5, 0x36, 0xe2, 0x4a, 0x4c, 0x02, 0x67, 0x8f, 0x38, 0xf4, 0x03, ++ 0x61, 0x1f, 0x76, 0x8d, 0x09, 0xe2, 0x35, 0x55, 0xbb, 0x3f, 0x7d, 0xe3, ++ 0x8f, 0x14, 0xae, 0xb9, 0x45, 0x8f, 0xf7, 0xe5, 0x3a, 0x28, 0x0e, 0xad, ++ 0xe8, 0xf7, 0xb9, 0x12, 0x81, 0x6f, 0xf1, 0xe4, 0x97, 0xb8, 0x4f, 0x87, ++ 0x33, 0xba, 0x4b, 0xbd, 0x42, 0xbf, 0xeb, 0xd6, 0xfc, 0x1e, 0x0e, 0xe8, ++ 0x92, 0x1a, 0x3c, 0x7f, 0x2a, 0xd0, 0x5b, 0x70, 0xdf, 0xd4, 0xb5, 0x99, ++ 0xdd, 0x67, 0xd5, 0x93, 0xab, 0x1e, 0x9f, 0x90, 0x8c, 0xf7, 0xc6, 0x89, ++ 0xdf, 0x81, 0xfc, 0x43, 0x3f, 0x75, 0x19, 0xc7, 0xb3, 0x8b, 0x10, 0x67, ++ 0x00, 0xfa, 0xef, 0xb4, 0xe2, 0xfd, 0xd5, 0x25, 0xaf, 0x2d, 0x34, 0xc0, ++ 0xa0, 0x70, 0xde, 0x1a, 0x1a, 0x37, 0xe8, 0x55, 0x24, 0xc6, 0x81, 0x1a, ++ 0xcc, 0xb6, 0xe1, 0x70, 0x6f, 0x2f, 0x5d, 0xbd, 0xbf, 0xe7, 0x73, 0xb5, ++ 0x82, 0x1f, 0xbe, 0x88, 0xc3, 0x4d, 0x29, 0x11, 0xe3, 0x44, 0x9f, 0x2c, ++ 0x28, 0x3a, 0x0c, 0xfe, 0xf3, 0x22, 0x77, 0x19, 0xde, 0xab, 0x48, 0x2b, ++ 0x15, 0xe3, 0x46, 0x84, 0x7f, 0x47, 0x0f, 0xdb, 0x32, 0xf0, 0x33, 0x65, ++ 0xc2, 0xef, 0x75, 0xfa, 0xd9, 0x7d, 0xcf, 0xb0, 0xef, 0xea, 0x9b, 0xb7, ++ 0x20, 0x9e, 0x4b, 0xfd, 0x9a, 0xfb, 0x4b, 0x8d, 0x62, 0x5d, 0xa5, 0xdb, ++ 0x39, 0x2b, 0xbf, 0x97, 0x62, 0x21, 0x96, 0x98, 0xe8, 0xd6, 0x36, 0xf8, ++ 0xf1, 0x09, 0xa3, 0xbf, 0x3d, 0xdd, 0x8c, 0xe9, 0x22, 0xdd, 0xcc, 0x0e, ++ 0x91, 0x6e, 0xf1, 0x43, 0x44, 0xba, 0x68, 0xe9, 0x66, 0x75, 0x8a, 0x74, ++ 0xd1, 0xd2, 0x2d, 0x61, 0xac, 0x18, 0x5f, 0x53, 0xe9, 0xa6, 0xde, 0xa7, ++ 0xfc, 0xa1, 0xe8, 0x96, 0x64, 0xe3, 0xf7, 0x3c, 0x82, 0xf4, 0x2a, 0x31, ++ 0xa5, 0xa2, 0xc9, 0x47, 0x3c, 0x33, 0xe4, 0x00, 0xca, 0xb7, 0x56, 0x1f, ++ 0xfa, 0x58, 0x02, 0xf0, 0x1b, 0x7e, 0x48, 0xbf, 0x64, 0xff, 0x6a, 0x7c, ++ 0xcb, 0x69, 0x95, 0xc1, 0x6e, 0xa5, 0x33, 0xd0, 0x44, 0x5a, 0xc4, 0xde, ++ 0x8b, 0x07, 0x7d, 0x80, 0xfc, 0xbd, 0xc4, 0x89, 0xfa, 0xa0, 0xfe, 0x3e, ++ 0x8a, 0x78, 0xf2, 0x21, 0x97, 0xfb, 0x8f, 0xc8, 0x25, 0x5a, 0xae, 0x98, ++ 0x7e, 0xf0, 0xf8, 0x02, 0xda, 0xba, 0x19, 0xe4, 0x6d, 0x04, 0xfb, 0x3d, ++ 0x1a, 0x18, 0xaf, 0x4a, 0x22, 0xb8, 0x9f, 0x53, 0x88, 0xd3, 0x0e, 0xfb, ++ 0xa8, 0x26, 0xaf, 0xc9, 0xb9, 0x48, 0x81, 0x73, 0x4d, 0xe2, 0x5c, 0x94, ++ 0x0d, 0xe7, 0x99, 0x76, 0x2c, 0x1f, 0xe4, 0xdf, 0x3b, 0x77, 0x0c, 0x25, ++ 0xb8, 0xef, 0x6f, 0x0a, 0x7c, 0x9e, 0x0a, 0xf7, 0x06, 0x1e, 0x1c, 0xd9, ++ 0x39, 0x0d, 0xe2, 0x0f, 0x9e, 0xc5, 0xa4, 0x04, 0xd6, 0xaf, 0x59, 0x09, ++ 0x6c, 0x7d, 0x5d, 0xc6, 0x4b, 0x5b, 0x02, 0x8b, 0xcf, 0x6c, 0x28, 0xd1, ++ 0x11, 0xd7, 0x68, 0xf8, 0x7d, 0x4a, 0x7a, 0xbf, 0x44, 0xc7, 0x6b, 0xb7, ++ 0xbb, 0x5e, 0xbb, 0x01, 0xfc, 0xd1, 0x16, 0x76, 0x3f, 0x80, 0xd8, 0x3b, ++ 0xdf, 0xb8, 0x1d, 0xdb, 0x47, 0xe1, 0xf7, 0xe1, 0x19, 0xba, 0xfa, 0x6b, ++ 0x00, 0x1f, 0xda, 0x1f, 0xbf, 0x2b, 0xee, 0x68, 0xf9, 0xc8, 0xb6, 0x30, ++ 0xc4, 0x0e, 0xb7, 0x37, 0x3f, 0x72, 0x25, 0xdc, 0x6b, 0xdd, 0xa4, 0x8b, ++ 0xfc, 0x3d, 0x73, 0x81, 0x8d, 0xff, 0xfe, 0x1d, 0x7e, 0x3f, 0x65, 0x44, ++ 0x30, 0xdf, 0x42, 0x81, 0x6d, 0x0c, 0xe6, 0x65, 0x78, 0x70, 0x00, 0x1d, ++ 0xa7, 0x7a, 0x7a, 0x17, 0xf2, 0x51, 0x95, 0xcb, 0xeb, 0x38, 0xfd, 0x0f, ++ 0x96, 0x4d, 0x41, 0xfc, 0x5e, 0x68, 0x91, 0x1c, 0x10, 0xaf, 0x2b, 0xd4, ++ 0xdf, 0x71, 0xd3, 0x30, 0x8a, 0xdf, 0xb8, 0xb7, 0x65, 0x7e, 0xaf, 0x97, ++ 0xdd, 0x5f, 0x1f, 0xcd, 0xfb, 0xd7, 0x9a, 0xa9, 0xfe, 0xa2, 0xfd, 0xaa, ++ 0xff, 0x1b, 0xfc, 0x9e, 0x95, 0x97, 0x4e, 0xca, 0x98, 0x0f, 0x71, 0x74, ++ 0x4d, 0x19, 0xde, 0x13, 0xfc, 0xa3, 0xad, 0xf0, 0x30, 0xf0, 0x2b, 0xc7, ++ 0xd5, 0x34, 0x0a, 0xe4, 0x29, 0xbf, 0x25, 0x11, 0xcf, 0x71, 0x3d, 0x1f, ++ 0x12, 0x27, 0x7e, 0x9a, 0xd5, 0x2a, 0xde, 0x07, 0xcc, 0xe1, 0xf7, 0xb6, ++ 0x73, 0xda, 0x88, 0x1f, 0x84, 0xe2, 0xda, 0x63, 0x62, 0xfb, 0xb8, 0x36, ++ 0xb1, 0x7e, 0x9d, 0x66, 0xff, 0x39, 0xdf, 0xc6, 0xf5, 0xd4, 0x46, 0x52, ++ 0x41, 0xee, 0x36, 0x7e, 0xad, 0x97, 0x60, 0xfd, 0xe8, 0xe8, 0x24, 0xce, ++ 0x35, 0x14, 0xdf, 0x8e, 0x45, 0xbd, 0x71, 0xfc, 0x8e, 0xcf, 0x09, 0xfa, ++ 0x89, 0x1d, 0x5f, 0xeb, 0x8b, 0x22, 0xdd, 0x8f, 0x59, 0x6e, 0x63, 0xfc, ++ 0xdb, 0x64, 0x20, 0x68, 0xbf, 0x37, 0x95, 0x59, 0xf0, 0xde, 0xf9, 0xfe, ++ 0xb2, 0x8a, 0xfe, 0xe0, 0x5f, 0x7c, 0x71, 0x97, 0xbb, 0x7f, 0xa4, 0x38, ++ 0x65, 0x88, 0x9f, 0x96, 0xc0, 0xbe, 0xbb, 0x77, 0x25, 0x90, 0xb1, 0x20, ++ 0x87, 0x6b, 0x25, 0x46, 0xef, 0xfa, 0x8c, 0x92, 0x08, 0xeb, 0x96, 0x2a, ++ 0x77, 0xaa, 0x1c, 0xaa, 0xf2, 0x97, 0x51, 0x16, 0xe7, 0x8e, 0x74, 0x0f, ++ 0xf5, 0x33, 0x9b, 0x84, 0x72, 0x96, 0x57, 0x36, 0x44, 0x32, 0x80, 0xfc, ++ 0xec, 0x95, 0x30, 0xfc, 0xd5, 0xbe, 0x86, 0xe2, 0x75, 0x99, 0x75, 0xdb, ++ 0x47, 0xd6, 0xf4, 0x01, 0x7c, 0x3c, 0xcd, 0x9f, 0xe1, 0x7d, 0x32, 0x53, ++ 0x8b, 0xe4, 0x8a, 0x74, 0x4f, 0xe7, 0x61, 0x9b, 0x8d, 0xdd, 0x6f, 0x5c, ++ 0xe3, 0x5b, 0x0d, 0xf7, 0x46, 0x7e, 0x41, 0x95, 0x08, 0xec, 0x54, 0x86, ++ 0xa1, 0x3e, 0x2b, 0x12, 0x7c, 0x1f, 0xd9, 0x88, 0x7e, 0xe9, 0x5d, 0x36, ++ 0x07, 0x7b, 0xcf, 0xc4, 0xf3, 0x20, 0xc9, 0xf5, 0x19, 0x70, 0x9f, 0xa2, ++ 0xbd, 0x79, 0xd2, 0xe4, 0x75, 0x14, 0xcf, 0x27, 0xa8, 0x3e, 0xc0, 0x7a, ++ 0xb5, 0x49, 0x71, 0x22, 0xde, 0xbe, 0x2a, 0x42, 0xf0, 0x9e, 0x2c, 0x8f, ++ 0xd7, 0xf5, 0x9d, 0x46, 0xb6, 0x6c, 0x08, 0xf1, 0x7f, 0x37, 0xdb, 0x72, ++ 0x1b, 0x6d, 0x14, 0x5e, 0xa3, 0x8d, 0x7d, 0x6f, 0xd9, 0xcb, 0xed, 0x94, ++ 0x00, 0x6f, 0xe7, 0x7f, 0xfd, 0xc3, 0x06, 0xf0, 0x3b, 0x2e, 0x1a, 0x91, ++ 0x7f, 0xbd, 0xb9, 0xbf, 0xa9, 0xbe, 0x77, 0x80, 0xd3, 0x67, 0x5c, 0x82, ++ 0x6b, 0x2b, 0xbc, 0x4f, 0xe0, 0x97, 0x9f, 0x51, 0xe3, 0xe3, 0x74, 0xdb, ++ 0x9c, 0x8b, 0x46, 0x41, 0x5c, 0x9e, 0xd2, 0x3b, 0xc4, 0x0e, 0x06, 0xf9, ++ 0xe6, 0x63, 0xf9, 0x51, 0xdc, 0x04, 0xcf, 0x3f, 0x92, 0x2c, 0x3a, 0x94, ++ 0x43, 0xe2, 0x72, 0x39, 0xec, 0xc2, 0x7d, 0x76, 0x1f, 0xea, 0x8d, 0xaa, ++ 0x07, 0x24, 0x20, 0x11, 0xc8, 0x53, 0xa0, 0xda, 0x37, 0xa9, 0x45, 0x0a, ++ 0x58, 0xa9, 0xdc, 0x8f, 0x36, 0x59, 0x02, 0x70, 0x8f, 0x2e, 0xa9, 0x9c, ++ 0xce, 0x3b, 0x19, 0xf2, 0x9a, 0x98, 0x18, 0xbc, 0x56, 0xf9, 0x9c, 0x18, ++ 0xd7, 0xa2, 0xf2, 0x98, 0x03, 0xce, 0x3d, 0xc1, 0xab, 0xf3, 0x10, 0x48, ++ 0x05, 0xf8, 0xaa, 0xdd, 0x53, 0xed, 0xe5, 0xda, 0x44, 0x66, 0x8f, 0xd6, ++ 0x3e, 0x24, 0x63, 0x5e, 0xd4, 0xcd, 0x72, 0x9b, 0x19, 0xe2, 0xa9, 0x59, ++ 0x2e, 0x47, 0x1e, 0xa4, 0x88, 0x4c, 0x92, 0x1d, 0x78, 0xaf, 0xa6, 0x5f, ++ 0x39, 0x71, 0x52, 0x0c, 0x49, 0xfc, 0xc0, 0x5f, 0x27, 0x76, 0xfb, 0x01, ++ 0x54, 0xc9, 0xaf, 0xf9, 0x46, 0x3f, 0x2f, 0xd2, 0x77, 0x5b, 0x17, 0x6d, ++ 0xcc, 0xdf, 0x1e, 0x97, 0xe0, 0xfe, 0x33, 0xd0, 0x6b, 0xf8, 0xe1, 0xce, ++ 0xfd, 0xe0, 0x2e, 0x38, 0xcd, 0xa4, 0x17, 0xbb, 0xff, 0xc5, 0xed, 0x04, ++ 0xf7, 0x6b, 0x0a, 0xf9, 0x7a, 0x37, 0xee, 0x3f, 0x74, 0xec, 0x7b, 0xd1, ++ 0xc0, 0x0d, 0x24, 0xf4, 0x3b, 0x2a, 0xad, 0x9d, 0xd8, 0x64, 0x66, 0xeb, ++ 0xfc, 0xb8, 0xeb, 0xd9, 0xba, 0x37, 0xee, 0xbc, 0x05, 0xd7, 0xbd, 0x6e, ++ 0x3b, 0x51, 0x56, 0x88, 0xeb, 0xd4, 0xc8, 0x96, 0x51, 0x07, 0xe0, 0x9e, ++ 0xc5, 0xc8, 0x0f, 0x99, 0x7e, 0x12, 0x6e, 0x1f, 0xec, 0xf4, 0x0f, 0xd0, ++ 0x29, 0xe7, 0xb0, 0x4f, 0x0f, 0xf4, 0xf9, 0xb6, 0x76, 0x41, 0xcb, 0x6f, ++ 0x12, 0x30, 0x75, 0xd7, 0x87, 0xea, 0xe0, 0x1c, 0x86, 0xea, 0x5b, 0xc8, ++ 0xfb, 0x67, 0x35, 0x76, 0x64, 0xc5, 0xf4, 0x41, 0xb5, 0x18, 0x5e, 0xe6, ++ 0x72, 0xd4, 0xff, 0x1e, 0xa7, 0xde, 0x1d, 0x42, 0x47, 0xed, 0xfb, 0xdd, ++ 0x71, 0x4a, 0xc9, 0xd4, 0xfd, 0xdc, 0x31, 0x10, 0xec, 0xc8, 0x11, 0x3d, ++ 0xdc, 0x0b, 0xe9, 0xc8, 0xa5, 0xf3, 0xa3, 0xf3, 0xdf, 0xc8, 0xf5, 0x25, ++ 0xf1, 0x73, 0xff, 0x64, 0x98, 0xd7, 0xc6, 0x96, 0x1b, 0xcd, 0x20, 0xdf, ++ 0x6b, 0x03, 0x79, 0xf6, 0x62, 0xfa, 0x4e, 0xa2, 0xa9, 0x04, 0x99, 0x97, ++ 0x48, 0x5c, 0x18, 0xcf, 0x19, 0x49, 0x3d, 0x32, 0xc8, 0x8f, 0x51, 0x8b, ++ 0x42, 0x41, 0xfd, 0x41, 0xa5, 0x84, 0x24, 0xa4, 0xc0, 0x3d, 0xb4, 0x22, ++ 0x21, 0xde, 0x43, 0x2c, 0x49, 0x3c, 0xff, 0x4b, 0x00, 0xf9, 0xd2, 0x2d, ++ 0xa7, 0x54, 0x8e, 0x43, 0xef, 0xe5, 0xaa, 0xf2, 0xa9, 0x95, 0x47, 0x55, ++ 0x7e, 0x6b, 0xe1, 0xa0, 0x05, 0xce, 0x07, 0x21, 0x62, 0x4e, 0x4b, 0xbd, ++ 0xd4, 0x84, 0x87, 0x81, 0x46, 0xb2, 0xd9, 0x0e, 0xeb, 0xbb, 0xea, 0x5f, ++ 0xd6, 0x72, 0x7f, 0xae, 0xd6, 0x9c, 0xe9, 0xc7, 0xef, 0x97, 0x7c, 0x19, ++ 0xe8, 0x1f, 0xad, 0xe4, 0xfe, 0x51, 0xad, 0xa5, 0xd0, 0x84, 0xe6, 0x60, ++ 0x5f, 0x32, 0xae, 0xeb, 0x2b, 0x21, 0x7e, 0x42, 0xe9, 0xb0, 0x32, 0x85, ++ 0xd9, 0x79, 0x75, 0x3e, 0x5a, 0xb9, 0xf4, 0x5c, 0xd4, 0x13, 0x7f, 0xc8, ++ 0x3e, 0xc1, 0x23, 0x77, 0xe2, 0x7d, 0x44, 0xcf, 0x45, 0x03, 0x3e, 0x5f, ++ 0xa7, 0xb8, 0x07, 0xc0, 0xfc, 0x55, 0xfa, 0x5c, 0xc3, 0xe9, 0xa3, 0xa5, ++ 0x87, 0x94, 0xc0, 0xf7, 0x9d, 0x9c, 0x2e, 0x3d, 0xe3, 0x9b, 0x63, 0x87, ++ 0x7b, 0xc1, 0x89, 0x26, 0x17, 0x59, 0x8f, 0xf8, 0xe6, 0xe1, 0x3d, 0xee, ++ 0xa6, 0xc0, 0x48, 0x13, 0xac, 0xbf, 0xf7, 0x6a, 0xf0, 0x8d, 0x01, 0xcf, ++ 0x6b, 0x13, 0xc6, 0x84, 0xe3, 0x29, 0x5b, 0xa2, 0xe0, 0x99, 0xcc, 0xf0, ++ 0xbc, 0x8e, 0xb8, 0xff, 0xd8, 0x46, 0xe5, 0x37, 0x67, 0x45, 0x5d, 0x6d, ++ 0x3c, 0xea, 0x15, 0x79, 0x2b, 0x3d, 0x27, 0x5c, 0xaf, 0xb4, 0x7a, 0xa4, ++ 0xea, 0x8d, 0x1a, 0xe7, 0xbd, 0xb6, 0xb2, 0xfe, 0x00, 0x5e, 0xbb, 0xed, ++ 0x41, 0x6f, 0x3c, 0xf1, 0x8c, 0x2e, 0x4e, 0xa5, 0x04, 0xef, 0x57, 0x39, ++ 0xf7, 0xc4, 0xa3, 0x1d, 0xd1, 0xea, 0xd3, 0xe7, 0x7c, 0xfe, 0x9e, 0x78, ++ 0x46, 0xbf, 0x05, 0x8a, 0x7b, 0x06, 0xcc, 0xcf, 0xa3, 0xeb, 0xcc, 0x04, ++ 0x39, 0x19, 0xee, 0x20, 0xbd, 0x8a, 0x29, 0x92, 0xc3, 0x9b, 0xf5, 0xa8, ++ 0xe7, 0xa4, 0x35, 0xb6, 0x7b, 0xf8, 0xaa, 0x7f, 0xa5, 0xfa, 0x55, 0xda, ++ 0x7e, 0xaa, 0x5f, 0xa5, 0xda, 0x63, 0xf5, 0x1e, 0xfc, 0xda, 0x04, 0xf7, ++ 0x7c, 0x90, 0x03, 0xa9, 0x99, 0xca, 0x2d, 0xc5, 0xa7, 0xd6, 0xce, 0xf6, ++ 0x4b, 0x9b, 0x6d, 0xee, 0x45, 0x80, 0x57, 0x3c, 0xc5, 0x3d, 0x0e, 0xf6, ++ 0x8d, 0x43, 0x02, 0x59, 0xec, 0xfb, 0x5f, 0x51, 0x2f, 0xa2, 0xe9, 0x41, ++ 0xbc, 0x46, 0xce, 0x9b, 0x02, 0x32, 0xae, 0x0b, 0x3e, 0xba, 0x2e, 0x64, ++ 0x4b, 0xe1, 0x78, 0xa8, 0xe3, 0x0f, 0x4a, 0x48, 0x64, 0x7c, 0xa4, 0x5a, ++ 0x0e, 0xeb, 0x7d, 0xdf, 0x1c, 0xc2, 0x06, 0xab, 0x26, 0x98, 0x37, 0xa7, ++ 0xef, 0x70, 0xe2, 0x86, 0x75, 0xab, 0xef, 0x48, 0x76, 0x9f, 0x71, 0x4d, ++ 0x02, 0xb3, 0xbf, 0xb5, 0x09, 0x6c, 0xdd, 0x52, 0xcb, 0xcd, 0xb6, 0x92, ++ 0xbb, 0x51, 0xbf, 0x65, 0xe2, 0x33, 0x8e, 0xfc, 0xee, 0x78, 0x03, 0xaa, ++ 0x70, 0xdf, 0x7c, 0x6d, 0x82, 0xeb, 0x2e, 0xa0, 0x87, 0xa9, 0xc8, 0x85, ++ 0xf3, 0xe8, 0x63, 0x27, 0x4e, 0xf0, 0x4b, 0xfb, 0xc8, 0x4d, 0x12, 0x7c, ++ 0x37, 0x9a, 0x54, 0xe9, 0x90, 0xd8, 0x3d, 0x73, 0x12, 0xfc, 0x7e, 0x8b, ++ 0xc2, 0xeb, 0x53, 0xec, 0xc8, 0x05, 0x7d, 0xed, 0x03, 0xfb, 0x6b, 0xe8, ++ 0xdf, 0x12, 0x39, 0xcf, 0xd8, 0xa3, 0x09, 0xea, 0xfd, 0x5e, 0xe6, 0x7f, ++ 0x3a, 0x49, 0x77, 0x1e, 0xaf, 0x47, 0x13, 0x98, 0xff, 0x79, 0x08, 0x52, ++ 0x9f, 0xf4, 0x2a, 0x56, 0xf3, 0x82, 0xa9, 0xe7, 0x39, 0x4e, 0x09, 0xe8, ++ 0xd4, 0x6e, 0xbd, 0x0d, 0x91, 0x6e, 0xbf, 0x20, 0x31, 0x3f, 0x3d, 0x91, ++ 0xd1, 0x4b, 0xbb, 0x4f, 0x00, 0xc2, 0x87, 0xfe, 0xfe, 0xbd, 0x7b, 0x0d, ++ 0x44, 0x36, 0x27, 0x91, 0xe0, 0xef, 0x59, 0xd5, 0x99, 0xd0, 0xbf, 0x8f, ++ 0x27, 0xce, 0x26, 0xb0, 0x57, 0xbb, 0x12, 0x06, 0xf0, 0x73, 0x4c, 0x67, ++ 0x1d, 0xd4, 0x7f, 0x25, 0x77, 0x9a, 0x12, 0x87, 0x06, 0xe5, 0x5d, 0x95, ++ 0xe3, 0x07, 0x27, 0xcc, 0x70, 0x42, 0x2a, 0x52, 0xdb, 0xf5, 0x5d, 0xc3, ++ 0x61, 0x4f, 0x45, 0xe5, 0x7a, 0x27, 0xd0, 0xbf, 0x7d, 0x42, 0xd7, 0x60, ++ 0xcc, 0x41, 0x49, 0x3a, 0x33, 0x99, 0xfc, 0xb8, 0xf4, 0x42, 0xbe, 0x20, ++ 0x95, 0x0f, 0xcd, 0x8a, 0xc0, 0x07, 0x33, 0xec, 0xc3, 0x43, 0xed, 0xa4, ++ 0xd5, 0x30, 0x04, 0xfc, 0xd1, 0x76, 0x29, 0xce, 0x09, 0xf7, 0x2c, 0xda, ++ 0x97, 0x4a, 0x0c, 0x5f, 0xc9, 0xc4, 0xf3, 0x29, 0xc9, 0xc2, 0x3c, 0xd3, ++ 0xe3, 0x99, 0x7f, 0xdd, 0xc1, 0xed, 0xd5, 0x3b, 0x09, 0x59, 0x28, 0x27, ++ 0xaa, 0x3d, 0xa6, 0xf3, 0xab, 0x83, 0x52, 0x3b, 0x0f, 0x8f, 0x11, 0xef, ++ 0x74, 0x90, 0xce, 0x3d, 0xf1, 0xfe, 0xad, 0x70, 0x6e, 0xa5, 0xc9, 0x3f, ++ 0xa9, 0xcd, 0x4f, 0x39, 0x69, 0xa1, 0x05, 0xef, 0x7f, 0x6c, 0xdc, 0x63, ++ 0xc6, 0xfd, 0x6b, 0x57, 0x09, 0x3b, 0xc7, 0xef, 0x6a, 0x31, 0xa2, 0x7d, ++ 0x8e, 0xa6, 0xb7, 0x69, 0x6d, 0xe6, 0x88, 0x71, 0x1c, 0xb5, 0xa4, 0xf4, ++ 0x7b, 0x0b, 0xe8, 0x97, 0xa6, 0xd4, 0x24, 0x82, 0x3d, 0x4c, 0x9b, 0x7b, ++ 0xd2, 0x06, 0x7c, 0xd7, 0xd2, 0xa5, 0x43, 0xf2, 0x5d, 0x73, 0x08, 0xf6, ++ 0x45, 0xaf, 0x2b, 0x11, 0xbf, 0xbb, 0x55, 0xcb, 0xf4, 0xf4, 0x9b, 0x12, ++ 0x17, 0xd1, 0xfe, 0xe9, 0x19, 0x93, 0xb1, 0x54, 0x9f, 0x37, 0x58, 0xe4, ++ 0x88, 0xf7, 0xcd, 0x4f, 0x73, 0xbd, 0x52, 0xe5, 0xf1, 0x4a, 0x3a, 0x22, ++ 0xdf, 0x0f, 0x9d, 0x06, 0x79, 0x3c, 0xef, 0x7e, 0xf3, 0x1d, 0x17, 0x09, ++ 0xde, 0xdf, 0x6f, 0x88, 0x63, 0x74, 0x6c, 0x88, 0x63, 0x74, 0xec, 0x72, ++ 0x8f, 0x4f, 0x78, 0x1a, 0xe4, 0xcd, 0x97, 0x81, 0xfa, 0xb0, 0x58, 0x3d, ++ 0x07, 0xe5, 0xfb, 0x7f, 0x35, 0xcf, 0x94, 0x3a, 0xde, 0x46, 0xaf, 0x29, ++ 0x51, 0xa6, 0x2a, 0xd0, 0xb0, 0x60, 0x8a, 0x19, 0xd6, 0x89, 0x14, 0xe2, ++ 0x9a, 0x3c, 0x1b, 0x94, 0x75, 0xa3, 0x42, 0xe0, 0x3b, 0xa2, 0xc7, 0xbc, ++ 0x3b, 0x12, 0xf3, 0x31, 0x8e, 0x6d, 0x12, 0xef, 0xf9, 0xda, 0xd9, 0xbd, ++ 0xe1, 0xcf, 0x37, 0x16, 0xe0, 0x77, 0xde, 0xa9, 0x64, 0x8d, 0x79, 0x30, ++ 0xa5, 0x47, 0x59, 0x89, 0xce, 0x09, 0xf1, 0x83, 0xf3, 0x0b, 0xde, 0xb7, ++ 0xe9, 0xa8, 0x3c, 0x2d, 0xe8, 0xd3, 0x9a, 0x03, 0xf2, 0xfb, 0xba, 0xe2, ++ 0x26, 0xf6, 0x31, 0x18, 0xea, 0xc2, 0xfd, 0xc9, 0x92, 0x52, 0x83, 0x3f, ++ 0x40, 0xf9, 0x96, 0xdc, 0x40, 0x0d, 0x05, 0xa5, 0xcb, 0x7f, 0x03, 0xf4, ++ 0xa1, 0x54, 0x73, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xb5, 0x7d, 0x0b, 0x78, 0x54, 0xd5, ++ 0xb5, 0xf0, 0x3e, 0x73, 0xce, 0x3c, 0x92, 0x99, 0x24, 0x33, 0x79, 0x4e, ++ 0x1e, 0xc0, 0x09, 0xe1, 0x9d, 0x10, 0x87, 0x24, 0xbc, 0x1f, 0x4e, 0x9e, ++ 0x44, 0x88, 0x30, 0xbc, 0x04, 0x85, 0xea, 0x80, 0x28, 0xcf, 0x24, 0x88, ++ 0xd6, 0xdf, 0xb6, 0xde, 0xcb, 0xc4, 0x44, 0xf4, 0xa2, 0xb7, 0x45, 0xe9, ++ 0xaf, 0xf4, 0xd6, 0xdb, 0x7f, 0xb0, 0xa2, 0xa8, 0x20, 0x01, 0x82, 0x06, ++ 0x9a, 0xa4, 0x13, 0x40, 0xe4, 0x11, 0x34, 0x08, 0xa8, 0xa8, 0xad, 0x51, ++ 0x29, 0x62, 0x0b, 0xc9, 0x08, 0xea, 0xc5, 0xd6, 0x7b, 0xfd, 0xd7, 0x5a, ++ 0x7b, 0x9f, 0xcc, 0xcc, 0x49, 0x22, 0xd8, 0xde, 0x4e, 0x3e, 0xbf, 0xed, ++ 0x3e, 0x8f, 0xbd, 0xd7, 0x5e, 0xef, 0xb5, 0xf6, 0xda, 0x87, 0x2e, 0xc9, ++ 0x77, 0x13, 0x4b, 0x64, 0xcc, 0xb7, 0xd8, 0xc0, 0xb6, 0x4a, 0x8c, 0x7d, ++ 0x87, 0xbf, 0x1b, 0x43, 0xad, 0xd9, 0x6e, 0x60, 0x2c, 0x89, 0xb1, 0x96, ++ 0x38, 0x3b, 0xb5, 0x4e, 0xe7, 0x0c, 0xc7, 0xd2, 0x84, 0xf0, 0x7e, 0x85, ++ 0x63, 0x69, 0x3e, 0x63, 0xd5, 0xd6, 0xd8, 0x5c, 0x16, 0x87, 0x6d, 0x7f, ++ 0x3f, 0x8b, 0x85, 0xf1, 0x8a, 0x58, 0xea, 0xd2, 0x02, 0x68, 0x5b, 0xac, ++ 0xae, 0x5a, 0x95, 0xb1, 0x25, 0x46, 0xaf, 0xdd, 0x0e, 0xcf, 0x77, 0x4e, ++ 0xba, 0x3c, 0xa4, 0x8e, 0xe1, 0x2f, 0xd8, 0xdf, 0x33, 0x92, 0xb1, 0x2e, ++ 0x23, 0x6b, 0x94, 0xe2, 0xb0, 0x1f, 0x60, 0x6c, 0x0c, 0x43, 0x50, 0xf8, ++ 0xcf, 0xed, 0x56, 0xed, 0xd0, 0x97, 0xf0, 0xff, 0xe1, 0xfd, 0x44, 0x8b, ++ 0x2d, 0x20, 0xc3, 0xb8, 0xcc, 0xa3, 0x5c, 0xec, 0xb0, 0xf0, 0x47, 0xbe, ++ 0x1b, 0x28, 0x1e, 0x4d, 0x66, 0xcc, 0x28, 0x5e, 0x93, 0x9a, 0xde, 0xf8, ++ 0x46, 0xca, 0x65, 0x2c, 0x76, 0x72, 0x11, 0x63, 0x70, 0xdf, 0xca, 0x5c, ++ 0x8f, 0xb2, 0x2c, 0xb8, 0x31, 0x8c, 0xa9, 0x9e, 0x18, 0xc6, 0xa2, 0xd8, ++ 0x33, 0xf6, 0xf3, 0xd9, 0x8c, 0x19, 0xf0, 0x7d, 0x58, 0x47, 0x57, 0xf3, ++ 0xbb, 0xfd, 0x7c, 0x00, 0xc7, 0x1f, 0xfe, 0xe5, 0x4a, 0x0c, 0x83, 0xfb, ++ 0x1f, 0x29, 0xc1, 0x18, 0x57, 0x0e, 0x63, 0x17, 0x1e, 0x3c, 0x15, 0xe3, ++ 0xb6, 0xc1, 0xf5, 0x07, 0xe5, 0x72, 0x3f, 0xf4, 0x6f, 0x47, 0x40, 0xc6, ++ 0x87, 0xf0, 0x92, 0x6f, 0x87, 0x0b, 0xa3, 0x19, 0x7b, 0xc4, 0xee, 0x19, ++ 0x81, 0xeb, 0xba, 0x63, 0xdd, 0x7f, 0x8f, 0xf1, 0xda, 0x42, 0xf7, 0xd9, ++ 0x03, 0x70, 0x31, 0x95, 0xb1, 0x15, 0x7e, 0x19, 0xe7, 0xe6, 0xf0, 0xc2, ++ 0x7f, 0xab, 0xb6, 0x59, 0x19, 0xb3, 0x84, 0xfa, 0x95, 0xf5, 0x09, 0x11, ++ 0x7d, 0xc0, 0x18, 0xe1, 0xb5, 0xd2, 0xcc, 0xd6, 0xd4, 0xdb, 0x7a, 0xd2, ++ 0x63, 0x05, 0xd2, 0x03, 0xe6, 0x5d, 0xb1, 0x7d, 0x8b, 0x29, 0x5d, 0xc5, ++ 0xf9, 0xbd, 0x93, 0xec, 0xd0, 0xbf, 0xa0, 0xc0, 0xab, 0x80, 0xef, 0x0b, ++ 0x0d, 0x31, 0x7e, 0x5f, 0x66, 0x08, 0x9e, 0x25, 0xdb, 0x47, 0x99, 0xd2, ++ 0xe1, 0xd6, 0x47, 0x4d, 0x66, 0x16, 0x80, 0x75, 0x30, 0xa5, 0xdd, 0xc8, ++ 0x6c, 0x84, 0xb5, 0x0a, 0x09, 0xf0, 0xe6, 0x15, 0x78, 0xd3, 0xc3, 0x79, ++ 0xb8, 0xc5, 0x4a, 0xe3, 0xdd, 0xf5, 0x7f, 0x65, 0xbf, 0x19, 0x96, 0xba, ++ 0x18, 0xe6, 0x7a, 0x20, 0x1e, 0x9e, 0x6f, 0x5a, 0x51, 0xc1, 0x72, 0x7b, ++ 0xae, 0xe3, 0xae, 0x3f, 0xa8, 0x65, 0x29, 0x40, 0xbc, 0xbb, 0xfe, 0x4d, ++ 0x62, 0x3e, 0x95, 0x3f, 0xff, 0x60, 0x1e, 0x3c, 0xff, 0xc0, 0x23, 0x5f, ++ 0x20, 0xdd, 0xf4, 0xeb, 0x5c, 0xec, 0x33, 0x7e, 0xd2, 0x11, 0xb1, 0x6e, ++ 0x37, 0x63, 0x00, 0xcf, 0x32, 0x41, 0xef, 0x3b, 0x1f, 0x8d, 0xbc, 0xbf, ++ 0xac, 0xe9, 0x31, 0x1a, 0x67, 0x29, 0xf3, 0x9a, 0x90, 0x9e, 0x77, 0x6d, ++ 0xd4, 0xdf, 0xbf, 0xe9, 0x33, 0xe4, 0xbb, 0x65, 0x4c, 0x09, 0x5d, 0x07, ++ 0x3c, 0x5c, 0x3e, 0x92, 0x65, 0x45, 0x3c, 0xdc, 0x61, 0x8f, 0x49, 0x3c, ++ 0x0f, 0x20, 0x03, 0x8f, 0x8d, 0xfd, 0x0e, 0xde, 0xdf, 0x7d, 0x64, 0x60, ++ 0x9c, 0x37, 0xa7, 0x27, 0x7e, 0xb5, 0xf6, 0xe2, 0x3a, 0xe0, 0x6f, 0x33, ++ 0x63, 0x7f, 0x5e, 0x67, 0xa1, 0xf6, 0xc2, 0x3a, 0x46, 0xed, 0x08, 0xbb, ++ 0x4a, 0xf4, 0x59, 0xdd, 0x74, 0xf2, 0x7e, 0xe4, 0xaf, 0xaa, 0xc6, 0x5d, ++ 0x26, 0x1c, 0xa7, 0xc5, 0xff, 0xa7, 0x84, 0x09, 0xf0, 0x48, 0x61, 0xd3, ++ 0x37, 0x32, 0x32, 0x57, 0x21, 0x73, 0xdf, 0x7b, 0x0e, 0xf0, 0xf9, 0x23, ++ 0x26, 0xb3, 0xef, 0x00, 0x7f, 0xbb, 0x19, 0xe7, 0x9f, 0xf5, 0x46, 0xcf, ++ 0x3d, 0x48, 0xaf, 0x1b, 0xaf, 0x96, 0xd3, 0x7d, 0xfd, 0xfa, 0x17, 0x69, ++ 0xfc, 0x7f, 0x24, 0x9e, 0xf8, 0x67, 0x11, 0xae, 0x3b, 0x17, 0xaf, 0x2b, ++ 0x5f, 0xf6, 0xb6, 0xae, 0x9f, 0xe2, 0xba, 0x80, 0x9f, 0xd9, 0x58, 0x58, ++ 0x97, 0x7c, 0xfd, 0xeb, 0xd2, 0xd6, 0xa3, 0xad, 0x4f, 0xbb, 0x5f, 0x29, ++ 0x03, 0xdf, 0xf5, 0xf2, 0xbe, 0xc6, 0xef, 0x23, 0x84, 0x3e, 0x58, 0xfa, ++ 0xdc, 0xac, 0xf5, 0x69, 0x80, 0x8a, 0xda, 0xe6, 0xcf, 0xfa, 0x77, 0x10, ++ 0x3f, 0xb1, 0xd3, 0x28, 0xbf, 0x1a, 0x3f, 0x2d, 0x13, 0x74, 0xd2, 0xf3, ++ 0x8d, 0x46, 0xc7, 0x6e, 0xfe, 0x68, 0xfa, 0x77, 0x5a, 0x9f, 0x46, 0x3f, ++ 0xe0, 0x7f, 0xa7, 0xc1, 0x89, 0x6d, 0xc0, 0x69, 0x18, 0xd7, 0x93, 0x4f, ++ 0xf4, 0x7c, 0xa1, 0xe7, 0x83, 0x4e, 0x63, 0x47, 0x7f, 0x94, 0x5f, 0x3d, ++ 0x1f, 0x74, 0x4a, 0x6c, 0x41, 0x6f, 0xeb, 0xfa, 0x37, 0xfb, 0x40, 0x5a, ++ 0xd7, 0x52, 0xd5, 0x5d, 0x66, 0x87, 0xfb, 0x77, 0x31, 0xcf, 0x7a, 0x3b, ++ 0xad, 0x67, 0x23, 0x5d, 0xbf, 0xa0, 0x6c, 0x3c, 0xfc, 0x33, 0x94, 0xab, ++ 0xe7, 0x38, 0x5f, 0x77, 0xeb, 0x39, 0x33, 0x97, 0x37, 0x76, 0xdc, 0xe8, ++ 0x47, 0xbd, 0xb9, 0x36, 0x46, 0x4d, 0x71, 0xd8, 0x04, 0xfd, 0x80, 0xce, ++ 0x9d, 0xbb, 0xcc, 0x3e, 0x7c, 0x4e, 0x9b, 0xe7, 0xfc, 0x3a, 0xb7, 0x7b, ++ 0x90, 0x11, 0xf1, 0x5e, 0x4e, 0xed, 0x9f, 0xd7, 0x79, 0xdc, 0x83, 0x06, ++ 0x87, 0xee, 0xdf, 0xfd, 0xab, 0x2b, 0xb1, 0x2a, 0xbc, 0xdf, 0x35, 0x8c, ++ 0x95, 0xa3, 0xdc, 0x77, 0xc6, 0x44, 0xc2, 0xbb, 0xcf, 0x2e, 0x13, 0x3c, ++ 0xfb, 0x90, 0x0e, 0xc8, 0x7f, 0x4a, 0xfb, 0xff, 0x7c, 0x80, 0x3a, 0xe9, ++ 0xb9, 0xf6, 0x31, 0xa8, 0x47, 0xcf, 0x7f, 0xfb, 0x5f, 0xb1, 0x1e, 0x78, ++ 0xbe, 0xeb, 0x5b, 0x73, 0x79, 0x6f, 0xeb, 0x3c, 0x2d, 0xe8, 0x07, 0xea, ++ 0xe5, 0xb4, 0x13, 0xf8, 0xec, 0x76, 0x21, 0x67, 0xb7, 0x37, 0x55, 0x12, ++ 0x5d, 0x96, 0x3c, 0x33, 0xcb, 0x84, 0xfc, 0xcc, 0x1e, 0xe0, 0xf8, 0xb4, ++ 0xc0, 0x1f, 0xea, 0xd7, 0xb6, 0xa8, 0xd8, 0x67, 0x71, 0x1d, 0x8b, 0x1b, ++ 0x24, 0xd2, 0x23, 0x7a, 0x7a, 0xdc, 0xe5, 0x9a, 0xfa, 0x39, 0xea, 0xdb, ++ 0x3b, 0xfd, 0x85, 0xf4, 0x7e, 0x0f, 0xfa, 0xb0, 0xc7, 0x89, 0xbe, 0x77, ++ 0x21, 0x3d, 0x86, 0x85, 0xe8, 0x31, 0xd6, 0xa1, 0x72, 0x78, 0x54, 0xf8, ++ 0x03, 0xbe, 0xb9, 0x43, 0xf0, 0xcd, 0x79, 0x65, 0x8d, 0xc9, 0x00, 0x7a, ++ 0xe4, 0xfc, 0x33, 0x80, 0x6f, 0x00, 0x79, 0x95, 0xc2, 0xdc, 0xbd, 0xe9, ++ 0xc1, 0xfe, 0x0e, 0xce, 0x87, 0x7d, 0xad, 0x47, 0xbf, 0x8e, 0xbe, 0xe0, ++ 0x5f, 0xf6, 0x5c, 0xcd, 0xfa, 0x34, 0x86, 0xeb, 0x1f, 0x65, 0x4a, 0xeb, ++ 0x45, 0xef, 0x68, 0xeb, 0xbf, 0x8b, 0xb9, 0x62, 0x49, 0xef, 0x88, 0xf5, ++ 0xb2, 0x8e, 0x1b, 0x49, 0x5e, 0xab, 0x2d, 0x7c, 0x5e, 0x6d, 0x9d, 0x2b, ++ 0x9a, 0xee, 0x9c, 0x81, 0x7c, 0x51, 0xb5, 0x19, 0xe8, 0x95, 0xd9, 0x73, ++ 0xdd, 0xa8, 0x77, 0x17, 0xf7, 0x02, 0x6f, 0x99, 0x7c, 0xd1, 0x68, 0x81, ++ 0xf7, 0xba, 0x1e, 0x90, 0x5c, 0xa8, 0x6f, 0xfb, 0xa2, 0x83, 0xa6, 0x27, ++ 0xee, 0x12, 0xf8, 0x5a, 0xb9, 0x6d, 0xf1, 0x0c, 0x34, 0x9a, 0x8b, 0x61, ++ 0x3e, 0x39, 0x13, 0xf5, 0xd1, 0x17, 0x6f, 0xc6, 0x24, 0xa2, 0x5c, 0x41, ++ 0x5f, 0xfa, 0x1e, 0x7a, 0x35, 0xc9, 0x1f, 0x9b, 0x71, 0x1d, 0x8c, 0xe3, ++ 0x7b, 0x09, 0xe0, 0x7b, 0x83, 0x74, 0xfd, 0xf4, 0x5b, 0xb6, 0xb9, 0xd0, ++ 0x3d, 0x28, 0xec, 0xb9, 0x15, 0xfe, 0x9b, 0xdc, 0x83, 0xc2, 0xf5, 0x99, ++ 0x8e, 0xae, 0x6c, 0xdb, 0xac, 0xd0, 0xf3, 0x64, 0xb7, 0xdd, 0x26, 0xb4, ++ 0xc7, 0xf1, 0x0e, 0xa1, 0xbf, 0x84, 0x5e, 0xee, 0x5b, 0xbe, 0x60, 0xe1, ++ 0x00, 0xe7, 0xda, 0x1d, 0x0e, 0xb2, 0x6f, 0x6c, 0x8d, 0x83, 0xf4, 0x63, ++ 0x75, 0xd3, 0x16, 0x53, 0xb8, 0xdd, 0xd5, 0xe4, 0x4b, 0x93, 0xb7, 0xb1, ++ 0x0e, 0x3b, 0xf1, 0x59, 0x55, 0xe3, 0x13, 0xf4, 0x1c, 0xe8, 0x5f, 0xd5, ++ 0x01, 0xfd, 0x4a, 0x4b, 0xc7, 0xcf, 0x6f, 0x55, 0xc3, 0xf0, 0x39, 0x4e, ++ 0xd0, 0x51, 0xae, 0x30, 0xa1, 0xfe, 0xee, 0x4b, 0x7f, 0x82, 0xbe, 0xf9, ++ 0xb2, 0x23, 0x6c, 0x9d, 0x23, 0x1c, 0xc2, 0xae, 0x08, 0xfd, 0x7b, 0x2d, ++ 0xfd, 0xa0, 0xc1, 0xad, 0x1f, 0x57, 0xd3, 0x07, 0x1a, 0xdc, 0x1a, 0xdf, ++ 0x6b, 0xeb, 0xd1, 0xf3, 0x7d, 0x5f, 0xf0, 0xe9, 0xe9, 0xc2, 0x98, 0x9f, ++ 0xfb, 0x0b, 0x3a, 0xfa, 0xac, 0x42, 0x7a, 0x84, 0xf5, 0x11, 0x5e, 0x05, ++ 0xf0, 0xdb, 0xd6, 0x6c, 0xf5, 0x3f, 0x04, 0xf0, 0xb6, 0x49, 0x1c, 0x7e, ++ 0x5f, 0x73, 0x14, 0xc1, 0xdf, 0xe9, 0x2c, 0x76, 0x9f, 0x03, 0x3f, 0xaf, ++ 0x2a, 0x75, 0x21, 0xb5, 0x27, 0xf0, 0xc5, 0x54, 0xf4, 0xeb, 0x3c, 0xd3, ++ 0x10, 0x9f, 0x9a, 0x3f, 0xc7, 0x0a, 0x12, 0x22, 0xfc, 0x24, 0x7d, 0xab, ++ 0xf9, 0x37, 0x79, 0xc2, 0x9f, 0xda, 0x1b, 0xe5, 0xce, 0x07, 0x13, 0x09, ++ 0x3f, 0x4f, 0x02, 0xf2, 0xc3, 0x94, 0x9a, 0x8e, 0x39, 0x16, 0x20, 0xd9, ++ 0xad, 0x8e, 0xed, 0xe5, 0x0a, 0x8c, 0x3f, 0xe5, 0x89, 0x8e, 0x39, 0x51, ++ 0xd0, 0x5f, 0xe8, 0xd8, 0xc1, 0xfb, 0x5b, 0x3b, 0x4e, 0x59, 0x5c, 0x8c, ++ 0xd5, 0xb0, 0x57, 0xca, 0x4b, 0xa0, 0x7f, 0x3b, 0xa0, 0x13, 0xc7, 0xbb, ++ 0x56, 0x5b, 0x60, 0xf6, 0x2c, 0x44, 0xf9, 0x5d, 0x0d, 0x7e, 0x92, 0x05, ++ 0xec, 0xd1, 0xea, 0xd3, 0x43, 0x0e, 0xa1, 0xdc, 0xad, 0x6e, 0xaf, 0x28, ++ 0x97, 0xc0, 0xee, 0xac, 0x06, 0x83, 0x23, 0x81, 0x3d, 0xaa, 0x74, 0xc7, ++ 0x06, 0xac, 0xb9, 0xd4, 0x67, 0x13, 0xe0, 0xb9, 0xe7, 0xed, 0xde, 0x65, ++ 0xc4, 0x2f, 0x57, 0xeb, 0xc8, 0x6e, 0xad, 0x3e, 0xad, 0x70, 0xb9, 0x39, ++ 0x92, 0x48, 0xeb, 0x57, 0x00, 0xf6, 0x28, 0x78, 0xaf, 0x2e, 0x1a, 0xfc, ++ 0x55, 0xc0, 0x57, 0x5d, 0xbc, 0xc5, 0x55, 0x9b, 0x49, 0xd7, 0x7d, 0x51, ++ 0xf1, 0xd8, 0x77, 0xab, 0x6a, 0xd8, 0x75, 0x8d, 0x1e, 0xf8, 0x1e, 0xc2, ++ 0x51, 0x67, 0x60, 0x6e, 0x07, 0xb4, 0xad, 0x47, 0x87, 0xc4, 0x75, 0x7c, ++ 0x8f, 0xdd, 0x6e, 0x5d, 0xc7, 0x2a, 0x14, 0xe0, 0x83, 0x83, 0xeb, 0x2c, ++ 0xd4, 0xea, 0xef, 0x17, 0x9a, 0xec, 0x83, 0xd0, 0xee, 0x15, 0x1a, 0x98, ++ 0xb7, 0x37, 0x7d, 0xf9, 0xa4, 0x83, 0xfb, 0x8d, 0xc0, 0xe4, 0xe9, 0x48, ++ 0xe7, 0xaa, 0x23, 0x26, 0x92, 0x77, 0xfc, 0xa1, 0x1f, 0x58, 0x29, 0xf4, ++ 0x51, 0x15, 0x10, 0x28, 0x0e, 0xe0, 0xa9, 0x3c, 0xcd, 0x02, 0xd1, 0xb1, ++ 0xf8, 0x5c, 0xd9, 0xe7, 0x0a, 0xb6, 0x0d, 0x12, 0xfb, 0x24, 0xc2, 0x5f, ++ 0x61, 0xa1, 0xbe, 0xdc, 0x37, 0xdc, 0xd7, 0xdb, 0x56, 0xe1, 0x78, 0x83, ++ 0xc3, 0xf9, 0x84, 0xe3, 0xa9, 0x48, 0x91, 0x2a, 0x94, 0xb0, 0x79, 0x4b, ++ 0x6c, 0x51, 0x11, 0x7d, 0x39, 0xc5, 0x30, 0x0c, 0xd7, 0xc3, 0xe4, 0x68, ++ 0xd7, 0x56, 0xc0, 0xaf, 0x9c, 0x6e, 0x58, 0xb3, 0x1b, 0xd6, 0x2f, 0x0f, ++ 0x80, 0x16, 0xf0, 0xa1, 0xd8, 0x5d, 0xf2, 0x62, 0x68, 0x37, 0x16, 0x4f, ++ 0x91, 0x97, 0x40, 0x5b, 0x6b, 0xe4, 0x76, 0xb5, 0xd6, 0xc0, 0x96, 0x87, ++ 0xe3, 0xe9, 0x05, 0x81, 0x1f, 0xad, 0xfd, 0xc0, 0xe1, 0xd9, 0x8a, 0x74, ++ 0xbf, 0xf4, 0x56, 0xfb, 0x18, 0x2b, 0xe9, 0xab, 0x0c, 0x3b, 0xc9, 0xb9, ++ 0x58, 0x6f, 0xad, 0xe4, 0x0a, 0x50, 0xdc, 0xd4, 0xca, 0x5c, 0x5b, 0xe1, ++ 0x5a, 0x9d, 0xec, 0x61, 0x9c, 0x8f, 0xeb, 0x19, 0xf2, 0xf1, 0x1b, 0x62, ++ 0x1c, 0x97, 0xd9, 0xb0, 0x47, 0x05, 0x7e, 0x6d, 0x74, 0x7c, 0x40, 0xfc, ++ 0xeb, 0x8a, 0x33, 0xdc, 0x9b, 0x09, 0xfd, 0xc0, 0x13, 0x1f, 0xf1, 0x7e, ++ 0xba, 0xe1, 0x4a, 0x26, 0xf0, 0xf7, 0x81, 0x27, 0x3a, 0xca, 0x15, 0x90, ++ 0x07, 0x57, 0xb6, 0xe1, 0xca, 0x40, 0xe8, 0x1f, 0x7a, 0xe2, 0x63, 0x7e, ++ 0x7f, 0x22, 0x0c, 0x09, 0x06, 0xea, 0xf0, 0x13, 0x9f, 0x94, 0xfb, 0x6c, ++ 0x38, 0x2e, 0xd7, 0x67, 0x6c, 0xbb, 0x3b, 0x1b, 0xe7, 0x51, 0x0c, 0x12, ++ 0xc9, 0xa9, 0x72, 0xc0, 0xe4, 0xaf, 0x85, 0xff, 0xad, 0x8b, 0xe5, 0xfc, ++ 0x54, 0x07, 0x3c, 0x82, 0xfc, 0xf7, 0x86, 0xb0, 0xb3, 0xeb, 0x6b, 0x8a, ++ 0x5e, 0xb6, 0x02, 0xff, 0x2b, 0x45, 0x6e, 0x75, 0x0d, 0x8c, 0xe3, 0xc7, ++ 0x80, 0x69, 0xf4, 0xdf, 0xdf, 0x6a, 0x78, 0x94, 0xad, 0x06, 0x8a, 0x53, ++ 0xb0, 0x45, 0x7c, 0xbf, 0x29, 0xd6, 0xad, 0xd1, 0x81, 0x35, 0xb8, 0xb3, ++ 0x67, 0xa1, 0x5e, 0xa8, 0x77, 0x67, 0xcf, 0x8e, 0x41, 0xbc, 0x7a, 0x4f, ++ 0x22, 0x5e, 0xf3, 0xdb, 0xda, 0xa7, 0xa0, 0x3e, 0x6e, 0x78, 0xfb, 0xfd, ++ 0x31, 0xe8, 0xaf, 0x22, 0xbd, 0x70, 0x9c, 0xfc, 0x36, 0x88, 0xdd, 0x60, ++ 0x3d, 0x97, 0x5e, 0xeb, 0xb7, 0x45, 0x0e, 0x8b, 0x47, 0x3f, 0x70, 0x14, ++ 0xbe, 0xe3, 0x00, 0x39, 0x96, 0xdc, 0xdc, 0x9f, 0x94, 0x54, 0x3b, 0x5b, ++ 0x04, 0x72, 0x57, 0xeb, 0x66, 0xaa, 0x09, 0xd6, 0x95, 0xa2, 0x8b, 0xeb, ++ 0x1a, 0x18, 0xd7, 0x2f, 0xcf, 0xdb, 0x3d, 0x7f, 0xc4, 0xf7, 0x58, 0x46, ++ 0x80, 0xec, 0x4d, 0xa1, 0xc3, 0xfb, 0x31, 0xce, 0xaf, 0x8f, 0x57, 0x59, ++ 0x7b, 0x7c, 0xaf, 0x7a, 0x59, 0xaf, 0xb7, 0x4c, 0xb9, 0x0f, 0xc8, 0xe8, ++ 0xe7, 0xc4, 0xa7, 0x37, 0xbe, 0xb7, 0x04, 0xf5, 0xfb, 0xef, 0xcd, 0xae, ++ 0xc1, 0x2a, 0xc2, 0xe5, 0x66, 0x0f, 0x00, 0x3c, 0x3b, 0x0d, 0x4c, 0x61, ++ 0xf1, 0xc4, 0x26, 0xc3, 0x94, 0x02, 0x8c, 0x3f, 0xa3, 0x5d, 0x1b, 0x50, ++ 0xee, 0x5d, 0xcc, 0xe9, 0x03, 0x39, 0xc3, 0x30, 0x8d, 0x80, 0x84, 0x5f, ++ 0xe2, 0x98, 0xb0, 0xb8, 0x55, 0xac, 0x07, 0xde, 0x2f, 0x61, 0xd0, 0x8e, ++ 0x45, 0xf8, 0x6e, 0xa0, 0xf5, 0xc9, 0xc8, 0x57, 0xa3, 0x98, 0x47, 0x46, ++ 0xfd, 0x35, 0x86, 0xf9, 0xad, 0xd8, 0x76, 0x35, 0xbf, 0xe6, 0x44, 0xbc, ++ 0x3d, 0x19, 0xc5, 0xee, 0x40, 0xbf, 0xcf, 0xb2, 0x8d, 0xb9, 0xfd, 0x61, ++ 0xfa, 0x63, 0x40, 0x3c, 0xf7, 0xf7, 0x26, 0x25, 0x18, 0x09, 0xee, 0x68, ++ 0x63, 0xfd, 0x6c, 0xe4, 0xd7, 0xe8, 0x2f, 0x98, 0x1d, 0xfd, 0xaa, 0xae, ++ 0xff, 0x34, 0x29, 0x38, 0x3e, 0x08, 0xc8, 0x74, 0xbc, 0xee, 0x3a, 0x6c, ++ 0x60, 0x08, 0xe7, 0x0b, 0x46, 0xbf, 0x3d, 0x0e, 0xfa, 0xc1, 0xe1, 0x8a, ++ 0xfa, 0x2c, 0x0b, 0x8d, 0xd7, 0x25, 0xe8, 0xad, 0x8d, 0xfb, 0xa4, 0x49, ++ 0x1d, 0xee, 0x40, 0x7d, 0x93, 0xc0, 0xfb, 0x2f, 0x14, 0x72, 0xfb, 0x1c, ++ 0xfc, 0xdc, 0xe4, 0x7f, 0x36, 0x13, 0xf1, 0x63, 0x59, 0xe3, 0x0f, 0x93, ++ 0x2f, 0x67, 0x3c, 0xf7, 0x5b, 0xbd, 0x49, 0x45, 0xf1, 0xf1, 0xd0, 0xd6, ++ 0x37, 0x47, 0x33, 0x9c, 0x7f, 0x6c, 0x4b, 0xb4, 0x01, 0xe9, 0xf0, 0xf2, ++ 0xf6, 0xbc, 0x28, 0xe4, 0x87, 0x9d, 0x88, 0x1b, 0x58, 0x7f, 0xbc, 0xd9, ++ 0x7e, 0x0f, 0x8e, 0x17, 0x7f, 0x05, 0xe0, 0xcd, 0xa4, 0xeb, 0x6e, 0xc2, ++ 0xab, 0xa2, 0x8e, 0x8a, 0x03, 0xbc, 0x4e, 0x98, 0x66, 0x53, 0x37, 0x00, ++ 0xde, 0x5f, 0x88, 0xaa, 0x9f, 0x86, 0xfc, 0x1f, 0xdc, 0x61, 0x60, 0xcf, ++ 0xc2, 0x14, 0x3b, 0x4d, 0xae, 0x59, 0xd8, 0xdf, 0x79, 0x59, 0xb5, 0xa3, ++ 0xbe, 0x7d, 0x21, 0xb3, 0x3e, 0x9a, 0xd6, 0xb3, 0xc3, 0x40, 0xeb, 0xd9, ++ 0x19, 0x1d, 0x1c, 0xb1, 0x16, 0xe0, 0xde, 0x30, 0x4c, 0x29, 0x47, 0xf8, ++ 0x14, 0x2b, 0x53, 0x50, 0x0f, 0x2b, 0x86, 0x22, 0xf5, 0x1e, 0xb8, 0x3e, ++ 0x34, 0x9e, 0xdb, 0x57, 0x4d, 0x2f, 0x2f, 0x88, 0xe7, 0xf2, 0xf3, 0xa4, ++ 0x04, 0xf3, 0xe7, 0xe1, 0x73, 0x85, 0x24, 0x3f, 0xa5, 0xb2, 0x8d, 0xe4, ++ 0xae, 0x2b, 0xc8, 0xfc, 0x66, 0x98, 0x27, 0x69, 0x6e, 0xbb, 0x8c, 0xf4, ++ 0x88, 0x9e, 0x05, 0xac, 0x84, 0x7c, 0xaf, 0x04, 0x64, 0x06, 0xfd, 0x49, ++ 0x1e, 0x46, 0x49, 0x8d, 0x49, 0x36, 0xa3, 0x5f, 0x25, 0x7d, 0xeb, 0xb6, ++ 0x2d, 0x06, 0xba, 0x4f, 0x11, 0xfa, 0x76, 0xca, 0x87, 0xab, 0x2b, 0x78, ++ 0xdc, 0xe3, 0x3a, 0x3d, 0x11, 0xc6, 0x3b, 0x68, 0x33, 0x32, 0x5c, 0xd7, ++ 0x64, 0xd6, 0x21, 0xa3, 0x3f, 0x38, 0xf9, 0x2a, 0x73, 0x05, 0x90, 0x7f, ++ 0xae, 0xf2, 0x78, 0xc6, 0x0e, 0x7f, 0xe8, 0x3f, 0x3d, 0xaf, 0xf3, 0x07, ++ 0x4b, 0xc5, 0x78, 0xee, 0xa0, 0xbd, 0x04, 0x2f, 0x17, 0xb2, 0x48, 0x3f, ++ 0xae, 0x74, 0x73, 0xd9, 0xe7, 0x12, 0xcd, 0xa3, 0x2a, 0x68, 0xa7, 0x8b, ++ 0x2d, 0xba, 0xfb, 0xe8, 0xe7, 0xc5, 0x62, 0x1b, 0x19, 0x37, 0x95, 0xc5, ++ 0x0b, 0xff, 0xa6, 0x3f, 0xeb, 0xff, 0x1d, 0xe9, 0x37, 0xe0, 0x5e, 0x98, ++ 0xef, 0x3e, 0x3b, 0x9f, 0xaf, 0x54, 0xce, 0xf9, 0x15, 0xae, 0xaf, 0xab, ++ 0xdc, 0xe4, 0x42, 0x3c, 0xec, 0xb2, 0xb9, 0xdf, 0x9d, 0x88, 0x7a, 0xb1, ++ 0xdd, 0xc8, 0xb6, 0xb2, 0xbe, 0xe5, 0xe9, 0x79, 0x88, 0x3f, 0xfd, 0xe0, ++ 0x73, 0x0c, 0xbb, 0x6a, 0x65, 0xfe, 0x7c, 0xe2, 0x47, 0x1b, 0xae, 0x67, ++ 0xc4, 0xe6, 0x8d, 0xbe, 0x28, 0x58, 0xf7, 0x88, 0x41, 0x7c, 0x7c, 0xe4, ++ 0x3b, 0xd4, 0x23, 0x43, 0xff, 0x33, 0x31, 0x01, 0xf5, 0xf8, 0x55, 0xa1, ++ 0x5f, 0xb4, 0x56, 0xe3, 0x33, 0xe4, 0x27, 0x7b, 0x1c, 0xe7, 0x27, 0xfb, ++ 0x0d, 0x21, 0x39, 0xbc, 0x33, 0x3e, 0x93, 0x9e, 0xd3, 0xe4, 0x0a, 0xf9, ++ 0x0c, 0xc7, 0xd9, 0x6f, 0xf4, 0x2f, 0xf4, 0xf4, 0x62, 0x27, 0x81, 0x3f, ++ 0xef, 0x44, 0xfe, 0xdc, 0x65, 0x63, 0x14, 0x47, 0x3d, 0x96, 0x6a, 0x59, ++ 0x80, 0x72, 0xa5, 0xcd, 0xf3, 0xbc, 0xe0, 0x63, 0x7d, 0xbb, 0xbe, 0x66, ++ 0x6d, 0xab, 0x11, 0xd7, 0xfd, 0x15, 0xd8, 0x03, 0x80, 0xbb, 0x24, 0xed, ++ 0xaa, 0x29, 0xdc, 0x9e, 0xef, 0x49, 0xe2, 0x7c, 0x55, 0x2a, 0x7f, 0x4b, ++ 0xfe, 0x76, 0x67, 0x93, 0xc4, 0xd0, 0xcf, 0x4f, 0x6e, 0xe2, 0xfa, 0x3b, ++ 0x9c, 0x3f, 0x52, 0x7b, 0xe7, 0x8f, 0x5f, 0x22, 0x5e, 0xaf, 0xc5, 0x1f, ++ 0x5a, 0xbc, 0xb0, 0xfb, 0x87, 0xf2, 0xc7, 0x91, 0xbf, 0x8f, 0x3f, 0x36, ++ 0x5c, 0x93, 0x3f, 0xbe, 0x8d, 0x45, 0x3c, 0xdc, 0xd7, 0x5c, 0x9c, 0xc2, ++ 0xbe, 0xc7, 0xbf, 0x69, 0x14, 0xfc, 0xd0, 0xd7, 0xfd, 0xf1, 0x56, 0xae, ++ 0xe7, 0xf4, 0xd7, 0x5f, 0x11, 0x78, 0xdd, 0x67, 0xda, 0x38, 0x3d, 0x17, ++ 0xf5, 0xc0, 0xcd, 0x06, 0x17, 0xca, 0x39, 0x50, 0x3f, 0x7d, 0x36, 0xac, ++ 0x63, 0x5f, 0x34, 0x7f, 0x8f, 0x29, 0x6b, 0xb2, 0xb0, 0xbf, 0x4b, 0xe1, ++ 0x7a, 0x65, 0x57, 0x93, 0x99, 0xf4, 0xca, 0x2e, 0x9b, 0xd7, 0x4b, 0x76, ++ 0xdc, 0x69, 0x61, 0xe8, 0x3f, 0x30, 0xc5, 0xdb, 0xf1, 0x33, 0xd4, 0x87, ++ 0x69, 0x16, 0x75, 0x43, 0x18, 0xff, 0x2e, 0x8d, 0xe7, 0xfc, 0x56, 0x6f, ++ 0x0c, 0x8c, 0xff, 0x0c, 0xfd, 0xe2, 0xa3, 0x9c, 0xce, 0xe3, 0x6e, 0xce, ++ 0x93, 0x4d, 0xf0, 0x5c, 0xea, 0x52, 0x2e, 0xe7, 0x05, 0x17, 0x4c, 0x5b, ++ 0x30, 0x0e, 0x2b, 0x4d, 0x28, 0xdc, 0x81, 0x7c, 0x74, 0x02, 0x75, 0x16, ++ 0xb4, 0xd5, 0xe7, 0xe0, 0x29, 0x40, 0x7c, 0xd5, 0x39, 0x13, 0xe9, 0xbb, ++ 0xd7, 0x5a, 0x4e, 0x96, 0x61, 0x7e, 0x11, 0xfc, 0x1e, 0x37, 0xf2, 0xd9, ++ 0xd8, 0xfd, 0x27, 0xcb, 0x8a, 0x72, 0xf0, 0x79, 0xae, 0x4f, 0xf7, 0x8a, ++ 0x56, 0xeb, 0x8f, 0xc7, 0x35, 0xc5, 0xb3, 0xee, 0x78, 0xd7, 0x23, 0xec, ++ 0xc6, 0x78, 0xc6, 0xf5, 0x92, 0x07, 0xf9, 0x24, 0x37, 0xd4, 0x67, 0x6e, ++ 0x23, 0xc5, 0x6b, 0x1a, 0x3f, 0xd4, 0x47, 0x03, 0x3f, 0x80, 0x5c, 0xcc, ++ 0x67, 0xaa, 0x31, 0x16, 0x86, 0x9c, 0x73, 0xce, 0xf3, 0x30, 0x98, 0x43, ++ 0x36, 0xa7, 0x3c, 0x92, 0xce, 0xf3, 0x03, 0xd3, 0x28, 0x3e, 0x9c, 0x7b, ++ 0xba, 0xfd, 0x55, 0xd0, 0xcc, 0x6c, 0x9e, 0x47, 0x77, 0x5f, 0xf0, 0xc1, ++ 0x7c, 0x1d, 0x1f, 0x80, 0x9d, 0x3d, 0x1e, 0x8f, 0xfe, 0xd2, 0xf1, 0x80, ++ 0xc9, 0x80, 0xf3, 0x99, 0xd6, 0x64, 0x73, 0x7f, 0x68, 0x4d, 0x16, 0xf2, ++ 0x93, 0x26, 0x4f, 0xf4, 0x03, 0x3c, 0xd5, 0xff, 0x61, 0xd8, 0xb3, 0x1b, ++ 0xc2, 0xec, 0x7b, 0x6c, 0x02, 0x97, 0xa3, 0xc7, 0x5d, 0x0a, 0xdd, 0xf7, ++ 0x75, 0x98, 0xfc, 0x83, 0xe1, 0xd2, 0xbf, 0x33, 0xfe, 0x5e, 0xbd, 0xb0, ++ 0x3f, 0x9f, 0xa3, 0x3c, 0x63, 0xfc, 0x70, 0xdf, 0x2b, 0x0b, 0xd1, 0x8e, ++ 0xe6, 0x2f, 0x77, 0x1f, 0x44, 0xfc, 0x4f, 0x4f, 0x92, 0xe9, 0xfa, 0x2f, ++ 0x58, 0xc0, 0x92, 0x85, 0xf4, 0x71, 0x29, 0xe4, 0x97, 0xd5, 0x1b, 0xd5, ++ 0xe2, 0xcf, 0xa4, 0xd0, 0x73, 0x4c, 0xf1, 0x0c, 0xb3, 0xc1, 0xfd, 0xfd, ++ 0x49, 0xd1, 0xf9, 0x38, 0x7f, 0x69, 0x82, 0xf7, 0x22, 0xd2, 0x89, 0x29, ++ 0xc1, 0x23, 0xf8, 0xde, 0xd8, 0x09, 0x79, 0xf9, 0x28, 0x5f, 0xb6, 0x51, ++ 0x75, 0x09, 0x68, 0x8f, 0x34, 0xb8, 0x01, 0xae, 0xf2, 0xad, 0xb6, 0x10, ++ 0x1c, 0x1a, 0x5c, 0x67, 0x05, 0x5f, 0x94, 0x26, 0x2c, 0xbe, 0x88, 0xeb, ++ 0xc7, 0xf7, 0x50, 0xbf, 0x34, 0x7e, 0x7c, 0xde, 0x82, 0xef, 0x6b, 0x74, ++ 0xaf, 0x6f, 0xfe, 0x82, 0xd3, 0x3b, 0x8c, 0xfe, 0x48, 0xef, 0x10, 0xfd, ++ 0xa5, 0x3b, 0xb0, 0xaf, 0xe1, 0xe1, 0x2b, 0xa1, 0x57, 0xb4, 0xfe, 0x3f, ++ 0x4a, 0x7f, 0x2d, 0x7f, 0x70, 0x4d, 0xfa, 0x63, 0x7e, 0x20, 0xf6, 0xef, ++ 0xa2, 0xbf, 0x35, 0x21, 0x29, 0x44, 0x7f, 0xf0, 0xb3, 0xe2, 0xb1, 0xaf, ++ 0xf7, 0xb3, 0xea, 0x4d, 0xe0, 0x77, 0xe7, 0xf4, 0xbc, 0x5e, 0xe8, 0x28, ++ 0xa4, 0xe7, 0x5d, 0x26, 0x58, 0x21, 0xfa, 0x55, 0x2d, 0x10, 0x77, 0xa2, ++ 0x3c, 0x7a, 0x1d, 0xb4, 0x2f, 0xb0, 0xc7, 0xce, 0xe7, 0xea, 0xfa, 0xc3, ++ 0xf9, 0xfe, 0xe0, 0x22, 0xb2, 0xc1, 0x09, 0xf1, 0x84, 0xf7, 0x6a, 0x53, ++ 0x70, 0x08, 0xfa, 0x21, 0xa3, 0x02, 0x12, 0xf9, 0x85, 0xa3, 0x40, 0xf0, ++ 0x17, 0x91, 0xff, 0x95, 0x41, 0x7a, 0xcf, 0x25, 0xf0, 0xc4, 0xce, 0x4b, ++ 0xd2, 0xf9, 0x61, 0xdc, 0x45, 0xff, 0x2e, 0x1d, 0xfd, 0xc3, 0x40, 0x02, ++ 0xfa, 0x51, 0xa3, 0xcc, 0x15, 0x01, 0xe4, 0xf7, 0xdd, 0xd6, 0x29, 0xe9, ++ 0xe8, 0xd7, 0xe5, 0x59, 0x27, 0x65, 0x21, 0x5f, 0xbd, 0x3a, 0xec, 0xbe, ++ 0xe3, 0x68, 0x82, 0x5e, 0x4d, 0x5b, 0xbe, 0xe7, 0x39, 0x35, 0xe4, 0xff, ++ 0x68, 0xfa, 0xed, 0xa0, 0x18, 0x56, 0x9b, 0xbf, 0x20, 0x81, 0xeb, 0xa1, ++ 0x1b, 0x41, 0xdd, 0xa2, 0x1f, 0x88, 0x2e, 0x63, 0x38, 0x1c, 0x9a, 0x3e, ++ 0x47, 0xf2, 0x20, 0x1c, 0x52, 0x60, 0xbe, 0xe1, 0x3b, 0x2b, 0xe9, 0xe5, ++ 0xa6, 0x0e, 0xa0, 0xc7, 0x8d, 0x08, 0x07, 0xe0, 0xa1, 0x55, 0x62, 0x0d, ++ 0xa8, 0xcf, 0x0b, 0x0d, 0xee, 0xc4, 0x62, 0xf4, 0xd3, 0x92, 0x02, 0x0a, ++ 0xf7, 0xf7, 0xbe, 0xe9, 0x8f, 0xf9, 0xc1, 0x8a, 0xa6, 0x37, 0xde, 0x43, ++ 0x78, 0x2b, 0x70, 0x3f, 0x04, 0xe3, 0x50, 0x97, 0xf1, 0x62, 0x77, 0x3e, ++ 0x62, 0x60, 0x4f, 0x3f, 0x58, 0xf3, 0x57, 0xb4, 0xb8, 0x40, 0xf3, 0x67, ++ 0xb4, 0xf8, 0x13, 0xfd, 0x1e, 0xbc, 0x3f, 0x40, 0x5c, 0xb7, 0x9b, 0x01, ++ 0x40, 0xb4, 0x47, 0x01, 0x8b, 0xbf, 0x06, 0xe6, 0x7f, 0xf2, 0xb2, 0x3a, ++ 0xdc, 0x2d, 0xe4, 0x56, 0x81, 0x75, 0x54, 0x88, 0x75, 0xcc, 0x64, 0xed, ++ 0x04, 0x17, 0xfb, 0xf6, 0xbb, 0xef, 0x26, 0x01, 0x7d, 0x66, 0x08, 0x7c, ++ 0x54, 0x1c, 0x81, 0xb8, 0x31, 0x17, 0xef, 0x33, 0x76, 0x33, 0xe0, 0xe1, ++ 0x66, 0x85, 0xc7, 0x93, 0x37, 0xbb, 0x20, 0x7e, 0x0c, 0xe3, 0xa3, 0x99, ++ 0xe3, 0x22, 0xfb, 0xf8, 0x9b, 0x92, 0x1c, 0x1a, 0xe7, 0x5a, 0xcf, 0xeb, ++ 0xed, 0xc0, 0x44, 0xdd, 0xfe, 0xcc, 0x3f, 0xda, 0x1e, 0x01, 0x7b, 0xf4, ++ 0x09, 0xb8, 0xce, 0xc7, 0xd6, 0xf1, 0xb8, 0x74, 0xc2, 0x40, 0xd9, 0xa7, ++ 0xa0, 0xe1, 0x1c, 0x97, 0x69, 0x40, 0x7e, 0xac, 0x16, 0xf6, 0x0d, 0xc2, ++ 0xe8, 0x5e, 0xed, 0xd2, 0x4b, 0xc2, 0x2f, 0x9e, 0x60, 0xe8, 0xc8, 0x75, ++ 0x01, 0x7e, 0x5b, 0xf7, 0xff, 0x8d, 0xec, 0xe0, 0x81, 0xfd, 0x7f, 0x7b, ++ 0x07, 0xfd, 0xbc, 0xf1, 0x9f, 0x2b, 0xcc, 0x0c, 0xef, 0x4f, 0xf8, 0xbc, ++ 0x20, 0x0e, 0xf5, 0x04, 0x1b, 0xa7, 0x12, 0x5f, 0x69, 0xe3, 0x56, 0xff, ++ 0xa9, 0xc1, 0xca, 0xf8, 0x75, 0xe2, 0xff, 0x2a, 0xb1, 0xf6, 0xc3, 0x00, ++ 0x8f, 0x7b, 0x28, 0xc2, 0x67, 0xa1, 0xf6, 0x77, 0x17, 0x9f, 0xdc, 0x84, ++ 0xe3, 0x7d, 0x79, 0x4e, 0xe1, 0xbc, 0x2d, 0xe6, 0x2f, 0x33, 0x79, 0x07, ++ 0x61, 0x1e, 0xbb, 0xcc, 0xc4, 0xf3, 0x01, 0x87, 0x25, 0xee, 0xff, 0x68, ++ 0xf7, 0x0f, 0x1b, 0x01, 0x6e, 0xb8, 0xbe, 0x29, 0x41, 0xcb, 0x0b, 0xb4, ++ 0x93, 0xdd, 0xc7, 0x9f, 0x39, 0x8c, 0xce, 0x37, 0x63, 0x3e, 0x20, 0x2f, ++ 0x44, 0xd7, 0x9b, 0x2f, 0x94, 0x7f, 0xae, 0xe4, 0xf6, 0xa4, 0x0f, 0xfe, ++ 0xfe, 0x37, 0xf2, 0x01, 0x5a, 0x1e, 0x60, 0xab, 0xc0, 0x1f, 0x3b, 0x78, ++ 0xd6, 0xa4, 0x02, 0x5c, 0x53, 0x1b, 0xee, 0x51, 0xd0, 0xbf, 0x9e, 0xea, ++ 0x94, 0x99, 0x3b, 0x6c, 0xde, 0x9b, 0x54, 0x2b, 0x73, 0x87, 0xe5, 0x03, ++ 0x9e, 0x49, 0xd0, 0xf9, 0x23, 0x07, 0x5f, 0xdc, 0x34, 0x03, 0xec, 0x49, ++ 0x75, 0x9b, 0xec, 0x8a, 0x42, 0x79, 0x6d, 0xda, 0x75, 0x3c, 0x17, 0xfb, ++ 0xed, 0xb2, 0xcb, 0xda, 0x0b, 0x1f, 0xe9, 0xf1, 0x3b, 0xb5, 0xe9, 0x1e, ++ 0x05, 0xf9, 0xdf, 0x98, 0xa8, 0x92, 0x7c, 0x5f, 0x6b, 0xfe, 0x09, 0x23, ++ 0x80, 0x4f, 0x6e, 0x40, 0xba, 0x33, 0xf2, 0xeb, 0x3a, 0xc7, 0x48, 0x24, ++ 0x47, 0x7a, 0xfa, 0x1e, 0xd8, 0xff, 0xeb, 0x84, 0x8e, 0x9c, 0xbe, 0xf1, ++ 0xdd, 0x17, 0xfd, 0xf5, 0x74, 0xf8, 0xdd, 0xc5, 0x22, 0xda, 0xef, 0xb9, ++ 0x16, 0x3d, 0xf4, 0x7c, 0xdb, 0x02, 0xeb, 0xf4, 0xc1, 0xfa, 0x02, 0xb0, ++ 0x4e, 0x1f, 0xf8, 0x5d, 0x07, 0xd6, 0xd9, 0xa9, 0x7f, 0x68, 0x9d, 0x93, ++ 0xfa, 0x1a, 0xbf, 0x56, 0x37, 0xff, 0x36, 0x01, 0xfd, 0x36, 0x8d, 0x4f, ++ 0x4b, 0x13, 0x38, 0xdf, 0x8c, 0xdf, 0xb7, 0x29, 0x81, 0xd9, 0x42, 0xf4, ++ 0xd2, 0xf0, 0xf5, 0xa1, 0xb0, 0x57, 0x7b, 0xa3, 0x34, 0x7f, 0xc3, 0x35, ++ 0x6f, 0x06, 0x5c, 0x3a, 0x05, 0x76, 0x87, 0x18, 0xd4, 0xc7, 0xda, 0x9d, ++ 0x63, 0x42, 0xf6, 0x6b, 0xfe, 0xe9, 0x32, 0xf2, 0x37, 0x34, 0xfb, 0x35, ++ 0x5f, 0x5e, 0x54, 0x4a, 0x6a, 0x53, 0xd8, 0x2f, 0x4c, 0x23, 0xa3, 0x5e, ++ 0xd3, 0xdb, 0xa9, 0xb9, 0xea, 0x62, 0x23, 0xeb, 0xcd, 0x3e, 0x2d, 0x88, ++ 0xec, 0x97, 0xb7, 0x6d, 0x54, 0x62, 0xa8, 0x67, 0x20, 0x3a, 0x49, 0x92, ++ 0xc0, 0x87, 0xf0, 0xb3, 0x35, 0x38, 0xce, 0x30, 0x0f, 0xc1, 0xa9, 0xa7, ++ 0xa7, 0x06, 0x97, 0x1e, 0x1e, 0x6d, 0x7d, 0x9a, 0x7f, 0x3d, 0x5f, 0xd0, ++ 0x6f, 0xce, 0xa0, 0x4c, 0x23, 0xc2, 0xdf, 0xc3, 0xae, 0x8a, 0x75, 0xe2, ++ 0x40, 0x98, 0x87, 0xb8, 0x5e, 0xbb, 0xfa, 0xb5, 0x8e, 0x9f, 0xaf, 0x5c, ++ 0x28, 0x79, 0x2b, 0xb7, 0x17, 0xbe, 0xed, 0x8b, 0x7f, 0xf5, 0xf7, 0x35, ++ 0x7d, 0x50, 0x86, 0x13, 0xe4, 0x51, 0xeb, 0x43, 0xbf, 0xc2, 0x98, 0x98, ++ 0x4c, 0x74, 0x2b, 0xbb, 0x6a, 0x62, 0x6e, 0xb0, 0x1b, 0x2c, 0x23, 0x8a, ++ 0x7d, 0x1a, 0x66, 0x57, 0x58, 0xc5, 0x50, 0xe2, 0x9f, 0x7b, 0x85, 0x1d, ++ 0xee, 0x8b, 0x7f, 0xaa, 0xae, 0xca, 0xcc, 0x9b, 0x1f, 0xe2, 0x23, 0x63, ++ 0xe3, 0x13, 0x56, 0xe4, 0xa3, 0x7d, 0xca, 0x46, 0x2b, 0xe6, 0x27, 0x27, ++ 0xdb, 0x66, 0xd5, 0xc6, 0x01, 0x9e, 0x4a, 0xfe, 0x54, 0x34, 0x17, 0xfd, ++ 0xbc, 0xea, 0x0e, 0x03, 0xc3, 0x14, 0x56, 0x69, 0xd3, 0x17, 0x07, 0x31, ++ 0xae, 0xaf, 0x7e, 0x8f, 0xb9, 0x50, 0x2f, 0x16, 0x35, 0xb5, 0x16, 0x23, ++ 0xdf, 0x1d, 0x52, 0xda, 0x65, 0x8a, 0xb3, 0xbf, 0x64, 0xec, 0x89, 0x30, ++ 0x7f, 0xb1, 0xb1, 0xa9, 0xd6, 0x8a, 0xfe, 0x54, 0x63, 0xa2, 0x4c, 0x71, ++ 0xfc, 0x61, 0x07, 0xe7, 0x4b, 0xed, 0xfe, 0x96, 0x44, 0xae, 0x3f, 0x1a, ++ 0xcf, 0x5d, 0x9e, 0xe1, 0xee, 0xe5, 0xfe, 0x19, 0x71, 0xbf, 0xe4, 0xe3, ++ 0x3c, 0xe2, 0xa3, 0xb2, 0x47, 0x41, 0xae, 0x31, 0x0e, 0x4d, 0x8a, 0xa1, ++ 0xbc, 0x44, 0x89, 0x64, 0x9f, 0x53, 0x81, 0x7e, 0xc8, 0x4d, 0x46, 0xf2, ++ 0xf3, 0x21, 0x8e, 0xf9, 0x23, 0xee, 0x03, 0x5e, 0x6a, 0x34, 0xef, 0xc2, ++ 0xd4, 0x7e, 0x69, 0xe3, 0x23, 0xf7, 0xd8, 0x81, 0x10, 0xf5, 0xff, 0xfd, ++ 0x69, 0x8d, 0x19, 0xf3, 0x0b, 0xb3, 0x24, 0xd7, 0xb3, 0xf0, 0x5c, 0x99, ++ 0x1a, 0x6c, 0xc5, 0x7e, 0xd9, 0xdc, 0x4c, 0xaa, 0x7b, 0x18, 0xfb, 0x3f, ++ 0x32, 0xf9, 0xb3, 0xc1, 0x5b, 0x25, 0xca, 0x8b, 0x94, 0x01, 0xbb, 0x60, ++ 0xbf, 0x6c, 0x51, 0xa6, 0x1f, 0xf3, 0x13, 0xfb, 0x25, 0xde, 0xf7, 0x35, ++ 0xf3, 0x7d, 0x02, 0x66, 0xf7, 0x25, 0xcc, 0x80, 0x79, 0xde, 0xae, 0x48, ++ 0x18, 0xb5, 0x81, 0x78, 0x4a, 0xeb, 0x0f, 0xce, 0xdb, 0xc0, 0x04, 0x23, ++ 0x87, 0xc5, 0x57, 0xf7, 0xed, 0x95, 0x49, 0xcf, 0xdc, 0x57, 0x2a, 0xf9, ++ 0x71, 0xbf, 0xa9, 0xd4, 0x9e, 0xce, 0x7c, 0x61, 0x7c, 0x55, 0xf6, 0xa8, ++ 0x89, 0xd6, 0x35, 0xbb, 0x29, 0xa5, 0x08, 0xf9, 0x78, 0x4e, 0xb9, 0xcc, ++ 0xfc, 0x61, 0xfc, 0x1d, 0x10, 0x7e, 0xe1, 0x3c, 0x0f, 0xc4, 0xe1, 0x61, ++ 0xef, 0x1d, 0x8e, 0xe2, 0x70, 0x05, 0x17, 0x03, 0xdc, 0x52, 0x48, 0x6e, ++ 0xa7, 0x09, 0x3e, 0x9f, 0xc5, 0xb8, 0x9f, 0x38, 0x7f, 0x41, 0x42, 0xc4, ++ 0x7b, 0xf0, 0xc6, 0x2d, 0x68, 0x8f, 0x6e, 0x6d, 0x82, 0x38, 0x15, 0x7a, ++ 0xd3, 0x44, 0xfc, 0x7a, 0xab, 0x37, 0x3d, 0x62, 0x5e, 0x0f, 0xe3, 0x7e, ++ 0xcd, 0x09, 0x16, 0x2c, 0x89, 0x83, 0xf1, 0xfb, 0x25, 0x0d, 0x24, 0xfe, ++ 0x9b, 0x11, 0xb4, 0x8f, 0x0e, 0xa8, 0xa8, 0x77, 0xce, 0x24, 0xa2, 0x5e, ++ 0x63, 0xc3, 0xb8, 0x9c, 0x68, 0x72, 0x57, 0x2a, 0xaf, 0xae, 0x23, 0x7e, ++ 0x70, 0xf2, 0x7d, 0xb2, 0x79, 0x12, 0x48, 0x93, 0x8c, 0xfa, 0x2f, 0x52, ++ 0x9e, 0x66, 0x8e, 0x8b, 0xec, 0xcf, 0x72, 0xf7, 0xa8, 0x37, 0x88, 0x90, ++ 0x7f, 0xbd, 0x5e, 0xd7, 0xe4, 0x7e, 0x5e, 0xb3, 0x4c, 0xfb, 0x72, 0xf3, ++ 0x0a, 0x25, 0x17, 0xeb, 0x45, 0x3f, 0xe8, 0xfd, 0xec, 0xb1, 0xd1, 0x7d, ++ 0xe8, 0x85, 0x6f, 0xd5, 0x87, 0xe3, 0x7a, 0xd3, 0x0b, 0x1f, 0x96, 0xff, ++ 0x5d, 0x7a, 0xe1, 0x35, 0x08, 0x2b, 0xc6, 0x81, 0xfc, 0xfe, 0x34, 0x51, ++ 0xe8, 0x87, 0x7e, 0xac, 0x1f, 0xea, 0x87, 0x52, 0x79, 0xfb, 0x26, 0xe4, ++ 0x97, 0x2e, 0xb0, 0x77, 0xe6, 0x5e, 0xf8, 0x45, 0xb3, 0x17, 0x5a, 0x3c, ++ 0x5e, 0x06, 0xf2, 0x4a, 0xf2, 0x7e, 0x91, 0xef, 0x67, 0x94, 0x5e, 0x4d, ++ 0x65, 0xbe, 0xfc, 0x50, 0x3c, 0xde, 0xad, 0x2f, 0xc0, 0x9f, 0x70, 0xf5, ++ 0xe2, 0xe7, 0x3c, 0x9d, 0x98, 0x45, 0x72, 0xd4, 0xad, 0x5f, 0x34, 0xfd, ++ 0x11, 0xe6, 0x4f, 0x18, 0xc7, 0xfc, 0xe3, 0xfe, 0x44, 0x29, 0xf8, 0x91, ++ 0xa6, 0x3c, 0x84, 0x2f, 0x83, 0xe0, 0x2b, 0x63, 0x3c, 0x1f, 0x58, 0x86, ++ 0x85, 0x43, 0x98, 0x97, 0x73, 0x7e, 0x41, 0xf9, 0x96, 0x6a, 0x88, 0xf3, ++ 0x29, 0xde, 0x67, 0xbf, 0x25, 0xb8, 0x50, 0xcf, 0x49, 0xf1, 0x21, 0x39, ++ 0xd0, 0xfb, 0x19, 0x5a, 0x5e, 0xd7, 0x2a, 0xf2, 0x08, 0x7a, 0xbe, 0xe8, ++ 0xce, 0xf3, 0xcd, 0x35, 0x52, 0x1d, 0x8c, 0xc6, 0x17, 0x65, 0x76, 0x2e, ++ 0x1f, 0x65, 0x73, 0x65, 0xca, 0xbb, 0xeb, 0xf9, 0x44, 0x9b, 0x4f, 0xcf, ++ 0x1f, 0x01, 0x5d, 0x5e, 0xe6, 0x9a, 0xfc, 0x21, 0xe4, 0xec, 0x87, 0xf2, ++ 0x47, 0x73, 0xa2, 0xd8, 0x57, 0x1d, 0xc4, 0x06, 0x5d, 0x0f, 0x5f, 0x68, ++ 0xfc, 0xa0, 0xf1, 0x87, 0xde, 0x8e, 0x1c, 0xd3, 0xe5, 0x67, 0xfa, 0xb2, ++ 0x23, 0x6f, 0xa2, 0x1d, 0x19, 0xdd, 0xb7, 0x1d, 0x79, 0x7d, 0x98, 0x91, ++ 0xf4, 0xb5, 0xde, 0x7e, 0x68, 0xf6, 0xe2, 0x77, 0x49, 0x5c, 0x2f, 0x67, ++ 0x24, 0xf2, 0x7d, 0x8e, 0x69, 0xc3, 0xe7, 0xd9, 0xd0, 0xef, 0xb0, 0x26, ++ 0xf1, 0x3a, 0x0d, 0xcd, 0x0e, 0x75, 0xe7, 0x97, 0x36, 0x73, 0x7e, 0x78, ++ 0xbd, 0x63, 0x89, 0x22, 0xa1, 0x3d, 0x41, 0xbd, 0x90, 0x19, 0x86, 0x7f, ++ 0x91, 0x6f, 0xd5, 0xf8, 0xaf, 0xea, 0x51, 0x89, 0xf2, 0x8d, 0x15, 0x42, ++ 0x2f, 0x75, 0x36, 0xf3, 0xfc, 0x5b, 0x75, 0x89, 0xec, 0xb7, 0xc0, 0xff, ++ 0x16, 0x37, 0x3d, 0xb1, 0x89, 0xf7, 0x8d, 0x94, 0x9f, 0x2b, 0x54, 0x5a, ++ 0x15, 0x0b, 0x8c, 0x3b, 0xd3, 0x25, 0xb9, 0x30, 0xaf, 0xe3, 0x16, 0xf9, ++ 0xba, 0x19, 0x6e, 0x89, 0xe7, 0xeb, 0x5c, 0x91, 0xfb, 0xf4, 0x2d, 0x3a, ++ 0xfa, 0xce, 0x11, 0x7c, 0x34, 0x93, 0x05, 0xeb, 0xd0, 0x1f, 0xd7, 0xeb, ++ 0xa5, 0x39, 0x57, 0xb9, 0x5f, 0xa0, 0xd7, 0x4f, 0x73, 0xc4, 0xbe, 0xfb, ++ 0x1c, 0xdd, 0xbe, 0xfb, 0x55, 0x4d, 0xde, 0x07, 0xb0, 0x01, 0xff, 0x4c, ++ 0x7f, 0xc0, 0x9c, 0xf4, 0xfd, 0xfe, 0x80, 0xf6, 0xbe, 0x46, 0x47, 0x8d, ++ 0x7e, 0x2a, 0xee, 0xc5, 0xa1, 0x1c, 0x1d, 0xfc, 0xc6, 0xa4, 0xc6, 0x70, ++ 0xff, 0x19, 0xe9, 0x37, 0xf5, 0xaa, 0x42, 0xe3, 0xd8, 0x93, 0x04, 0x5f, ++ 0x0a, 0x7f, 0xe6, 0xcb, 0x8b, 0x79, 0xbf, 0xa0, 0x98, 0x4f, 0x3c, 0x5f, ++ 0xdd, 0xf4, 0x85, 0xc9, 0x3b, 0xb2, 0x6f, 0xf8, 0xaf, 0xe5, 0xb7, 0xc6, ++ 0xa2, 0x9f, 0x3e, 0x3a, 0xe4, 0xb7, 0x6b, 0xf3, 0x4e, 0x53, 0x18, 0x4b, ++ 0x47, 0xc7, 0x4c, 0x67, 0x4f, 0x66, 0x89, 0xeb, 0x3f, 0xd4, 0x7e, 0x0c, ++ 0xd7, 0xad, 0x43, 0xa3, 0x83, 0xa6, 0x47, 0x7b, 0xe0, 0x59, 0xe8, 0xd9, ++ 0xbe, 0xe8, 0x74, 0x2d, 0x3d, 0xab, 0xe9, 0xb3, 0x7f, 0xb6, 0x9e, 0xd5, ++ 0xc6, 0xd7, 0xec, 0x80, 0x36, 0xaf, 0x5e, 0xff, 0xf6, 0x15, 0xb7, 0x69, ++ 0xfa, 0x74, 0xfd, 0x16, 0x03, 0xe5, 0x4b, 0x26, 0x8b, 0xf8, 0x78, 0xb2, ++ 0xc8, 0xc3, 0xce, 0x4f, 0xe2, 0xf1, 0xc1, 0xad, 0x49, 0x3c, 0xee, 0xec, ++ 0xfa, 0xca, 0x62, 0x40, 0x7b, 0xb9, 0xb3, 0x85, 0xfb, 0x27, 0x2e, 0xb3, ++ 0xfd, 0x38, 0xfa, 0x05, 0xa1, 0x7c, 0x1f, 0xa7, 0xe7, 0xc3, 0x31, 0xcc, ++ 0x87, 0xfb, 0xec, 0x4c, 0x69, 0xb7, 0xd0, 0xbe, 0x67, 0x11, 0x90, 0x12, ++ 0xf7, 0x3d, 0xd3, 0xf8, 0xbe, 0xe7, 0x76, 0x25, 0xe0, 0x21, 0x3d, 0xed, ++ 0x52, 0x58, 0x0d, 0xc8, 0xc9, 0x39, 0x7c, 0x0f, 0xe6, 0x79, 0xf8, 0x80, ++ 0x6f, 0x21, 0xea, 0xe9, 0x87, 0x3f, 0x19, 0x62, 0xa0, 0xfd, 0x77, 0x25, ++ 0xd0, 0x8e, 0xfe, 0xc9, 0xd8, 0x3c, 0x85, 0xf6, 0x8f, 0x1c, 0x66, 0x95, ++ 0xf2, 0xc1, 0x9d, 0xcd, 0x66, 0x3b, 0xbe, 0xd7, 0xb5, 0xef, 0xff, 0xb4, ++ 0x1a, 0x71, 0x9c, 0xaf, 0x98, 0x0b, 0x43, 0xb8, 0x43, 0xcd, 0xe6, 0xee, ++ 0xfd, 0x1b, 0xd4, 0x07, 0xa5, 0x72, 0x9b, 0x8c, 0xf9, 0xfb, 0xae, 0x20, ++ 0xc8, 0x08, 0x3c, 0x3f, 0x69, 0x41, 0xa0, 0x18, 0xe3, 0xa0, 0xc9, 0xac, ++ 0xbd, 0x16, 0xe5, 0x7b, 0x02, 0xd2, 0xb1, 0x17, 0xfa, 0xfd, 0x2a, 0x49, ++ 0x8b, 0xb3, 0x7b, 0xcf, 0xef, 0x17, 0x37, 0x73, 0x3f, 0xae, 0x38, 0x46, ++ 0x26, 0x3f, 0x6e, 0x8a, 0xaf, 0xbd, 0x18, 0xf7, 0xad, 0xa6, 0x28, 0x92, ++ 0xab, 0x16, 0x9f, 0xd5, 0xe5, 0xf7, 0x5f, 0xd1, 0xc5, 0x1f, 0xa1, 0xfc, ++ 0xbe, 0xaa, 0xf0, 0xfa, 0x43, 0x5d, 0xfe, 0xbe, 0x91, 0xeb, 0x99, 0xeb, ++ 0xcd, 0xeb, 0x4f, 0x40, 0xdd, 0x06, 0x7c, 0xbc, 0x5e, 0xe3, 0x73, 0xa1, ++ 0x6f, 0x58, 0x1f, 0xf9, 0xfd, 0x9d, 0x26, 0xbe, 0xef, 0x13, 0x3c, 0x69, ++ 0x64, 0xe8, 0x07, 0xb3, 0x0b, 0x89, 0xbd, 0xe6, 0x63, 0xae, 0x95, 0xe7, ++ 0xdf, 0xd7, 0x12, 0xed, 0x56, 0x63, 0x71, 0x9f, 0x8e, 0xfb, 0xeb, 0xfb, ++ 0x5a, 0xd2, 0xdc, 0x6a, 0x6e, 0xdf, 0xcf, 0xe7, 0x76, 0x04, 0x8b, 0xd0, ++ 0x3c, 0xee, 0xdc, 0x3e, 0x5b, 0xa1, 0xfa, 0x35, 0x91, 0x1f, 0xed, 0xb1, ++ 0x7f, 0xd2, 0xc7, 0xfe, 0x88, 0xbb, 0xd1, 0x7e, 0x08, 0xd5, 0x69, 0x5f, ++ 0xfb, 0x21, 0xc5, 0x5f, 0xaa, 0x94, 0xf6, 0xb9, 0x5e, 0xbc, 0x69, 0x75, ++ 0x0b, 0x4c, 0xd4, 0x3f, 0xdd, 0xc8, 0xb4, 0x9f, 0x9b, 0xe4, 0x74, 0xe7, ++ 0xf9, 0x68, 0x37, 0xf2, 0xf9, 0xce, 0xf3, 0x69, 0x6e, 0x84, 0xeb, 0x79, ++ 0xc1, 0xa7, 0x1a, 0xdf, 0xef, 0x3b, 0x77, 0x39, 0x9a, 0xf6, 0x41, 0x4d, ++ 0x6e, 0x15, 0xf7, 0x8f, 0x83, 0x0e, 0x8b, 0xeb, 0x59, 0xe2, 0x5b, 0xce, ++ 0xef, 0xf5, 0xa9, 0x43, 0xfc, 0xb8, 0x4f, 0xfb, 0x1b, 0x21, 0x17, 0x3b, ++ 0xa3, 0x83, 0xc7, 0xb2, 0x13, 0xc3, 0xf7, 0x3d, 0xf8, 0x3e, 0x47, 0xcb, ++ 0xba, 0x47, 0x67, 0x9f, 0x33, 0xd2, 0x7e, 0xb9, 0x84, 0xf9, 0x48, 0x6d, ++ 0x7f, 0xd9, 0x07, 0x72, 0x43, 0x75, 0x3d, 0xf1, 0x8c, 0xe2, 0x0f, 0x23, ++ 0xab, 0x67, 0x38, 0x6f, 0xad, 0x9b, 0xfd, 0x1a, 0xdb, 0x29, 0x93, 0xd4, ++ 0x38, 0xc4, 0xfb, 0xe5, 0x44, 0x6d, 0x1f, 0x53, 0x8d, 0xa3, 0x3c, 0xc4, ++ 0xb7, 0x57, 0xa8, 0xce, 0x50, 0x8f, 0xff, 0xdd, 0xeb, 0x98, 0x07, 0xeb, ++ 0x51, 0x1a, 0xd6, 0x59, 0x3c, 0x0a, 0xc8, 0xff, 0xab, 0xeb, 0xec, 0xd4, ++ 0x6f, 0x5c, 0xe7, 0xa4, 0x76, 0xff, 0x3a, 0x95, 0xda, 0x87, 0x8e, 0xc7, ++ 0x3e, 0x80, 0x76, 0xbf, 0xda, 0x6d, 0xf2, 0x28, 0x61, 0xfa, 0xe3, 0x9d, ++ 0x64, 0xee, 0x77, 0xe5, 0x65, 0x7f, 0x52, 0x4c, 0xc5, 0xdf, 0x7f, 0x63, ++ 0x54, 0x87, 0x3e, 0xe5, 0xc1, 0x0e, 0x19, 0xf5, 0xc5, 0x8d, 0x57, 0x61, ++ 0x1d, 0x11, 0x75, 0x27, 0xca, 0x65, 0xc4, 0x37, 0xe5, 0x37, 0xb3, 0x42, ++ 0xfd, 0x4c, 0x69, 0x71, 0x0c, 0xf6, 0x6f, 0xbc, 0x0a, 0xfd, 0xb0, 0xe7, ++ 0xaf, 0x24, 0x39, 0xb8, 0x3d, 0xaa, 0x53, 0xea, 0x46, 0x27, 0x93, 0xb4, ++ 0x10, 0x5f, 0xfc, 0x2d, 0xc9, 0xdd, 0x91, 0x04, 0xd7, 0xef, 0x71, 0x78, ++ 0x3e, 0xc1, 0x76, 0xb7, 0x34, 0xff, 0xe0, 0x25, 0x46, 0xfd, 0x73, 0xbc, ++ 0x7f, 0xab, 0x7c, 0x09, 0x9e, 0xcb, 0x0f, 0x14, 0x52, 0x5e, 0x39, 0x1f, ++ 0xf3, 0xca, 0x79, 0x34, 0xec, 0x42, 0xc4, 0xdf, 0xe8, 0x56, 0x13, 0xed, ++ 0x97, 0x6b, 0xf9, 0xdd, 0x3c, 0x4d, 0xfe, 0xbe, 0x8e, 0xcc, 0x33, 0xe7, ++ 0x8b, 0xbc, 0xee, 0xab, 0xac, 0x83, 0xf2, 0xcd, 0x05, 0x16, 0x08, 0xb4, ++ 0x0c, 0x08, 0x17, 0xa7, 0x9f, 0x5b, 0x9a, 0xe7, 0x94, 0x30, 0x1f, 0x98, ++ 0x64, 0x72, 0x61, 0xbd, 0xc3, 0xe8, 0x2c, 0x4f, 0x3e, 0xe6, 0x63, 0x5b, ++ 0x93, 0x18, 0xc5, 0x47, 0xad, 0xad, 0xc9, 0x19, 0x6a, 0x0e, 0x72, 0x0f, ++ 0xcf, 0xfb, 0xba, 0xb5, 0xbc, 0x2f, 0xfb, 0xfe, 0xbc, 0xef, 0x91, 0x8f, ++ 0x62, 0x7d, 0xa4, 0xb7, 0xae, 0x9a, 0x68, 0x7f, 0xfa, 0xc8, 0xa9, 0x58, ++ 0x57, 0x80, 0xf6, 0x0b, 0x2d, 0xe4, 0xff, 0x69, 0xf5, 0xc8, 0x2d, 0xd1, ++ 0xbc, 0xce, 0x80, 0x65, 0x2c, 0xa0, 0x3c, 0xd3, 0x8d, 0xa2, 0x9e, 0xd1, ++ 0x62, 0xf6, 0x9a, 0x93, 0x49, 0x5f, 0x05, 0x0e, 0x9e, 0x80, 0xf7, 0x7e, ++ 0x7f, 0x99, 0xf1, 0x7d, 0xc7, 0xf6, 0x0f, 0x69, 0x5f, 0xbb, 0xd8, 0x30, ++ 0x3c, 0x05, 0xeb, 0x7e, 0x0f, 0x4a, 0x43, 0xe3, 0xb0, 0x7d, 0xea, 0xa3, ++ 0xd8, 0x1c, 0x6a, 0x4f, 0xc5, 0x5e, 0x44, 0xfc, 0xb4, 0x18, 0xac, 0x2a, ++ 0xce, 0x7b, 0x66, 0x9d, 0x5a, 0x82, 0x75, 0x6d, 0x27, 0xd6, 0xb1, 0x12, ++ 0xac, 0x63, 0x7b, 0x6b, 0x9d, 0x85, 0xda, 0x93, 0xeb, 0xec, 0xd4, 0x9e, ++ 0x5a, 0xe7, 0xa4, 0xf6, 0x75, 0xb8, 0x8e, 0xfc, 0x73, 0x1c, 0x9e, 0x47, ++ 0x7e, 0x71, 0xbf, 0x65, 0xa3, 0x7d, 0x92, 0x29, 0x6f, 0xd9, 0x14, 0x6c, ++ 0xf3, 0x16, 0xc6, 0x50, 0xbb, 0xfb, 0xb6, 0x18, 0x13, 0xc2, 0xdb, 0x12, ++ 0xcb, 0xb6, 0x6b, 0xf3, 0x60, 0xbd, 0x5a, 0x20, 0x3a, 0xd0, 0x80, 0xc9, ++ 0xfe, 0xd6, 0xa7, 0xbc, 0x8f, 0x59, 0xfa, 0x81, 0xdd, 0x33, 0x7b, 0x47, ++ 0x4a, 0xa3, 0x18, 0x6b, 0x7b, 0xca, 0x3b, 0x5d, 0x99, 0x0c, 0xe3, 0x4e, ++ 0xed, 0xff, 0x93, 0xaf, 0xe0, 0xfe, 0x9b, 0xc9, 0xcb, 0x1e, 0xb3, 0x00, ++ 0x5c, 0x73, 0x4f, 0xd9, 0x1a, 0xda, 0xa0, 0xff, 0x76, 0xf2, 0xf2, 0xc7, ++ 0x6c, 0xa8, 0x6f, 0x8f, 0x47, 0x83, 0xd2, 0xc3, 0xf5, 0xae, 0x38, 0xee, ++ 0x1e, 0x04, 0x74, 0x43, 0xa5, 0x90, 0xc6, 0x05, 0x97, 0x8d, 0x83, 0x7e, ++ 0x82, 0xd6, 0x5f, 0x31, 0xbd, 0x64, 0x12, 0x63, 0xb7, 0x14, 0x77, 0x64, ++ 0x33, 0x60, 0xad, 0xec, 0xe4, 0x95, 0xd3, 0x2d, 0x80, 0xc7, 0x5b, 0xac, ++ 0xde, 0x1f, 0x63, 0xdf, 0xe4, 0x4b, 0x9a, 0x5e, 0xd2, 0x0f, 0xfb, 0xcc, ++ 0x87, 0xf5, 0x60, 0x41, 0xc9, 0x48, 0x71, 0x3f, 0xcb, 0x90, 0x12, 0xb1, ++ 0xfe, 0x65, 0xa6, 0xc3, 0xfb, 0x46, 0x72, 0x58, 0xfd, 0x9e, 0x5b, 0xfa, ++ 0x13, 0xed, 0x33, 0x8d, 0x71, 0x4b, 0xcc, 0x41, 0x87, 0x1f, 0x8c, 0xb4, ++ 0xef, 0xc5, 0xec, 0x1f, 0x27, 0x84, 0xcb, 0xdb, 0x4c, 0x47, 0xe9, 0x1b, ++ 0x48, 0x8f, 0x89, 0xc9, 0xbc, 0x0e, 0x78, 0xf4, 0x24, 0xc9, 0x1d, 0x5e, ++ 0x5f, 0xa1, 0x7f, 0x6e, 0xf4, 0x39, 0xb5, 0x04, 0xe9, 0x34, 0xe6, 0x42, ++ 0x59, 0x1d, 0xb6, 0x33, 0xcb, 0x1d, 0xd4, 0xf7, 0x2c, 0x18, 0x5b, 0x87, ++ 0xf2, 0x5c, 0x62, 0xeb, 0xeb, 0xfd, 0x62, 0x7a, 0xbf, 0x3c, 0x99, 0xd7, ++ 0x8d, 0x14, 0x29, 0x52, 0x44, 0x5d, 0x89, 0xfe, 0xb9, 0x7c, 0x60, 0x26, ++ 0xf4, 0x8f, 0x83, 0x47, 0xa3, 0x29, 0x4f, 0x30, 0xfa, 0xb4, 0xb7, 0x16, ++ 0xeb, 0x4f, 0x4b, 0x9d, 0x99, 0x79, 0xb2, 0xa6, 0xfa, 0xa8, 0xef, 0xd8, ++ 0x82, 0xfb, 0x6d, 0xa3, 0x2b, 0xce, 0x94, 0x24, 0xa0, 0xfc, 0xd8, 0x24, ++ 0x17, 0x9a, 0x89, 0x31, 0xac, 0xa3, 0x2e, 0x01, 0xee, 0x17, 0xda, 0xb1, ++ 0xa0, 0x0a, 0xd7, 0xf5, 0x44, 0x31, 0xd6, 0xff, 0x8c, 0x56, 0x25, 0x17, ++ 0xa2, 0xad, 0xd0, 0xdd, 0xda, 0x80, 0xef, 0x17, 0xba, 0x62, 0x5c, 0x85, ++ 0xe8, 0x8f, 0x9f, 0x56, 0x4b, 0xd0, 0xf4, 0x9c, 0x52, 0x46, 0x9d, 0x28, ++ 0x80, 0xe7, 0xa6, 0x0e, 0x92, 0x5d, 0x16, 0x18, 0xe8, 0x54, 0xe0, 0xa6, ++ 0x89, 0x97, 0xa0, 0x5f, 0x38, 0x2c, 0x8e, 0xf2, 0xbc, 0x85, 0xca, 0x9a, ++ 0x2b, 0x27, 0xa8, 0x1f, 0xe3, 0xaa, 0x51, 0x71, 0x1d, 0x5b, 0x7e, 0x5d, ++ 0x45, 0xe3, 0x98, 0xc9, 0xae, 0xef, 0x9e, 0x51, 0xfc, 0x2f, 0xc8, 0x3f, ++ 0x45, 0x9e, 0x38, 0xca, 0x09, 0x02, 0x3e, 0x4a, 0xc2, 0xeb, 0xca, 0x60, ++ 0xdd, 0x04, 0x77, 0xa1, 0x5d, 0xf6, 0x47, 0x49, 0xc8, 0xdf, 0xff, 0x5a, ++ 0x62, 0x87, 0xfe, 0xee, 0xfe, 0x12, 0x96, 0xcb, 0xc3, 0x7c, 0xc3, 0xff, ++ 0x42, 0xf7, 0x8f, 0x44, 0xab, 0x51, 0x00, 0xe8, 0x6e, 0x93, 0xbd, 0x04, ++ 0xc7, 0xdb, 0x6d, 0x92, 0xec, 0x0f, 0x51, 0xdf, 0x53, 0x8c, 0xcf, 0xfb, ++ 0x86, 0x18, 0x55, 0xcc, 0x1f, 0x95, 0x25, 0x46, 0x45, 0x8c, 0x3f, 0xb5, ++ 0x44, 0x1a, 0x7f, 0x0e, 0xe1, 0xcf, 0x89, 0x1b, 0x85, 0xd7, 0xca, 0x33, ++ 0x1c, 0x11, 0xf7, 0xdb, 0x6e, 0xb3, 0x92, 0x9d, 0xa8, 0x78, 0x2b, 0x87, ++ 0xfc, 0xa2, 0xb6, 0xdb, 0xd2, 0xc9, 0x5e, 0x54, 0xbc, 0x35, 0xa9, 0x08, ++ 0xdb, 0x36, 0x03, 0xf7, 0xd3, 0x2b, 0xde, 0xaa, 0x28, 0xa7, 0xfb, 0x06, ++ 0x1e, 0x07, 0x57, 0x2c, 0xfc, 0x91, 0x5b, 0xf4, 0x29, 0xee, 0xad, 0x58, ++ 0x58, 0x49, 0xfd, 0x56, 0x29, 0xe5, 0x27, 0x38, 0xdf, 0x95, 0x9c, 0xb8, ++ 0x3c, 0xcc, 0xaf, 0x4d, 0x1b, 0x94, 0x5a, 0xa2, 0x44, 0xf8, 0x81, 0x03, ++ 0x49, 0xfe, 0xf3, 0x44, 0x7e, 0xaf, 0xd0, 0x30, 0x7c, 0xd3, 0x24, 0x80, ++ 0xff, 0xde, 0xa3, 0x7c, 0x9f, 0xa2, 0x22, 0x27, 0x33, 0xe2, 0xf9, 0x19, ++ 0x05, 0x52, 0x49, 0x78, 0xfd, 0xa8, 0x67, 0x52, 0x54, 0x44, 0x7f, 0x76, ++ 0x89, 0xa3, 0x24, 0xbc, 0x0e, 0x75, 0x6e, 0x45, 0x6a, 0x44, 0xff, 0x96, ++ 0xb9, 0x99, 0x11, 0xfd, 0x92, 0xa3, 0x05, 0x64, 0xbf, 0x41, 0x0f, 0x54, ++ 0x94, 0x80, 0x1e, 0x38, 0x0a, 0xed, 0x52, 0x60, 0xc1, 0x02, 0x51, 0x07, ++ 0xa5, 0xe5, 0x9f, 0x0a, 0x05, 0x4b, 0x15, 0xb6, 0x8b, 0xbc, 0xac, 0xc2, ++ 0xe3, 0xeb, 0x61, 0xf0, 0x87, 0x7a, 0xb0, 0xc4, 0x16, 0x69, 0xa7, 0x77, ++ 0x47, 0x73, 0x3b, 0x5f, 0xce, 0xd6, 0xd0, 0x06, 0x49, 0xf9, 0x11, 0xbe, ++ 0xbf, 0x5d, 0x96, 0x68, 0xfc, 0x24, 0xdc, 0x4e, 0x94, 0xcb, 0x15, 0x36, ++ 0x5e, 0x97, 0x15, 0x89, 0x87, 0xbc, 0xa3, 0x46, 0xb2, 0x97, 0x79, 0x31, ++ 0x92, 0x1f, 0xe3, 0xfa, 0x92, 0xa3, 0x4b, 0xeb, 0xd0, 0xf4, 0x96, 0x67, ++ 0x44, 0xbe, 0xaf, 0xf9, 0x61, 0xe5, 0x02, 0x3e, 0x6d, 0x5e, 0xe6, 0x73, ++ 0xb7, 0xa3, 0x3f, 0xa2, 0xc1, 0xad, 0xcd, 0xaf, 0xc1, 0x5f, 0x2e, 0x2f, ++ 0x2a, 0xa1, 0x7c, 0xf7, 0x35, 0xd6, 0xa1, 0x87, 0x97, 0xc1, 0x7a, 0x50, ++ 0x3f, 0xe8, 0xe1, 0x68, 0x4a, 0x16, 0xfe, 0x1a, 0xf8, 0x1f, 0xe4, 0xaf, ++ 0x89, 0x73, 0x24, 0xf0, 0x4b, 0xec, 0xcd, 0x7e, 0x6b, 0xfe, 0x7a, 0x05, ++ 0xe8, 0x2b, 0x47, 0xb8, 0xbe, 0xb2, 0x49, 0x89, 0x58, 0xb7, 0xd7, 0x97, ++ 0xbe, 0xd2, 0xc6, 0xed, 0xcb, 0x2f, 0xd3, 0xc6, 0x9d, 0xe9, 0xf0, 0xd0, ++ 0xfb, 0xee, 0x1d, 0x9f, 0x9e, 0x9a, 0x20, 0x87, 0xf5, 0x33, 0x3f, 0x4e, ++ 0x88, 0x0f, 0xef, 0xbf, 0xf8, 0xe9, 0xa6, 0x88, 0xfb, 0x49, 0x1f, 0xcf, ++ 0x71, 0x84, 0xf7, 0xb7, 0x7e, 0x3a, 0x07, 0xef, 0x4f, 0x51, 0xd4, 0x5a, ++ 0x1b, 0xf0, 0xe5, 0x31, 0x26, 0xb9, 0x7c, 0xc8, 0x07, 0x6d, 0xaa, 0x12, ++ 0x03, 0xf4, 0x28, 0x3e, 0xed, 0xae, 0xc3, 0xb6, 0xf4, 0x43, 0x2f, 0x96, ++ 0xab, 0xb2, 0xa9, 0xe7, 0x7c, 0x75, 0xd8, 0x4e, 0xbc, 0xe8, 0x6f, 0x33, ++ 0xc3, 0xba, 0x6e, 0x1a, 0x26, 0xab, 0x18, 0xbf, 0x6b, 0x7e, 0x88, 0x1e, ++ 0xde, 0xbf, 0x26, 0xf3, 0xbc, 0xc3, 0xb1, 0xab, 0xaa, 0x15, 0xf7, 0x59, ++ 0x77, 0xfb, 0x54, 0x2b, 0xfa, 0xf3, 0xbb, 0x1f, 0x54, 0xad, 0xe8, 0x87, ++ 0xec, 0x76, 0xf3, 0x73, 0x19, 0xee, 0x2c, 0x03, 0x9d, 0x8f, 0x71, 0x67, ++ 0xf3, 0x7a, 0xc5, 0xbf, 0x24, 0xf3, 0xba, 0x83, 0x4e, 0xf1, 0xbe, 0xd6, ++ 0xfa, 0x8d, 0xde, 0x4e, 0x84, 0x1b, 0xeb, 0xcc, 0xd1, 0x37, 0xa8, 0xfa, ++ 0x26, 0x48, 0x75, 0xe5, 0xc7, 0xd0, 0xbf, 0xca, 0xe9, 0xe9, 0x5f, 0x1d, ++ 0x53, 0xfc, 0x36, 0x9c, 0xef, 0xd8, 0x83, 0x7e, 0x5b, 0xf8, 0x7e, 0xe2, ++ 0xf5, 0xfa, 0x57, 0x7f, 0x04, 0x1e, 0x43, 0x38, 0x0a, 0x99, 0xe4, 0x09, ++ 0xd7, 0x23, 0xc5, 0x96, 0x28, 0x4f, 0xb8, 0xdc, 0x96, 0xda, 0x1d, 0x11, ++ 0xfd, 0x93, 0xc2, 0x0f, 0x99, 0xea, 0x4c, 0x8d, 0x78, 0xef, 0x26, 0x35, ++ 0x33, 0xe2, 0x39, 0xf0, 0x1b, 0x87, 0xa1, 0x5f, 0x52, 0x6b, 0x62, 0x54, ++ 0x6f, 0xeb, 0x33, 0xf0, 0x7a, 0x5b, 0x3d, 0x1e, 0x57, 0xa4, 0xf0, 0xf8, ++ 0xce, 0x65, 0xb3, 0xa3, 0x3b, 0x83, 0xfb, 0x66, 0x72, 0x6f, 0xe7, 0x91, ++ 0x5c, 0xc5, 0x86, 0x5e, 0xcf, 0xb7, 0xa5, 0xa4, 0x70, 0x7f, 0xf0, 0x3f, ++ 0x52, 0x18, 0xc1, 0x35, 0x2b, 0x85, 0xc3, 0xa7, 0xaf, 0xaf, 0xd5, 0xf7, ++ 0x6b, 0xf1, 0x7c, 0x0f, 0xe2, 0x93, 0xb9, 0x9c, 0xc8, 0xe7, 0x2e, 0xab, ++ 0xe1, 0x0a, 0xb8, 0xbc, 0xac, 0xe0, 0xe9, 0x27, 0xa6, 0x53, 0x5d, 0x6d, ++ 0xbe, 0xe1, 0xde, 0x2c, 0xe8, 0x57, 0x3c, 0xbd, 0x75, 0x3a, 0xaf, 0xab, ++ 0x35, 0xec, 0xc1, 0x3a, 0xdb, 0x19, 0x4f, 0x3f, 0xcf, 0xef, 0xdf, 0x60, ++ 0xc8, 0x37, 0x82, 0x3f, 0xb0, 0xcd, 0xf7, 0xc2, 0x74, 0xac, 0x2b, 0xaf, ++ 0x8a, 0xe2, 0xf5, 0x09, 0x55, 0x51, 0xa2, 0x3e, 0xb4, 0x6e, 0x74, 0x44, ++ 0xdc, 0xa3, 0x18, 0x3e, 0x7e, 0x6a, 0x21, 0xc6, 0x9f, 0xfb, 0x8d, 0x0c, ++ 0xf3, 0xfc, 0x8f, 0x99, 0xc0, 0x0e, 0xe6, 0x85, 0xf6, 0xd9, 0xad, 0x66, ++ 0x1e, 0xaf, 0x5a, 0x4d, 0xbc, 0x0e, 0x7c, 0x7d, 0xe6, 0xa9, 0xf5, 0xa8, ++ 0x3f, 0x3e, 0x8b, 0xf2, 0xe6, 0xa5, 0x50, 0x9e, 0xb1, 0x48, 0x45, 0x3c, ++ 0x5e, 0xb4, 0x5b, 0xa8, 0x3e, 0xf4, 0xbe, 0x7d, 0xa5, 0x29, 0xc8, 0x07, ++ 0xb3, 0x52, 0x78, 0xde, 0x2b, 0x7b, 0xcf, 0x44, 0x27, 0x9d, 0x2f, 0xfb, ++ 0xe7, 0xc1, 0x51, 0xfc, 0x7d, 0x70, 0x60, 0xfd, 0x30, 0x8e, 0x73, 0x71, ++ 0x77, 0x36, 0xf9, 0xe5, 0xd9, 0x03, 0x18, 0x9d, 0x27, 0xd1, 0xe8, 0x01, ++ 0xe1, 0x33, 0x5d, 0x8f, 0x82, 0xf0, 0x81, 0xce, 0x63, 0x30, 0xb7, 0x13, ++ 0xf3, 0x6f, 0xb5, 0x0e, 0x13, 0x8d, 0x33, 0x2b, 0x85, 0xf3, 0xe3, 0xf5, ++ 0xb6, 0x3d, 0xea, 0x89, 0xe3, 0x0c, 0x6b, 0x76, 0x41, 0xbb, 0x20, 0x85, ++ 0xc7, 0xcd, 0xb7, 0xe2, 0xbc, 0x04, 0x6f, 0xb0, 0xff, 0x2c, 0xdc, 0xd0, ++ 0xb3, 0x07, 0xfb, 0xcf, 0x1e, 0xc9, 0xfb, 0x48, 0x6f, 0x59, 0xce, 0x0b, ++ 0xa2, 0x7f, 0x1b, 0xfc, 0x51, 0x0c, 0xed, 0xc3, 0xbc, 0x1f, 0xcd, 0xf1, ++ 0xc6, 0x32, 0x82, 0xb4, 0x6f, 0xf3, 0xee, 0xa2, 0x6c, 0xd7, 0x06, 0xba, ++ 0xce, 0xf1, 0xb8, 0xc0, 0x3f, 0xb0, 0xb6, 0x43, 0xc5, 0xfa, 0x0f, 0x7f, ++ 0x3f, 0xac, 0xb7, 0x18, 0xe8, 0xf4, 0x2e, 0x45, 0x7c, 0xdc, 0x66, 0xf6, ++ 0x0f, 0x26, 0xbe, 0xb2, 0xad, 0x89, 0xc1, 0x79, 0xae, 0xb7, 0xde, 0xb8, ++ 0xef, 0xf9, 0x21, 0xe0, 0x04, 0x7b, 0x32, 0x7f, 0x3c, 0xa7, 0x97, 0x36, ++ 0x3f, 0xe0, 0xd8, 0x82, 0x74, 0x7c, 0x57, 0x9c, 0x3b, 0xd1, 0xe0, 0x01, ++ 0x38, 0x7e, 0x8c, 0x70, 0x68, 0x70, 0x75, 0xc3, 0xa3, 0xab, 0x3f, 0xef, ++ 0x14, 0x7e, 0x7b, 0x27, 0x8e, 0x97, 0x1b, 0xca, 0x53, 0x57, 0xff, 0xc9, ++ 0x40, 0x79, 0x8a, 0x6a, 0x09, 0xf4, 0x24, 0xf4, 0xf7, 0x7c, 0xc8, 0x5c, ++ 0x3e, 0x95, 0xe8, 0x43, 0x79, 0x50, 0xdc, 0xd2, 0xc2, 0xf9, 0xc6, 0x9f, ++ 0x58, 0x52, 0x6c, 0x83, 0xb6, 0xa0, 0x71, 0x15, 0x8f, 0x8f, 0xdb, 0x95, ++ 0x88, 0xbc, 0x98, 0x66, 0xcf, 0x26, 0x8a, 0xe7, 0xc7, 0xbe, 0xa7, 0x44, ++ 0xd8, 0xa3, 0x89, 0x22, 0xfe, 0x1d, 0xaf, 0xcb, 0x4f, 0x4e, 0x6c, 0x9c, ++ 0x4e, 0xe7, 0xf8, 0x26, 0xea, 0xe2, 0xe2, 0x5f, 0xa4, 0x88, 0xbc, 0x65, ++ 0x1a, 0x4b, 0x0b, 0xcf, 0x23, 0xac, 0x15, 0xf1, 0xc6, 0xe5, 0xb6, 0x81, ++ 0x71, 0xe8, 0x9f, 0x2a, 0x10, 0xe7, 0xca, 0x80, 0x6f, 0x93, 0x2a, 0xb3, ++ 0x71, 0xf1, 0x21, 0xbd, 0xd0, 0xb0, 0x8e, 0x45, 0x9c, 0x53, 0xd4, 0xf8, ++ 0x70, 0xe4, 0x69, 0xfb, 0x9d, 0x38, 0xdf, 0xc8, 0xd3, 0xec, 0x0e, 0xf2, ++ 0x07, 0xb4, 0x71, 0xbb, 0xf3, 0x13, 0x1c, 0x2f, 0x97, 0xdf, 0xe3, 0x78, ++ 0x19, 0xd5, 0x31, 0xec, 0xe9, 0x49, 0xd0, 0x37, 0x1e, 0x31, 0x32, 0xbf, ++ 0x1a, 0x5a, 0xe7, 0x04, 0x0e, 0x2a, 0x83, 0x30, 0x87, 0xe2, 0xa4, 0xcb, ++ 0x17, 0x6c, 0x64, 0x5f, 0xc6, 0x1c, 0x9d, 0x43, 0xf5, 0xde, 0x66, 0xa7, ++ 0x81, 0xa9, 0x61, 0xeb, 0x8f, 0x52, 0xa3, 0x99, 0x1a, 0xa6, 0x2f, 0xad, ++ 0xc3, 0xe2, 0x23, 0xfa, 0xb2, 0xa0, 0x4f, 0x5d, 0x54, 0xa4, 0x1f, 0x90, ++ 0x2f, 0xe6, 0x89, 0x71, 0xa5, 0x45, 0x8c, 0xb7, 0x3f, 0xbe, 0xec, 0x08, ++ 0xfa, 0x05, 0xf9, 0xb6, 0xe5, 0xe4, 0x17, 0xc4, 0x8d, 0x1b, 0x18, 0x31, ++ 0x1e, 0x6b, 0x53, 0x22, 0xfc, 0x83, 0x3c, 0xe6, 0x71, 0x63, 0xdc, 0xe8, ++ 0x02, 0xfa, 0xe2, 0x7e, 0xd9, 0x98, 0xd3, 0x4a, 0x84, 0x1f, 0x30, 0x2e, ++ 0xb0, 0x91, 0xce, 0xa1, 0x8e, 0xfb, 0x30, 0xf2, 0xfa, 0x84, 0x73, 0x91, ++ 0xfd, 0x03, 0x7d, 0xd1, 0xa5, 0x2f, 0xfc, 0xb1, 0xdc, 0xa7, 0xd1, 0x2f, ++ 0xfc, 0xa1, 0xf8, 0x73, 0xb8, 0x23, 0xf1, 0x97, 0x50, 0x1e, 0x89, 0xbf, ++ 0x24, 0x4f, 0x24, 0xfe, 0x52, 0x16, 0x44, 0xe2, 0x27, 0xd5, 0x1b, 0x89, ++ 0x8f, 0xf4, 0xe5, 0x23, 0x22, 0xee, 0xf7, 0x5b, 0x93, 0x17, 0xd1, 0x1f, ++ 0xf0, 0xc0, 0x84, 0x88, 0xe7, 0x33, 0xc1, 0x80, 0x85, 0xf7, 0xb3, 0x1e, ++ 0x9d, 0x16, 0xf1, 0xfc, 0xe0, 0x8d, 0xb3, 0x23, 0xfa, 0x43, 0x37, 0xdf, ++ 0x16, 0xf1, 0xfc, 0x70, 0xff, 0x92, 0x88, 0xfb, 0xd9, 0xdb, 0x56, 0xfe, ++ 0x20, 0x7a, 0x8f, 0xac, 0x5f, 0x1b, 0xf1, 0xbc, 0x9e, 0xde, 0x37, 0x34, ++ 0xfe, 0x34, 0x62, 0x7c, 0x8d, 0xde, 0x3e, 0xf8, 0xfb, 0xdf, 0xa4, 0x37, ++ 0x73, 0x0a, 0xff, 0x50, 0xd0, 0x3b, 0x51, 0xd8, 0x59, 0x87, 0x9b, 0xd7, ++ 0xad, 0x75, 0x19, 0x6d, 0x8f, 0xe2, 0x79, 0x7c, 0x3c, 0x36, 0x82, 0xfa, ++ 0xce, 0x81, 0xe7, 0xe9, 0x63, 0xd1, 0xfe, 0xab, 0x54, 0x97, 0xe7, 0x9b, ++ 0xc6, 0x68, 0x5f, 0xfb, 0x97, 0xb2, 0x47, 0x42, 0xbd, 0x94, 0x0e, 0xa8, ++ 0x35, 0x64, 0x51, 0xbd, 0x3c, 0xd5, 0xf5, 0xfd, 0xdc, 0x60, 0x88, 0xd8, ++ 0x67, 0xb7, 0x3b, 0xb9, 0x3f, 0x64, 0x77, 0x72, 0x3d, 0xfe, 0x6b, 0x13, ++ 0x3f, 0x2f, 0x95, 0x0e, 0xfe, 0x26, 0xd9, 0x29, 0x03, 0x0b, 0xc5, 0xd9, ++ 0x16, 0xac, 0x77, 0x64, 0x82, 0x99, 0xac, 0x8f, 0x63, 0x9c, 0x5d, 0xe7, ++ 0xe8, 0x18, 0xa6, 0x3a, 0x30, 0x6f, 0x07, 0xfd, 0xc9, 0x21, 0xbd, 0xaa, ++ 0xe9, 0xd1, 0xdb, 0xcc, 0x6a, 0x6d, 0x07, 0xe8, 0x97, 0x51, 0x32, 0xd7, ++ 0x93, 0xa0, 0x3f, 0xfb, 0x39, 0x61, 0x9e, 0xf7, 0xa5, 0x07, 0x8d, 0xdc, ++ 0xff, 0xf0, 0x19, 0xd1, 0xff, 0x48, 0xb7, 0x30, 0x5f, 0x6c, 0x1e, 0xd9, ++ 0x19, 0xca, 0x43, 0x3b, 0x58, 0xa2, 0x84, 0xe7, 0x00, 0xe2, 0x42, 0x7a, ++ 0x5c, 0xfd, 0x0e, 0x88, 0x75, 0x70, 0x65, 0x36, 0x9d, 0xc3, 0x7a, 0x13, ++ 0x41, 0x40, 0xbf, 0x59, 0x75, 0xd1, 0x7e, 0xd3, 0xad, 0x9a, 0x9e, 0x5a, ++ 0x3e, 0x9c, 0xf4, 0xd4, 0x65, 0x5b, 0xa4, 0xff, 0x76, 0x79, 0x69, 0x16, ++ 0x5d, 0x3f, 0x7b, 0xbb, 0x99, 0xea, 0x07, 0xce, 0x8a, 0x3a, 0x47, 0x0d, ++ 0x0f, 0xfa, 0xf3, 0xd6, 0xda, 0x39, 0x6c, 0xed, 0xfe, 0xf2, 0x2d, 0x9b, ++ 0x62, 0xd0, 0xef, 0x3c, 0x2b, 0xce, 0xff, 0x6a, 0xd7, 0x27, 0x0b, 0xfc, ++ 0x4d, 0x76, 0xca, 0xc2, 0xfe, 0x59, 0xd6, 0x60, 0x3e, 0x6c, 0x11, 0x18, ++ 0xf1, 0x38, 0xc0, 0x7b, 0xe5, 0x91, 0x8e, 0xd8, 0xdb, 0x18, 0xf9, 0x9b, ++ 0x93, 0x70, 0xdd, 0x55, 0x5b, 0xae, 0xdc, 0xfe, 0x2a, 0xf4, 0xab, 0x0d, ++ 0xc1, 0x64, 0x6e, 0x37, 0x7c, 0xf4, 0xde, 0xfc, 0x77, 0xf9, 0xb9, 0xee, ++ 0xf9, 0x7f, 0x8b, 0xfc, 0xae, 0x40, 0x85, 0x93, 0xc7, 0xf9, 0x15, 0x62, ++ 0xfc, 0x5b, 0xa0, 0xb1, 0x03, 0x9e, 0x6e, 0x01, 0x3a, 0x38, 0xb0, 0x7d, ++ 0x63, 0x52, 0x19, 0xf2, 0x27, 0x5c, 0xa7, 0xf3, 0x71, 0x33, 0x8f, 0x30, ++ 0x23, 0xca, 0xf3, 0x2c, 0x6f, 0x26, 0xd5, 0x4d, 0x9c, 0x62, 0xae, 0x33, ++ 0x7b, 0x01, 0xc4, 0xf9, 0x4e, 0x95, 0xe0, 0x9c, 0xcb, 0x3c, 0x46, 0xcc, ++ 0x5b, 0xbd, 0x73, 0x7b, 0x65, 0x0c, 0x3e, 0xd7, 0x3d, 0x9e, 0x36, 0x0e, ++ 0x30, 0x0c, 0xfa, 0x25, 0xef, 0x3a, 0x7c, 0xc6, 0x64, 0xcc, 0x1b, 0x4c, ++ 0xe6, 0x75, 0x13, 0x30, 0x9f, 0x05, 0xaf, 0x7b, 0x16, 0xa5, 0x3f, 0x8c, ++ 0x76, 0x49, 0x9b, 0xef, 0x1d, 0xe6, 0xbd, 0x74, 0x06, 0xe8, 0x3b, 0x9b, ++ 0xb9, 0x68, 0x5c, 0x6d, 0x7c, 0x86, 0xe9, 0xf9, 0x30, 0x3d, 0xb5, 0x7b, ++ 0xf9, 0xaa, 0x8f, 0x12, 0x60, 0xbe, 0xb5, 0x47, 0x0d, 0x94, 0x8f, 0x58, ++ 0xdb, 0x6c, 0xa6, 0x78, 0xad, 0x6b, 0xe5, 0x7f, 0xed, 0x78, 0x0a, 0xee, ++ 0xdf, 0x91, 0xde, 0xd1, 0x0f, 0xed, 0xf6, 0xfb, 0x2b, 0xff, 0x36, 0x04, ++ 0xf9, 0xe1, 0xd6, 0xcd, 0x32, 0x53, 0x81, 0xde, 0xaa, 0xdd, 0x7b, 0xa7, ++ 0x33, 0x6c, 0x5f, 0xe5, 0xec, 0xd2, 0x2b, 0x31, 0x78, 0x1f, 0xec, 0xee, ++ 0xd6, 0xa7, 0xd0, 0x58, 0xbe, 0x6c, 0xa6, 0x3a, 0xe2, 0xf7, 0x57, 0xbe, ++ 0x3c, 0x24, 0xdc, 0x8f, 0xad, 0x74, 0x16, 0x2e, 0xc7, 0xf7, 0xd8, 0xb8, ++ 0xeb, 0x3b, 0xef, 0x58, 0xfc, 0xd2, 0xf0, 0x14, 0xaa, 0xf7, 0x12, 0xfc, ++ 0xb4, 0x42, 0xf0, 0xd3, 0xda, 0x17, 0x87, 0x92, 0xbf, 0xb5, 0x36, 0xa6, ++ 0x9b, 0x9f, 0x78, 0x7f, 0x2b, 0xaf, 0x1b, 0xd1, 0xd6, 0x71, 0x46, 0xf0, ++ 0xe3, 0xca, 0x97, 0xbe, 0x89, 0xf8, 0xce, 0xc4, 0x6e, 0xe0, 0x23, 0xd5, ++ 0xcc, 0xf7, 0xc5, 0xd4, 0xa1, 0x60, 0xef, 0xdb, 0x2e, 0xe7, 0xd2, 0x77, ++ 0x1f, 0x8c, 0xde, 0x7f, 0x75, 0xc2, 0xbc, 0x2d, 0x57, 0x3f, 0x89, 0xc5, ++ 0xfe, 0x9e, 0x37, 0xff, 0x4a, 0xf0, 0xb3, 0xb9, 0xd7, 0x07, 0x2f, 0xca, ++ 0xa2, 0x6f, 0x4c, 0x68, 0x7f, 0x5a, 0x3b, 0xef, 0xb9, 0xa0, 0x29, 0x21, ++ 0x1f, 0xe9, 0x0e, 0x72, 0xb6, 0x01, 0xc7, 0xbf, 0xed, 0x77, 0x2f, 0x5e, ++ 0xfa, 0x00, 0xf1, 0xd3, 0xfc, 0xf2, 0xd6, 0x9f, 0xe1, 0x33, 0xd7, 0x79, ++ 0xfe, 0x73, 0x97, 0x96, 0x77, 0x14, 0xf6, 0xc6, 0x25, 0xf0, 0x01, 0xf6, ++ 0x86, 0xe2, 0x8b, 0x2e, 0x16, 0xcd, 0xcf, 0x93, 0x08, 0xff, 0x46, 0xc1, ++ 0x1d, 0xf9, 0x2c, 0xfa, 0x9e, 0x87, 0x4a, 0x7c, 0xed, 0x66, 0xc7, 0x71, ++ 0x1f, 0xa7, 0xb6, 0xd5, 0x40, 0x75, 0x26, 0xb1, 0xb8, 0x09, 0x14, 0x96, ++ 0xaf, 0x8b, 0x95, 0x0d, 0x9a, 0x51, 0x72, 0x5b, 0x9c, 0xa0, 0xaf, 0x85, ++ 0x9e, 0xf9, 0x7f, 0xce, 0xdb, 0x2a, 0xea, 0xa8, 0x3e, 0x20, 0xd2, 0x1f, ++ 0x2a, 0x38, 0xb4, 0x32, 0xc2, 0x0f, 0xf2, 0xc0, 0x5f, 0xaf, 0x7e, 0xd0, ++ 0x33, 0xde, 0x5a, 0xcc, 0x2f, 0xe9, 0xfd, 0xa1, 0xf1, 0x01, 0xc3, 0x62, ++ 0x53, 0xdc, 0xf7, 0xf8, 0x45, 0x87, 0xa6, 0xf5, 0xea, 0x17, 0x41, 0x40, ++ 0xed, 0x96, 0xc6, 0x88, 0xad, 0x21, 0xf8, 0x35, 0xe8, 0xf4, 0xf3, 0x7e, ++ 0x21, 0x57, 0xf5, 0x38, 0x16, 0xe6, 0xff, 0x03, 0xd1, 0xfc, 0xfc, 0x33, ++ 0x98, 0x0e, 0xf4, 0x7b, 0x7f, 0x9a, 0xca, 0xf5, 0xb7, 0x2d, 0x83, 0xf1, ++ 0xf3, 0x69, 0x52, 0xe7, 0x30, 0x0b, 0xe8, 0xcb, 0x16, 0xe7, 0xa2, 0xc7, ++ 0x1f, 0x85, 0x6b, 0x96, 0x41, 0x7c, 0xdd, 0xd8, 0xaf, 0xa5, 0x33, 0x35, ++ 0xf9, 0xc4, 0x7f, 0xdd, 0x7e, 0xd7, 0xa1, 0x11, 0xa4, 0xb7, 0xd8, 0xb7, ++ 0x30, 0x1b, 0xe2, 0x43, 0xe4, 0x3d, 0xf4, 0x74, 0x2b, 0xc0, 0xf3, 0xec, ++ 0xf9, 0x61, 0x72, 0x27, 0xde, 0x0f, 0x1c, 0xfe, 0x6b, 0x2c, 0xe6, 0x7d, ++ 0x77, 0xc4, 0xab, 0x6f, 0x21, 0x3d, 0x82, 0x47, 0x65, 0xda, 0xff, 0x89, ++ 0x52, 0x3a, 0x4c, 0x8e, 0x5e, 0xe2, 0xbb, 0x57, 0x51, 0x0f, 0x02, 0x9f, ++ 0xca, 0xa9, 0xdc, 0x1e, 0x58, 0x1a, 0x79, 0x7e, 0xd1, 0xa2, 0xba, 0x19, ++ 0xc6, 0x0f, 0x51, 0x76, 0xfb, 0xa8, 0xf0, 0x73, 0x7f, 0x8d, 0x4e, 0x1e, ++ 0x4f, 0x56, 0x1e, 0x7e, 0xbf, 0xbf, 0x09, 0xe8, 0x71, 0xc9, 0xd0, 0x16, ++ 0x9b, 0x03, 0xe3, 0xaf, 0xde, 0xbb, 0x3b, 0x16, 0xdd, 0xff, 0x0c, 0x93, ++ 0xf7, 0x03, 0xe4, 0xc3, 0x55, 0x67, 0xdf, 0x1e, 0x63, 0xa7, 0xfc, 0xcd, ++ 0x96, 0xfe, 0x18, 0x0f, 0xd6, 0x07, 0xf8, 0x77, 0x30, 0x46, 0x2a, 0xcc, ++ 0xa7, 0xe4, 0xf5, 0x84, 0xa3, 0x7a, 0x33, 0x2c, 0x26, 0x01, 0xcf, 0xe9, ++ 0x27, 0x50, 0x3b, 0xb2, 0x29, 0x7f, 0x19, 0xf2, 0x59, 0x75, 0x80, 0xaf, ++ 0x13, 0xc7, 0xc6, 0x42, 0xbe, 0xe1, 0x8d, 0x12, 0xf5, 0x3b, 0x1b, 0x6b, ++ 0xe3, 0x71, 0xbc, 0xea, 0xdf, 0x37, 0xa7, 0xa1, 0x3c, 0xbd, 0x9c, 0xc4, ++ 0xe3, 0xcd, 0x97, 0xae, 0x66, 0xf3, 0xf7, 0x15, 0xa6, 0xe0, 0xf3, 0x41, ++ 0xa7, 0x43, 0x10, 0xd3, 0x6f, 0xc0, 0xf8, 0xe4, 0x65, 0x11, 0xd7, 0x74, ++ 0x5e, 0x95, 0xe9, 0x39, 0x6d, 0xfe, 0x91, 0x8d, 0x85, 0xb2, 0x1d, 0xf8, ++ 0x21, 0x27, 0xb0, 0xf1, 0x00, 0xc5, 0x51, 0x4d, 0x66, 0x15, 0xe9, 0x1a, ++ 0xf5, 0x1c, 0xe3, 0x78, 0x68, 0x8a, 0x22, 0xb9, 0xaf, 0x6e, 0x99, 0xca, ++ 0xd0, 0xee, 0x77, 0x39, 0x98, 0x4b, 0x82, 0xfb, 0x3b, 0xa2, 0x83, 0x7f, ++ 0xa4, 0xf3, 0x6e, 0xcd, 0x66, 0x15, 0xf3, 0xad, 0x51, 0xf6, 0x8d, 0x2c, ++ 0x1e, 0xc6, 0xdf, 0x21, 0xf6, 0x59, 0x87, 0x03, 0x47, 0xe1, 0x79, 0x29, ++ 0xed, 0xba, 0x36, 0x5f, 0x54, 0xd3, 0xd3, 0x18, 0x73, 0x20, 0x3f, 0x50, ++ 0xde, 0x37, 0x4a, 0xd9, 0xc8, 0x26, 0xdb, 0xc2, 0xf1, 0x1c, 0x43, 0x78, ++ 0x76, 0xa4, 0x72, 0x3e, 0xda, 0x11, 0x1d, 0x30, 0x60, 0x9e, 0x25, 0x38, ++ 0x98, 0xb1, 0x67, 0x09, 0xae, 0x10, 0x9c, 0x8c, 0xe6, 0xd5, 0xe0, 0x1c, ++ 0xee, 0xc7, 0xf3, 0x84, 0x3b, 0x4c, 0xc1, 0xf3, 0x78, 0x6e, 0x06, 0xe0, ++ 0xb2, 0x23, 0xfd, 0x87, 0x33, 0x0e, 0x27, 0x6b, 0x1a, 0xaa, 0x62, 0x9e, ++ 0x20, 0xca, 0xee, 0xa6, 0x75, 0x44, 0xd9, 0x55, 0x97, 0x4f, 0xea, 0x09, ++ 0x57, 0x75, 0x2e, 0xf3, 0xa3, 0x5d, 0xff, 0xf9, 0x43, 0xac, 0x5b, 0x6e, ++ 0x51, 0x8e, 0xab, 0xa3, 0x43, 0x7d, 0x0b, 0xc8, 0xc0, 0x8e, 0x81, 0x4c, ++ 0xc8, 0xf9, 0xcf, 0x1f, 0x2f, 0xc9, 0x08, 0xef, 0x83, 0x62, 0x19, 0x17, ++ 0x7a, 0x7f, 0xc8, 0xaf, 0x36, 0x3e, 0x5e, 0x37, 0x89, 0xe2, 0x09, 0x9f, ++ 0x8c, 0xf1, 0x2f, 0xb4, 0x31, 0xf1, 0xb8, 0x4e, 0x95, 0xd6, 0xa7, 0x60, ++ 0x8a, 0x29, 0x8f, 0xe3, 0x01, 0xf7, 0xdb, 0xad, 0x16, 0x7e, 0xbf, 0xfb, ++ 0x79, 0xe0, 0x6f, 0x1b, 0xf6, 0x6d, 0xfc, 0x39, 0x57, 0x9c, 0xdd, 0x3a, ++ 0x4d, 0x22, 0x39, 0xe1, 0xf5, 0xb8, 0x42, 0x1f, 0xdc, 0x27, 0x05, 0xce, ++ 0xdf, 0x08, 0xa4, 0xfd, 0x2a, 0x70, 0x20, 0x57, 0x05, 0x58, 0x56, 0xbf, ++ 0xb1, 0x9f, 0xf8, 0x74, 0x95, 0xa1, 0xe9, 0xa9, 0x91, 0x70, 0xff, 0xee, ++ 0x28, 0xaf, 0x2b, 0x15, 0xe6, 0x7b, 0xed, 0x43, 0x03, 0x9d, 0x6b, 0xfd, ++ 0xf3, 0x8b, 0x51, 0xfe, 0x0a, 0xc0, 0xc7, 0xb0, 0x7d, 0x5b, 0x92, 0xdd, ++ 0xbd, 0xc8, 0x87, 0x7e, 0xfc, 0x47, 0xde, 0x7b, 0xe8, 0xc9, 0x74, 0xa4, ++ 0xff, 0x3e, 0x49, 0xc5, 0x3c, 0x6c, 0x97, 0x31, 0x48, 0xdf, 0x37, 0xa9, ++ 0x6a, 0xfa, 0xcc, 0x44, 0xf5, 0x0d, 0x8d, 0x1f, 0x53, 0xdd, 0xd3, 0x9b, ++ 0xa9, 0xde, 0x49, 0x38, 0xcf, 0xb8, 0xc6, 0x1a, 0xda, 0x8f, 0x1e, 0xcf, ++ 0x36, 0xd2, 0x7e, 0x74, 0xb6, 0x38, 0x0f, 0x5e, 0xef, 0xe4, 0xfa, 0xe3, ++ 0xf2, 0xe9, 0x21, 0xcf, 0xd6, 0x84, 0xe1, 0x7f, 0x49, 0x2a, 0x97, 0x2f, ++ 0x16, 0xf4, 0x0e, 0x40, 0xb9, 0x69, 0x12, 0xf2, 0xd9, 0x82, 0x7e, 0x0a, ++ 0xb4, 0x7b, 0x85, 0xbf, 0xb4, 0xb7, 0xf5, 0xd6, 0x2c, 0x35, 0x2c, 0x7f, ++ 0x58, 0xc3, 0x0e, 0xa4, 0x23, 0xbe, 0x1f, 0x62, 0x87, 0xa8, 0xd5, 0xae, ++ 0x77, 0xf9, 0xf9, 0xb9, 0xca, 0xec, 0x77, 0x2c, 0x77, 0xb8, 0xc3, 0xf8, ++ 0x6f, 0x91, 0x90, 0xf7, 0x45, 0xa9, 0x22, 0x4f, 0x96, 0xea, 0x9d, 0x8d, ++ 0xf0, 0xae, 0x6a, 0xfd, 0xc4, 0x14, 0xab, 0xe2, 0x39, 0x99, 0xfa, 0xfe, ++ 0x68, 0x57, 0xea, 0xc1, 0x9f, 0xb2, 0xf7, 0x82, 0x97, 0x6e, 0xb9, 0xd5, ++ 0xc9, 0x51, 0xb5, 0x12, 0x34, 0xe1, 0xf3, 0xd5, 0x17, 0xf8, 0xf9, 0x57, ++ 0xa0, 0x73, 0x1d, 0x9e, 0x37, 0x78, 0xf9, 0x9d, 0xc6, 0x11, 0x8b, 0xe1, ++ 0xfa, 0x5e, 0xc0, 0x35, 0xd6, 0x95, 0xfa, 0xce, 0x9a, 0xa9, 0xbe, 0x72, ++ 0xaf, 0xd1, 0x93, 0x8e, 0xcf, 0xd7, 0x9c, 0xf9, 0x3a, 0x17, 0xf5, 0x56, ++ 0x09, 0x02, 0x01, 0xf0, 0x7c, 0xdd, 0xbc, 0x6a, 0x00, 0xe2, 0x0d, 0xf8, ++ 0xbe, 0x28, 0x1a, 0xe5, 0x6b, 0x17, 0x23, 0x3d, 0xa6, 0xc9, 0x67, 0x0e, ++ 0xca, 0x27, 0xbc, 0x9f, 0x83, 0x7c, 0x5f, 0x80, 0xfd, 0xe1, 0xa4, 0x87, ++ 0x77, 0x98, 0xda, 0xf9, 0xf9, 0xd3, 0xbd, 0xfc, 0xfc, 0x29, 0xf0, 0x3d, ++ 0xc9, 0x01, 0xf0, 0xbd, 0x1d, 0xfd, 0x86, 0x1c, 0x3b, 0xc8, 0x01, 0xbd, ++ 0x3f, 0x94, 0xe4, 0x7b, 0x47, 0xbb, 0x81, 0xce, 0xc9, 0xfa, 0x40, 0x8f, ++ 0x0f, 0xa6, 0x7e, 0xd1, 0x1c, 0xec, 0xef, 0x68, 0x2f, 0xb1, 0x93, 0x7c, ++ 0x63, 0x5e, 0x3f, 0x0f, 0xe5, 0x34, 0x70, 0x80, 0xc6, 0xa9, 0x87, 0xd8, ++ 0x04, 0x49, 0x27, 0x31, 0x4f, 0xb8, 0x3f, 0xd9, 0xe8, 0x8c, 0x25, 0xba, ++ 0x69, 0xfa, 0xf1, 0xb0, 0x93, 0x09, 0x3b, 0xa1, 0xc6, 0xe1, 0x79, 0x03, ++ 0xab, 0x2c, 0x47, 0xc8, 0x45, 0x98, 0x3d, 0xe4, 0x7d, 0x61, 0x2f, 0x4f, ++ 0xfc, 0x2a, 0xf0, 0xf8, 0x2f, 0xd1, 0x76, 0xb8, 0x85, 0x5d, 0x10, 0xfe, ++ 0x14, 0xf3, 0xe6, 0x93, 0x9e, 0xbf, 0x57, 0xd8, 0xaa, 0xb5, 0xaf, 0x4f, ++ 0x98, 0xb9, 0x1d, 0xd6, 0xb9, 0xf6, 0x84, 0xdc, 0x5d, 0x3f, 0x8e, 0xfe, ++ 0x6b, 0x40, 0xf0, 0xc9, 0x01, 0xe1, 0xcf, 0xa2, 0x9d, 0x50, 0x13, 0x78, ++ 0x3d, 0x0e, 0x5e, 0x1f, 0xbd, 0x99, 0xd7, 0xd5, 0x8e, 0x71, 0xaf, 0x29, ++ 0xc6, 0xb3, 0xcf, 0xe3, 0xca, 0x37, 0x1e, 0xc4, 0x76, 0x82, 0xa7, 0xbe, ++ 0x18, 0xcf, 0x3e, 0x4f, 0x5a, 0xd0, 0x7e, 0x90, 0x9f, 0x81, 0xe6, 0xe7, ++ 0xd9, 0x1b, 0x0e, 0xdc, 0x94, 0x8d, 0xfb, 0xde, 0x5d, 0x67, 0xcd, 0x0c, ++ 0xf7, 0x5d, 0x1a, 0xfe, 0x1a, 0xfc, 0xe3, 0x4b, 0x80, 0x87, 0xfb, 0x5b, ++ 0x00, 0xff, 0xbd, 0xd8, 0x25, 0x58, 0x0e, 0xf1, 0x1f, 0x58, 0xec, 0x74, ++ 0xe6, 0xec, 0x79, 0xbf, 0x4b, 0xd2, 0xf4, 0xc7, 0xa9, 0x0a, 0xe4, 0xc7, ++ 0xce, 0x06, 0x39, 0xd4, 0x07, 0x40, 0xaa, 0x80, 0xc1, 0xb1, 0xff, 0xdb, ++ 0xd4, 0x93, 0x8f, 0xfb, 0xa0, 0x9f, 0x95, 0xe6, 0x7e, 0x3e, 0x15, 0xfd, ++ 0xed, 0x74, 0x2f, 0xb5, 0x5d, 0x27, 0xff, 0x9a, 0x8c, 0xb6, 0x60, 0xef, ++ 0x69, 0xee, 0x47, 0x35, 0x98, 0xdc, 0xd9, 0xc8, 0x3f, 0x0d, 0x03, 0x23, ++ 0xbf, 0x1f, 0xa0, 0xb5, 0x4f, 0xa6, 0x1a, 0x89, 0x0e, 0x05, 0x7d, 0x7c, ++ 0xbf, 0xeb, 0x48, 0x2a, 0xcf, 0x6f, 0x0e, 0xf1, 0xb1, 0xc7, 0x90, 0x8f, ++ 0xaa, 0x1a, 0x64, 0xbb, 0x1f, 0xe8, 0x7e, 0xa9, 0x41, 0x76, 0x9b, 0xc0, ++ 0x1f, 0x3a, 0xef, 0xf6, 0x26, 0xe3, 0xd9, 0x9c, 0x0b, 0xcc, 0x77, 0xcb, ++ 0x44, 0xb4, 0xf3, 0x22, 0x8e, 0xd4, 0xbe, 0xf7, 0x72, 0x17, 0xfa, 0x29, ++ 0x60, 0xa7, 0xee, 0xfe, 0x65, 0xef, 0xfb, 0x0f, 0xab, 0x99, 0xf6, 0x5b, ++ 0x63, 0x40, 0xbe, 0x5a, 0xd6, 0x24, 0xb1, 0xff, 0x00, 0x1c, 0x2c, 0x7f, ++ 0x26, 0xf2, 0xf9, 0xd5, 0xda, 0xf7, 0x6a, 0x1a, 0xb7, 0x1c, 0xc6, 0xef, ++ 0x88, 0xad, 0x7c, 0x4e, 0x77, 0x1f, 0xfd, 0x15, 0xfa, 0x0e, 0x46, 0xa4, ++ 0x1f, 0x73, 0x24, 0x55, 0xf8, 0x27, 0x59, 0x2c, 0x0b, 0xfd, 0x13, 0xe0, ++ 0x23, 0xd2, 0x0f, 0x46, 0x85, 0x1d, 0x31, 0x03, 0xdf, 0xae, 0x48, 0xf7, ++ 0xee, 0x43, 0x7b, 0xfc, 0xb2, 0xf8, 0xbe, 0x02, 0xe8, 0x51, 0x92, 0xc7, ++ 0x7d, 0x4e, 0x61, 0x57, 0x44, 0xfd, 0x41, 0x70, 0x07, 0xaf, 0x2b, 0x1e, ++ 0xbe, 0xcd, 0x2f, 0x1b, 0xe0, 0xfd, 0x09, 0x8a, 0x5f, 0x46, 0x7b, 0xc5, ++ 0xa0, 0xc5, 0x7d, 0x87, 0x71, 0x6e, 0x6f, 0x19, 0x7d, 0x87, 0xc9, 0xe7, ++ 0x3e, 0x8d, 0xfb, 0x3e, 0xcb, 0x85, 0x3e, 0x5c, 0xae, 0xf9, 0x69, 0x7e, ++ 0xbe, 0x3f, 0x02, 0x66, 0x37, 0xc2, 0x4f, 0xab, 0x16, 0xab, 0x1f, 0xcf, ++ 0xfc, 0xb5, 0xb1, 0xb8, 0xfe, 0x6d, 0x12, 0xc5, 0xcb, 0xab, 0xb6, 0x45, ++ 0xee, 0xa7, 0x54, 0x8b, 0xf5, 0xaf, 0xde, 0x7c, 0xf2, 0x30, 0x9a, 0xbc, ++ 0xca, 0x7a, 0xdd, 0x7d, 0xb1, 0xfe, 0x6a, 0xdd, 0xfa, 0xb5, 0x7d, 0xf3, ++ 0xcf, 0x53, 0x23, 0xeb, 0xbf, 0xae, 0x77, 0x3f, 0xe4, 0x2f, 0x46, 0xee, ++ 0x37, 0xbc, 0x2d, 0xc6, 0xd1, 0xee, 0x9b, 0xd2, 0xb8, 0x7e, 0xac, 0x82, ++ 0x65, 0x20, 0xdd, 0x56, 0xfb, 0x65, 0xbf, 0x9f, 0xfb, 0x79, 0x36, 0xfc, ++ 0x5e, 0xd0, 0x9d, 0x62, 0x5d, 0x77, 0x0a, 0xfa, 0xd3, 0x3a, 0xe1, 0xb9, ++ 0xca, 0x6d, 0x92, 0x3f, 0x80, 0x3c, 0xfe, 0x78, 0x64, 0x9d, 0xe9, 0x5d, ++ 0xf5, 0x8b, 0xcb, 0x90, 0xae, 0x7a, 0x3e, 0x59, 0x29, 0xd6, 0xbd, 0x7c, ++ 0xbb, 0x91, 0xfc, 0x55, 0xfc, 0xfe, 0x0f, 0xca, 0x9d, 0x9e, 0x3f, 0x56, ++ 0x8a, 0xf5, 0xaf, 0xd4, 0xad, 0xbf, 0xca, 0x2b, 0xe9, 0xe0, 0xe3, 0x7e, ++ 0x74, 0x4f, 0xf8, 0xea, 0x6f, 0x41, 0x3a, 0x57, 0x6e, 0x37, 0xb2, 0xde, ++ 0xe0, 0xd3, 0xe8, 0xb5, 0x52, 0xe3, 0xeb, 0x3e, 0xe0, 0xd5, 0xe0, 0xd4, ++ 0xe0, 0xfe, 0xa1, 0xf0, 0xf6, 0x4f, 0x13, 0xf9, 0xad, 0x11, 0x6c, 0x04, ++ 0xd1, 0xa9, 0x3c, 0xe1, 0xba, 0xe8, 0xa4, 0xf7, 0x73, 0x77, 0x1d, 0x1e, ++ 0x41, 0xdf, 0x5b, 0xbb, 0x7c, 0x64, 0x20, 0xc5, 0xfb, 0x1a, 0x1f, 0xe8, ++ 0xdf, 0x2f, 0x13, 0x7e, 0xf2, 0xd4, 0xcd, 0xdc, 0x6f, 0xbc, 0xd4, 0x58, ++ 0x6c, 0x1d, 0x89, 0xf1, 0x4c, 0x9b, 0xc1, 0x25, 0xa9, 0x14, 0x9f, 0xc5, ++ 0x8e, 0x04, 0xbc, 0xe4, 0x37, 0xcb, 0xac, 0x02, 0xfa, 0x5d, 0x4d, 0x59, ++ 0x9b, 0xf0, 0xfb, 0x83, 0x79, 0x27, 0x0a, 0xe6, 0x60, 0xfc, 0x9f, 0x7f, ++ 0xc2, 0x40, 0xe7, 0xef, 0xf6, 0x1c, 0x29, 0xa0, 0x7d, 0xe7, 0xfc, 0xa3, ++ 0x83, 0x12, 0xb2, 0x28, 0xcf, 0xed, 0xa2, 0xef, 0xe3, 0xc0, 0x38, 0x64, ++ 0x5f, 0xbb, 0xda, 0xf2, 0x36, 0xe1, 0xf9, 0x84, 0xae, 0xb6, 0x92, 0x02, ++ 0x1c, 0x57, 0x82, 0xe7, 0xd0, 0x0f, 0xc8, 0x13, 0x76, 0xa2, 0xa6, 0x2d, ++ 0xcf, 0x1a, 0x7e, 0xfe, 0x7c, 0x4c, 0x1a, 0x8f, 0xef, 0xd7, 0x3b, 0x3f, ++ 0xfd, 0x39, 0xfa, 0xe9, 0x53, 0x77, 0x19, 0xe9, 0x9c, 0xc5, 0x54, 0x63, ++ 0xf0, 0x4d, 0xac, 0xdb, 0xda, 0x73, 0x44, 0xa1, 0x7d, 0xf2, 0xd5, 0x27, ++ 0x96, 0x3c, 0x14, 0x85, 0xf4, 0x7d, 0x51, 0xa2, 0x7d, 0xf2, 0xc3, 0xed, ++ 0x6b, 0x13, 0x17, 0x22, 0x9f, 0x35, 0x19, 0xed, 0xb8, 0xef, 0xdd, 0xd5, ++ 0xf4, 0xe3, 0x03, 0x78, 0xdf, 0xb7, 0x5d, 0xa2, 0xef, 0x5e, 0x54, 0x37, ++ 0x97, 0x66, 0xef, 0x80, 0x7e, 0xde, 0x96, 0x7c, 0x57, 0xf8, 0xf9, 0xb3, ++ 0x3c, 0x87, 0x4a, 0xf0, 0xb1, 0x54, 0x2b, 0xc5, 0xcf, 0x53, 0xfb, 0x19, ++ 0xc9, 0x6e, 0x5e, 0x4c, 0xb3, 0xfe, 0x16, 0xfd, 0x9f, 0x95, 0xee, 0x2d, ++ 0x24, 0xdf, 0x17, 0xf7, 0xef, 0x31, 0x51, 0xdd, 0xde, 0x0e, 0x89, 0xa1, ++ 0x29, 0x3b, 0xec, 0x3c, 0xf8, 0x0a, 0xe2, 0xe3, 0xe2, 0xab, 0x27, 0x4d, ++ 0xe8, 0x84, 0x17, 0x37, 0x9c, 0x34, 0x75, 0x7c, 0x8f, 0x3f, 0x70, 0xc9, ++ 0x2f, 0xb3, 0x00, 0xc5, 0xcd, 0x1b, 0x4d, 0x18, 0xc7, 0x54, 0x6e, 0xd1, ++ 0xfa, 0x1d, 0x26, 0xa4, 0x93, 0x47, 0xf8, 0x47, 0x55, 0xcf, 0x7d, 0x4c, ++ 0xfd, 0x95, 0xe8, 0xcf, 0xc3, 0x7c, 0x2b, 0x9f, 0x91, 0xa9, 0x7e, 0xf7, ++ 0x60, 0xf3, 0x6b, 0x26, 0xe4, 0xe7, 0xaa, 0xed, 0x12, 0x4b, 0xc9, 0x0c, ++ 0xbb, 0xbf, 0x59, 0x8a, 0xf8, 0x5e, 0xc3, 0x12, 0xc6, 0xf9, 0x60, 0x89, ++ 0xd0, 0x3f, 0xab, 0x98, 0x7f, 0x7d, 0x1a, 0x3c, 0xb7, 0x6a, 0x23, 0xaf, ++ 0x5b, 0x60, 0x8f, 0x46, 0xd6, 0x01, 0x6b, 0xfc, 0xbd, 0x42, 0xf0, 0xf7, ++ 0xaa, 0xed, 0xb3, 0xe8, 0xfb, 0x53, 0x3d, 0xbe, 0x5b, 0x88, 0x71, 0xe3, ++ 0x0d, 0xf8, 0x1c, 0xe7, 0xef, 0x65, 0x9b, 0x23, 0xef, 0xaf, 0x10, 0x7c, ++ 0xbd, 0x42, 0xc7, 0xd7, 0x3f, 0x49, 0x13, 0xfa, 0x67, 0x38, 0x1b, 0x8e, ++ 0x7c, 0xfd, 0x75, 0xa1, 0x1a, 0x97, 0x03, 0xd7, 0xbf, 0x3e, 0xb9, 0x72, ++ 0x40, 0x6f, 0xe7, 0xec, 0xdb, 0x84, 0xbd, 0xd6, 0xec, 0xe5, 0xe5, 0x80, ++ 0x81, 0xec, 0x8d, 0xfe, 0xb9, 0xce, 0xc6, 0x2b, 0x04, 0x67, 0x75, 0xdb, ++ 0x65, 0x13, 0xfa, 0xa7, 0x65, 0x4d, 0x5f, 0x10, 0xfe, 0x2b, 0x9a, 0x5a, ++ 0xa9, 0x7e, 0xe4, 0x66, 0xe6, 0x5d, 0x8d, 0xf8, 0xba, 0xb9, 0xc9, 0x6a, ++ 0x47, 0xb9, 0xae, 0xe8, 0xe0, 0x7a, 0x68, 0x5a, 0x93, 0xd9, 0xef, 0x97, ++ 0xf0, 0x7e, 0x3d, 0xd5, 0x39, 0x77, 0xb5, 0xf0, 0xba, 0x49, 0xdf, 0x7e, ++ 0x89, 0xfc, 0x1c, 0x4d, 0x8f, 0x69, 0xdf, 0x77, 0x5c, 0x26, 0xf0, 0xb8, ++ 0x0c, 0x14, 0x78, 0x7a, 0x1e, 0xfa, 0xbb, 0x3c, 0x6e, 0xae, 0x12, 0x71, ++ 0xf2, 0x8a, 0x61, 0x5b, 0x0e, 0xe3, 0x3e, 0x7b, 0x95, 0xb8, 0xbf, 0xfa, ++ 0xe8, 0xc1, 0x58, 0xf4, 0x0f, 0xa7, 0xb1, 0x2f, 0x6e, 0x47, 0xfa, 0xc0, ++ 0x7c, 0x0c, 0xe7, 0x63, 0xcf, 0x44, 0xe2, 0x7d, 0xba, 0xd0, 0x8b, 0xd3, ++ 0xb7, 0x73, 0xbd, 0xa8, 0xb7, 0x6b, 0x5d, 0xa9, 0xd9, 0x33, 0x29, 0x8f, ++ 0x09, 0x71, 0x2a, 0xc2, 0xb5, 0x7a, 0x7b, 0x24, 0xbe, 0xab, 0x74, 0xf1, ++ 0xf9, 0x63, 0x69, 0x3c, 0x3f, 0xf6, 0x82, 0x0e, 0xdf, 0x15, 0x41, 0x66, ++ 0xcd, 0x41, 0x38, 0x54, 0xd9, 0xe5, 0xa7, 0xa7, 0xdb, 0x15, 0x9c, 0xf7, ++ 0x48, 0x2e, 0xd8, 0x5b, 0xb4, 0x93, 0x6a, 0xd6, 0xf7, 0x7e, 0x87, 0xf1, ++ 0x4d, 0xe1, 0x67, 0x6b, 0xfd, 0x99, 0xe2, 0x1c, 0x78, 0xbd, 0x7d, 0xa3, ++ 0x2d, 0x3c, 0x6e, 0x8e, 0x4a, 0xe7, 0xfe, 0xc2, 0xca, 0xf1, 0xb2, 0x0f, ++ 0xe9, 0xd5, 0x1d, 0x6f, 0x0c, 0x3a, 0x98, 0xab, 0x1a, 0x42, 0xf1, 0x06, ++ 0xc4, 0x19, 0xcd, 0x69, 0x49, 0x3c, 0xee, 0xc0, 0x82, 0x92, 0x37, 0x32, ++ 0x64, 0x96, 0x98, 0x18, 0x8a, 0x37, 0x1e, 0x71, 0x6e, 0xaa, 0xc8, 0x83, ++ 0x7e, 0xf5, 0x76, 0x2e, 0xf7, 0x9d, 0xe3, 0x60, 0x3c, 0x3c, 0x7f, 0xad, ++ 0x30, 0xf2, 0x47, 0xab, 0xb7, 0x9b, 0xe9, 0x9c, 0x62, 0x35, 0xd0, 0x9f, ++ 0xe2, 0x8a, 0x26, 0x7e, 0x9e, 0xc2, 0xd3, 0x24, 0x95, 0x22, 0xdd, 0xc1, ++ 0x5f, 0x3f, 0x9a, 0x86, 0xfb, 0xb1, 0x98, 0x52, 0x85, 0x75, 0xcf, 0x6a, ++ 0xe4, 0x7c, 0x3f, 0xab, 0xe4, 0x0b, 0xe2, 0x97, 0xa3, 0x83, 0xf8, 0x7a, ++ 0x2f, 0x2b, 0x6a, 0x4a, 0x6f, 0xfe, 0xbb, 0xe6, 0xb7, 0xe3, 0xf9, 0x30, ++ 0x35, 0xcc, 0x7f, 0xaf, 0x02, 0x39, 0xc5, 0xe7, 0xab, 0x9a, 0x78, 0x3d, ++ 0x52, 0xc3, 0x81, 0x6f, 0xfa, 0x67, 0xa2, 0x9e, 0x6b, 0xfe, 0xaf, 0xfe, ++ 0x8b, 0xa1, 0xfd, 0x5a, 0xd8, 0x45, 0xcd, 0x2f, 0x0c, 0x82, 0x5f, 0x38, ++ 0x90, 0xfb, 0x45, 0xf4, 0xbd, 0xc9, 0xbb, 0x85, 0x7c, 0x2d, 0xb3, 0xf3, ++ 0x7d, 0xba, 0xbb, 0x85, 0xfd, 0x61, 0x52, 0x1d, 0xf1, 0x79, 0x95, 0xb1, ++ 0xfe, 0x50, 0x3c, 0xfa, 0x59, 0x3b, 0x78, 0xbd, 0x00, 0xdb, 0x87, 0x1f, ++ 0x85, 0x03, 0xfd, 0xf8, 0xf6, 0x4b, 0x75, 0xf1, 0xb0, 0xee, 0xce, 0x97, ++ 0x24, 0xaa, 0x87, 0xc3, 0xf7, 0xf1, 0x7b, 0x94, 0x9d, 0x4b, 0xea, 0x3f, ++ 0x41, 0xbf, 0xfb, 0xeb, 0x1d, 0x16, 0xf2, 0x37, 0xef, 0x06, 0xbf, 0x65, ++ 0x4a, 0x5e, 0x4f, 0xb9, 0xd4, 0xe4, 0x5b, 0xfb, 0x6e, 0x56, 0x0d, 0x7b, ++ 0x88, 0xfc, 0xcf, 0x87, 0x58, 0x1d, 0xb5, 0x95, 0x82, 0x9f, 0x3b, 0x1b, ++ 0x6b, 0xe9, 0xfb, 0xa0, 0x9a, 0xbf, 0x42, 0xef, 0x0f, 0xec, 0xe9, 0x8f, ++ 0x54, 0x0a, 0xbe, 0xaf, 0xd4, 0xf1, 0x5f, 0x54, 0x7a, 0x24, 0xdf, 0xd5, ++ 0xbc, 0x1d, 0x4d, 0x7e, 0x63, 0xd7, 0x51, 0xd9, 0x8e, 0xfb, 0x31, 0x80, ++ 0xaf, 0xdf, 0xa4, 0x85, 0xe3, 0x45, 0xf8, 0x21, 0x0d, 0x07, 0xa2, 0x88, ++ 0xae, 0x5d, 0x27, 0x6d, 0x64, 0x47, 0xfe, 0x2c, 0xf8, 0xed, 0xa2, 0xc8, ++ 0x3f, 0xd7, 0x8c, 0x93, 0x09, 0x0f, 0x86, 0xf1, 0xbc, 0xcd, 0x6e, 0x79, ++ 0x6d, 0x20, 0xd2, 0x11, 0xf1, 0x8e, 0xf5, 0xf7, 0x2f, 0xb7, 0xbc, 0x36, ++ 0x82, 0x9f, 0xfb, 0xf6, 0x13, 0xfe, 0x57, 0x6d, 0x93, 0x23, 0xbe, 0x0f, ++ 0x5b, 0x59, 0x1f, 0xf9, 0xfd, 0xd7, 0x9a, 0xb7, 0x6f, 0xa3, 0xef, 0x08, ++ 0x55, 0xef, 0xef, 0x86, 0x6b, 0x88, 0x29, 0x31, 0x04, 0x57, 0x5f, 0x72, ++ 0x20, 0x49, 0x3c, 0x8e, 0x34, 0x48, 0x91, 0x71, 0x64, 0xf5, 0x3e, 0xd9, ++ 0x13, 0x5e, 0x77, 0x06, 0xeb, 0xb9, 0x03, 0xf5, 0x51, 0xba, 0x90, 0x07, ++ 0xa6, 0x04, 0x93, 0x31, 0xff, 0x35, 0x00, 0x9d, 0x06, 0x80, 0xaf, 0xa6, ++ 0x89, 0xd3, 0xd5, 0xd0, 0xcc, 0x5b, 0x98, 0xff, 0x16, 0x9e, 0x27, 0x31, ++ 0xd2, 0xfc, 0x3d, 0xee, 0x17, 0xf9, 0x56, 0xe3, 0xfd, 0xaf, 0x33, 0xad, ++ 0x7c, 0xff, 0xfa, 0xaa, 0xaf, 0x02, 0xfb, 0xf7, 0x0f, 0x94, 0xa9, 0xae, ++ 0xf3, 0xfe, 0xb7, 0x57, 0x0e, 0x0d, 0xd7, 0xa3, 0x0c, 0xe1, 0x04, 0xba, ++ 0x56, 0x1b, 0x83, 0xc9, 0x14, 0x6f, 0x9e, 0x34, 0x10, 0x7c, 0xd5, 0x27, ++ 0x2f, 0x27, 0x0f, 0xb2, 0xa1, 0x5e, 0xda, 0x52, 0x82, 0xdf, 0x0f, 0x9d, ++ 0x2e, 0xf4, 0xdf, 0xe1, 0x81, 0xd6, 0xe5, 0xc8, 0xcf, 0x3e, 0x9c, 0x37, ++ 0x25, 0x34, 0xce, 0xcb, 0x69, 0xbc, 0x7e, 0x8f, 0xe1, 0x7a, 0x9d, 0xe8, ++ 0x6d, 0xfc, 0x92, 0x8f, 0x2b, 0xd6, 0xfb, 0x10, 0x9b, 0x2d, 0xe2, 0x6a, ++ 0xce, 0x4f, 0x39, 0x69, 0x7c, 0xbd, 0x10, 0x8f, 0x8c, 0x4b, 0xef, 0x25, ++ 0x1e, 0xb9, 0x5e, 0xbf, 0x13, 0xec, 0xc3, 0xa9, 0x85, 0x12, 0xd6, 0x33, ++ 0x29, 0x3e, 0x8c, 0x87, 0xf7, 0xbc, 0xc7, 0xf5, 0x42, 0x4d, 0xf3, 0xb2, ++ 0x8f, 0x90, 0xdf, 0xab, 0xdf, 0x37, 0x53, 0x9d, 0xd7, 0xfd, 0x2d, 0xcb, ++ 0x86, 0x52, 0xbd, 0xaf, 0xd7, 0x7b, 0x03, 0xfa, 0x1b, 0x5f, 0xb7, 0xac, ++ 0xb8, 0x81, 0xf2, 0x83, 0xd2, 0x43, 0x04, 0x97, 0x0f, 0xe1, 0x73, 0xa2, ++ 0x5f, 0x73, 0x26, 0x19, 0xeb, 0x52, 0x2b, 0x9b, 0xcf, 0x24, 0x93, 0xdd, ++ 0xdd, 0x3b, 0x7a, 0x93, 0x2f, 0x06, 0xfd, 0x97, 0xbc, 0xe9, 0x78, 0x1d, ++ 0xfc, 0x09, 0xe2, 0x3f, 0xf0, 0x6b, 0x88, 0xff, 0xf6, 0xb4, 0x15, 0x68, ++ 0x7e, 0x8c, 0x15, 0xc7, 0xad, 0x3c, 0xaa, 0x78, 0x10, 0x3f, 0x95, 0x47, ++ 0x0b, 0x8e, 0x57, 0xa0, 0x7f, 0x71, 0xa2, 0xa8, 0x00, 0xd5, 0xb9, 0x74, ++ 0xa2, 0x80, 0xfc, 0x98, 0x7c, 0xf4, 0x63, 0x6c, 0x21, 0xbf, 0xa6, 0x5b, ++ 0x4f, 0xa6, 0x73, 0x3f, 0xa6, 0xab, 0x35, 0x8a, 0xf2, 0x0b, 0x12, 0x1b, ++ 0xc8, 0xf9, 0x87, 0x0d, 0x8a, 0xe0, 0x9f, 0xd5, 0x0d, 0xaf, 0x93, 0xbd, ++ 0x5f, 0xdd, 0x28, 0x47, 0xd4, 0x2f, 0x6a, 0xef, 0xdd, 0x99, 0xae, 0xd0, ++ 0x38, 0xcb, 0x34, 0xfe, 0xa9, 0x97, 0xdc, 0xc4, 0x1f, 0xbb, 0x78, 0xbb, ++ 0xba, 0x71, 0x0f, 0xad, 0x6f, 0x95, 0xb1, 0x9e, 0xe8, 0x5d, 0xb3, 0xdd, ++ 0xc8, 0xef, 0xef, 0xe0, 0xad, 0xf6, 0x7d, 0x58, 0x1f, 0x8b, 0xf7, 0x21, ++ 0x3e, 0x8e, 0xe3, 0x25, 0xa0, 0xc3, 0x34, 0x93, 0x3f, 0x03, 0xf3, 0xd3, ++ 0xc7, 0x32, 0xb9, 0x9f, 0xaf, 0xa7, 0xc7, 0xe7, 0xe9, 0x3c, 0xff, 0x71, ++ 0xec, 0xac, 0x77, 0x00, 0xf2, 0xcb, 0xb1, 0x42, 0xef, 0x50, 0x7b, 0x2f, ++ 0x76, 0xc2, 0xc7, 0x8a, 0x78, 0x5c, 0x2b, 0x09, 0x7c, 0x37, 0xf0, 0x73, ++ 0x53, 0xfa, 0xe7, 0x3e, 0x4b, 0x97, 0xc4, 0x77, 0x42, 0x22, 0xcf, 0xb7, ++ 0x6a, 0xed, 0xa9, 0x74, 0xae, 0x3f, 0xa7, 0x99, 0x7a, 0xff, 0x2e, 0xe0, ++ 0x6f, 0xd2, 0xb5, 0x73, 0x09, 0xec, 0x31, 0x43, 0x01, 0x46, 0xc5, 0x46, ++ 0xfb, 0x06, 0xe1, 0xd7, 0xa7, 0x86, 0x7d, 0xd7, 0x61, 0xce, 0xcd, 0x46, ++ 0xf2, 0x17, 0x4e, 0x31, 0xfb, 0xeb, 0x58, 0xef, 0x38, 0x43, 0xd3, 0xb3, ++ 0xe3, 0xb8, 0x7d, 0xd5, 0xe7, 0xcb, 0xe7, 0x89, 0xf7, 0x3c, 0x9b, 0x55, ++ 0xbe, 0x5f, 0xa4, 0x3b, 0x3f, 0x33, 0x4f, 0x3b, 0xdf, 0xa4, 0x3b, 0xef, ++ 0x36, 0x4f, 0xf8, 0x3b, 0xf3, 0x74, 0xfe, 0xce, 0xd3, 0xe9, 0xc2, 0x8f, ++ 0x1f, 0xc2, 0x86, 0xa0, 0x1e, 0xac, 0x17, 0xe7, 0xef, 0xd6, 0x0e, 0x8f, ++ 0xf2, 0x87, 0xe7, 0xb3, 0xf4, 0xed, 0x61, 0xb1, 0x2f, 0x82, 0xe7, 0x87, ++ 0xb0, 0xad, 0x19, 0xfe, 0x2e, 0xe5, 0x7d, 0x8e, 0xb5, 0x9e, 0x7d, 0x85, ++ 0xea, 0xdd, 0xce, 0x46, 0xb1, 0x81, 0x3c, 0xaf, 0x47, 0xf9, 0xef, 0xca, ++ 0x3e, 0xf2, 0xdf, 0x35, 0xdd, 0x72, 0x39, 0x37, 0x82, 0xcf, 0x34, 0xba, ++ 0x5c, 0x12, 0xdf, 0x83, 0xd1, 0xd3, 0x65, 0xb7, 0xa6, 0xaf, 0xc4, 0xbe, ++ 0x5d, 0xb4, 0xd8, 0xb7, 0xf3, 0x1b, 0xbd, 0xbb, 0x51, 0x9e, 0x2b, 0x2d, ++ 0x17, 0x4d, 0xbc, 0xee, 0x30, 0x68, 0x42, 0x7d, 0x56, 0x33, 0x9c, 0xfb, ++ 0x4d, 0x97, 0x4a, 0x25, 0xda, 0x6f, 0x07, 0x38, 0xfb, 0x9b, 0xc3, 0xf4, ++ 0xfb, 0xa5, 0x54, 0x1e, 0x7f, 0xdd, 0x7f, 0x8b, 0x44, 0x79, 0xd7, 0x56, ++ 0x7c, 0x1e, 0xe3, 0xac, 0x7a, 0x89, 0xea, 0xbc, 0x2b, 0x03, 0xed, 0x26, ++ 0xe4, 0xa7, 0x21, 0x0d, 0x8b, 0x1f, 0x26, 0xb9, 0xf5, 0xb1, 0xd3, 0x2c, ++ 0xec, 0xbb, 0x1a, 0x33, 0x2d, 0xdc, 0x4e, 0x76, 0xd3, 0x4f, 0x5b, 0x77, ++ 0xb7, 0x1d, 0x8b, 0xf7, 0x71, 0x7d, 0x9c, 0x48, 0x2d, 0x3e, 0x8f, 0x76, ++ 0x71, 0x86, 0xb0, 0x83, 0xfa, 0x73, 0x51, 0x43, 0x59, 0x7b, 0x59, 0x3a, ++ 0xc0, 0x33, 0xdf, 0x2d, 0xb9, 0xb0, 0x1e, 0xa0, 0x2f, 0x3a, 0xcf, 0x5e, ++ 0x30, 0xea, 0x75, 0x44, 0xc3, 0xf5, 0xd2, 0xbb, 0x33, 0xdd, 0xfb, 0x4e, ++ 0x3a, 0xca, 0x79, 0xfb, 0xe5, 0x5b, 0x30, 0x8f, 0x7a, 0x6c, 0xf8, 0x67, ++ 0xfd, 0xd1, 0x8e, 0x56, 0xf5, 0xc1, 0xc7, 0x1f, 0x0b, 0x3c, 0xeb, 0xbf, ++ 0x2b, 0xe3, 0x1a, 0xaa, 0xd6, 0xe2, 0xf7, 0x55, 0x6a, 0x9d, 0xde, 0x0e, ++ 0xd2, 0x9f, 0x86, 0x6f, 0x63, 0x47, 0x30, 0x1c, 0xa7, 0xe3, 0x37, 0x6b, ++ 0x25, 0xa4, 0x13, 0x23, 0xfe, 0xef, 0x4b, 0x7e, 0x3e, 0x13, 0xe3, 0x7e, ++ 0x96, 0xce, 0xbf, 0x77, 0x0f, 0xb8, 0xa7, 0x7d, 0x97, 0x55, 0xe9, 0xbc, ++ 0x4e, 0xeb, 0x98, 0xd1, 0x9f, 0x41, 0x79, 0x8a, 0x9c, 0xeb, 0xdb, 0xf7, ++ 0xaa, 0xd9, 0xf7, 0x46, 0x2e, 0xea, 0xb3, 0xce, 0xd6, 0xa3, 0xb9, 0xa6, ++ 0x30, 0xba, 0x5e, 0x5c, 0x0b, 0x7a, 0x00, 0xed, 0x4a, 0xf3, 0xc1, 0x64, ++ 0xd5, 0x16, 0xce, 0x77, 0x06, 0xe2, 0x37, 0x49, 0xd2, 0xf8, 0x4f, 0x11, ++ 0xf6, 0x32, 0x92, 0x0f, 0x2f, 0x22, 0x1f, 0xe6, 0x60, 0x7b, 0x26, 0x76, ++ 0x10, 0xea, 0xe3, 0x5d, 0xa7, 0x62, 0x07, 0xe3, 0x78, 0x7b, 0x79, 0xdb, ++ 0xcd, 0xaf, 0x4d, 0xfc, 0x7b, 0xf6, 0x10, 0x1f, 0x0d, 0x99, 0x17, 0x13, ++ 0x0e, 0xdf, 0xc3, 0x04, 0xdf, 0xa5, 0x7a, 0x3e, 0x0e, 0x63, 0x1d, 0x43, ++ 0xe6, 0x8c, 0x0c, 0xbf, 0x5f, 0xdb, 0x17, 0x1f, 0x5b, 0x33, 0x88, 0x8f, ++ 0x3b, 0x22, 0xf8, 0x58, 0x5b, 0x6f, 0x3d, 0x7e, 0xcf, 0x07, 0xe3, 0x80, ++ 0x16, 0x33, 0x7d, 0xcf, 0x07, 0xf3, 0xd7, 0x8e, 0x30, 0x39, 0x19, 0x9a, ++ 0xc1, 0xf5, 0xcf, 0x58, 0xf1, 0xfd, 0x9e, 0xf1, 0xcc, 0x47, 0xdf, 0x39, ++ 0x1c, 0x2b, 0xbe, 0xe3, 0x33, 0x5e, 0x61, 0x01, 0x25, 0x1e, 0xf7, 0xcd, ++ 0x02, 0x32, 0xdf, 0xf7, 0xe5, 0xe7, 0x2d, 0xc6, 0x08, 0x7e, 0x1e, 0xab, ++ 0x04, 0x5a, 0xb1, 0x8e, 0x62, 0xbc, 0xd8, 0xe7, 0x99, 0xc0, 0xda, 0xe9, ++ 0xb9, 0x29, 0x2c, 0x48, 0xad, 0x9b, 0xd9, 0xe9, 0x1c, 0x45, 0x11, 0x73, ++ 0x51, 0x3b, 0xce, 0x12, 0x98, 0x8e, 0xee, 0x54, 0x4e, 0x7d, 0x3d, 0xd5, ++ 0x25, 0x06, 0x92, 0x15, 0xc7, 0x79, 0x8b, 0x38, 0xaf, 0xd1, 0x0b, 0xdd, ++ 0x42, 0xeb, 0x57, 0xe8, 0xbb, 0x3d, 0xc4, 0x9f, 0x32, 0x9e, 0xd7, 0xe9, ++ 0xfd, 0xbb, 0x2f, 0xb3, 0x33, 0xb8, 0xdc, 0xd3, 0xc7, 0x45, 0x90, 0xbe, ++ 0x97, 0x18, 0xe5, 0xb9, 0xf0, 0x7b, 0x6d, 0x38, 0xc9, 0x44, 0x85, 0x95, ++ 0x63, 0x7d, 0xd3, 0x64, 0x85, 0x59, 0xa2, 0x01, 0xde, 0x5d, 0x87, 0x0c, ++ 0x24, 0xcf, 0x2d, 0x1d, 0xaa, 0x1f, 0xeb, 0x53, 0x5d, 0x09, 0xe2, 0xbd, ++ 0xcf, 0x19, 0xd5, 0xe1, 0x8e, 0x75, 0x73, 0x79, 0x45, 0x93, 0x83, 0xf5, ++ 0x18, 0xda, 0x7a, 0xf5, 0x78, 0x98, 0x00, 0xe3, 0x61, 0x9e, 0x6d, 0xac, ++ 0x02, 0x91, 0x28, 0xe1, 0x31, 0x40, 0xf3, 0xdd, 0xc8, 0xf8, 0x39, 0x92, ++ 0x42, 0xa6, 0x52, 0xfd, 0x73, 0x69, 0x46, 0xa6, 0xd0, 0xf7, 0x41, 0x8a, ++ 0xa3, 0x8a, 0x21, 0x8e, 0x42, 0x7d, 0x6f, 0xb0, 0xf8, 0x08, 0x1f, 0xd3, ++ 0x33, 0x54, 0xba, 0x8f, 0xfb, 0x25, 0xb1, 0x30, 0xce, 0x84, 0x8d, 0x12, ++ 0x7b, 0x0f, 0xf7, 0x3f, 0xb2, 0xf8, 0x7a, 0xb5, 0xf1, 0x27, 0x00, 0x23, ++ 0xe0, 0xf9, 0xc2, 0xe9, 0x19, 0xdc, 0x9e, 0x61, 0x4a, 0xf5, 0xbd, 0x78, ++ 0xbe, 0x8f, 0x12, 0x4b, 0x05, 0xcd, 0x25, 0x76, 0xfe, 0x9d, 0xa3, 0x64, ++ 0xfa, 0xce, 0xd1, 0xf5, 0xe2, 0xb5, 0x2b, 0x99, 0x7f, 0xef, 0x32, 0xf6, ++ 0xce, 0x60, 0xe7, 0xcf, 0x0a, 0x42, 0xfb, 0x49, 0x2e, 0xfc, 0xee, 0x51, ++ 0x6c, 0xe8, 0x3b, 0x9b, 0x2e, 0xed, 0xdf, 0x83, 0x08, 0x44, 0xfe, 0x7b, ++ 0x10, 0x77, 0x64, 0x2c, 0xf9, 0x11, 0xf2, 0xa3, 0x56, 0xaf, 0xc7, 0xbc, ++ 0xfc, 0xdf, 0x7d, 0xd0, 0xd7, 0xeb, 0x85, 0xd5, 0xe7, 0xb1, 0x0b, 0x61, ++ 0xe7, 0xb0, 0xb5, 0xba, 0x92, 0x6d, 0xfe, 0xd9, 0x2a, 0x9e, 0xf3, 0x5b, ++ 0x90, 0x68, 0xa1, 0x73, 0xbf, 0x79, 0x96, 0xfe, 0xf9, 0x68, 0xc7, 0x06, ++ 0x3a, 0xbd, 0x34, 0xfe, 0xfb, 0xd2, 0xf6, 0xc1, 0x34, 0x98, 0xe2, 0x1f, ++ 0xed, 0x89, 0x09, 0xf1, 0xbb, 0x95, 0xb9, 0xc7, 0x21, 0xbe, 0x43, 0x75, ++ 0x83, 0xfc, 0x3b, 0x50, 0xdd, 0xe7, 0xae, 0x92, 0x19, 0x9d, 0x57, 0xb4, ++ 0x9a, 0x79, 0x7d, 0xe5, 0x63, 0x20, 0x1f, 0xf8, 0x1d, 0x26, 0x90, 0x2e, ++ 0x15, 0xeb, 0x68, 0xd8, 0x83, 0xc5, 0x54, 0x8f, 0xb9, 0xde, 0x61, 0x71, ++ 0xe1, 0x79, 0x09, 0x33, 0xc2, 0x6d, 0x0d, 0xc1, 0x5d, 0x6b, 0x11, 0xdf, ++ 0x05, 0xb5, 0xf0, 0x7d, 0x71, 0x7d, 0x3d, 0x68, 0xad, 0xcd, 0x40, 0xdf, ++ 0x1d, 0xad, 0x65, 0xd1, 0x74, 0x0e, 0x3d, 0x29, 0xda, 0xbb, 0x2e, 0x03, ++ 0xe0, 0xba, 0x2f, 0xa6, 0x88, 0xce, 0x77, 0x67, 0xef, 0x9c, 0xe4, 0x44, ++ 0xbf, 0x31, 0x7c, 0xfd, 0x93, 0xb4, 0xf5, 0x1b, 0x7a, 0xd6, 0x47, 0xc2, ++ 0x7a, 0x1f, 0xc9, 0xe8, 0xa5, 0x1e, 0x51, 0x5b, 0xa7, 0xf6, 0xef, 0x76, ++ 0xd8, 0x05, 0xfe, 0xb4, 0x75, 0xdb, 0xb5, 0x73, 0x4a, 0x6e, 0x25, 0xe2, ++ 0x9c, 0x92, 0x86, 0x8f, 0xc7, 0xa2, 0xf9, 0xba, 0x8d, 0xb8, 0xf3, 0x9f, ++ 0x45, 0xef, 0xaa, 0xa8, 0x37, 0xf4, 0xeb, 0xfd, 0xff, 0xdc, 0x29, 0xbc, ++ 0x16, 0xa0, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 xsem_int_table_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd3, 0xd7, ++ 0x66, 0x60, 0xf8, 0x51, 0x8f, 0xc0, 0x2e, 0x9a, 0x0c, 0x0c, 0x5d, 0xd2, ++ 0xa8, 0x62, 0xb4, 0xc4, 0x1d, 0x12, 0x0c, 0x0c, 0x97, 0x80, 0xf8, 0x0b, ++ 0x10, 0x67, 0x02, 0xed, 0xf5, 0x92, 0x64, 0x60, 0xf0, 0x06, 0xe2, 0x6d, ++ 0x40, 0xbc, 0x1d, 0x88, 0xc5, 0xa5, 0x18, 0x18, 0x02, 0x80, 0x38, 0x10, ++ 0x88, 0xfb, 0x80, 0xfc, 0x7e, 0x20, 0x4e, 0x07, 0xe2, 0x24, 0xa8, 0x1b, ++ 0xb3, 0x05, 0x19, 0x18, 0x72, 0x81, 0x38, 0x1f, 0x88, 0x0b, 0x81, 0x58, ++ 0x48, 0x80, 0x81, 0x41, 0x58, 0x80, 0x78, 0xfb, 0xcb, 0x15, 0x19, 0x18, ++ 0x5e, 0xab, 0x22, 0xf8, 0x5a, 0x6a, 0x0c, 0x0c, 0xc9, 0x1a, 0xf4, 0xf3, ++ 0xff, 0x60, 0xc3, 0x8e, 0xb6, 0xf4, 0xb5, 0xef, 0x14, 0xd0, 0xbe, 0xe5, ++ 0x6e, 0x08, 0xbe, 0x04, 0x90, 0xbd, 0xc2, 0x0d, 0x55, 0xcd, 0x4a, 0x37, ++ 0xfc, 0x66, 0xac, 0x42, 0x93, 0x5f, 0x8d, 0xc6, 0x5f, 0x83, 0x47, 0x7f, ++ 0xa2, 0x0d, 0x2a, 0x7f, 0x99, 0x29, 0x2a, 0x7f, 0x9d, 0x39, 0x03, 0xc3, ++ 0x43, 0x24, 0x35, 0xcb, 0x4d, 0xf1, 0xbb, 0x05, 0x1d, 0x0b, 0x02, 0xfd, ++ 0x27, 0x84, 0x27, 0x4c, 0x97, 0x30, 0xa2, 0xf2, 0x27, 0x32, 0xa1, 0xf2, ++ 0xf9, 0xa1, 0x7c, 0x00, 0xba, 0x0b, 0x80, 0x74, 0xa8, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00 ++}; ++ ++static const u8 xsem_pram_data_e1h[] = { ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, ++ 0x0d, 0x78, 0x54, 0xd5, 0x99, 0xf0, 0xb9, 0x3f, 0x73, 0x67, 0x26, 0x99, ++ 0x99, 0xdc, 0x24, 0x43, 0x32, 0x60, 0x12, 0x6e, 0x7e, 0xd0, 0xa0, 0x01, ++ 0x87, 0x98, 0x60, 0xb0, 0x58, 0x6e, 0x20, 0xe1, 0x47, 0xa3, 0x0e, 0x08, ++ 0x2c, 0xb4, 0x40, 0x26, 0x28, 0x88, 0x16, 0x6d, 0xc4, 0x9f, 0xc6, 0xdd, ++ 0x50, 0x06, 0x09, 0xbf, 0x09, 0x21, 0xe1, 0x4f, 0x70, 0xd1, 0x1d, 0x10, ++ 0x5d, 0xea, 0x63, 0xfb, 0xc5, 0x56, 0x5b, 0x75, 0xbb, 0x76, 0x82, 0xd6, ++ 0x46, 0xab, 0x35, 0x68, 0xd7, 0x87, 0x76, 0x77, 0x65, 0xa0, 0x15, 0xbf, ++ 0xba, 0x76, 0x1b, 0xd9, 0x6d, 0x97, 0x6e, 0xbb, 0xf5, 0x7b, 0xdf, 0xf7, ++ 0x9c, 0xcb, 0xcc, 0xbd, 0x99, 0x00, 0xfe, 0xec, 0xb7, 0xbb, 0xdf, 0xf3, ++ 0xc5, 0xc7, 0xe7, 0x70, 0xee, 0x3d, 0x3f, 0xef, 0x79, 0xcf, 0xfb, 0x7f, ++ 0xde, 0x73, 0xc7, 0xc5, 0x46, 0xb1, 0xe0, 0x58, 0xc6, 0x3e, 0xc6, 0xbf, ++ 0x69, 0x8c, 0x4d, 0xcc, 0x65, 0x8c, 0xd5, 0xa6, 0xca, 0x16, 0x0f, 0x8b, ++ 0x65, 0xe7, 0x30, 0x96, 0xdb, 0x21, 0x31, 0x56, 0xc3, 0xd8, 0xca, 0x76, ++ 0x25, 0x3e, 0x0b, 0xfe, 0x59, 0xd8, 0xd1, 0xf2, 0x0a, 0xd6, 0x97, 0xb7, ++ 0xb9, 0x0d, 0x77, 0x29, 0x63, 0xfd, 0x0f, 0xb8, 0xfd, 0x35, 0x50, 0x3f, ++ 0xbd, 0x5d, 0x09, 0xbb, 0xa1, 0x6b, 0xa3, 0xe2, 0xa3, 0xfa, 0xb2, 0x2e, ++ 0x57, 0xd8, 0x6d, 0xc0, 0xf3, 0xad, 0x1f, 0xbd, 0x9c, 0x8f, 0xef, 0x37, ++ 0x4a, 0x61, 0x06, 0x75, 0xc6, 0xee, 0x66, 0x6c, 0x32, 0x63, 0x6b, 0x3c, ++ 0xf0, 0x4f, 0xa8, 0x2f, 0xab, 0x48, 0x76, 0xe0, 0xfb, 0x77, 0xb7, 0x48, ++ 0xe1, 0x18, 0xbe, 0x66, 0xa6, 0x6f, 0x12, 0xbc, 0xbf, 0x95, 0xf1, 0xf7, ++ 0xcd, 0x0f, 0x28, 0x1a, 0x93, 0xa1, 0xbe, 0xef, 0xb6, 0x26, 0x36, 0x91, ++ 0xb1, 0x5b, 0x7a, 0x60, 0x16, 0x0f, 0x35, 0x64, 0x1f, 0xf3, 0xf6, 0x8c, ++ 0x15, 0x30, 0x16, 0xe1, 0x8f, 0x58, 0xcb, 0x16, 0x78, 0x5f, 0x99, 0x7a, ++ 0x1f, 0x61, 0x5d, 0x1f, 0x29, 0xd0, 0xaf, 0x39, 0xe6, 0x78, 0xbe, 0x6f, ++ 0xd6, 0xfb, 0x2c, 0x80, 0xef, 0xb5, 0xd4, 0x73, 0x58, 0xcf, 0x31, 0xfc, ++ 0xc7, 0x14, 0xc6, 0x2e, 0x65, 0xfe, 0xe0, 0xe9, 0x6c, 0xf8, 0x77, 0x98, ++ 0x85, 0x3f, 0x56, 0xa0, 0x6c, 0xc8, 0x67, 0x6c, 0x74, 0x0a, 0x5f, 0xce, ++ 0x92, 0x31, 0x80, 0x7e, 0x14, 0x63, 0x73, 0x19, 0x73, 0xb1, 0x72, 0x18, ++ 0xa7, 0xf6, 0x32, 0x17, 0x2b, 0x83, 0xf5, 0x59, 0x78, 0x6c, 0xe3, 0x78, ++ 0x5c, 0xd6, 0x24, 0x11, 0x1e, 0x97, 0xf9, 0x18, 0xd5, 0xdf, 0x9d, 0x2b, ++ 0xc5, 0x1f, 0x2c, 0xa5, 0x7e, 0x6c, 0x7a, 0x35, 0x94, 0xf0, 0xbc, 0x20, ++ 0x0f, 0xca, 0x20, 0x33, 0x0b, 0xa1, 0x8c, 0x78, 0x58, 0x22, 0x1b, 0xe0, ++ 0x9f, 0xdb, 0x76, 0xd9, 0x7b, 0xb8, 0xfe, 0x0d, 0x38, 0xd5, 0x68, 0x6a, ++ 0x9f, 0x08, 0xc0, 0xfb, 0x05, 0x2c, 0xea, 0x62, 0x00, 0xdf, 0x9f, 0xb1, ++ 0x18, 0x95, 0x8b, 0x59, 0x9c, 0xca, 0x2f, 0xb3, 0x04, 0xc1, 0xb1, 0x94, ++ 0x0d, 0x95, 0xa8, 0x50, 0xbf, 0x4b, 0x49, 0x6c, 0x62, 0x30, 0x4f, 0x38, ++ 0x14, 0x9d, 0x8e, 0xfb, 0xfb, 0xbb, 0xfa, 0x63, 0xef, 0x4a, 0xf0, 0xfe, ++ 0xfe, 0x6a, 0xa9, 0x76, 0x0a, 0x94, 0xcc, 0x97, 0x47, 0xeb, 0xbe, 0xd0, ++ 0xfa, 0xac, 0xf9, 0x55, 0x16, 0xb9, 0x0e, 0xc7, 0x61, 0x4c, 0x76, 0x45, ++ 0xfc, 0x8c, 0x8d, 0xb7, 0xd6, 0x79, 0x98, 0xc5, 0x2a, 0x82, 0x8c, 0xe9, ++ 0x3d, 0x3e, 0x4e, 0x2f, 0x87, 0x59, 0x3f, 0x83, 0xfa, 0xf8, 0x06, 0x41, ++ 0x2f, 0x8d, 0xef, 0xcb, 0x21, 0x58, 0x77, 0xcf, 0xf3, 0x2c, 0x8c, 0xf5, ++ 0x10, 0x6c, 0xe6, 0x14, 0xa8, 0x87, 0xba, 0xb2, 0xe2, 0x1b, 0xa0, 0xde, ++ 0xf3, 0x78, 0xac, 0x1e, 0xf1, 0x72, 0xac, 0x05, 0x30, 0x0f, 0xfd, 0x8f, ++ 0x35, 0xba, 0xa5, 0x68, 0x15, 0x94, 0x2e, 0xdd, 0x15, 0x81, 0x32, 0xa4, ++ 0x32, 0xa6, 0x00, 0x9e, 0xea, 0x1b, 0xd6, 0x4b, 0x0a, 0xb4, 0x9b, 0x1b, ++ 0xe5, 0xe3, 0x8c, 0x37, 0x35, 0x99, 0x5d, 0x09, 0xf5, 0xc3, 0x31, 0x49, ++ 0x15, 0xcf, 0xb1, 0xbf, 0xae, 0xc7, 0x24, 0x1d, 0xea, 0xe3, 0xa1, 0xfe, ++ 0xa0, 0x84, 0xef, 0x75, 0x17, 0x83, 0x71, 0x1a, 0x1a, 0x72, 0x5d, 0xc9, ++ 0x2a, 0xc4, 0x77, 0xcf, 0x18, 0x1d, 0xca, 0x8a, 0xc3, 0x5a, 0x42, 0x06, ++ 0xfc, 0xd6, 0x9b, 0x3a, 0x3d, 0x67, 0x6c, 0x11, 0xd1, 0xd5, 0x78, 0x41, ++ 0x6b, 0x73, 0x4d, 0xde, 0x6f, 0xee, 0xe1, 0x3c, 0x3f, 0xa3, 0xf7, 0xec, ++ 0x4f, 0x1f, 0x5b, 0xef, 0x01, 0xbf, 0x97, 0x14, 0xf1, 0x7d, 0x3b, 0x76, ++ 0xb8, 0x2c, 0x07, 0xe1, 0x65, 0x51, 0x7b, 0xff, 0x22, 0x95, 0xc5, 0x3c, ++ 0x79, 0x29, 0x3c, 0xef, 0x5c, 0x07, 0x2f, 0xdc, 0x29, 0xfc, 0xee, 0x3a, ++ 0x5c, 0xb6, 0x15, 0xf1, 0x76, 0xac, 0x4f, 0x0d, 0x0b, 0x52, 0xb6, 0x8d, ++ 0x0f, 0xe3, 0xf6, 0x36, 0xc0, 0xfb, 0x33, 0x55, 0x72, 0x58, 0x31, 0x90, ++ 0xcf, 0x8a, 0x38, 0xfc, 0x15, 0xba, 0x5f, 0xf7, 0xa5, 0xc6, 0xd9, 0xb9, ++ 0x0e, 0xda, 0x5f, 0x96, 0x82, 0xa3, 0x51, 0x99, 0xda, 0x4f, 0xf8, 0x30, ++ 0x19, 0xf1, 0xe3, 0xdc, 0x1a, 0x68, 0x5f, 0x95, 0x6a, 0xff, 0x04, 0xb6, ++ 0x07, 0x38, 0xf6, 0x20, 0x3c, 0xd4, 0x6f, 0xcd, 0x51, 0x2f, 0xce, 0x13, ++ 0x61, 0x34, 0xcf, 0x48, 0xf4, 0xf0, 0xc2, 0x3a, 0x9d, 0xfa, 0x0d, 0x8a, ++ 0x75, 0x5c, 0xf3, 0xbf, 0xc3, 0xb4, 0x4f, 0x73, 0x1b, 0x5a, 0x24, 0x3e, ++ 0xaf, 0x80, 0xaf, 0xc1, 0x0e, 0x9f, 0x55, 0x5a, 0xf0, 0x8d, 0x34, 0xfe, ++ 0x31, 0x01, 0x97, 0x35, 0xbe, 0x35, 0xdf, 0x13, 0xeb, 0x42, 0x54, 0x36, ++ 0x2a, 0x55, 0x8f, 0xdc, 0x8b, 0xeb, 0x3a, 0xa2, 0xf1, 0x75, 0xcd, 0x37, ++ 0x1e, 0xdf, 0x8d, 0xf8, 0x3b, 0xe2, 0x09, 0xc7, 0xa0, 0xfe, 0xe4, 0x75, ++ 0x7f, 0x33, 0xe6, 0x5e, 0x18, 0xe2, 0x8a, 0xe9, 0xcf, 0x5f, 0xfe, 0x0c, ++ 0xc3, 0xf9, 0x96, 0x3f, 0x7c, 0x3b, 0xae, 0xeb, 0xb9, 0x2c, 0x5a, 0xd7, ++ 0x53, 0x1f, 0x9e, 0x79, 0xed, 0x46, 0x36, 0x7c, 0xde, 0xb7, 0x04, 0x1e, ++ 0x7e, 0x7a, 0x6e, 0xfe, 0x10, 0xd5, 0xad, 0xf9, 0xe7, 0x9a, 0xd2, 0x18, ++ 0x09, 0xe8, 0xac, 0xd2, 0x94, 0x12, 0x2e, 0xa0, 0x97, 0x63, 0xf5, 0x5f, ++ 0x79, 0xf8, 0x5e, 0x03, 0xeb, 0xfd, 0x26, 0xca, 0x93, 0x4a, 0xf3, 0x98, ++ 0x29, 0x41, 0x39, 0x11, 0x86, 0xa1, 0xfd, 0x66, 0xea, 0x9f, 0x3e, 0x06, ++ 0x79, 0x56, 0x09, 0xdd, 0x91, 0x1f, 0x27, 0x35, 0x48, 0x2d, 0xd8, 0xee, ++ 0x89, 0x1b, 0x1f, 0xfa, 0xd2, 0x7d, 0xf0, 0xe8, 0xa7, 0x2e, 0x0e, 0xf7, ++ 0x15, 0x7f, 0xc9, 0xe1, 0xbe, 0xec, 0xfa, 0xb5, 0x4f, 0x22, 0xbc, 0x97, ++ 0xdd, 0xb8, 0xf6, 0xe7, 0xcf, 0x40, 0xfd, 0x0a, 0x14, 0x82, 0xc0, 0x77, ++ 0x97, 0xde, 0xb4, 0x7f, 0xcd, 0xdf, 0xc1, 0x3f, 0xbf, 0xb1, 0xf0, 0x2f, ++ 0x97, 0xef, 0x61, 0x24, 0x17, 0x62, 0xd9, 0x00, 0x47, 0xae, 0x29, 0x31, ++ 0xdc, 0xdf, 0x65, 0xdf, 0x77, 0xdb, 0xe4, 0xca, 0xb1, 0xe7, 0xfd, 0x24, ++ 0x57, 0x0a, 0xcd, 0xd2, 0x18, 0xf2, 0xdf, 0xb2, 0x3e, 0x89, 0xe4, 0x73, ++ 0x7f, 0xa3, 0x9b, 0x05, 0xf1, 0xfd, 0xcf, 0xdc, 0x71, 0x37, 0xf2, 0xd7, ++ 0x03, 0x92, 0x49, 0xed, 0x9f, 0x75, 0xc7, 0x51, 0x3e, 0x1c, 0x73, 0x31, ++ 0x86, 0xf2, 0x78, 0xd9, 0x71, 0x6f, 0x1c, 0xf9, 0x85, 0xad, 0x5a, 0x46, ++ 0xf2, 0x3a, 0x62, 0xc9, 0x6b, 0x33, 0x7f, 0xe9, 0xbd, 0x30, 0xde, 0xbb, ++ 0x0d, 0x96, 0x3c, 0xe7, 0x74, 0x4a, 0xef, 0x61, 0x7d, 0xef, 0x9a, 0xbf, ++ 0xd8, 0x7e, 0x35, 0xf4, 0x3f, 0x63, 0xba, 0xc2, 0x28, 0x36, 0x2d, 0x79, ++ 0xe1, 0xc4, 0xf3, 0xbb, 0x02, 0xbf, 0x91, 0xfa, 0x72, 0xa2, 0x83, 0x65, ++ 0x6a, 0xd2, 0x15, 0xce, 0x40, 0x0f, 0xcd, 0x6d, 0x8a, 0x4d, 0x6e, 0xd7, ++ 0x37, 0x9c, 0x24, 0xba, 0x5a, 0x06, 0x25, 0x4b, 0xe3, 0xd3, 0xb9, 0x82, ++ 0xcf, 0x96, 0x35, 0xfc, 0x42, 0xf0, 0xa7, 0x4e, 0x72, 0xc9, 0x09, 0xcf, ++ 0x1b, 0xb5, 0x85, 0xc5, 0x99, 0xe8, 0xee, 0x94, 0x80, 0x27, 0x29, 0xe8, ++ 0xed, 0x5d, 0xdc, 0xef, 0xcb, 0x10, 0x3e, 0xe8, 0x85, 0x74, 0xd3, 0xa5, ++ 0xc4, 0x95, 0x34, 0x39, 0x0d, 0x7f, 0xae, 0xc8, 0x04, 0xaa, 0xc7, 0x90, ++ 0xa5, 0x6f, 0xd9, 0x62, 0x87, 0xd3, 0x92, 0xdb, 0x2d, 0xb1, 0x6c, 0x9b, ++ 0xbe, 0x02, 0xf9, 0xfb, 0x2f, 0x28, 0x37, 0x9b, 0xdb, 0xf2, 0x6d, 0xcf, ++ 0xe7, 0xe6, 0xb0, 0xda, 0xa9, 0x9f, 0x4e, 0x0e, 0xff, 0x81, 0xe4, 0x70, ++ 0x52, 0x22, 0x78, 0x40, 0xff, 0xd2, 0xfe, 0x47, 0xe2, 0x52, 0x1c, 0xe5, ++ 0xa2, 0xb5, 0x3f, 0x77, 0x88, 0xfd, 0x89, 0x54, 0x30, 0x5a, 0xcf, 0xaf, ++ 0x0e, 0x48, 0xf1, 0x18, 0xec, 0xef, 0xaf, 0x8e, 0x88, 0xf5, 0xed, 0x93, ++ 0xe2, 0x8a, 0x44, 0xf4, 0x6a, 0x9e, 0xf6, 0xe0, 0xb8, 0x30, 0x67, 0x79, ++ 0x6a, 0xff, 0x6f, 0x17, 0xfb, 0x9f, 0xda, 0x3f, 0x8e, 0x1f, 0x0b, 0x5f, ++ 0x29, 0x3d, 0x97, 0xbb, 0x29, 0x09, 0x20, 0xb4, 0xf8, 0x22, 0x25, 0x28, ++ 0xaf, 0x2d, 0xfe, 0xb1, 0xf0, 0xdb, 0xbf, 0xe7, 0x47, 0x25, 0xb8, 0x7f, ++ 0x85, 0x6d, 0xa5, 0xdd, 0x75, 0x08, 0xe7, 0x01, 0x85, 0xf8, 0xf7, 0xc3, ++ 0xfa, 0x93, 0xc5, 0xb8, 0x6f, 0xef, 0xba, 0x00, 0xaf, 0xd0, 0x3f, 0x72, ++ 0xf8, 0xb1, 0x00, 0xf3, 0xa5, 0xe0, 0x6f, 0x11, 0x72, 0xf0, 0x83, 0x0e, ++ 0xa0, 0x17, 0x78, 0x2e, 0x21, 0x9c, 0x95, 0x69, 0x70, 0x0a, 0xb8, 0x5d, ++ 0x58, 0x87, 0x76, 0xb7, 0x37, 0x48, 0x7d, 0xc8, 0xa7, 0xbf, 0x14, 0xf3, ++ 0x5a, 0xfd, 0x7e, 0xb4, 0x65, 0xc6, 0x4c, 0xc4, 0xcf, 0x1d, 0x3d, 0x12, ++ 0x43, 0xfc, 0xdc, 0x7e, 0xa4, 0x77, 0xd9, 0x9f, 0xc3, 0xfa, 0x57, 0xc7, ++ 0xb3, 0xc3, 0x38, 0xc5, 0xaf, 0x1a, 0x8b, 0x03, 0x97, 0x00, 0x3c, 0x2b, ++ 0x7a, 0xec, 0xfb, 0x79, 0x6a, 0xcb, 0xcd, 0x01, 0xa4, 0x9b, 0x0f, 0xfb, ++ 0xf2, 0x0b, 0x70, 0x9c, 0xdb, 0xa7, 0x26, 0x34, 0x84, 0x73, 0x75, 0xe2, ++ 0x55, 0xcd, 0x00, 0x3a, 0x9b, 0x65, 0xf6, 0x6a, 0xc9, 0x0c, 0x74, 0xf5, ++ 0x61, 0xdf, 0x86, 0x00, 0xb6, 0xff, 0x50, 0xed, 0xb9, 0xf1, 0x1a, 0x9c, ++ 0x67, 0x9f, 0x12, 0x5e, 0x0f, 0xe3, 0xaf, 0x3e, 0x52, 0x3a, 0xd3, 0xe4, ++ 0x74, 0x4a, 0xf4, 0xbb, 0x5a, 0xe0, 0xf7, 0xa4, 0xda, 0x33, 0x73, 0x0c, ++ 0xc0, 0xd7, 0xf2, 0x8d, 0x72, 0x92, 0x07, 0xef, 0xf5, 0x29, 0xb3, 0xe3, ++ 0x19, 0xe4, 0xe7, 0xd7, 0x25, 0x85, 0xe8, 0x60, 0x75, 0x9b, 0x5b, 0xc6, ++ 0x75, 0x8e, 0x44, 0x2f, 0x1f, 0x76, 0xb8, 0x58, 0x02, 0xe7, 0x51, 0x13, ++ 0x84, 0xcf, 0x91, 0xda, 0x7d, 0xd0, 0xd7, 0x42, 0xef, 0xfb, 0x1f, 0x28, ++ 0xbc, 0x01, 0xed, 0xb7, 0xdb, 0xdb, 0x5d, 0x24, 0x2f, 0x6e, 0x6f, 0x73, ++ 0x13, 0x3d, 0xad, 0x6e, 0x90, 0xe2, 0x4c, 0x4a, 0xf1, 0xdb, 0x0a, 0x01, ++ 0xef, 0xea, 0xdd, 0x0a, 0xbd, 0x3f, 0x69, 0x4a, 0x24, 0x3f, 0xac, 0xfd, ++ 0xba, 0x5d, 0xd0, 0xdb, 0xc9, 0xc3, 0x57, 0xbd, 0x82, 0xfa, 0xfe, 0x0c, ++ 0xc8, 0x1f, 0x94, 0xbb, 0x33, 0x36, 0xfe, 0x50, 0xbb, 0x04, 0xf0, 0xb0, ++ 0x62, 0x0b, 0x97, 0x47, 0x27, 0x77, 0xe7, 0x2e, 0xbd, 0x07, 0xe5, 0x88, ++ 0xd0, 0x97, 0x77, 0x88, 0x71, 0x6f, 0x8b, 0x2b, 0x36, 0xfe, 0x58, 0xd9, ++ 0x9e, 0x6d, 0xdb, 0x8f, 0x68, 0x57, 0xbe, 0xad, 0x7e, 0xfa, 0x48, 0xfe, ++ 0x8d, 0x75, 0x48, 0xd7, 0x5d, 0x0a, 0xe9, 0xcf, 0x5b, 0x36, 0x3e, 0xa6, ++ 0x85, 0x48, 0x3e, 0xd9, 0xed, 0x4d, 0xe4, 0xb0, 0x49, 0x05, 0x29, 0xfb, ++ 0xf2, 0x04, 0x1b, 0x5a, 0x70, 0x8d, 0x94, 0xa2, 0x27, 0x8b, 0x7e, 0x6e, ++ 0x6d, 0x03, 0x7b, 0x33, 0x30, 0xdc, 0xde, 0x6c, 0x39, 0x22, 0x91, 0x3d, ++ 0x7a, 0xd1, 0x76, 0x66, 0x1b, 0xd8, 0x99, 0x13, 0x87, 0xdb, 0x99, 0x96, ++ 0x1c, 0x89, 0xa0, 0x7d, 0x56, 0x9e, 0x92, 0x23, 0x96, 0xdc, 0xb8, 0x4b, ++ 0x89, 0x8e, 0x0d, 0x02, 0x1c, 0xbf, 0x76, 0x45, 0x2f, 0xcb, 0x2f, 0x27, ++ 0xb9, 0xf1, 0x80, 0x54, 0x8b, 0x74, 0xa2, 0xff, 0x16, 0xed, 0x4a, 0x16, ++ 0x53, 0x6a, 0x51, 0xbe, 0x5d, 0xac, 0xbc, 0xa0, 0xc5, 0x5a, 0x7c, 0x04, ++ 0x7f, 0xef, 0x75, 0x00, 0x5d, 0x65, 0xa0, 0xd7, 0x19, 0x48, 0x57, 0x30, ++ 0xcf, 0xcc, 0x9e, 0xfe, 0x8c, 0xf4, 0x3c, 0x43, 0x32, 0x68, 0xbc, 0x14, ++ 0xdd, 0xdc, 0x12, 0x20, 0xbe, 0xc5, 0x41, 0x01, 0x8e, 0x66, 0x8f, 0xd9, ++ 0x85, 0x70, 0x5e, 0x02, 0x13, 0x7b, 0xab, 0xa9, 0x64, 0x4a, 0x1e, 0x2f, ++ 0x55, 0xa8, 0x6f, 0x46, 0x98, 0x81, 0x1e, 0x4e, 0xad, 0x95, 0xe2, 0x87, ++ 0x4a, 0x79, 0x3b, 0x1f, 0xca, 0x53, 0x80, 0xeb, 0x1a, 0x78, 0xde, 0xdc, ++ 0x75, 0x79, 0x7c, 0x9b, 0x84, 0x76, 0x21, 0xfc, 0xa1, 0xfe, 0x6c, 0xe3, ++ 0x76, 0x37, 0xb4, 0x33, 0xfd, 0x79, 0xf4, 0xdc, 0x94, 0xa0, 0x2c, 0x6a, ++ 0x2f, 0x7d, 0x19, 0xf7, 0xe7, 0x12, 0x10, 0x00, 0x5a, 0x35, 0x6f, 0x8f, ++ 0xf3, 0x80, 0x9d, 0x45, 0x28, 0x81, 0xf6, 0x09, 0x77, 0x35, 0x75, 0x8d, ++ 0x05, 0xa0, 0x2c, 0x86, 0x7e, 0x32, 0xef, 0x4f, 0xef, 0xb1, 0x5d, 0x80, ++ 0xe4, 0x78, 0x9c, 0xd6, 0x8b, 0xe3, 0xe3, 0x38, 0x15, 0x4a, 0x7c, 0x0d, ++ 0xca, 0x19, 0x8b, 0x8e, 0x97, 0x09, 0xb9, 0x03, 0x72, 0xb5, 0x52, 0x05, ++ 0xfa, 0x6a, 0x66, 0x59, 0x61, 0xd4, 0x9b, 0xcd, 0x6d, 0xe5, 0xe7, 0xb5, ++ 0x5f, 0x6e, 0x08, 0xdb, 0xe5, 0xc7, 0x4d, 0x75, 0x76, 0x3d, 0x30, 0xd7, ++ 0xb4, 0xcb, 0xff, 0x9b, 0x67, 0x5f, 0x62, 0x6b, 0xbf, 0x20, 0x52, 0x6e, ++ 0x7b, 0xff, 0x67, 0x8b, 0xae, 0xb0, 0xbd, 0x5f, 0x1c, 0xbd, 0xca, 0x56, ++ 0xff, 0xf2, 0xaa, 0x2f, 0xd8, 0xda, 0x2f, 0x6d, 0x9d, 0x61, 0xf7, 0x93, ++ 0x7e, 0x9a, 0x4b, 0xeb, 0x59, 0x23, 0xf8, 0x72, 0x24, 0xb8, 0x5f, 0x17, ++ 0xf2, 0xf2, 0x27, 0x0e, 0xfb, 0xd4, 0x2a, 0x9b, 0xae, 0x4f, 0xd4, 0xbc, ++ 0x0d, 0xfb, 0xc4, 0xd6, 0xb9, 0xc3, 0x8f, 0x43, 0x71, 0x62, 0x0e, 0x5b, ++ 0xd4, 0x97, 0x26, 0x57, 0x7c, 0xb2, 0x44, 0xf8, 0xfc, 0x0d, 0xb0, 0x09, ++ 0xf7, 0x0f, 0xfe, 0xf4, 0x31, 0xe1, 0x31, 0xc4, 0xe7, 0x6d, 0xfa, 0x0b, ++ 0x77, 0x6b, 0x26, 0xba, 0xd3, 0x44, 0x3f, 0x34, 0x97, 0xd0, 0x5e, 0x72, ++ 0xb6, 0x3f, 0xb1, 0x18, 0xe6, 0x49, 0xeb, 0xf7, 0x6f, 0x92, 0x44, 0x74, ++ 0x78, 0xae, 0x1f, 0xf3, 0xf4, 0xfc, 0x12, 0x40, 0x6e, 0x01, 0x4e, 0xce, ++ 0x01, 0xd4, 0xdf, 0xc9, 0x92, 0x25, 0xb8, 0x6f, 0xee, 0x5c, 0x83, 0xde, ++ 0xdf, 0x25, 0x27, 0x0b, 0xb0, 0xfe, 0x1b, 0x36, 0xb4, 0x37, 0x1f, 0xf7, ++ 0xd7, 0x97, 0x2c, 0x46, 0xfe, 0x69, 0x56, 0xd9, 0x73, 0x52, 0x0e, 0xf6, ++ 0x0b, 0x7b, 0xdc, 0x30, 0x1f, 0x58, 0x43, 0xac, 0x0d, 0xe8, 0xa3, 0xa5, ++ 0xed, 0x47, 0xc7, 0xd1, 0x8e, 0x93, 0x8c, 0x20, 0x5b, 0x82, 0x75, 0x8f, ++ 0x2f, 0x81, 0xfc, 0xcd, 0x3a, 0x5c, 0x1f, 0x26, 0x2d, 0xbc, 0x03, 0x1f, ++ 0xf6, 0x86, 0xa2, 0x1f, 0x4a, 0x00, 0x87, 0xd4, 0xde, 0xff, 0x7b, 0x09, ++ 0xdf, 0x7f, 0x9f, 0x19, 0xa8, 0x87, 0x59, 0xb2, 0x28, 0x17, 0xfd, 0x47, ++ 0x9c, 0x2a, 0x9d, 0x0f, 0x9b, 0x66, 0xb0, 0x56, 0xc4, 0xd7, 0x89, 0x46, ++ 0x3b, 0xde, 0xbc, 0x62, 0x1d, 0x3f, 0x97, 0x64, 0x6a, 0xf7, 0x1c, 0x33, ++ 0x7f, 0x8b, 0x7c, 0x74, 0x52, 0xd2, 0xf9, 0xfa, 0x04, 0xbc, 0xdb, 0x24, ++ 0xf3, 0x2c, 0xce, 0x67, 0xc1, 0xfd, 0x6e, 0xae, 0xae, 0xb1, 0x4f, 0x07, ++ 0xb7, 0x22, 0xd7, 0x22, 0xdc, 0x3f, 0x22, 0xb8, 0x37, 0xb4, 0xb2, 0x64, ++ 0xb6, 0x32, 0x32, 0xdc, 0x57, 0x30, 0xd3, 0x2d, 0x8f, 0x1a, 0x0e, 0xcf, ++ 0x59, 0x66, 0x66, 0x65, 0x7a, 0x3e, 0x0b, 0xd8, 0x35, 0xd3, 0xf3, 0xcb, ++ 0xdd, 0xac, 0x12, 0xed, 0xd5, 0x13, 0x52, 0x56, 0x78, 0x7d, 0x29, 0x96, ++ 0x43, 0xff, 0xf8, 0x35, 0xe0, 0xab, 0xd8, 0x37, 0x7c, 0xe1, 0xc7, 0x8d, ++ 0xe1, 0x74, 0x31, 0x55, 0xce, 0xa5, 0xf9, 0x9b, 0x85, 0xbd, 0x5b, 0xd8, ++ 0x2e, 0x25, 0xb2, 0xd1, 0x3e, 0x65, 0x1e, 0xb2, 0x5f, 0x59, 0xcf, 0x43, ++ 0xa6, 0x07, 0xe5, 0x9a, 0x10, 0x71, 0x2d, 0x6d, 0xd2, 0x49, 0x5c, 0x3f, ++ 0xeb, 0x68, 0x34, 0x93, 0x9e, 0xd4, 0x7a, 0x99, 0x21, 0xb1, 0xf4, 0x76, ++ 0xe7, 0xf6, 0xbd, 0xcd, 0x4d, 0xed, 0x2d, 0x79, 0x63, 0xc9, 0x2d, 0x0b, ++ 0x9f, 0x96, 0x5c, 0xb1, 0xe4, 0x97, 0x85, 0x57, 0xe7, 0xf8, 0x23, 0xc9, ++ 0x19, 0x1c, 0x4f, 0xcd, 0x43, 0xf8, 0xa3, 0x93, 0xe4, 0x74, 0x3a, 0xd1, ++ 0x01, 0x1f, 0x13, 0x10, 0x1e, 0xb3, 0x1a, 0xf7, 0xcf, 0xda, 0x37, 0x70, ++ 0x23, 0x63, 0x9e, 0xea, 0x91, 0xf7, 0xcd, 0x92, 0x53, 0xd0, 0x8e, 0xa1, ++ 0xff, 0x3f, 0xd2, 0x7e, 0x01, 0x9e, 0xc8, 0xae, 0x73, 0x85, 0x19, 0xe1, ++ 0xe9, 0xdd, 0xe0, 0xd0, 0xd2, 0xa7, 0x60, 0xdd, 0x03, 0x6d, 0x5c, 0x5f, ++ 0xbf, 0x5b, 0xc4, 0xc8, 0x3e, 0x3c, 0xd3, 0x76, 0xd5, 0x40, 0x0e, 0xe2, ++ 0xc7, 0xe3, 0xa9, 0x40, 0xfc, 0x14, 0xf2, 0xa9, 0x58, 0x61, 0x70, 0x68, ++ 0x1d, 0xca, 0x57, 0x9f, 0x9a, 0xe8, 0x47, 0xb8, 0x0a, 0x85, 0xfe, 0xf2, ++ 0x32, 0xae, 0xbf, 0x0a, 0x99, 0xb1, 0xe3, 0x6a, 0xf4, 0xef, 0xdb, 0x4f, ++ 0x2e, 0xc1, 0x76, 0xd6, 0xfe, 0xe4, 0x8a, 0xfd, 0x69, 0x86, 0xfd, 0x41, ++ 0x7f, 0xa4, 0xd9, 0x37, 0x54, 0x8c, 0x76, 0x92, 0x1b, 0xf5, 0x1a, 0xb4, ++ 0x73, 0x83, 0xdc, 0x45, 0xb9, 0x5c, 0xd8, 0xfe, 0xfe, 0x7f, 0xa0, 0x5e, ++ 0x2c, 0x74, 0xe8, 0x45, 0x84, 0x84, 0xa5, 0xc3, 0x91, 0x55, 0xb5, 0xe3, ++ 0x6a, 0x23, 0x7d, 0xfc, 0x8f, 0x36, 0xa2, 0x7d, 0x69, 0x8d, 0x4b, 0x1d, ++ 0xd2, 0xf7, 0x3f, 0xa8, 0x9d, 0x44, 0xfc, 0x16, 0xb6, 0x6f, 0xbe, 0x5b, ++ 0x09, 0xd8, 0xc6, 0x97, 0x3e, 0x46, 0x3c, 0x08, 0xb9, 0x8d, 0x66, 0xd7, ++ 0xb9, 0x79, 0x4a, 0xd1, 0x5e, 0x95, 0x13, 0xee, 0x40, 0x8a, 0x2e, 0x9c, ++ 0x70, 0x59, 0xfd, 0x46, 0xa2, 0x13, 0x96, 0x3e, 0x4f, 0xb9, 0xad, 0x4e, ++ 0xf6, 0x84, 0xb3, 0xee, 0x0e, 0x6b, 0x36, 0xf9, 0xfc, 0xee, 0x1f, 0xcb, ++ 0x73, 0x5a, 0x7d, 0xe7, 0xa1, 0x37, 0xe7, 0x78, 0x4e, 0xfa, 0x76, 0xf2, ++ 0x81, 0xc0, 0xc3, 0xa7, 0xa0, 0xd3, 0x4d, 0x9c, 0x4e, 0xb9, 0x5c, 0xb0, ++ 0xf8, 0xf6, 0x3f, 0x8b, 0x4e, 0xa3, 0xd6, 0xbe, 0xc6, 0x72, 0xef, 0x38, ++ 0x82, 0xfa, 0xb5, 0x4b, 0x0b, 0xcf, 0x32, 0xd0, 0x4e, 0x18, 0xfa, 0x21, ++ 0xb7, 0x13, 0xdc, 0xc6, 0x21, 0xa4, 0xb3, 0x98, 0x94, 0x55, 0x09, 0xef, ++ 0xa3, 0x1d, 0x2a, 0xd9, 0x8d, 0x96, 0x5d, 0xd1, 0xbf, 0xf6, 0xaf, 0xb7, ++ 0x94, 0xc1, 0xf3, 0x13, 0xb5, 0x32, 0xf9, 0x11, 0x27, 0xd6, 0x73, 0xba, ++ 0xdf, 0xf3, 0x00, 0xb7, 0x47, 0x2d, 0xbd, 0x1d, 0x15, 0x7a, 0x1b, 0xed, ++ 0x02, 0xc4, 0x2b, 0xd8, 0x0d, 0x03, 0x6e, 0x5e, 0x7a, 0x70, 0x1c, 0xff, ++ 0xfa, 0x9b, 0x4b, 0x25, 0x80, 0xdb, 0x63, 0x0c, 0xf5, 0xbb, 0xb1, 0x7d, ++ 0x9b, 0x41, 0xf6, 0x6a, 0x4e, 0x5d, 0x5c, 0x6f, 0x84, 0x32, 0x5e, 0x71, ++ 0xc8, 0x33, 0xce, 0x48, 0xc9, 0xa5, 0x64, 0x2c, 0x3f, 0x6f, 0x39, 0xec, ++ 0xd7, 0xb7, 0x72, 0x8d, 0x65, 0x11, 0xb2, 0xaf, 0xa3, 0xa3, 0xe7, 0xfa, ++ 0x53, 0xef, 0x7f, 0x2c, 0x73, 0xfd, 0x34, 0xad, 0x84, 0xe5, 0xcd, 0x86, ++ 0xf1, 0x92, 0x5b, 0xe5, 0xf0, 0x83, 0xd0, 0x3f, 0xe9, 0xb2, 0xeb, 0x31, ++ 0xab, 0x5c, 0xa3, 0x70, 0x7d, 0x99, 0xf4, 0xb2, 0x12, 0xf4, 0x83, 0x47, ++ 0x6a, 0x37, 0xa4, 0x58, 0x7a, 0x55, 0xd7, 0x68, 0x5f, 0xe6, 0x0f, 0x1c, ++ 0xc7, 0x7d, 0x1a, 0x69, 0x1f, 0x60, 0x07, 0x74, 0x8a, 0x63, 0x9e, 0xa3, ++ 0x43, 0x8e, 0x77, 0x98, 0x87, 0xc6, 0x4f, 0xfa, 0xed, 0x7a, 0xe8, 0xa4, ++ 0xd0, 0x43, 0x16, 0xfc, 0x9f, 0x40, 0xaf, 0x2e, 0x2c, 0x06, 0xfa, 0xd8, ++ 0x2b, 0x65, 0x86, 0xfb, 0x23, 0x31, 0x5e, 0xf4, 0x39, 0x00, 0x00, 0xf6, ++ 0x3b, 0xaa, 0x32, 0x33, 0x53, 0x3b, 0xe7, 0xba, 0xff, 0x41, 0xf4, 0x4b, ++ 0xc8, 0x2a, 0xcd, 0xb7, 0xa3, 0x62, 0xe7, 0x6c, 0xdc, 0xef, 0x58, 0x4c, ++ 0x09, 0xa7, 0xef, 0x87, 0x55, 0xfe, 0x85, 0xc2, 0xf5, 0x67, 0xce, 0xdc, ++ 0x86, 0xdc, 0x46, 0x68, 0xc7, 0xd6, 0x67, 0x6e, 0x97, 0x27, 0xda, 0x3d, ++ 0x76, 0x5f, 0xd6, 0x22, 0xf4, 0xaf, 0x00, 0x75, 0x2a, 0xc6, 0x6b, 0x42, ++ 0x31, 0x7d, 0xde, 0x6c, 0x8c, 0x47, 0x4e, 0xcd, 0x9b, 0x84, 0x3e, 0xf6, ++ 0x8f, 0x51, 0xff, 0xc0, 0xbc, 0xbb, 0x23, 0x67, 0xf4, 0x16, 0xdf, 0x27, ++ 0xc2, 0x47, 0x41, 0x48, 0x19, 0x19, 0x1f, 0x6f, 0xca, 0x32, 0xdf, 0x47, ++ 0x07, 0xdf, 0xee, 0x01, 0x77, 0x0d, 0xe5, 0x67, 0x52, 0xf2, 0x50, 0xfc, ++ 0xa5, 0x25, 0xe6, 0xce, 0xc8, 0xc7, 0x96, 0x9c, 0x72, 0xca, 0x23, 0xa7, ++ 0x9e, 0x93, 0x4c, 0x93, 0xb5, 0x55, 0x0f, 0x97, 0x2b, 0xd6, 0xb8, 0x9f, ++ 0x54, 0x9f, 0x81, 0x7c, 0xc8, 0x52, 0x46, 0xa5, 0xec, 0xf6, 0x73, 0xfa, ++ 0xec, 0x62, 0xe9, 0x71, 0x04, 0x39, 0x50, 0x22, 0xb3, 0x68, 0x5f, 0x06, ++ 0xff, 0xf4, 0x6a, 0x85, 0xe3, 0xa9, 0x3f, 0xc6, 0xe3, 0x14, 0xaa, 0x29, ++ 0x93, 0xde, 0x9a, 0xa9, 0x34, 0x31, 0x09, 0xf0, 0xb4, 0x21, 0xc8, 0x48, ++ 0x1e, 0xe4, 0xe1, 0x5e, 0x23, 0xdf, 0x36, 0xb0, 0x38, 0xa0, 0x80, 0xe5, ++ 0xb3, 0xf0, 0x80, 0x0f, 0xe5, 0x49, 0x50, 0x66, 0x09, 0xf2, 0x5b, 0x9d, ++ 0x7e, 0xa0, 0xd9, 0x84, 0x7e, 0x60, 0x90, 0x83, 0xc6, 0xf4, 0x51, 0x65, ++ 0xfd, 0x85, 0xf0, 0x3c, 0x38, 0x7f, 0x25, 0x9d, 0x33, 0xb0, 0x08, 0x97, ++ 0xb7, 0x3a, 0xfc, 0xc7, 0xf9, 0xc8, 0x24, 0x7d, 0xe1, 0x16, 0x78, 0x8d, ++ 0xc6, 0x26, 0x51, 0x9c, 0x33, 0xaf, 0xc9, 0x2e, 0xc7, 0xdd, 0xe8, 0x07, ++ 0x82, 0x7c, 0xd4, 0x1b, 0x1c, 0xcf, 0xe7, 0xcf, 0xa4, 0xf3, 0x06, 0x37, ++ 0x4b, 0x7b, 0x0e, 0xeb, 0xb8, 0x4a, 0xf1, 0x07, 0x4f, 0x83, 0x69, 0xcf, ++ 0xaa, 0x59, 0x0d, 0xf2, 0x67, 0xf5, 0xfe, 0xab, 0x76, 0x2d, 0x86, 0xf1, ++ 0x6b, 0x1e, 0xb9, 0xf9, 0x6d, 0x2c, 0x27, 0x1f, 0xbc, 0x27, 0xff, 0x4b, ++ 0x50, 0xd6, 0x3d, 0xbe, 0xeb, 0x66, 0x2c, 0x4b, 0x5e, 0x8b, 0x8e, 0xcd, ++ 0x14, 0x4f, 0xb5, 0x4a, 0xe0, 0x14, 0x26, 0xd7, 0x01, 0x7c, 0x3e, 0x66, ++ 0xb8, 0x73, 0x46, 0x6e, 0x67, 0xac, 0x57, 0x22, 0x68, 0x57, 0xc3, 0x3e, ++ 0x76, 0x20, 0x3d, 0x24, 0x63, 0xe5, 0x59, 0x48, 0xdf, 0xab, 0x14, 0xce, ++ 0xff, 0xfd, 0x0b, 0xb4, 0x00, 0xc6, 0x67, 0xd4, 0x2d, 0x5c, 0xae, 0xaa, ++ 0xf3, 0x01, 0x79, 0x44, 0xff, 0xdc, 0x4f, 0x6f, 0x4e, 0xf9, 0xd3, 0xe4, ++ 0x57, 0xa8, 0xc2, 0x4f, 0x52, 0xda, 0x15, 0x8a, 0x23, 0x24, 0xf5, 0x32, ++ 0x8a, 0xb7, 0x1c, 0xda, 0x22, 0x6b, 0x58, 0x82, 0x9c, 0x8d, 0xe1, 0x3c, ++ 0xd6, 0xfc, 0xbd, 0x22, 0x4e, 0xdd, 0x29, 0xe2, 0xad, 0x4e, 0xf8, 0x7a, ++ 0x4b, 0x86, 0x8a, 0x51, 0x0e, 0x9e, 0x58, 0xff, 0x11, 0xd9, 0x87, 0x8a, ++ 0x9e, 0x15, 0x9e, 0x0d, 0xf3, 0x75, 0xf9, 0x59, 0x09, 0xc1, 0x21, 0xe2, ++ 0x05, 0xcd, 0x62, 0xff, 0x92, 0x6b, 0xeb, 0x3d, 0xe9, 0xf1, 0x22, 0x45, ++ 0xf8, 0x39, 0x1d, 0x47, 0xe7, 0x0c, 0x18, 0x48, 0x07, 0x03, 0x4a, 0xd8, ++ 0x6b, 0x10, 0xdf, 0x68, 0x38, 0x6e, 0x74, 0xcb, 0x74, 0x86, 0xf1, 0x97, ++ 0x59, 0x7a, 0x98, 0xa1, 0x3d, 0xd1, 0x29, 0xfc, 0x1e, 0xc5, 0x67, 0x32, ++ 0xdc, 0xd7, 0x6c, 0x9d, 0xcd, 0x44, 0xbf, 0x16, 0x5e, 0x69, 0x21, 0xec, ++ 0x5f, 0xc5, 0xc2, 0x09, 0xec, 0xdf, 0xde, 0x8f, 0xb8, 0x85, 0xf5, 0x9a, ++ 0xb7, 0x23, 0x1f, 0xfc, 0xe0, 0x5a, 0x6e, 0x87, 0x9c, 0x28, 0xb5, 0xcb, ++ 0x6d, 0x20, 0xa1, 0x2e, 0xd8, 0x53, 0x36, 0xab, 0x68, 0xbd, 0x8a, 0xb4, ++ 0xd9, 0x14, 0x9c, 0x74, 0x15, 0xd2, 0xfc, 0xef, 0x95, 0x02, 0x21, 0x57, ++ 0x39, 0xbd, 0xbe, 0x51, 0x3b, 0xe5, 0xb1, 0x6d, 0x40, 0x07, 0xcf, 0xb9, ++ 0xcd, 0x7b, 0x94, 0x51, 0x9f, 0x80, 0x8f, 0x1c, 0x72, 0xfd, 0x07, 0xc0, ++ 0x26, 0xb8, 0x6f, 0x8f, 0x4a, 0x76, 0x79, 0x6e, 0x95, 0x07, 0x9d, 0x7c, ++ 0xd4, 0x26, 0x91, 0x5d, 0xa8, 0x9a, 0x7c, 0x9d, 0x33, 0x95, 0x0f, 0x1b, ++ 0x51, 0x4f, 0x6e, 0x04, 0xbb, 0xb1, 0xd0, 0x18, 0xce, 0x2f, 0x1b, 0x5f, ++ 0x67, 0x64, 0x37, 0x6e, 0x04, 0xfe, 0x8b, 0x95, 0x66, 0xe2, 0x9f, 0x6a, ++ 0x09, 0x65, 0xc4, 0xc5, 0xf2, 0x4f, 0x5e, 0x7b, 0xae, 0x84, 0x71, 0x8c, ++ 0xcf, 0xca, 0x3f, 0x7f, 0xa9, 0x88, 0x73, 0x3a, 0xc1, 0x3f, 0x40, 0x67, ++ 0x09, 0xb4, 0x63, 0x1e, 0x95, 0x8c, 0xce, 0x29, 0xb0, 0xbe, 0xef, 0xec, ++ 0x6b, 0xfc, 0xf1, 0x14, 0x78, 0xfd, 0xec, 0x81, 0x15, 0xd9, 0xd7, 0x40, ++ 0xf9, 0xbd, 0xf8, 0xc6, 0xeb, 0xaf, 0x81, 0xf9, 0x6f, 0x7f, 0x7c, 0x4f, ++ 0x36, 0xee, 0xf3, 0xa3, 0xaf, 0x02, 0x3f, 0x9d, 0xc7, 0x8f, 0xb7, 0xf8, ++ 0xa9, 0x19, 0x6d, 0xd8, 0xf3, 0xc4, 0xd9, 0x8c, 0xb5, 0x76, 0x7e, 0x32, ++ 0xd6, 0x57, 0x10, 0x3f, 0xbd, 0xa5, 0x70, 0xfd, 0xd5, 0xbf, 0xe0, 0x77, ++ 0x6f, 0x5c, 0xfd, 0xff, 0xf9, 0xe9, 0x7c, 0xfc, 0xf4, 0xb6, 0x02, 0xf4, ++ 0x39, 0xed, 0x4f, 0x67, 0x8b, 0xa3, 0xe7, 0x91, 0x6f, 0xcd, 0x45, 0x4c, ++ 0x43, 0x7b, 0x0b, 0xda, 0x98, 0x48, 0xe7, 0xd1, 0xa0, 0xbd, 0xf4, 0xa9, ++ 0x59, 0x84, 0xef, 0x75, 0x2e, 0x2e, 0xc7, 0xfc, 0x2e, 0x2f, 0xb7, 0x3b, ++ 0x42, 0xfc, 0xbd, 0x73, 0xbc, 0xbf, 0x51, 0x3f, 0x79, 0xfc, 0x60, 0x41, ++ 0xf9, 0x67, 0xe7, 0xd3, 0x75, 0x3e, 0xf3, 0xa3, 0xcf, 0x83, 0xdf, 0x41, ++ 0xee, 0x90, 0xbc, 0x39, 0x31, 0xce, 0xce, 0xf7, 0x9d, 0x2e, 0x4e, 0x77, ++ 0xbf, 0x72, 0x7d, 0xe2, 0xf5, 0xbd, 0xf3, 0x85, 0xcf, 0x61, 0x7d, 0x60, ++ 0xd7, 0x93, 0x7d, 0x77, 0x9d, 0xca, 0x0c, 0xf4, 0x03, 0x26, 0xbe, 0xe0, ++ 0x21, 0x61, 0xf1, 0xea, 0xb8, 0x8d, 0x47, 0x90, 0x25, 0xa6, 0xc1, 0xf3, ++ 0x50, 0x1e, 0x7f, 0xef, 0xce, 0x23, 0x79, 0x19, 0x47, 0x3b, 0x66, 0x48, ++ 0xa9, 0xa4, 0xfe, 0x26, 0xe3, 0x76, 0x7c, 0x53, 0xcd, 0xe6, 0x23, 0xfc, ++ 0x5c, 0x62, 0xb0, 0x62, 0x11, 0xf8, 0xcb, 0x73, 0xe0, 0x5f, 0x68, 0x8f, ++ 0x5c, 0xe7, 0xe3, 0x7e, 0x05, 0x8c, 0xc3, 0x42, 0x30, 0xfe, 0x6a, 0x6f, ++ 0xb4, 0x58, 0x1d, 0x45, 0xe3, 0x91, 0x7f, 0xf9, 0xea, 0xf3, 0xfb, 0x82, ++ 0x28, 0x5f, 0x5e, 0xf7, 0x98, 0x25, 0xf8, 0x9c, 0x25, 0xd5, 0x5c, 0x3c, ++ 0x1f, 0xb0, 0xec, 0x8e, 0x91, 0xf9, 0x5d, 0x65, 0xa7, 0xd3, 0xfc, 0xac, ++ 0xa7, 0x35, 0x46, 0x70, 0x9c, 0xba, 0x54, 0xa3, 0x78, 0x25, 0x8a, 0xb1, ++ 0x00, 0xd4, 0xb7, 0x96, 0x5e, 0x4a, 0x71, 0x4a, 0x16, 0x8e, 0x1d, 0x97, ++ 0xb0, 0x3e, 0x4a, 0x67, 0x28, 0xc7, 0x95, 0x60, 0x64, 0x31, 0xd9, 0x21, ++ 0x6d, 0x6e, 0x63, 0x16, 0xd4, 0xb7, 0x82, 0x01, 0x15, 0x0b, 0x12, 0xdd, ++ 0x92, 0xdc, 0x54, 0xda, 0x7b, 0x43, 0x01, 0x94, 0x03, 0x60, 0x97, 0xe0, ++ 0x7b, 0x35, 0x36, 0xd7, 0xa3, 0xa1, 0xff, 0x32, 0x4a, 0xc6, 0x20, 0x34, ++ 0x73, 0xb7, 0x7d, 0x44, 0x7e, 0xf7, 0x89, 0x62, 0x2e, 0x6f, 0x3b, 0xa6, ++ 0x30, 0x3a, 0xa7, 0x19, 0x78, 0xe0, 0xdf, 0x96, 0xca, 0x68, 0xef, 0xb4, ++ 0xbb, 0xe9, 0xdc, 0x02, 0xec, 0x46, 0xe2, 0xd7, 0xa8, 0x90, 0x1b, 0xc9, ++ 0xe0, 0xf4, 0x50, 0x0b, 0xfa, 0x19, 0x45, 0x5a, 0x58, 0x82, 0xfa, 0xa6, ++ 0xd8, 0x2f, 0x8e, 0x7f, 0x8d, 0xcb, 0x13, 0xd3, 0x33, 0x39, 0x3d, 0x3e, ++ 0xc2, 0xe3, 0x1d, 0x2d, 0x21, 0xee, 0xef, 0x3a, 0xed, 0xbe, 0xcd, 0x5f, ++ 0xbf, 0xec, 0x4d, 0x03, 0xc7, 0xfb, 0xe1, 0x6b, 0x5d, 0x97, 0x43, 0xf9, ++ 0xfa, 0x93, 0x3f, 0x7f, 0xfd, 0x72, 0x78, 0xf7, 0xc6, 0xb7, 0x5e, 0xab, ++ 0xc1, 0xb8, 0xb7, 0xbb, 0x4e, 0xb3, 0xc5, 0x1d, 0xdd, 0xcc, 0x78, 0x13, ++ 0xed, 0x2d, 0xf0, 0x99, 0x12, 0x1a, 0xca, 0xe7, 0xd8, 0xc9, 0x25, 0xb8, ++ 0x99, 0x29, 0xbf, 0x4e, 0x8a, 0x21, 0x7e, 0xa2, 0x35, 0xfe, 0x38, 0xae, ++ 0x17, 0x79, 0x1b, 0xf1, 0x93, 0x9c, 0xa2, 0xf0, 0xf3, 0x45, 0xf8, 0x0b, ++ 0x01, 0x7c, 0x01, 0x01, 0x5f, 0x77, 0xf0, 0x54, 0x15, 0xcd, 0x13, 0x7b, ++ 0xff, 0x3f, 0x32, 0xc9, 0x7b, 0xfa, 0x9b, 0x2c, 0xf4, 0x08, 0xb4, 0xdb, ++ 0x9c, 0x77, 0x7f, 0x1c, 0xe5, 0x48, 0x6a, 0xbe, 0x49, 0x24, 0x9f, 0xa2, ++ 0x20, 0x9f, 0xd0, 0x8f, 0x8c, 0xfa, 0x7a, 0x96, 0xac, 0xa1, 0xf9, 0xfc, ++ 0xe1, 0x07, 0xb1, 0xcf, 0x1f, 0x61, 0x57, 0x27, 0xa7, 0xce, 0x0b, 0x0f, ++ 0x6d, 0x99, 0xd7, 0x82, 0x78, 0x9e, 0xbb, 0xc0, 0xa3, 0x23, 0x9d, 0xb9, ++ 0x63, 0x9b, 0xef, 0x46, 0x3a, 0x77, 0xae, 0xf3, 0x8c, 0xef, 0xc1, 0x4b, ++ 0x31, 0x34, 0x67, 0x9b, 0x1f, 0xf8, 0xc4, 0x5d, 0xa1, 0x99, 0x5e, 0xb2, ++ 0x7f, 0xd9, 0x61, 0xda, 0x0f, 0xd1, 0xc4, 0x82, 0x5b, 0x07, 0x05, 0x82, ++ 0x71, 0x07, 0xe8, 0xbf, 0x6c, 0x05, 0xcb, 0xd0, 0xdf, 0x80, 0xfe, 0xb8, ++ 0x4e, 0x90, 0x67, 0x68, 0x6f, 0x5b, 0xfd, 0x80, 0x8c, 0x4d, 0x5c, 0xef, ++ 0x19, 0xdf, 0xf4, 0x4b, 0x29, 0xde, 0x2f, 0xe2, 0x15, 0x56, 0xbf, 0x9b, ++ 0x62, 0x12, 0x9d, 0x13, 0xdc, 0x54, 0x0e, 0x6c, 0x50, 0x3e, 0x1c, 0x4f, ++ 0x1b, 0x7c, 0xf2, 0x4f, 0xbe, 0x86, 0xe7, 0x2e, 0x31, 0x45, 0x57, 0x38, ++ 0x1d, 0x84, 0x2a, 0xd2, 0xf0, 0x86, 0x7f, 0xf6, 0xb8, 0x19, 0xa7, 0x8b, ++ 0xcb, 0xf6, 0xd9, 0xf5, 0x2e, 0xcc, 0xbf, 0xb0, 0x14, 0xdf, 0xc7, 0x14, ++ 0xa2, 0x17, 0x27, 0xbf, 0x8c, 0x8f, 0xdb, 0xdb, 0x6f, 0xf0, 0x9d, 0xff, ++ 0x5c, 0x7f, 0xf8, 0x7e, 0x72, 0x3c, 0x4f, 0x14, 0xfc, 0x66, 0xf5, 0xb7, ++ 0xe0, 0x23, 0x78, 0xa5, 0x4c, 0xf1, 0x75, 0xfb, 0xb9, 0xcc, 0x4d, 0x75, ++ 0xf6, 0xfa, 0xdc, 0x61, 0xf8, 0x38, 0x3f, 0x5c, 0xd3, 0x55, 0xfb, 0xb9, ++ 0x4d, 0x83, 0xcf, 0x3e, 0xde, 0xcc, 0xa0, 0xfd, 0xfd, 0xec, 0x22, 0x7b, ++ 0x7d, 0x03, 0xc6, 0x6f, 0x3e, 0xc9, 0xba, 0x1d, 0x7c, 0xf7, 0xf4, 0x18, ++ 0xf3, 0x3b, 0xea, 0x67, 0xf0, 0xeb, 0x2d, 0xb9, 0xfb, 0xbe, 0x27, 0xf2, ++ 0xb7, 0x34, 0x8e, 0x1a, 0x66, 0x38, 0x4e, 0xff, 0x82, 0xbd, 0xf3, 0xe7, ++ 0x01, 0x1d, 0x14, 0xea, 0xdc, 0xee, 0x28, 0x9c, 0xbf, 0xb0, 0x21, 0xb7, ++ 0x06, 0xe5, 0x14, 0x13, 0x79, 0x26, 0x99, 0xed, 0x8f, 0x42, 0xa1, 0xef, ++ 0x95, 0xf6, 0x97, 0x94, 0x1c, 0xf4, 0x47, 0x4d, 0xde, 0x3e, 0xb9, 0xe4, ++ 0xad, 0x19, 0x39, 0x78, 0x5e, 0x5c, 0xc7, 0xe8, 0x3c, 0x3d, 0xaa, 0xde, ++ 0x13, 0xcb, 0x31, 0x52, 0xf6, 0x48, 0xbf, 0x5a, 0x9e, 0x85, 0x78, 0xfe, ++ 0xfc, 0xed, 0x91, 0xbb, 0xbd, 0xe9, 0x79, 0x37, 0x29, 0x7b, 0xe4, 0x81, ++ 0x57, 0x8d, 0x9a, 0x0c, 0xf6, 0x88, 0x7a, 0x8f, 0x64, 0xc2, 0x38, 0xb3, ++ 0x96, 0x80, 0x3d, 0x52, 0x95, 0x6e, 0x8f, 0xb4, 0x4a, 0x28, 0x83, 0xb2, ++ 0x97, 0x80, 0x3d, 0x42, 0x76, 0x47, 0xf4, 0x3d, 0xc4, 0xd7, 0x48, 0x76, ++ 0xc9, 0x8f, 0x2d, 0xfb, 0xde, 0x9f, 0xd9, 0xae, 0xfe, 0x83, 0xca, 0xf5, ++ 0x2c, 0xe8, 0x99, 0x7f, 0xfa, 0x2c, 0x7a, 0x66, 0x9c, 0xd7, 0xfc, 0x17, ++ 0xf5, 0x73, 0xb0, 0x07, 0xa6, 0x95, 0x18, 0x2b, 0x23, 0x19, 0xe8, 0xf0, ++ 0x03, 0x95, 0xc7, 0x3b, 0x2c, 0xfd, 0xd9, 0x18, 0x4c, 0x28, 0x78, 0x76, ++ 0x0e, 0x7a, 0x53, 0x75, 0xc1, 0xf3, 0x6b, 0xeb, 0x92, 0x2f, 0xa1, 0x38, ++ 0xee, 0xd0, 0x77, 0x06, 0x71, 0xdd, 0xb0, 0x1e, 0x97, 0xab, 0xf6, 0xd3, ++ 0xaf, 0xe7, 0x8c, 0xca, 0xe1, 0x99, 0xa8, 0xf2, 0x3c, 0x98, 0x91, 0xfa, ++ 0x7d, 0x6b, 0x04, 0x7f, 0xc5, 0xab, 0x79, 0x85, 0xdd, 0x62, 0xdf, 0xef, ++ 0xfe, 0x05, 0xef, 0xe8, 0x32, 0xfa, 0x2f, 0xe0, 0xc7, 0xa0, 0xff, 0x92, ++ 0xf4, 0x95, 0x6d, 0xc3, 0xb8, 0xe0, 0x99, 0x98, 0x4a, 0xf1, 0x3a, 0x75, ++ 0xfe, 0xca, 0xdd, 0x73, 0x91, 0x9e, 0xc0, 0xce, 0xe6, 0xf4, 0x7c, 0x7e, ++ 0xfb, 0xfa, 0xda, 0x21, 0xd9, 0xc6, 0xc7, 0xd3, 0xce, 0x66, 0xd9, 0xf8, ++ 0xbe, 0x9e, 0xd9, 0xcf, 0xe9, 0x66, 0x78, 0xec, 0xe7, 0x74, 0x8d, 0xba, ++ 0xfd, 0x9c, 0x6e, 0x56, 0xc8, 0x7e, 0x4e, 0x37, 0xc7, 0xb0, 0x9f, 0xd3, ++ 0x5d, 0x5f, 0x69, 0x3f, 0xa7, 0x73, 0xda, 0xf7, 0x33, 0x47, 0xbb, 0xfe, ++ 0x7b, 0xda, 0xf7, 0xa1, 0x46, 0x46, 0xfc, 0x74, 0x01, 0xfb, 0x1e, 0xf8, ++ 0xe9, 0x26, 0xa4, 0xa7, 0x91, 0xf8, 0xe9, 0xba, 0x7c, 0xe3, 0xfe, 0x48, ++ 0x86, 0xfd, 0xae, 0xd6, 0xb8, 0x9d, 0xba, 0xda, 0x1b, 0x59, 0x80, 0x74, ++ 0x37, 0xcd, 0xe0, 0x76, 0x5d, 0x34, 0xb6, 0x9e, 0xf2, 0x01, 0xf3, 0xa2, ++ 0x20, 0x6f, 0x4a, 0x29, 0x6e, 0x48, 0x71, 0x2f, 0x2b, 0xae, 0x65, 0xc5, ++ 0xbd, 0xac, 0xbc, 0x40, 0x2b, 0x9e, 0xe5, 0x8c, 0x5f, 0x59, 0x71, 0x2f, ++ 0x2b, 0x8e, 0x25, 0xc5, 0x78, 0xdc, 0xaa, 0xd9, 0x13, 0x5d, 0x81, 0xf0, ++ 0x36, 0xb7, 0x9f, 0x94, 0x51, 0x8e, 0xe8, 0xcf, 0xc1, 0x3c, 0xc8, 0x08, ++ 0xd6, 0x39, 0xde, 0xb0, 0xf8, 0x1c, 0x97, 0x07, 0x2d, 0xed, 0x99, 0xe3, ++ 0x72, 0xce, 0xf8, 0xdb, 0x88, 0xed, 0x3e, 0x25, 0x5f, 0x7d, 0x0e, 0xfa, ++ 0x61, 0x3d, 0xae, 0xd7, 0xd2, 0x0f, 0xc0, 0xe7, 0x0f, 0x7e, 0x16, 0x3e, ++ 0x07, 0xb9, 0xb5, 0x0d, 0xc7, 0xfb, 0x17, 0xe4, 0xf7, 0x51, 0x24, 0x4f, ++ 0xba, 0x69, 0xff, 0x2a, 0x00, 0xd7, 0x68, 0xa7, 0xc3, 0x3e, 0x68, 0x18, ++ 0xa7, 0x5f, 0x70, 0x7a, 0x3f, 0xc6, 0xe3, 0xd4, 0xe3, 0x6e, 0xe2, 0xdb, ++ 0x8b, 0xf5, 0x7f, 0x31, 0xd1, 0x41, 0x86, 0x4d, 0x8b, 0x82, 0x0f, 0x8e, ++ 0xf1, 0xac, 0x68, 0xac, 0x94, 0xf4, 0x8b, 0xc5, 0x37, 0x16, 0x9f, 0x38, ++ 0xfd, 0xe3, 0x61, 0xfc, 0xf1, 0x5f, 0xcd, 0x3f, 0x17, 0xe9, 0x1f, 0x03, ++ 0xff, 0x7c, 0xcf, 0x75, 0x1e, 0x7d, 0x04, 0xfc, 0xf1, 0x3c, 0xe2, 0x7b, ++ 0x5a, 0x25, 0xc7, 0xaf, 0x93, 0x1f, 0x2c, 0xfa, 0x07, 0x92, 0x48, 0x48, ++ 0xd5, 0xb8, 0xdf, 0xd1, 0x04, 0xb6, 0xb7, 0xe8, 0x9d, 0xbd, 0x18, 0x36, ++ 0x11, 0xce, 0x89, 0xc2, 0xaf, 0x39, 0x31, 0x5a, 0x23, 0xff, 0xe2, 0xc4, ++ 0xf3, 0xff, 0xce, 0xcf, 0x61, 0x9f, 0xf7, 0x84, 0xc7, 0x89, 0x35, 0xe2, ++ 0xfb, 0x89, 0xdd, 0x05, 0xf1, 0x6d, 0xa5, 0x29, 0x3e, 0xb3, 0xf8, 0xa9, ++ 0xdd, 0x13, 0xfd, 0xb1, 0x2b, 0x2d, 0x0f, 0xc4, 0xca, 0x77, 0x3c, 0xec, ++ 0x31, 0x5f, 0xc7, 0xe7, 0x21, 0xb5, 0x2f, 0x81, 0xfe, 0x4a, 0x68, 0x36, ++ 0x0b, 0x6f, 0x30, 0x88, 0xcf, 0x8e, 0xf1, 0xe7, 0x9c, 0x4f, 0x7d, 0x61, ++ 0x46, 0xf1, 0xd3, 0xcf, 0xec, 0x97, 0xed, 0x75, 0xc5, 0xf1, 0x7c, 0xa8, ++ 0x45, 0x1a, 0x5a, 0xca, 0xc8, 0x6f, 0x65, 0x1a, 0xf2, 0xad, 0x2a, 0xe4, ++ 0xc9, 0x8b, 0x59, 0xd1, 0x93, 0x88, 0xcf, 0xe6, 0xe9, 0x91, 0x12, 0x4e, ++ 0x4f, 0x43, 0xe3, 0x7c, 0x00, 0xd7, 0x2f, 0x3a, 0x14, 0xf2, 0xd7, 0x3e, ++ 0x2b, 0x3f, 0x35, 0x8f, 0x84, 0xff, 0x73, 0xf8, 0x88, 0x0e, 0xb9, 0x6a, ++ 0x87, 0xe7, 0x07, 0xa4, 0xcb, 0x2d, 0x94, 0x6f, 0xa1, 0x90, 0x16, 0xdf, ++ 0x20, 0x65, 0x90, 0x57, 0x02, 0x5f, 0x71, 0x16, 0x1e, 0x83, 0xeb, 0x83, ++ 0xfd, 0xfc, 0x77, 0xc4, 0x63, 0x5e, 0x15, 0x93, 0x68, 0x39, 0x82, 0x8f, ++ 0x9b, 0x3d, 0xe6, 0x1f, 0x5c, 0x9f, 0xcd, 0xfe, 0x50, 0xb4, 0xda, 0x14, ++ 0x1f, 0x03, 0xde, 0x3c, 0x1a, 0xca, 0xc5, 0x6a, 0xc0, 0x5b, 0xf9, 0x70, ++ 0xbc, 0x9d, 0x74, 0xf1, 0xf5, 0x3b, 0xe9, 0x2f, 0xa4, 0x26, 0x65, 0xa4, ++ 0xff, 0x10, 0xc8, 0xd1, 0x0d, 0x52, 0xda, 0x39, 0xa9, 0xc0, 0x8b, 0xb5, ++ 0x9e, 0x91, 0xe4, 0xb3, 0x45, 0xa7, 0x69, 0xe7, 0x0d, 0x21, 0x2d, 0x7d, ++ 0xbd, 0xff, 0x8f, 0xca, 0x65, 0x4b, 0x5e, 0x5e, 0xee, 0x89, 0x4e, 0xc6, ++ 0x7d, 0x70, 0x9b, 0x11, 0x21, 0xff, 0x4c, 0xda, 0x5f, 0xa7, 0x9c, 0x19, ++ 0x6e, 0x07, 0xc9, 0x74, 0xce, 0x78, 0x06, 0xec, 0x1e, 0xec, 0x76, 0xb1, ++ 0xf2, 0x75, 0xda, 0x59, 0x2f, 0x1e, 0x96, 0xb0, 0xa9, 0x67, 0x15, 0x2a, ++ 0xaf, 0x3d, 0x4b, 0x87, 0x27, 0xec, 0x8b, 0x67, 0xb3, 0xa9, 0x34, 0xcf, ++ 0xe6, 0x53, 0x59, 0x7f, 0x36, 0x97, 0xca, 0xe9, 0x67, 0x2f, 0xa1, 0x72, ++ 0xc6, 0xd9, 0xd1, 0x54, 0x36, 0x9c, 0x05, 0x60, 0xc0, 0xc4, 0x69, 0x3c, ++ 0x5b, 0x4a, 0xe5, 0xcc, 0xb3, 0x57, 0x50, 0x39, 0xeb, 0xec, 0x78, 0x2a, ++ 0x67, 0x9f, 0xbd, 0x8a, 0xda, 0xcd, 0x39, 0x3b, 0x89, 0xca, 0xeb, 0xce, ++ 0x7e, 0x81, 0xca, 0xeb, 0xcf, 0x4e, 0xa1, 0xd2, 0x69, 0xff, 0x18, 0xeb, ++ 0x55, 0x92, 0xdf, 0x96, 0xfc, 0xb2, 0xe4, 0xbb, 0x53, 0x7e, 0x5b, 0xf2, ++ 0xef, 0xff, 0x9a, 0xfc, 0x8e, 0x35, 0x5c, 0x94, 0xfd, 0x03, 0xfa, 0xef, ++ 0xab, 0xda, 0x79, 0xe4, 0xf7, 0x48, 0xf2, 0x02, 0xf8, 0xfa, 0x3e, 0x2d, ++ 0x5d, 0x4e, 0xa4, 0xf4, 0xf3, 0xfd, 0xda, 0x67, 0xe0, 0xeb, 0xe3, 0x82, ++ 0x4f, 0x81, 0x7f, 0xdf, 0xc3, 0x38, 0x8c, 0x07, 0xbc, 0x38, 0x8a, 0x53, ++ 0x85, 0x79, 0x9c, 0x2a, 0x60, 0x68, 0x06, 0xe6, 0x69, 0xec, 0xc3, 0x26, ++ 0xb0, 0xa5, 0xfe, 0xd2, 0xc8, 0x49, 0x8c, 0x1b, 0x34, 0x2f, 0xf0, 0xe8, ++ 0x31, 0x80, 0x7b, 0xa0, 0x54, 0x23, 0xf9, 0xb4, 0x2d, 0xa8, 0xd1, 0xb9, ++ 0xdb, 0x66, 0x49, 0x1f, 0xcd, 0xe5, 0x41, 0x32, 0x81, 0xf4, 0xb7, 0x33, ++ 0xa4, 0xd1, 0x78, 0xdb, 0xfe, 0xa8, 0x78, 0x31, 0x7f, 0xe1, 0xa5, 0x51, ++ 0x05, 0x01, 0x9c, 0xa7, 0xdb, 0x2f, 0xeb, 0xd8, 0xfe, 0x5b, 0xb9, 0xc9, ++ 0x7d, 0xb7, 0xe0, 0x39, 0xfe, 0x14, 0x16, 0x3e, 0x04, 0xe3, 0xad, 0xd8, ++ 0xb3, 0xc7, 0x93, 0xee, 0x87, 0xef, 0x47, 0xe3, 0x00, 0xe0, 0x0b, 0xc4, ++ 0x9e, 0x66, 0x0c, 0xf8, 0x7a, 0xe3, 0xa8, 0xdf, 0x2d, 0xc5, 0xf9, 0x7c, ++ 0x53, 0x19, 0xc5, 0x63, 0xa0, 0x34, 0x33, 0xe5, 0x8b, 0x7d, 0xd3, 0x2d, ++ 0xce, 0xa7, 0xd5, 0xa1, 0x10, 0xe2, 0x69, 0xab, 0x4f, 0x26, 0x7d, 0xd0, ++ 0xad, 0x7b, 0x44, 0x1e, 0x6a, 0x72, 0xa0, 0x05, 0xfd, 0xdc, 0x3a, 0x99, ++ 0x6d, 0x83, 0x79, 0x37, 0x8c, 0x7e, 0x67, 0x0b, 0x82, 0xad, 0x8e, 0x2b, ++ 0xdb, 0x51, 0x06, 0xf5, 0x9d, 0x75, 0x65, 0x5e, 0xdc, 0xa4, 0xa7, 0x5f, ++ 0xf9, 0x20, 0x44, 0xf6, 0x04, 0xbc, 0x43, 0x50, 0xa0, 0x4c, 0x88, 0xd2, ++ 0xcc, 0x81, 0xfd, 0xe9, 0xf4, 0x86, 0x8d, 0xf3, 0x9d, 0xb7, 0x29, 0xc6, ++ 0xd0, 0x3a, 0x24, 0x56, 0xec, 0xef, 0xae, 0x1e, 0xb9, 0xdd, 0x26, 0xff, ++ 0x40, 0x08, 0xe9, 0xa3, 0x63, 0xd2, 0xe4, 0xca, 0x5b, 0x60, 0xfe, 0xde, ++ 0x49, 0x05, 0xa3, 0x71, 0xfe, 0xed, 0x35, 0x47, 0x6d, 0xf8, 0x50, 0x74, ++ 0x7b, 0x3c, 0x45, 0xc1, 0x80, 0x23, 0xfa, 0xe1, 0x75, 0x49, 0x8a, 0xab, ++ 0x6d, 0x90, 0x8d, 0x1d, 0x65, 0xb0, 0xbe, 0x80, 0xc8, 0xb7, 0x06, 0x30, ++ 0x2b, 0x23, 0x69, 0x79, 0x07, 0x16, 0x1c, 0x4a, 0x18, 0xd6, 0xc1, 0xe1, ++ 0x4a, 0x28, 0x7c, 0x3d, 0xac, 0x00, 0x9e, 0xe7, 0xd6, 0x25, 0x62, 0x49, ++ 0xbe, 0x5e, 0x13, 0xe3, 0xae, 0x3e, 0x5f, 0x32, 0x84, 0xfe, 0xa2, 0x52, ++ 0x77, 0x9a, 0xe2, 0x6d, 0x9d, 0xfe, 0xe4, 0x22, 0xaa, 0x3b, 0xe0, 0xb0, ++ 0xc6, 0xff, 0xad, 0x66, 0xe5, 0x05, 0x70, 0xbe, 0xf1, 0x09, 0xbe, 0x69, ++ 0x9e, 0xf4, 0xed, 0x45, 0x94, 0x47, 0x5e, 0xa5, 0xd1, 0xbe, 0x75, 0xbb, ++ 0x86, 0x16, 0x60, 0x3d, 0xb6, 0xd6, 0xc5, 0x1e, 0xcf, 0x10, 0xbf, 0xd9, ++ 0x20, 0xf8, 0x79, 0x5b, 0xe5, 0xf9, 0xe3, 0x32, 0xaa, 0xcf, 0x0e, 0x47, ++ 0xb7, 0xd7, 0xee, 0x2f, 0x5a, 0xf0, 0xbc, 0x2f, 0x4a, 0x27, 0x1c, 0xcd, ++ 0xae, 0xa1, 0x51, 0x99, 0xf6, 0xef, 0xd3, 0xce, 0x7f, 0xa1, 0x75, 0x7f, ++ 0xde, 0xf3, 0x75, 0x8e, 0x90, 0x3f, 0x70, 0xb9, 0xdb, 0xbe, 0x0f, 0x01, ++ 0x21, 0xcf, 0x9b, 0xa7, 0x7c, 0x3b, 0x84, 0xe7, 0xe2, 0x16, 0x3c, 0x9d, ++ 0x12, 0xec, 0x43, 0xcd, 0xe7, 0xbf, 0x0f, 0xcd, 0x53, 0xb8, 0xbc, 0xfe, ++ 0xbc, 0xd7, 0xfb, 0x3f, 0x6d, 0xdc, 0xdf, 0x6b, 0x3c, 0xae, 0x02, 0x7c, ++ 0x3a, 0xbb, 0x1c, 0xe3, 0x8c, 0x63, 0x26, 0x87, 0x30, 0x5e, 0xeb, 0xb3, ++ 0xe2, 0xd1, 0xe1, 0x38, 0xe5, 0x27, 0x05, 0x30, 0x1e, 0x4d, 0xbd, 0x0c, ++ 0xd2, 0x43, 0xaa, 0xce, 0xc7, 0x50, 0x54, 0x96, 0x40, 0x3e, 0x94, 0xb3, ++ 0x3f, 0x4c, 0xe0, 0x3e, 0x29, 0xd5, 0x9a, 0xa1, 0x90, 0x9c, 0xcd, 0xbc, ++ 0xef, 0x4a, 0x78, 0x13, 0xe5, 0xb5, 0x39, 0xf9, 0xd3, 0x82, 0x9b, 0xfe, ++ 0x26, 0x0b, 0xd3, 0x81, 0xce, 0x0f, 0xbd, 0x56, 0x7c, 0xda, 0x50, 0x27, ++ 0xf3, 0xfb, 0x12, 0x18, 0xff, 0x55, 0x98, 0x75, 0x3e, 0xcb, 0xe3, 0xd3, ++ 0x56, 0x7f, 0xb5, 0x42, 0xa6, 0x78, 0x34, 0x05, 0xb2, 0xd3, 0xc6, 0x51, ++ 0x41, 0x0f, 0xe3, 0x39, 0x8e, 0x82, 0x71, 0xea, 0xbc, 0xe1, 0xf3, 0x7f, ++ 0x37, 0x45, 0x8f, 0xf6, 0xf9, 0x8b, 0x78, 0x7c, 0x5c, 0x51, 0xb9, 0x1f, ++ 0xf8, 0x9e, 0xc4, 0xf1, 0x11, 0x7b, 0x55, 0xa1, 0x7c, 0xcf, 0xae, 0xe7, ++ 0xb9, 0x7c, 0x63, 0xc7, 0x19, 0xc9, 0xef, 0xae, 0x5a, 0x83, 0xce, 0x55, ++ 0x76, 0xc0, 0xff, 0xe8, 0x3f, 0xc4, 0x6a, 0x7d, 0x71, 0xa4, 0x5b, 0xc5, ++ 0x91, 0x8f, 0x77, 0xa6, 0x72, 0x7a, 0x08, 0xe5, 0xa8, 0x15, 0x17, 0xa7, ++ 0xf9, 0xf8, 0xf9, 0x00, 0xc5, 0xb9, 0x31, 0x4f, 0x91, 0xe2, 0xe6, 0x06, ++ 0xab, 0xc0, 0xf7, 0xdd, 0x02, 0x34, 0x6b, 0x1c, 0xd5, 0x8a, 0xcb, 0x57, ++ 0xae, 0x99, 0x84, 0xed, 0xfc, 0x06, 0xf3, 0x3c, 0x07, 0xeb, 0xf3, 0xd7, ++ 0xb1, 0xc4, 0x25, 0x00, 0x6f, 0xd0, 0xdd, 0xba, 0xf5, 0xf2, 0xd2, 0x0c, ++ 0xf1, 0xf0, 0xca, 0x35, 0xdf, 0x78, 0x12, 0xe6, 0xdd, 0xfd, 0xd4, 0xf4, ++ 0x5f, 0x3d, 0x09, 0xf5, 0x5d, 0x72, 0xf8, 0xd5, 0x3a, 0x68, 0x97, 0xff, ++ 0xe5, 0x3a, 0xc2, 0xab, 0x33, 0x1e, 0xbe, 0xad, 0x52, 0x36, 0x75, 0x94, ++ 0x0f, 0x3e, 0xdf, 0x21, 0xdc, 0x57, 0xb0, 0xa1, 0x89, 0x2e, 0x6e, 0xed, ++ 0x91, 0x62, 0xf8, 0x3c, 0xdb, 0xe7, 0x3b, 0xc8, 0xf7, 0xbb, 0x35, 0xa4, ++ 0x20, 0x5e, 0x40, 0x4f, 0x22, 0x5e, 0xbc, 0xce, 0xbc, 0xc8, 0x74, 0x7c, ++ 0x97, 0x21, 0x1c, 0x3b, 0x07, 0xe6, 0xc1, 0xbf, 0xbd, 0x5b, 0xe7, 0x2d, ++ 0xc3, 0x79, 0x11, 0x6e, 0xcc, 0xaf, 0x5c, 0xd1, 0x5b, 0xaf, 0xa1, 0x9e, ++ 0x09, 0x2e, 0xb1, 0x9f, 0x5f, 0xf8, 0x9b, 0xec, 0x75, 0x6f, 0x95, 0x1d, ++ 0xce, 0xad, 0x62, 0xff, 0x2e, 0x44, 0xff, 0xce, 0x3c, 0xc4, 0x1e, 0x73, ++ 0xde, 0x22, 0xa4, 0xdb, 0x33, 0x41, 0x8d, 0xa1, 0xbc, 0xd9, 0xb8, 0xf6, ++ 0xea, 0x1b, 0x49, 0xee, 0x6f, 0x57, 0xd8, 0xb8, 0xd2, 0x0c, 0xf4, 0xeb, ++ 0x58, 0x57, 0xa7, 0xe6, 0x22, 0xfd, 0xdf, 0x6d, 0xd4, 0xef, 0xad, 0x40, ++ 0xbd, 0xd1, 0xa0, 0x51, 0x5e, 0x4f, 0x77, 0xdc, 0x1b, 0xc7, 0x14, 0xef, ++ 0xed, 0x75, 0xa9, 0x73, 0x13, 0x9b, 0xfd, 0x6e, 0x68, 0xfc, 0x1c, 0xab, ++ 0x46, 0x4e, 0xb8, 0x33, 0xd9, 0xf1, 0xe2, 0x7c, 0x2c, 0x20, 0x9e, 0x31, ++ 0xc7, 0x39, 0x58, 0xf7, 0x6c, 0x99, 0xec, 0x9a, 0xee, 0x1e, 0x3e, 0x8f, ++ 0x35, 0x5e, 0x77, 0xdd, 0x5b, 0x1e, 0x94, 0x13, 0x23, 0x8d, 0xfb, 0xf4, ++ 0x18, 0xf3, 0x88, 0x1b, 0xed, 0xa9, 0x68, 0xde, 0x45, 0xdd, 0xbb, 0xb8, ++ 0x6f, 0xa3, 0x8b, 0xd3, 0xf5, 0x14, 0x2d, 0x2e, 0x95, 0xa2, 0x3d, 0xaa, ++ 0x2f, 0x5c, 0x04, 0xf5, 0xcd, 0xe3, 0x64, 0xb2, 0x87, 0x98, 0xf0, 0xff, ++ 0xba, 0xaf, 0xe5, 0xe7, 0x89, 0x0f, 0x6b, 0x86, 0xed, 0x7e, 0xc5, 0xa6, ++ 0x29, 0x2b, 0xc9, 0x6e, 0xb8, 0xc9, 0xad, 0x0b, 0xfe, 0x02, 0xbb, 0x70, ++ 0x42, 0xea, 0xbe, 0xc5, 0x01, 0xaf, 0xf9, 0x82, 0x1b, 0x9e, 0xab, 0xcf, ++ 0xc1, 0x48, 0x60, 0x0f, 0xbc, 0x97, 0x1b, 0xbe, 0x11, 0xe9, 0xa2, 0x31, ++ 0xf8, 0x11, 0xd9, 0x51, 0xb7, 0x16, 0xc9, 0x3a, 0xd2, 0xd7, 0x8a, 0x3d, ++ 0x8d, 0xb4, 0xae, 0xcd, 0xba, 0xcc, 0x12, 0x68, 0xf7, 0xaa, 0xad, 0x64, ++ 0xa4, 0x36, 0xb1, 0x56, 0x13, 0xcf, 0x03, 0x30, 0x51, 0x13, 0xe9, 0x6e, ++ 0x0e, 0xbc, 0x91, 0xe9, 0x5e, 0x44, 0xf2, 0x50, 0x27, 0xc0, 0x39, 0x67, ++ 0x5c, 0xe1, 0xa4, 0x6d, 0x50, 0x73, 0x17, 0xb5, 0x52, 0x1e, 0x4b, 0xa3, ++ 0x21, 0x91, 0x1f, 0x76, 0x1d, 0x60, 0x06, 0xe5, 0x41, 0x4b, 0x71, 0x44, ++ 0x95, 0xaa, 0xb0, 0xdf, 0xfc, 0x77, 0xd0, 0xee, 0x9b, 0x13, 0x2c, 0x95, ++ 0xd1, 0xdf, 0xbf, 0x4e, 0x65, 0x0d, 0x5a, 0x9a, 0x7d, 0x0e, 0x76, 0xf1, ++ 0x31, 0x77, 0xda, 0xba, 0x4e, 0x8c, 0xdb, 0x13, 0x94, 0xab, 0x70, 0x7e, ++ 0x98, 0x07, 0xe7, 0x5f, 0xe4, 0xa1, 0xfb, 0x04, 0x6e, 0xb4, 0x8f, 0xaf, ++ 0x4c, 0xd9, 0xc7, 0x13, 0x11, 0x91, 0x69, 0x76, 0xf2, 0xaf, 0xd1, 0xa8, ++ 0xc4, 0x78, 0x46, 0x51, 0xe2, 0xf7, 0x94, 0xe7, 0xfd, 0xfd, 0xa4, 0x8c, ++ 0xf3, 0xb2, 0x17, 0x58, 0xf5, 0x36, 0xe9, 0x93, 0xfb, 0xd5, 0xe0, 0x5f, ++ 0xfe, 0x12, 0xf7, 0x33, 0xce, 0x8c, 0x7e, 0x4c, 0x35, 0xfc, 0xac, 0x71, ++ 0x89, 0xaf, 0x6b, 0x62, 0x9f, 0xc4, 0xbd, 0x95, 0xc3, 0x9e, 0xc8, 0x6f, ++ 0x70, 0x7c, 0x2b, 0x1e, 0x30, 0x51, 0xe3, 0xf7, 0x9b, 0x37, 0xb7, 0xb0, ++ 0x70, 0x2c, 0x2d, 0xae, 0xb2, 0xf9, 0xf9, 0x3f, 0x3f, 0x8e, 0xf6, 0xaa, ++ 0x15, 0x7f, 0x39, 0x97, 0x77, 0x27, 0xe0, 0xb4, 0xe0, 0xde, 0x24, 0xb1, ++ 0x2c, 0xd2, 0xf3, 0x9e, 0xe8, 0x1f, 0xdc, 0xe9, 0x7e, 0x31, 0x4b, 0x96, ++ 0xcd, 0x9d, 0xf0, 0xf9, 0xc1, 0x9d, 0x21, 0x5f, 0xce, 0x57, 0x0b, 0xfc, ++ 0x34, 0x56, 0xf0, 0x4f, 0x5e, 0x6d, 0x85, 0x17, 0xe5, 0xe6, 0x58, 0xcc, ++ 0xf7, 0xc1, 0x7d, 0x68, 0xe7, 0xf2, 0xc4, 0x84, 0xff, 0xd2, 0xf3, 0x7d, ++ 0x14, 0xc1, 0x7c, 0xc1, 0x70, 0x6b, 0xbf, 0x6c, 0x0c, 0x97, 0x4b, 0x8a, ++ 0xb8, 0x37, 0x05, 0x74, 0x2d, 0xa1, 0x1d, 0xeb, 0xcc, 0x07, 0x52, 0x30, ++ 0xef, 0x67, 0xe2, 0x70, 0xb9, 0x71, 0x40, 0xd0, 0xff, 0x25, 0x1e, 0x91, ++ 0xff, 0x33, 0x99, 0x4d, 0xe6, 0x7e, 0xb8, 0xfd, 0xfc, 0xca, 0xbf, 0x94, ++ 0xeb, 0x7d, 0xd6, 0x9a, 0x97, 0xf1, 0x1e, 0xea, 0xf7, 0x85, 0xde, 0x7f, ++ 0x51, 0xf8, 0x95, 0x09, 0x71, 0xaf, 0xf1, 0xa8, 0xb8, 0xb7, 0xf8, 0xf2, ++ 0x3a, 0x83, 0xfc, 0xbc, 0x57, 0xd6, 0x55, 0x52, 0x39, 0xb0, 0x2e, 0x4c, ++ 0xcf, 0x5f, 0x5b, 0x57, 0x47, 0x65, 0xea, 0x7e, 0x15, 0x9f, 0x37, 0x5f, ++ 0xd8, 0x61, 0x2a, 0x06, 0xd5, 0xf0, 0x9c, 0xdf, 0xc7, 0xe2, 0x06, 0xc0, ++ 0xeb, 0x1f, 0xb5, 0x66, 0xa0, 0x14, 0xf9, 0xbc, 0x8e, 0xdf, 0xef, 0xee, ++ 0x6e, 0x3a, 0xb5, 0xa5, 0x9c, 0xec, 0x46, 0x7e, 0x6e, 0xb1, 0xb9, 0xa8, ++ 0x3a, 0x51, 0x88, 0xfe, 0x0b, 0xc0, 0x9a, 0x0f, 0x75, 0x97, 0xaf, 0xcf, ++ 0xc3, 0xef, 0x79, 0x99, 0x83, 0x95, 0x05, 0x5c, 0xcd, 0x21, 0xde, 0xff, ++ 0xab, 0xcf, 0x2b, 0x9c, 0x74, 0xa1, 0x5b, 0xfb, 0xef, 0xd8, 0x6f, 0x1f, ++ 0x6b, 0x65, 0x28, 0xef, 0x02, 0xa6, 0x7d, 0xbf, 0xb3, 0xc3, 0x4e, 0xff, ++ 0x86, 0xef, 0xbf, 0xab, 0xe8, 0xe2, 0xf6, 0xbd, 0x17, 0xff, 0x01, 0xfb, ++ 0xf8, 0x25, 0x6b, 0xdf, 0xaf, 0x66, 0x57, 0xf3, 0xef, 0x33, 0x5c, 0x9c, ++ 0x3c, 0x46, 0x3e, 0xaa, 0x14, 0x72, 0x60, 0x0c, 0xf0, 0xd3, 0x01, 0xf0, ++ 0xe7, 0xdd, 0x0a, 0xcf, 0x57, 0xcf, 0xe7, 0x79, 0xae, 0x66, 0x88, 0xf3, ++ 0x9b, 0xa9, 0xf2, 0x7a, 0x6c, 0xbc, 0x68, 0xef, 0xe2, 0x24, 0xc4, 0x06, ++ 0xf2, 0x78, 0x5e, 0x7b, 0x31, 0x3f, 0x4f, 0xa0, 0x7e, 0x98, 0x57, 0x8e, ++ 0xef, 0x31, 0x2c, 0xf9, 0x02, 0x8f, 0x6f, 0xb1, 0x1c, 0x91, 0xff, 0x3e, ++ 0x56, 0x8c, 0xb3, 0x5a, 0x8c, 0x3b, 0xb1, 0x9a, 0xee, 0xed, 0xf2, 0xf3, ++ 0x7f, 0xd6, 0xa7, 0x63, 0xe9, 0x63, 0x49, 0xaa, 0xe7, 0x02, 0x1f, 0x60, ++ 0x19, 0x64, 0xad, 0x12, 0x22, 0x73, 0x0c, 0x1b, 0x24, 0x7f, 0xbb, 0x58, ++ 0x1a, 0xa2, 0xba, 0x21, 0xe9, 0x59, 0x58, 0x2f, 0x93, 0xc2, 0x65, 0xdc, ++ 0x0f, 0x8f, 0x93, 0xfe, 0x2c, 0x57, 0xcc, 0x6f, 0x57, 0x10, 0xf2, 0x23, ++ 0x32, 0x8f, 0x17, 0x25, 0x17, 0x93, 0x3d, 0x09, 0x7a, 0x19, 0xe5, 0x62, ++ 0x5c, 0x8d, 0x2c, 0x42, 0xf9, 0xb2, 0xa1, 0x4d, 0x0b, 0x03, 0x26, 0xce, ++ 0xe5, 0xc9, 0xe1, 0xfd, 0x39, 0x2c, 0x37, 0xf4, 0xd5, 0x0c, 0xe0, 0xf9, ++ 0x47, 0x2c, 0x26, 0x93, 0xfc, 0x51, 0x9e, 0x63, 0x59, 0xfa, 0x95, 0x64, ++ 0xef, 0x91, 0xfe, 0xda, 0xb0, 0x3e, 0xef, 0x60, 0x36, 0xe5, 0x6b, 0x24, ++ 0x29, 0xcf, 0x7d, 0xbf, 0xa7, 0xd4, 0xa6, 0xa7, 0x26, 0xfa, 0x16, 0x5e, ++ 0xa7, 0xc3, 0x7e, 0x6d, 0x14, 0xf9, 0x74, 0x2e, 0xe8, 0xcf, 0x32, 0xe4, ++ 0x9f, 0x5a, 0xf9, 0x74, 0x30, 0x6e, 0x49, 0xa6, 0xf7, 0x56, 0xb9, 0xd1, ++ 0xaf, 0x2d, 0xca, 0xe4, 0xf7, 0x3f, 0xec, 0x91, 0x44, 0x3c, 0x23, 0x39, ++ 0x9a, 0xe2, 0x80, 0x62, 0x5f, 0xe3, 0x53, 0xe5, 0x8c, 0xf7, 0x19, 0xf7, ++ 0x79, 0xb8, 0x5d, 0xf3, 0x68, 0x69, 0x66, 0x7b, 0x9a, 0xb1, 0x07, 0x69, ++ 0xbc, 0xfd, 0x1e, 0xdd, 0x31, 0x6e, 0xb2, 0x85, 0xee, 0xcf, 0xe8, 0x3c, ++ 0xbe, 0x91, 0xe5, 0x32, 0x29, 0xbf, 0x66, 0x63, 0x1b, 0xbf, 0xa7, 0x6f, ++ 0xe1, 0x6f, 0x34, 0xd8, 0xb5, 0x68, 0x0f, 0x6f, 0xec, 0x9b, 0x3f, 0x1b, ++ 0xf9, 0x3b, 0x56, 0xa9, 0x52, 0xbe, 0x39, 0xac, 0xdf, 0x87, 0xf8, 0x73, ++ 0x89, 0xbc, 0xe4, 0x8d, 0xe3, 0x83, 0x07, 0xb3, 0x79, 0x5c, 0xa2, 0x14, ++ 0xe5, 0x74, 0x3f, 0xe2, 0xaf, 0x36, 0x0d, 0x7f, 0xc1, 0x95, 0x4d, 0x88, ++ 0xbf, 0x8e, 0x57, 0x79, 0x7e, 0x2f, 0xe8, 0x73, 0x1f, 0xcb, 0x90, 0x6f, ++ 0x68, 0xe1, 0xcf, 0xe5, 0x63, 0x5f, 0xcc, 0xf4, 0xde, 0x2a, 0x3b, 0x46, ++ 0x69, 0x8b, 0x32, 0xdd, 0x1b, 0x3e, 0xea, 0xb1, 0xec, 0xf4, 0x64, 0x29, ++ 0xa7, 0x13, 0x8e, 0xbf, 0xac, 0x6b, 0xd5, 0x48, 0xa6, 0xf6, 0x09, 0x81, ++ 0xef, 0x92, 0x32, 0x16, 0x3d, 0x1f, 0xfe, 0xfa, 0x3d, 0xba, 0x6d, 0x5c, ++ 0xeb, 0xdc, 0x57, 0x19, 0x21, 0xde, 0x25, 0xf9, 0x12, 0x14, 0xe7, 0x9a, ++ 0xa8, 0x71, 0x3b, 0x63, 0xc3, 0x62, 0x8e, 0xd7, 0x0d, 0xcf, 0x5f, 0x73, ++ 0x3c, 0x9a, 0x76, 0x0e, 0xf1, 0x4b, 0x1c, 0x72, 0x4a, 0x2a, 0x1e, 0x6c, ++ 0xc5, 0x8d, 0x2d, 0xbd, 0xd9, 0xee, 0x89, 0xfe, 0xa3, 0x67, 0x54, 0x4a, ++ 0x5f, 0xb2, 0xef, 0x33, 0x92, 0xbb, 0xec, 0x05, 0xcf, 0x41, 0xdc, 0xb7, ++ 0x0c, 0xe7, 0x10, 0xa7, 0x3c, 0xb5, 0x19, 0xce, 0x21, 0x7a, 0x2e, 0xee, ++ 0xfb, 0x2e, 0x63, 0x05, 0xdf, 0x1e, 0xda, 0x72, 0x74, 0x1e, 0xce, 0xf3, ++ 0x57, 0x75, 0x8c, 0xec, 0xab, 0xc0, 0x33, 0x7c, 0xde, 0x5c, 0x9d, 0xc5, ++ 0xe5, 0x52, 0xfc, 0x4e, 0x81, 0x29, 0x61, 0x9c, 0xe5, 0x9a, 0x88, 0x5e, ++ 0x8f, 0xf6, 0x9b, 0xab, 0x9d, 0x99, 0x98, 0x3f, 0x33, 0x56, 0xc4, 0x6d, ++ 0x0a, 0xdb, 0xfb, 0x14, 0xa4, 0x8b, 0x20, 0xec, 0x65, 0xa1, 0x84, 0xf7, ++ 0x9a, 0x92, 0x31, 0xfc, 0x9e, 0xc9, 0xd8, 0xdd, 0x8c, 0xfc, 0x44, 0xb5, ++ 0x70, 0xe6, 0xaa, 0xf5, 0x86, 0x10, 0xa5, 0x69, 0xf9, 0x51, 0x0a, 0x1b, ++ 0xea, 0xa7, 0xf5, 0xb5, 0x6b, 0xc6, 0xe3, 0xa5, 0x04, 0xd6, 0x4f, 0x51, ++ 0x3f, 0x8c, 0x11, 0xef, 0x03, 0xed, 0x33, 0x7f, 0x85, 0x72, 0x73, 0x4c, ++ 0x24, 0x4a, 0x79, 0xb8, 0xd0, 0x2f, 0xe6, 0x47, 0xfb, 0x42, 0xe0, 0xb1, ++ 0xc0, 0xcb, 0xf9, 0x76, 0x79, 0x43, 0x58, 0x92, 0xa0, 0x7d, 0x30, 0x98, ++ 0xa4, 0xf8, 0xa4, 0x53, 0xae, 0x8f, 0x01, 0xfc, 0x5c, 0x92, 0x66, 0xbf, ++ 0x05, 0x44, 0x9d, 0xad, 0xe2, 0x72, 0x5a, 0x86, 0xff, 0x50, 0xcf, 0xe7, ++ 0x47, 0xec, 0x72, 0x7b, 0x9c, 0xe3, 0x5e, 0x74, 0xc0, 0x91, 0xf7, 0x92, ++ 0xeb, 0x15, 0xf9, 0xee, 0x96, 0xdc, 0x2e, 0xe2, 0x9b, 0x3a, 0x41, 0x1d, ++ 0x94, 0x33, 0xf9, 0xe5, 0x29, 0xfd, 0xea, 0x80, 0x0f, 0x65, 0x58, 0x75, ++ 0xaa, 0x7f, 0xc0, 0xaa, 0x7f, 0x46, 0xf8, 0x80, 0x10, 0x88, 0x9e, 0x2d, ++ 0x78, 0xf0, 0x2a, 0x25, 0xca, 0xdd, 0x3d, 0x2e, 0xfd, 0x2b, 0x4f, 0xa1, ++ 0x7e, 0xae, 0xd7, 0x78, 0x1e, 0x99, 0xb8, 0x2f, 0x97, 0x2d, 0xf0, 0xee, ++ 0x43, 0x87, 0x19, 0xda, 0x0d, 0x4c, 0x79, 0xc5, 0xc4, 0x7d, 0xdd, 0x11, ++ 0xe6, 0xdf, 0xa5, 0x39, 0x33, 0x75, 0x1e, 0xf9, 0xa1, 0xd9, 0x75, 0xd6, ++ 0x7d, 0x3a, 0x7e, 0x5f, 0x19, 0xca, 0x18, 0xc6, 0xe9, 0xb2, 0xc5, 0xfc, ++ 0xd6, 0xbd, 0xba, 0x6c, 0x66, 0xbc, 0x59, 0x0e, 0xf4, 0x90, 0x6d, 0x26, ++ 0xe9, 0x5e, 0x9d, 0x6e, 0x7d, 0x57, 0xc1, 0x64, 0x09, 0xcc, 0xc3, 0xd1, ++ 0x7d, 0x32, 0xe5, 0xd1, 0xe9, 0xbe, 0x08, 0xc9, 0xa7, 0x9e, 0x05, 0x1e, ++ 0x1d, 0xbf, 0xf3, 0xa1, 0x89, 0x7b, 0x7a, 0x2e, 0x71, 0x7f, 0x3c, 0xdb, ++ 0x3c, 0x4d, 0xf7, 0xeb, 0xb2, 0x87, 0xad, 0x8f, 0xdf, 0xaf, 0xb3, 0xe0, ++ 0xce, 0xce, 0xaa, 0x7a, 0xb3, 0xdc, 0xb0, 0xcd, 0xb3, 0x1e, 0xe3, 0xdb, ++ 0xb0, 0xf6, 0xd1, 0x19, 0xef, 0xd7, 0xd5, 0x71, 0x3f, 0x29, 0xdb, 0xe4, ++ 0x71, 0x88, 0xb4, 0xf1, 0xe9, 0x7e, 0xdd, 0x8e, 0xa9, 0x65, 0xb6, 0xfb, ++ 0x75, 0x34, 0x0f, 0xfa, 0x71, 0x82, 0xfe, 0xac, 0x7b, 0x76, 0x4e, 0xb8, ++ 0xce, 0xf5, 0xab, 0xc9, 0x6c, 0xa7, 0x4d, 0x08, 0xdb, 0xed, 0x88, 0x0b, ++ 0xdd, 0xaf, 0x73, 0x85, 0xec, 0xed, 0x77, 0x5c, 0x20, 0x3f, 0xeb, 0x13, ++ 0xdf, 0xaf, 0x13, 0x78, 0x18, 0xd6, 0xce, 0x61, 0x0f, 0xba, 0x2c, 0x3b, ++ 0x74, 0x94, 0xcc, 0x70, 0xff, 0xce, 0x34, 0xc8, 0xf4, 0x1d, 0x91, 0xdc, ++ 0x8f, 0x92, 0x91, 0x19, 0x12, 0xc5, 0x25, 0x48, 0xdf, 0x5b, 0x76, 0x5e, ++ 0x1e, 0x1f, 0xea, 0xbf, 0x9d, 0x9d, 0x97, 0x67, 0xe5, 0xf5, 0x3b, 0xec, ++ 0x3c, 0xcb, 0x7e, 0xcb, 0x9d, 0x6d, 0xc7, 0xb7, 0xd3, 0xee, 0x73, 0x57, ++ 0x45, 0xa8, 0xcf, 0xc5, 0xda, 0x79, 0xbb, 0xf0, 0x1f, 0x40, 0x2f, 0x0f, ++ 0x79, 0x1d, 0x76, 0x5e, 0x53, 0x66, 0xfa, 0x70, 0xca, 0x8b, 0x7c, 0x36, ++ 0xb8, 0xfb, 0x4a, 0x18, 0xe7, 0x68, 0xed, 0x8f, 0x14, 0xcc, 0x57, 0xdb, ++ 0x95, 0xcb, 0xbf, 0x7f, 0xc4, 0x86, 0xf9, 0x07, 0x6f, 0xcd, 0xa0, 0x7d, ++ 0xf1, 0xf1, 0xef, 0x1d, 0xed, 0x9a, 0xd2, 0xaf, 0xe2, 0xf7, 0x6f, 0x7e, ++ 0xb7, 0x94, 0x91, 0x9d, 0x64, 0xc5, 0x11, 0xdc, 0x02, 0xe6, 0x5d, 0x45, ++ 0xf2, 0x7a, 0x0a, 0xbb, 0x77, 0x3d, 0x44, 0xf8, 0x09, 0x0a, 0x3c, 0x34, ++ 0xe1, 0x07, 0xc8, 0x6a, 0x08, 0x57, 0xf1, 0x71, 0xc4, 0x67, 0xa6, 0x17, ++ 0xf3, 0x16, 0xf2, 0x9b, 0x18, 0x35, 0x2a, 0xac, 0x08, 0xd3, 0xbe, 0xe3, ++ 0x67, 0x09, 0x64, 0xba, 0xb4, 0x15, 0x53, 0x51, 0x8f, 0xd7, 0x23, 0x56, ++ 0xd2, 0xf0, 0x34, 0xc3, 0x63, 0xff, 0x4e, 0x40, 0xa3, 0x9e, 0xef, 0xd8, ++ 0x47, 0xfb, 0x3e, 0x9f, 0x3b, 0x07, 0x7f, 0x90, 0x7f, 0x4f, 0x61, 0x8e, ++ 0x61, 0xdf, 0x77, 0xcb, 0x4f, 0x42, 0x73, 0x16, 0xe7, 0xbb, 0xbe, 0xd2, ++ 0x4e, 0x07, 0x27, 0xa4, 0xc8, 0xa0, 0x02, 0x5d, 0x9e, 0xce, 0x2a, 0x15, ++ 0xf6, 0xcf, 0xa0, 0x8e, 0xfa, 0xb2, 0x7b, 0xad, 0x8b, 0xec, 0xc6, 0x87, ++ 0x96, 0x94, 0x6d, 0xbd, 0x12, 0xfd, 0xd5, 0xa0, 0xac, 0xf3, 0xe3, 0xc8, ++ 0xa1, 0x71, 0x68, 0x1f, 0x35, 0x1f, 0x35, 0xbd, 0x68, 0xe7, 0x6d, 0x8f, ++ 0x4c, 0xf7, 0x8e, 0x83, 0xf7, 0x0f, 0x75, 0x28, 0x61, 0x34, 0x0f, 0x9f, ++ 0x5a, 0xb2, 0xe6, 0x55, 0xac, 0xc7, 0x76, 0xbb, 0xc8, 0x0e, 0x7a, 0xaa, ++ 0x6f, 0x5e, 0xc1, 0x8a, 0x34, 0xbe, 0xdb, 0xbc, 0x7b, 0xc1, 0xc2, 0xc5, ++ 0xf8, 0xbe, 0xc3, 0x45, 0xfa, 0x7d, 0xc5, 0x9e, 0xfb, 0x06, 0x4a, 0x83, ++ 0xd8, 0xdf, 0x55, 0x9b, 0xfe, 0xbd, 0xa9, 0x96, 0x8d, 0xf7, 0xe9, 0xe8, ++ 0xb7, 0xbd, 0x51, 0xeb, 0xcd, 0x68, 0xc7, 0x5c, 0x9d, 0xc5, 0xed, 0x92, ++ 0x8d, 0x5a, 0x92, 0xe2, 0x4f, 0x1b, 0xe7, 0x69, 0x0c, 0x5d, 0xae, 0x8d, ++ 0x25, 0xf5, 0xa3, 0x57, 0xa0, 0xfd, 0x70, 0x8d, 0x96, 0xf1, 0x3e, 0xf9, ++ 0x5d, 0x59, 0x6e, 0x7e, 0x9f, 0xcf, 0xd5, 0x2a, 0xa1, 0x7c, 0x2f, 0x8c, ++ 0x66, 0xbe, 0x17, 0x60, 0xb5, 0x1b, 0x5b, 0xf3, 0x5b, 0x3a, 0xc7, 0x08, ++ 0xce, 0x96, 0x19, 0xfa, 0x71, 0xae, 0xeb, 0xe7, 0xc9, 0x58, 0x7f, 0x08, ++ 0xf6, 0x55, 0x97, 0x52, 0xf4, 0x94, 0x27, 0xe8, 0x69, 0x63, 0xd1, 0xbd, ++ 0x5b, 0x2b, 0x70, 0x7d, 0x03, 0x99, 0xef, 0x1d, 0x5a, 0xe5, 0xda, 0xac, ++ 0x71, 0x9c, 0x4e, 0x23, 0x76, 0x3e, 0x77, 0x15, 0x36, 0x8d, 0xc6, 0x75, ++ 0xbb, 0xdc, 0x91, 0x81, 0x7a, 0x24, 0xae, 0x42, 0x59, 0xc7, 0xb8, 0x88, ++ 0xcb, 0xdd, 0x1a, 0xb9, 0x19, 0xed, 0xd1, 0xab, 0x5d, 0x48, 0xe1, 0x6c, ++ 0x73, 0xc7, 0x0f, 0x1b, 0x16, 0xe1, 0xbe, 0x84, 0x25, 0x5d, 0x82, 0x79, ++ 0x82, 0x6a, 0x64, 0x15, 0xd1, 0x59, 0x30, 0x8b, 0xa1, 0x3e, 0x68, 0x58, ++ 0x12, 0x69, 0x45, 0xbc, 0x14, 0x82, 0xfe, 0xc3, 0xd0, 0x5e, 0x61, 0xd1, ++ 0x2f, 0xe9, 0x9c, 0xa2, 0xb0, 0x4e, 0x63, 0x5e, 0xa8, 0x7b, 0x96, 0xf4, ++ 0x24, 0x5c, 0xf0, 0xde, 0x53, 0x11, 0xbd, 0x0a, 0xf1, 0xfe, 0xd2, 0x5a, ++ 0xfe, 0x9d, 0x97, 0xc2, 0xa0, 0x8f, 0xee, 0x05, 0x15, 0x46, 0xf8, 0x39, ++ 0x5c, 0x61, 0xbb, 0x9b, 0xa1, 0xc9, 0xb0, 0x11, 0x5c, 0x60, 0x17, 0xf9, ++ 0x07, 0x12, 0xc5, 0x89, 0x9c, 0x7c, 0x64, 0xad, 0xab, 0x79, 0x29, 0x97, ++ 0xe3, 0xbb, 0xd7, 0xfe, 0x76, 0x54, 0xa6, 0xef, 0xcd, 0x54, 0x64, 0x95, ++ 0x11, 0x5e, 0xbd, 0x86, 0x7d, 0xdd, 0x1e, 0xd4, 0xbb, 0x30, 0xce, 0x54, ++ 0x73, 0x70, 0x09, 0xe1, 0xbb, 0xc6, 0xcd, 0xe2, 0xc4, 0xbf, 0x6e, 0xa2, ++ 0xef, 0x5d, 0xb5, 0x2e, 0x82, 0x6b, 0xd7, 0x94, 0x93, 0x5f, 0x41, 0xb8, ++ 0x7e, 0xf7, 0xfb, 0x2c, 0xda, 0xef, 0x6b, 0x99, 0x29, 0x21, 0x5c, 0xf9, ++ 0x43, 0xfc, 0x9c, 0xd5, 0x9a, 0x27, 0xbf, 0x69, 0x50, 0xe1, 0xf1, 0x70, ++ 0xce, 0x87, 0x4e, 0xbe, 0xb3, 0xf8, 0xc1, 0x09, 0xdf, 0xce, 0xd9, 0xf3, ++ 0xe8, 0x3c, 0x6e, 0x33, 0x1b, 0x9c, 0x8f, 0xf8, 0x8e, 0x9d, 0x95, 0x89, ++ 0x8e, 0x36, 0x17, 0xad, 0xf1, 0xa6, 0xc7, 0x45, 0x5b, 0x05, 0xfd, 0xc1, ++ 0x3e, 0x90, 0x7c, 0x89, 0xe9, 0x8c, 0xf6, 0x5b, 0xf9, 0x57, 0xb6, 0x1e, ++ 0xf3, 0x61, 0x37, 0x7e, 0x31, 0x52, 0x89, 0xfc, 0xf1, 0xb6, 0x97, 0xdf, ++ 0x5b, 0xbd, 0x6f, 0xa9, 0x46, 0xeb, 0x78, 0x68, 0xae, 0x46, 0xf1, 0xc6, ++ 0x87, 0xfc, 0xad, 0x44, 0xf7, 0xa7, 0x36, 0xba, 0xc2, 0x87, 0x10, 0x1c, ++ 0x55, 0x5f, 0x88, 0xfb, 0xb9, 0xbb, 0xb8, 0x22, 0x8c, 0xf1, 0xb6, 0xbf, ++ 0xc3, 0xc3, 0xe7, 0x34, 0xff, 0x60, 0xf7, 0xa8, 0x2f, 0x55, 0x22, 0x3e, ++ 0xbf, 0xf8, 0x87, 0x2c, 0x3e, 0xce, 0x14, 0xd5, 0x1a, 0xe7, 0x67, 0x44, ++ 0xef, 0xb5, 0x5e, 0x82, 0x73, 0x86, 0xd2, 0xfe, 0xb3, 0x15, 0x68, 0x87, ++ 0x2e, 0x91, 0x27, 0x53, 0xee, 0xf4, 0xaa, 0x25, 0x24, 0xbf, 0x5c, 0x42, ++ 0x8e, 0xbf, 0xbc, 0x24, 0xaf, 0x1e, 0xfd, 0x94, 0xc0, 0x0d, 0xcb, 0x19, ++ 0x97, 0x87, 0x3c, 0x4e, 0x11, 0x58, 0x5b, 0xcd, 0xef, 0x33, 0x38, 0xe4, ++ 0x7e, 0xa2, 0x4e, 0xdd, 0x3d, 0x83, 0x76, 0x89, 0xc7, 0x7f, 0xea, 0x85, ++ 0xbc, 0x1b, 0x7b, 0xc3, 0xf4, 0x7a, 0x5c, 0x67, 0xbd, 0xd0, 0x0b, 0xa6, ++ 0x9a, 0xf9, 0xbb, 0x8c, 0xb9, 0xa2, 0x7d, 0xe1, 0x50, 0x04, 0x4d, 0xb2, ++ 0x61, 0xf1, 0x9f, 0x5c, 0xa1, 0x3f, 0xc6, 0xee, 0x76, 0x3c, 0x17, 0x7a, ++ 0x21, 0x77, 0x58, 0x1c, 0x7c, 0xb0, 0xe2, 0x66, 0x90, 0x3f, 0x5f, 0xca, ++ 0x12, 0x76, 0xe4, 0x08, 0x71, 0x9f, 0x5d, 0x4b, 0xe6, 0x11, 0x3f, 0x9c, ++ 0x01, 0x7e, 0xa0, 0xb8, 0x74, 0xc9, 0x49, 0xa2, 0xff, 0x18, 0xc8, 0x09, ++ 0xb4, 0x9b, 0xdf, 0x90, 0x92, 0xa1, 0x15, 0x69, 0xe7, 0x61, 0xd6, 0x77, ++ 0xe6, 0x7e, 0x22, 0xe2, 0x41, 0x11, 0xb3, 0x94, 0xf2, 0x84, 0xdf, 0x12, ++ 0xf1, 0xa0, 0x9f, 0x8a, 0xef, 0xce, 0xbd, 0x23, 0xe2, 0x41, 0xc7, 0x45, ++ 0x3c, 0xe8, 0xe7, 0x22, 0x1e, 0xf4, 0x0f, 0x18, 0x0f, 0xc2, 0xef, 0x87, ++ 0x79, 0x2f, 0xa7, 0x7d, 0x1b, 0x57, 0xf7, 0x51, 0x3f, 0xc6, 0x71, 0x76, ++ 0xd6, 0x2c, 0xf0, 0x18, 0x30, 0xce, 0x54, 0x7d, 0xf0, 0x25, 0x04, 0xf2, ++ 0x8b, 0xe6, 0xa0, 0x4f, 0xe4, 0xdf, 0x13, 0xbc, 0x41, 0x4b, 0x0f, 0xcd, ++ 0x3d, 0x7f, 0x9c, 0x2a, 0x81, 0x70, 0xb9, 0x31, 0x2e, 0xc5, 0xe1, 0x7c, ++ 0x59, 0x7c, 0x8f, 0xee, 0x15, 0x01, 0xd7, 0x80, 0x80, 0xeb, 0x35, 0x01, ++ 0x97, 0xa5, 0x07, 0x51, 0x6e, 0x20, 0x9d, 0xb1, 0xb1, 0xaa, 0x9e, 0x49, ++ 0x1e, 0x06, 0xd5, 0x56, 0x09, 0xcf, 0x7b, 0x51, 0x5e, 0xf4, 0x07, 0x49, ++ 0x5e, 0xf0, 0x3c, 0xf1, 0xe0, 0x1a, 0xc9, 0x98, 0x30, 0x5c, 0x4e, 0xc0, ++ 0x78, 0xa3, 0xd3, 0xed, 0x74, 0x8b, 0xfe, 0x4e, 0x8d, 0xf2, 0x11, 0x1d, ++ 0x3b, 0xc7, 0x7f, 0x34, 0x8b, 0xdf, 0x3b, 0x7c, 0x69, 0xed, 0xac, 0xfd, ++ 0x2c, 0x98, 0x26, 0x8f, 0x22, 0x0b, 0x57, 0x21, 0xdd, 0xe5, 0xc3, 0xfe, ++ 0xa0, 0x3c, 0x8a, 0x36, 0x71, 0x39, 0x1e, 0xc5, 0x7b, 0x17, 0x69, 0x72, ++ 0xd5, 0x8a, 0xa7, 0xc1, 0x8e, 0x84, 0x49, 0xef, 0xdc, 0xc0, 0xf1, 0x34, ++ 0x92, 0x7c, 0xb9, 0x90, 0x5c, 0x29, 0x74, 0xc8, 0x95, 0xdd, 0x28, 0x57, ++ 0xa0, 0xbe, 0x1b, 0xe5, 0x4a, 0x30, 0x5d, 0xae, 0xb4, 0xf6, 0xe3, 0xba, ++ 0x83, 0x28, 0x57, 0x58, 0x4a, 0x0f, 0x05, 0x23, 0x9f, 0x4c, 0xae, 0xfc, ++ 0xcc, 0x5b, 0x66, 0x8b, 0x93, 0x58, 0xf2, 0xe5, 0x6a, 0x60, 0x63, 0xb2, ++ 0x13, 0xc3, 0xa0, 0x4f, 0xfd, 0x9f, 0x5e, 0x9f, 0xbe, 0x2d, 0xe4, 0xc4, ++ 0x85, 0xf4, 0xaa, 0x95, 0xff, 0x11, 0x30, 0x19, 0xe9, 0xf5, 0x3d, 0x98, ++ 0x17, 0x82, 0xfe, 0xcc, 0x78, 0x46, 0xf7, 0x70, 0x14, 0x73, 0x90, 0xf2, ++ 0x89, 0x72, 0xdb, 0x5d, 0x0c, 0xf3, 0x41, 0xb6, 0x62, 0x97, 0xd1, 0xe8, ++ 0xcf, 0x2c, 0xa4, 0x7c, 0x90, 0x1d, 0xf3, 0x3d, 0x3a, 0xd2, 0xc5, 0xc3, ++ 0x52, 0x22, 0x84, 0xf8, 0xdc, 0x27, 0xf5, 0x78, 0xf9, 0xbe, 0xe8, 0xfd, ++ 0x68, 0x2f, 0x6c, 0x9b, 0xc0, 0xe3, 0x24, 0x3b, 0xfe, 0x78, 0x8f, 0x17, ++ 0xed, 0xec, 0x97, 0x6e, 0x2f, 0x08, 0xe0, 0x39, 0x4e, 0x6f, 0xae, 0x95, ++ 0x07, 0xa2, 0x2f, 0xbe, 0x15, 0xea, 0xa7, 0x1a, 0x19, 0xd1, 0xc9, 0x8a, ++ 0x3d, 0x2b, 0x6c, 0x79, 0x0f, 0x3f, 0xcf, 0xca, 0x23, 0x7c, 0xe4, 0xc6, ++ 0x40, 0xfe, 0x00, 0x3e, 0x1e, 0xbe, 0x9d, 0xeb, 0x1f, 0xdd, 0xe0, 0x79, ++ 0x20, 0x50, 0x66, 0xcc, 0x03, 0x71, 0xfb, 0x44, 0x3c, 0x48, 0x8d, 0x85, ++ 0x90, 0x3e, 0xb6, 0x49, 0x51, 0x0f, 0xc5, 0x61, 0x1a, 0x65, 0xd2, 0x53, ++ 0xbd, 0x61, 0x9e, 0xbf, 0xd2, 0x0b, 0x7e, 0x39, 0x9e, 0x0f, 0xf6, 0x36, ++ 0xec, 0x9c, 0x83, 0xfa, 0x79, 0xc3, 0xad, 0x32, 0xa3, 0x7c, 0xf1, 0xca, ++ 0x9e, 0x7b, 0x50, 0xce, 0x74, 0x4c, 0x58, 0x68, 0x20, 0x5f, 0xba, 0x46, ++ 0x97, 0xbd, 0x89, 0xe6, 0xf8, 0x06, 0x9f, 0xec, 0x4d, 0xcf, 0x23, 0xc5, ++ 0xe3, 0x04, 0xad, 0x9a, 0x9f, 0x1b, 0x8a, 0xd2, 0xcc, 0x01, 0x90, 0x37, ++ 0x7b, 0x4d, 0xe3, 0x7c, 0xf7, 0x47, 0x55, 0xe1, 0xf7, 0x61, 0x7f, 0xf7, ++ 0x79, 0xf2, 0xe0, 0x3b, 0x73, 0x43, 0xa3, 0x31, 0x4e, 0xd0, 0xdb, 0xb8, ++ 0x30, 0x84, 0xf3, 0xf6, 0x8e, 0x8a, 0x84, 0xf2, 0x28, 0x3f, 0x65, 0x0c, ++ 0xd9, 0x03, 0x1b, 0x47, 0x6d, 0x5a, 0x8c, 0xf1, 0xa7, 0x8e, 0xe5, 0x1a, ++ 0x4b, 0xb7, 0x93, 0x86, 0xcd, 0x17, 0xb4, 0xdb, 0xd7, 0x56, 0x9c, 0x51, ++ 0x6d, 0xe0, 0xf9, 0x23, 0x1d, 0x32, 0xf7, 0x2f, 0x73, 0xc5, 0xf9, 0x34, ++ 0xf0, 0x55, 0x25, 0xe2, 0x2d, 0x7d, 0x9d, 0x08, 0xa7, 0x6a, 0xf2, 0xfc, ++ 0x11, 0x5c, 0xaf, 0xc2, 0xd7, 0x4b, 0xdf, 0x37, 0xcd, 0x6d, 0x00, 0xff, ++ 0xb0, 0x8a, 0xaf, 0x1f, 0xfd, 0x57, 0xdd, 0xa7, 0x8f, 0x46, 0xf9, 0xa1, ++ 0x36, 0xf0, 0xfc, 0x91, 0xcd, 0x7e, 0x7d, 0x31, 0xfa, 0x8d, 0x4e, 0x38, ++ 0xac, 0xf1, 0xaf, 0xcd, 0x96, 0x6c, 0xfe, 0x91, 0x6e, 0xe5, 0x2d, 0xd4, ++ 0xaf, 0xe1, 0xe7, 0x88, 0x45, 0x3c, 0x6f, 0xa1, 0xd7, 0x75, 0xfe, 0xbc, ++ 0x85, 0x0e, 0x21, 0x0f, 0x2d, 0xbf, 0x71, 0x24, 0x7c, 0xb8, 0x1c, 0xe7, ++ 0xd4, 0xbd, 0x5e, 0x7b, 0x1c, 0xd0, 0x82, 0xe7, 0x4a, 0x51, 0x3a, 0xe1, ++ 0x18, 0x29, 0x5f, 0xe0, 0xd3, 0xce, 0x7f, 0xa1, 0x75, 0x7f, 0xde, 0xf3, ++ 0x8d, 0x94, 0x47, 0xb0, 0x26, 0x5b, 0xb2, 0xdd, 0xaf, 0xc8, 0xb5, 0xf2, ++ 0x59, 0x1a, 0xd7, 0x84, 0x50, 0x4e, 0x58, 0xf0, 0x6c, 0xbe, 0x40, 0xfe, ++ 0xc8, 0xa7, 0x85, 0xab, 0xb9, 0x91, 0xb7, 0xff, 0xbc, 0xd7, 0xfb, 0x3f, ++ 0x6d, 0xdc, 0xfa, 0x6c, 0xae, 0x1f, 0x81, 0x4f, 0x07, 0xf0, 0x1e, 0x65, ++ 0xc7, 0xc4, 0x99, 0x21, 0x94, 0x43, 0xa9, 0x78, 0xcc, 0xd0, 0x40, 0x39, ++ 0xda, 0x73, 0xe2, 0x3e, 0xa3, 0x95, 0x3f, 0xe2, 0xd2, 0xf9, 0x3f, 0x55, ++ 0x95, 0x7f, 0xe7, 0x4e, 0xce, 0x2e, 0xa2, 0xef, 0x2c, 0xab, 0xd3, 0x79, ++ 0xfe, 0x08, 0xfd, 0x65, 0xc8, 0x03, 0xd9, 0xc4, 0xd8, 0x6c, 0xf4, 0x77, ++ 0x54, 0x11, 0xbf, 0x71, 0xf2, 0xe9, 0x85, 0xe0, 0x77, 0xe6, 0x8d, 0xdc, ++ 0xec, 0x13, 0x7e, 0x63, 0xd4, 0x31, 0x9f, 0xc8, 0x13, 0x61, 0x8e, 0xbc, ++ 0x13, 0x35, 0xc4, 0xf3, 0x4b, 0xac, 0x7c, 0x92, 0x2e, 0x09, 0xd6, 0x17, ++ 0x4c, 0xe5, 0x83, 0x8c, 0x38, 0xaf, 0x03, 0x6f, 0xe3, 0x85, 0xdc, 0x7f, ++ 0xcf, 0xd1, 0x7f, 0xd8, 0xba, 0xc3, 0xfc, 0x7e, 0xa5, 0x95, 0x7f, 0x32, ++ 0x2c, 0x8f, 0x64, 0xaa, 0xbc, 0x1f, 0xb7, 0x60, 0x58, 0x1e, 0x89, 0xc8, ++ 0x47, 0xe9, 0xc9, 0x35, 0xe2, 0x3c, 0x4f, 0x9c, 0xe7, 0x95, 0xa0, 0xda, ++ 0xc4, 0x78, 0xde, 0xb0, 0x3c, 0x92, 0xa9, 0xd3, 0x43, 0xf8, 0x4d, 0xc9, ++ 0x69, 0x25, 0xa2, 0xdf, 0x0d, 0x8c, 0xbe, 0xbf, 0xdb, 0xe3, 0xe5, 0xf5, ++ 0xde, 0x39, 0x2c, 0x8e, 0xdf, 0x3b, 0xeb, 0xc5, 0x3a, 0xf2, 0x53, 0x2d, ++ 0xa3, 0xbc, 0x96, 0x61, 0xf9, 0x25, 0x53, 0xd7, 0x10, 0x9e, 0x34, 0x16, ++ 0x59, 0xc6, 0xcf, 0x77, 0xf8, 0x79, 0xbf, 0x85, 0x07, 0x67, 0x7e, 0xc9, ++ 0x05, 0xe9, 0xed, 0x02, 0x79, 0x24, 0x41, 0x9f, 0xf5, 0x3d, 0x8a, 0x08, ++ 0xcd, 0xd3, 0xe3, 0x0f, 0xff, 0xa4, 0x8e, 0xe0, 0x93, 0xe9, 0x3c, 0xbe, ++ 0xe0, 0x4b, 0xc7, 0xc3, 0xe9, 0xe3, 0x5f, 0xe2, 0xe3, 0x72, 0xb2, 0x47, ++ 0xe4, 0xe1, 0xf5, 0xe4, 0xda, 0xf3, 0xf1, 0xee, 0x13, 0xfb, 0x52, 0x21, ++ 0xda, 0x39, 0xf7, 0x57, 0x2f, 0xe2, 0x74, 0xdd, 0x55, 0xaf, 0x53, 0xdc, ++ 0xdd, 0xdd, 0xc0, 0xe3, 0x95, 0xc3, 0xbe, 0x03, 0x51, 0x63, 0xf7, 0x07, ++ 0x9c, 0xf1, 0xbc, 0x13, 0x42, 0x5e, 0x5f, 0x68, 0xfd, 0xce, 0xb8, 0xde, ++ 0xb6, 0x11, 0xee, 0x9b, 0x2d, 0xf0, 0xf1, 0x3c, 0xae, 0x87, 0x96, 0x1c, ++ 0xa2, 0xbc, 0xd8, 0x33, 0xab, 0x40, 0xcf, 0x02, 0xbe, 0x1e, 0xc6, 0x7c, ++ 0x96, 0x9a, 0x8b, 0xcf, 0x67, 0x79, 0x3d, 0x8b, 0xe7, 0xb3, 0xf4, 0x1a, ++ 0xf5, 0x0b, 0x2f, 0x45, 0x3d, 0x16, 0xd5, 0x18, 0xca, 0xd3, 0x5e, 0xcc, ++ 0x67, 0x81, 0xf7, 0x1b, 0x1a, 0x46, 0xc8, 0x67, 0x11, 0xf1, 0x44, 0x2b, ++ 0x3e, 0x3a, 0x52, 0x3e, 0x4b, 0xee, 0xb9, 0xf3, 0x78, 0x7b, 0x3e, 0x4b, ++ 0xef, 0xad, 0x3c, 0x9f, 0xa5, 0xb7, 0x87, 0xcf, 0x63, 0x8d, 0xd7, 0xdb, ++ 0x50, 0x4d, 0x76, 0xd6, 0x48, 0xe3, 0x3e, 0x3d, 0xc6, 0x94, 0x7d, 0xb8, ++ 0xff, 0x15, 0x17, 0x77, 0x7e, 0x3a, 0xad, 0x24, 0xf2, 0x67, 0x98, 0xbf, ++ 0xd2, 0x53, 0xaa, 0xe9, 0x0f, 0x1a, 0x48, 0x2f, 0x9c, 0x9e, 0xbb, 0x1a, ++ 0x35, 0xa2, 0xef, 0x2e, 0x17, 0xf7, 0x63, 0x63, 0xa3, 0xb9, 0xdf, 0xcc, ++ 0xd4, 0x78, 0x68, 0x21, 0xb4, 0xd9, 0xe2, 0x4f, 0x2c, 0xa2, 0x78, 0xb2, ++ 0xc8, 0xcb, 0xe8, 0x15, 0xf7, 0xe7, 0xff, 0x3e, 0xcb, 0xb0, 0xd9, 0xc7, ++ 0x9d, 0x8d, 0xdf, 0x0d, 0xa1, 0x5d, 0x0f, 0x74, 0xf8, 0xb2, 0xce, 0xf9, ++ 0x84, 0xc6, 0xc9, 0x57, 0x4b, 0xd7, 0x83, 0x0d, 0xc8, 0xdc, 0x7a, 0x8b, ++ 0x89, 0x3e, 0xe5, 0x40, 0x36, 0x8f, 0x23, 0xb8, 0x42, 0xc7, 0x06, 0xea, ++ 0xd2, 0xe8, 0x74, 0x8b, 0xd0, 0x77, 0x88, 0x1f, 0x19, 0xf0, 0x93, 0x2b, ++ 0x9d, 0xc3, 0x57, 0x54, 0x2e, 0xa0, 0xe8, 0x3e, 0xfd, 0xad, 0x11, 0xf4, ++ 0xf9, 0x46, 0x36, 0x9f, 0xdf, 0xa2, 0x43, 0xa6, 0x4e, 0x0a, 0xf3, 0xf3, ++ 0x3f, 0x56, 0x81, 0x72, 0xc4, 0xf2, 0x5f, 0x87, 0xb5, 0xf3, 0xf0, 0x76, ++ 0xc3, 0xe4, 0x8f, 0x43, 0x8e, 0xf4, 0x60, 0x7e, 0x1b, 0x56, 0x2c, 0x79, ++ 0x72, 0x83, 0x25, 0x4f, 0xec, 0x74, 0x69, 0xc9, 0x0f, 0xe6, 0x90, 0x33, ++ 0xe7, 0xe4, 0xc9, 0x1c, 0x6e, 0xa7, 0x9f, 0x93, 0x27, 0x20, 0x3f, 0xf0, ++ 0x53, 0x67, 0x4e, 0x39, 0xd4, 0xeb, 0xe5, 0xfa, 0xc2, 0x82, 0xc7, 0x8d, ++ 0x82, 0x19, 0xe4, 0xc8, 0x7b, 0xae, 0xb0, 0x2d, 0x4e, 0xe3, 0x94, 0x3b, ++ 0x17, 0xe2, 0xa3, 0xcf, 0x5b, 0xee, 0xbc, 0x94, 0x9d, 0x2f, 0xec, 0x0f, ++ 0x2e, 0x77, 0x82, 0x48, 0x1b, 0xc8, 0x37, 0xd9, 0xd6, 0x39, 0x22, 0xbf, ++ 0xf7, 0x70, 0x66, 0xea, 0x83, 0x24, 0x0f, 0x3d, 0x2a, 0x5f, 0xb7, 0x27, ++ 0xc2, 0xe8, 0x77, 0x02, 0xb0, 0x8e, 0xf2, 0xdc, 0x83, 0xe7, 0x28, 0x19, ++ 0xe5, 0x7a, 0xb5, 0x44, 0xf1, 0x06, 0x71, 0x2e, 0x92, 0x2f, 0xbe, 0x3f, ++ 0xf8, 0xb0, 0x2b, 0x4c, 0xf9, 0x69, 0x0f, 0x03, 0x3f, 0xa3, 0x9f, 0x37, ++ 0xc1, 0x70, 0xda, 0x67, 0xe7, 0x3f, 0x57, 0x70, 0x9e, 0x27, 0x3d, 0xbc, ++ 0xf6, 0x6b, 0xdc, 0x3f, 0x03, 0x7c, 0xa3, 0xdf, 0x75, 0xb1, 0x72, 0xc8, ++ 0x92, 0x13, 0x1f, 0x66, 0xf3, 0x75, 0x9f, 0xa3, 0x2f, 0x93, 0xc3, 0x69, ++ 0xd1, 0x57, 0x1a, 0x3d, 0xd3, 0xf7, 0x05, 0x2c, 0xfa, 0xb5, 0xc6, 0xb5, ++ 0xe8, 0x98, 0x21, 0x83, 0x16, 0x9c, 0x87, 0x5e, 0x05, 0x5d, 0x63, 0x38, ++ 0x9a, 0xe2, 0xd4, 0x31, 0x29, 0x8e, 0x71, 0x10, 0x2b, 0x8f, 0xcc, 0x1a, ++ 0xef, 0x0d, 0x1f, 0xb7, 0x47, 0x46, 0xba, 0x5f, 0x65, 0xb5, 0xfb, 0x8e, ++ 0xe5, 0x77, 0x9d, 0x8b, 0x07, 0xeb, 0x01, 0x9d, 0xf2, 0xc9, 0x7a, 0xe8, ++ 0xbe, 0x39, 0xeb, 0xe2, 0xf4, 0x37, 0x87, 0xed, 0x56, 0xd7, 0x54, 0x51, ++ 0x3e, 0x81, 0xca, 0x28, 0x9f, 0x20, 0x52, 0x82, 0xfe, 0xcc, 0x61, 0x9f, ++ 0xdd, 0x2f, 0xb6, 0xf2, 0xc1, 0xa6, 0x95, 0x84, 0x43, 0x28, 0x27, 0x36, ++ 0x08, 0x3b, 0xdd, 0xca, 0x23, 0xb3, 0xf2, 0xd2, 0x0e, 0xfb, 0x72, 0xad, ++ 0x73, 0x66, 0x5b, 0x7e, 0xda, 0x86, 0x11, 0xee, 0x67, 0xbf, 0x79, 0x0e, ++ 0x3f, 0x17, 0xff, 0xfd, 0x13, 0xfc, 0x6e, 0xdb, 0x6a, 0xaf, 0xf9, 0x38, ++ 0xca, 0x45, 0xc0, 0x97, 0x29, 0xbe, 0xe7, 0x44, 0x79, 0x68, 0xd6, 0xb8, ++ 0xdf, 0x15, 0x78, 0x7a, 0xdd, 0x63, 0x3e, 0xe9, 0xfb, 0x0c, 0xf7, 0x27, ++ 0x5f, 0xcc, 0xb2, 0xe7, 0x5d, 0x75, 0xfa, 0x0c, 0x47, 0x5c, 0x80, 0xe3, ++ 0x75, 0xa2, 0x1e, 0xab, 0xa7, 0xfb, 0x78, 0x51, 0x7e, 0xaf, 0xca, 0x79, ++ 0xae, 0x3e, 0xd2, 0xfd, 0x57, 0xe7, 0xbd, 0xbd, 0x73, 0xf7, 0x5f, 0xc5, ++ 0xf9, 0x7b, 0xb3, 0x27, 0xfa, 0x32, 0xc1, 0xff, 0x22, 0xcf, 0x7f, 0xd3, ++ 0xc3, 0xd1, 0x83, 0x9d, 0xec, 0xf3, 0x5b, 0xcf, 0x01, 0xaf, 0xf9, 0x13, ++ 0x1c, 0xbf, 0x53, 0xf0, 0xf7, 0xb4, 0x20, 0xbf, 0xb7, 0xf3, 0xbe, 0x27, ++ 0xfa, 0x36, 0x3e, 0xbf, 0x8e, 0x71, 0xbf, 0xda, 0xb2, 0x73, 0x0e, 0x63, ++ 0x3b, 0xe8, 0xef, 0x7f, 0x19, 0xa4, 0x36, 0xd0, 0xcb, 0xa6, 0x5a, 0x4e, ++ 0xaf, 0x45, 0x95, 0x8c, 0xbe, 0x3f, 0x3e, 0xbd, 0x95, 0xd7, 0x77, 0x2c, ++ 0xe5, 0xdf, 0x35, 0xed, 0x7f, 0x9d, 0xdf, 0xfb, 0xd8, 0x16, 0xe5, 0xdf, ++ 0x33, 0x85, 0x7e, 0x7d, 0x32, 0xe0, 0x65, 0xc7, 0x78, 0xae, 0x0f, 0xf7, ++ 0x57, 0xf1, 0x7e, 0xfb, 0xf1, 0x7e, 0x13, 0xf2, 0x69, 0x05, 0xb7, 0xbb, ++ 0xf2, 0x30, 0x7a, 0xaf, 0xa0, 0xb8, 0x8e, 0x52, 0x39, 0xbd, 0xa6, 0xc7, ++ 0x3b, 0x01, 0xde, 0x1f, 0x58, 0x2a, 0x53, 0x5c, 0x74, 0x8f, 0xe0, 0x8b, ++ 0x00, 0x33, 0x29, 0xce, 0xb1, 0xad, 0x92, 0xcf, 0xb3, 0xab, 0x42, 0x7e, ++ 0x42, 0x7c, 0x8f, 0x66, 0xd1, 0x2d, 0x50, 0xef, 0x9c, 0xbd, 0x72, 0x32, ++ 0xde, 0x2f, 0xd9, 0x2e, 0xe2, 0x29, 0xfb, 0x16, 0xaf, 0x7c, 0x02, 0xf3, ++ 0xfa, 0x3e, 0x08, 0x94, 0x0b, 0xba, 0x4b, 0xd0, 0xbd, 0xd7, 0x9e, 0xe3, ++ 0xb7, 0x51, 0x7c, 0xe4, 0xa1, 0x25, 0x79, 0xd2, 0x4a, 0x58, 0xe3, 0xbe, ++ 0x83, 0x99, 0xf3, 0x5b, 0xaa, 0xfc, 0xaa, 0xe8, 0x17, 0x73, 0x8b, 0x78, ++ 0x92, 0x28, 0x13, 0x1a, 0x96, 0x5b, 0x4d, 0x91, 0xb7, 0xda, 0xca, 0xc4, ++ 0xf7, 0xd8, 0x63, 0x1a, 0xc6, 0x9f, 0x9e, 0x19, 0xe4, 0x79, 0xab, 0xdd, ++ 0xab, 0x9f, 0x39, 0x36, 0x13, 0xf5, 0x71, 0xa5, 0x4c, 0x79, 0x66, 0x5d, ++ 0x83, 0x47, 0xbd, 0x97, 0xe1, 0xba, 0xeb, 0x78, 0x5e, 0x4f, 0x91, 0x9a, ++ 0x90, 0xd2, 0xfd, 0x17, 0xaf, 0xdf, 0xc5, 0xed, 0xb4, 0x9a, 0xa3, 0x1e, ++ 0xa3, 0x6a, 0x78, 0xfb, 0x67, 0x06, 0x8f, 0x12, 0xdd, 0x6d, 0x07, 0xbc, ++ 0x2b, 0x69, 0xfe, 0x9f, 0x2c, 0xe0, 0xec, 0x46, 0x7f, 0x02, 0xfa, 0xed, ++ 0x75, 0xf5, 0x0c, 0xcc, 0x84, 0x76, 0x7b, 0xc7, 0xe5, 0x49, 0x31, 0x23, ++ 0xd5, 0x6e, 0xb4, 0x9f, 0xf3, 0x5f, 0xf7, 0x12, 0x59, 0x7c, 0x87, 0x9e, ++ 0xd1, 0x77, 0x1c, 0x3a, 0xcd, 0x53, 0x1e, 0x94, 0x9b, 0x9d, 0x78, 0xfe, ++ 0x01, 0xed, 0xbb, 0x6b, 0xac, 0xbc, 0xd4, 0x1e, 0xba, 0x97, 0xb5, 0x77, ++ 0xce, 0xe4, 0x39, 0x98, 0x27, 0xbe, 0xed, 0x06, 0x1e, 0x2c, 0xed, 0x0a, ++ 0x1f, 0x22, 0x3f, 0xb9, 0x67, 0x36, 0xb7, 0xcb, 0xf6, 0x4a, 0xd0, 0x0e, ++ 0xf6, 0x65, 0x5f, 0x8b, 0x76, 0x3d, 0xdd, 0x63, 0x6a, 0xe5, 0x71, 0x22, ++ 0x28, 0x33, 0xc6, 0x89, 0x7a, 0x31, 0x11, 0x18, 0xf1, 0x2a, 0xce, 0xed, ++ 0x28, 0xf5, 0x05, 0xe6, 0xed, 0x6c, 0xe8, 0x1b, 0xc0, 0x79, 0x8a, 0xea, ++ 0xf8, 0xf7, 0x2d, 0x8a, 0x6a, 0x32, 0xf7, 0x7f, 0x21, 0xe0, 0xa6, 0xfe, ++ 0xfb, 0x5c, 0x31, 0x8a, 0x7f, 0x8e, 0xb4, 0x7f, 0xff, 0xea, 0xe3, 0xf8, ++ 0xec, 0xac, 0xe2, 0xe7, 0x05, 0x8c, 0xc5, 0x29, 0x2e, 0xb5, 0x5b, 0xf8, ++ 0x5d, 0x4c, 0x8d, 0x1a, 0xe9, 0xdf, 0x09, 0x6d, 0x09, 0x70, 0xfc, 0xec, ++ 0x74, 0x31, 0x13, 0xe3, 0x65, 0xbe, 0x3a, 0x8d, 0xf4, 0xba, 0x1c, 0x36, ++ 0xc8, 0x0e, 0xf5, 0x83, 0xfd, 0x88, 0xf1, 0xb8, 0x6d, 0x52, 0x6c, 0x31, ++ 0xe6, 0x87, 0xc4, 0x26, 0x69, 0xec, 0x71, 0xc2, 0x88, 0xe9, 0x1d, 0x87, ++ 0xf1, 0xbb, 0x09, 0x79, 0x61, 0xa4, 0xbf, 0x4d, 0x52, 0x22, 0x84, 0xdf, ++ 0x55, 0x8e, 0x8d, 0xe3, 0xf1, 0xed, 0xa3, 0x91, 0x9d, 0x74, 0xef, 0xea, ++ 0x00, 0xd8, 0xd1, 0x14, 0x0e, 0x66, 0x09, 0xd2, 0x53, 0xdd, 0xd1, 0x3c, ++ 0xba, 0x0f, 0x75, 0x34, 0x52, 0x3d, 0x48, 0xfd, 0x7d, 0x15, 0xba, 0xdb, ++ 0xd2, 0x28, 0x98, 0x37, 0x4f, 0x1f, 0x8a, 0x64, 0x6c, 0xd2, 0x65, 0x9b, ++ 0xb6, 0xa2, 0x5d, 0xd3, 0x39, 0x45, 0xd6, 0x31, 0x6f, 0xb3, 0x53, 0xaa, ++ 0x8f, 0xe2, 0x78, 0xb1, 0x5c, 0x0f, 0xc5, 0x91, 0x5d, 0x53, 0xe6, 0xd1, ++ 0xfe, 0xb9, 0x46, 0xe5, 0x49, 0xe9, 0xfa, 0xe8, 0x46, 0x3f, 0xd7, 0x0b, ++ 0x27, 0x27, 0x44, 0x6e, 0xf4, 0xc3, 0xba, 0x42, 0x53, 0x4e, 0xe5, 0x62, ++ 0xdc, 0x72, 0x7b, 0xed, 0x2b, 0xfb, 0x70, 0xff, 0x1e, 0xb9, 0xdf, 0x43, ++ 0x74, 0xf4, 0x48, 0xed, 0xe0, 0xdd, 0x38, 0xcf, 0xfe, 0xb3, 0x57, 0x1d, ++ 0x8f, 0x12, 0x5f, 0xf2, 0xf3, 0xba, 0x47, 0x6b, 0x4f, 0x97, 0xa2, 0xdd, ++ 0xb3, 0xab, 0xe9, 0x54, 0x2e, 0xe2, 0xaf, 0x18, 0xe3, 0x73, 0xa0, 0x0f, ++ 0x8b, 0x2b, 0x78, 0x1c, 0x0d, 0x35, 0x20, 0xd9, 0x67, 0x6a, 0x0f, 0xbb, ++ 0x19, 0xf0, 0x58, 0xdc, 0xa6, 0x31, 0x23, 0x4d, 0x1f, 0x7b, 0x19, 0x3f, ++ 0xcf, 0xc3, 0x3f, 0xdf, 0x64, 0x92, 0x7b, 0xf4, 0xf7, 0xcc, 0xe0, 0x29, ++ 0x4f, 0x0b, 0x8e, 0xb7, 0x84, 0x25, 0x2e, 0x0d, 0xd0, 0x73, 0x0f, 0xc6, ++ 0xb3, 0x2c, 0x39, 0x53, 0x5c, 0xc7, 0x12, 0x05, 0x20, 0x0f, 0xf7, 0xaf, ++ 0x78, 0x27, 0x86, 0x79, 0x72, 0x8f, 0x4c, 0x2c, 0xa0, 0x7b, 0x94, 0x45, ++ 0xe2, 0x3d, 0x49, 0x4e, 0x18, 0xaf, 0x44, 0x8c, 0xd7, 0xff, 0xc6, 0x2b, ++ 0xeb, 0xb1, 0xdd, 0xa3, 0xd5, 0x05, 0x06, 0xca, 0x8b, 0xe2, 0x81, 0xa1, ++ 0x79, 0xa8, 0x24, 0x8a, 0xab, 0x4e, 0x53, 0x9c, 0x2d, 0x64, 0xdd, 0xff, ++ 0x88, 0x1a, 0xfb, 0x6f, 0x25, 0xfa, 0x94, 0xe9, 0x3b, 0x95, 0xc5, 0xe1, ++ 0x77, 0xfe, 0x02, 0xd7, 0x11, 0xf0, 0xf5, 0x91, 0x9e, 0x83, 0xf6, 0x14, ++ 0x37, 0x73, 0xae, 0xe3, 0xe3, 0x09, 0xe6, 0x7d, 0x88, 0xbf, 0x6f, 0x4a, ++ 0xad, 0xaf, 0x8e, 0x0b, 0xa6, 0xfc, 0x31, 0xfa, 0x43, 0x7e, 0xbc, 0x97, ++ 0xdf, 0xcb, 0x2e, 0xce, 0xfa, 0x87, 0xb9, 0x4a, 0x5a, 0xbe, 0x6d, 0x89, ++ 0x88, 0x0b, 0x6c, 0x92, 0x06, 0x67, 0x93, 0x5d, 0xfa, 0x00, 0xb7, 0xc3, ++ 0xc7, 0xb2, 0x38, 0xc9, 0xb9, 0xe2, 0xaa, 0xd8, 0xdd, 0x3c, 0xdf, 0x36, ++ 0x4a, 0xf9, 0xb6, 0xce, 0x79, 0xb7, 0xfb, 0xcf, 0xe9, 0x57, 0x89, 0xee, ++ 0x51, 0xe7, 0x37, 0x89, 0x7b, 0x25, 0xfc, 0x77, 0x6c, 0x4a, 0xc4, 0xef, ++ 0xd8, 0x38, 0xe9, 0x3e, 0x14, 0xca, 0xaf, 0xea, 0xb8, 0x2a, 0x55, 0xdf, ++ 0x17, 0x3d, 0x45, 0xf4, 0xff, 0xb4, 0x66, 0xdc, 0x95, 0xe9, 0x7b, 0x0f, ++ 0xfb, 0x84, 0x5c, 0xd8, 0x24, 0xfc, 0x31, 0x6b, 0xfc, 0xb1, 0xb9, 0x7c, ++ 0x7c, 0xab, 0xfe, 0xa8, 0xce, 0xe9, 0xf1, 0xe9, 0x97, 0xf3, 0xae, 0xaf, ++ 0x82, 0xf5, 0xfc, 0x55, 0x5b, 0xd9, 0x24, 0x8c, 0x7f, 0xee, 0x18, 0xc1, ++ 0x8f, 0x5b, 0x19, 0xe0, 0xf4, 0x97, 0x3d, 0x00, 0x16, 0x0e, 0xe8, 0x81, ++ 0xfe, 0xd7, 0x5e, 0xf3, 0x62, 0x3e, 0xcb, 0xd3, 0x32, 0x5b, 0x85, 0x72, ++ 0xaa, 0xbe, 0x2a, 0xe1, 0x49, 0x56, 0x09, 0x3c, 0xc2, 0xf8, 0xe4, 0x8b, ++ 0xc1, 0xf8, 0x07, 0xc2, 0xdf, 0xf6, 0xa0, 0x5c, 0xfa, 0x6a, 0xa0, 0x92, ++ 0xe0, 0x5a, 0x31, 0x95, 0xc7, 0x0d, 0x3a, 0xab, 0x1e, 0xa4, 0x73, 0xa0, ++ 0x90, 0xce, 0xf5, 0x0e, 0xf2, 0x27, 0xca, 0x77, 0x5f, 0x28, 0x26, 0x61, ++ 0xdc, 0x7b, 0x79, 0x0d, 0xd3, 0x0f, 0x89, 0x78, 0x4b, 0x0c, 0xf0, 0x4f, ++ 0x77, 0xe7, 0x65, 0x96, 0xca, 0xeb, 0xdf, 0x9e, 0x4b, 0x7e, 0x0e, 0xf0, ++ 0x0a, 0xbf, 0x57, 0x83, 0xb9, 0x49, 0x93, 0xc5, 0xef, 0x4f, 0x94, 0xe3, ++ 0x39, 0xd1, 0xa6, 0xbb, 0x45, 0xfe, 0xac, 0x8c, 0xf8, 0xee, 0x14, 0xf3, ++ 0x00, 0xdf, 0xd2, 0x3c, 0x07, 0x8a, 0xc4, 0x38, 0xf7, 0x71, 0xfb, 0x1f, ++ 0xfd, 0x0b, 0xec, 0x5f, 0x2e, 0xe6, 0x29, 0xaf, 0xfb, 0xee, 0xd7, 0x50, ++ 0x8f, 0x17, 0xe9, 0x9c, 0x2e, 0x52, 0xf0, 0xf5, 0x79, 0x08, 0xbe, 0x56, ++ 0x99, 0x11, 0x7c, 0x6a, 0xe2, 0x55, 0xf4, 0x43, 0xb7, 0x4f, 0x2a, 0x30, ++ 0x90, 0x6e, 0x0e, 0x84, 0xc2, 0x6f, 0x37, 0x41, 0x7d, 0xf9, 0x22, 0x95, ++ 0xe2, 0xf1, 0xe5, 0x35, 0x1c, 0x8e, 0x03, 0xad, 0x32, 0xfd, 0x1e, 0x90, ++ 0xbf, 0x4e, 0x3b, 0x48, 0xf7, 0xc7, 0x4c, 0xd0, 0x17, 0x69, 0xf8, 0x32, ++ 0xc4, 0xbc, 0x45, 0x35, 0x09, 0x09, 0xcf, 0xb5, 0x8c, 0x56, 0xbe, 0x2e, ++ 0x68, 0xe7, 0x45, 0xb9, 0x68, 0x84, 0x01, 0x1e, 0xa8, 0x1b, 0x62, 0x5d, ++ 0xe7, 0xe0, 0x9f, 0xa4, 0x11, 0xfc, 0x45, 0x9e, 0x41, 0xcc, 0x2d, 0x3a, ++ 0x87, 0x87, 0x95, 0x38, 0x1e, 0xd0, 0xef, 0xca, 0x3a, 0xde, 0xcf, 0x1f, ++ 0xea, 0xdb, 0x82, 0x72, 0x6c, 0x79, 0x1d, 0x87, 0x1b, 0xf4, 0x3b, 0xc1, ++ 0x53, 0x14, 0xd6, 0x0e, 0xa2, 0xbe, 0x2f, 0x0a, 0xf1, 0xf1, 0x96, 0x03, ++ 0x7e, 0x0e, 0x49, 0x29, 0xb8, 0xb2, 0x2d, 0xb8, 0xea, 0x64, 0xca, 0xbf, ++ 0x2a, 0xaa, 0xd1, 0x0e, 0xa2, 0x1f, 0x9c, 0x2d, 0xe0, 0x5b, 0x19, 0xe6, ++ 0xf0, 0xf4, 0xbf, 0x7e, 0x6a, 0x40, 0xe2, 0xe3, 0x19, 0x38, 0x5e, 0xb6, ++ 0x80, 0x37, 0x5b, 0xac, 0x9f, 0x12, 0x76, 0x0b, 0x84, 0x7e, 0x80, 0xf1, ++ 0x9e, 0x72, 0x25, 0xea, 0xf1, 0x5e, 0xce, 0xa9, 0x29, 0xcc, 0x38, 0xc4, ++ 0x67, 0xa3, 0x78, 0x96, 0xf5, 0x7e, 0x57, 0x2b, 0xe0, 0x01, 0xf0, 0xe3, ++ 0x17, 0xf3, 0xb0, 0xdd, 0x6e, 0xe2, 0x27, 0x58, 0x62, 0xec, 0x63, 0x99, ++ 0xff, 0x7e, 0x88, 0x91, 0x16, 0xb7, 0xa8, 0xd8, 0xad, 0xd9, 0xea, 0x7e, ++ 0xb1, 0x7f, 0xac, 0x8b, 0x3f, 0x27, 0x3f, 0x8e, 0x54, 0x22, 0xaf, 0xcb, ++ 0xc2, 0xaf, 0x5b, 0x59, 0x65, 0xef, 0xc7, 0x6a, 0xd2, 0xea, 0x65, 0x78, ++ 0xbf, 0x8c, 0xd3, 0xfb, 0xfa, 0x6b, 0xf9, 0x79, 0xc7, 0x81, 0x09, 0xdc, ++ 0x3e, 0x42, 0xbf, 0xe3, 0x1c, 0x7f, 0x23, 0x9d, 0x4f, 0x31, 0x1e, 0xeb, ++ 0x0a, 0xe2, 0x7b, 0x8d, 0xf4, 0x5d, 0x49, 0xbb, 0x7d, 0xdc, 0xe2, 0xd6, ++ 0x82, 0xe9, 0x28, 0x1f, 0x8a, 0x07, 0x1e, 0x9e, 0x27, 0xc3, 0x7a, 0x8a, ++ 0xee, 0x65, 0xb2, 0x92, 0x43, 0xf4, 0x2c, 0x9d, 0x93, 0x7f, 0x30, 0xdf, ++ 0xb7, 0xd7, 0x24, 0xe8, 0xfe, 0x6c, 0xf6, 0x40, 0x24, 0x0f, 0xe5, 0x5d, ++ 0x49, 0x6b, 0xde, 0x74, 0xfc, 0xfe, 0x5b, 0xf6, 0x40, 0x94, 0xea, 0xd9, ++ 0x03, 0xad, 0x26, 0xcf, 0x3f, 0x03, 0x17, 0x26, 0x0f, 0xf3, 0xf5, 0xd2, ++ 0xe6, 0x29, 0x45, 0x39, 0xcd, 0xf3, 0xe9, 0x58, 0xab, 0xd6, 0x87, 0x72, ++ 0xad, 0x36, 0x1d, 0x4e, 0x78, 0x5f, 0xf2, 0x72, 0xcf, 0x5c, 0xec, 0xbf, ++ 0xf9, 0xee, 0x57, 0x46, 0x23, 0xff, 0x16, 0x38, 0xfa, 0x7b, 0x72, 0xb8, ++ 0xff, 0x50, 0xfc, 0x32, 0xb4, 0x0a, 0xe0, 0xfc, 0xa7, 0xd7, 0x62, 0x7b, ++ 0x2b, 0xbe, 0x93, 0x8d, 0x10, 0xe7, 0x51, 0xf9, 0x32, 0x96, 0xc5, 0x3e, ++ 0x90, 0xc7, 0x50, 0x96, 0x88, 0xfc, 0x3b, 0x4b, 0x5e, 0x74, 0x4e, 0x78, ++ 0x67, 0x52, 0xd4, 0x27, 0xe8, 0x87, 0xf2, 0xf1, 0x58, 0x22, 0xdd, 0xce, ++ 0x77, 0x96, 0xd0, 0x7e, 0xbc, 0x68, 0x1f, 0x93, 0xce, 0xdb, 0xee, 0x34, ++ 0xb5, 0x1b, 0x29, 0xde, 0x34, 0x10, 0xe0, 0xf1, 0xa6, 0x80, 0xb0, 0x57, ++ 0x7b, 0x98, 0xb1, 0x9f, 0xf4, 0x7b, 0x0d, 0xcf, 0xf7, 0xf0, 0xe1, 0x73, ++ 0xd0, 0x1f, 0x7d, 0x35, 0x47, 0xa7, 0xd3, 0x7e, 0xf6, 0xb1, 0x30, 0xd2, ++ 0x73, 0x71, 0xdb, 0x9f, 0xdc, 0xe9, 0xf2, 0xfa, 0xe6, 0x40, 0xa9, 0xb8, ++ 0x07, 0x9d, 0x20, 0xba, 0xd7, 0x4a, 0xb2, 0xe8, 0x7c, 0x0f, 0xf8, 0x98, ++ 0xbe, 0x6f, 0x7a, 0x40, 0x6d, 0xa5, 0x73, 0xd6, 0xbe, 0x22, 0x7e, 0xae, ++ 0x79, 0x74, 0xce, 0x2b, 0x12, 0xe2, 0xb3, 0xe8, 0x39, 0x9e, 0xa7, 0x6d, ++ 0xd9, 0xcb, 0xd3, 0x6b, 0x12, 0x21, 0x7c, 0xde, 0xf5, 0x6a, 0xf4, 0x32, ++ 0xe2, 0xcf, 0x11, 0xec, 0x4f, 0xcb, 0xde, 0x74, 0xae, 0xe7, 0x92, 0xfa, ++ 0x07, 0x49, 0x1e, 0x8c, 0x8d, 0x32, 0x2f, 0x9e, 0xaf, 0xf9, 0x57, 0xab, ++ 0x94, 0xc7, 0x5a, 0x12, 0x05, 0xb8, 0xaa, 0x50, 0x2e, 0x00, 0x49, 0x17, ++ 0x02, 0xfc, 0x35, 0xb1, 0xf5, 0x48, 0x37, 0x46, 0x94, 0xd7, 0x8d, 0xd5, ++ 0xa2, 0x5c, 0x05, 0xe5, 0xd5, 0x60, 0xdf, 0xae, 0x1b, 0x28, 0xff, 0xa5, ++ 0x2b, 0x35, 0xee, 0xd6, 0x0a, 0xb0, 0x6b, 0xd1, 0x7e, 0x1a, 0xdc, 0xed, ++ 0xb9, 0x01, 0xed, 0x95, 0x56, 0xb0, 0x46, 0x0c, 0xb4, 0x17, 0x4f, 0x79, ++ 0xf0, 0x7b, 0x2a, 0xdd, 0xad, 0xd3, 0xf3, 0x11, 0xcf, 0xcf, 0x44, 0x2c, ++ 0xfb, 0x32, 0x21, 0xe1, 0xf8, 0x45, 0x3f, 0x35, 0xc9, 0x5e, 0xac, 0xd5, ++ 0x35, 0x1d, 0xe3, 0x30, 0x13, 0xdc, 0x89, 0xd1, 0xe9, 0xe7, 0x74, 0x07, ++ 0xe6, 0xbc, 0x53, 0x4d, 0xdf, 0x13, 0x9b, 0x7f, 0x71, 0xf9, 0x64, 0x23, ++ 0xe9, 0x13, 0x84, 0x45, 0x4e, 0xd3, 0x23, 0xfd, 0x55, 0x47, 0x49, 0xbf, ++ 0x3c, 0xe1, 0x1f, 0x4f, 0x7a, 0xc8, 0xd2, 0x2b, 0x96, 0x1e, 0xa1, 0x11, ++ 0x41, 0xbe, 0xdc, 0x22, 0xf8, 0xa8, 0xcb, 0x48, 0x78, 0x24, 0x92, 0x57, ++ 0xc0, 0xbb, 0x00, 0xe7, 0x2d, 0x28, 0x47, 0x80, 0x8e, 0xfd, 0x45, 0x5c, ++ 0x9e, 0x83, 0x1c, 0xe6, 0x72, 0xce, 0xd2, 0x27, 0x77, 0x73, 0xbd, 0x6f, ++ 0xc9, 0xcf, 0x0a, 0x31, 0xce, 0x2d, 0x28, 0x6f, 0xa1, 0x5f, 0x77, 0xed, ++ 0x13, 0xb9, 0x37, 0xa0, 0x5c, 0x11, 0x72, 0xd6, 0x1f, 0x32, 0x66, 0xe2, ++ 0xf9, 0x5c, 0x85, 0x90, 0xaf, 0x4c, 0x8d, 0x49, 0x38, 0xdf, 0x81, 0x29, ++ 0xfc, 0x7b, 0x95, 0x01, 0x87, 0x3c, 0xad, 0x68, 0xe5, 0xe3, 0x74, 0x85, ++ 0x18, 0xd1, 0x13, 0xe8, 0xa1, 0x83, 0x48, 0x37, 0x07, 0x8a, 0x12, 0x74, ++ 0x4f, 0xfc, 0x40, 0xeb, 0x51, 0x29, 0xfd, 0x9e, 0xa9, 0xa5, 0xef, 0x02, ++ 0xad, 0x49, 0x86, 0xfb, 0x3f, 0xae, 0x8e, 0xcb, 0xc1, 0x71, 0x42, 0xae, ++ 0x7e, 0xc7, 0x6f, 0x70, 0xfa, 0xf4, 0x70, 0xb9, 0x7a, 0x4e, 0xef, 0x09, ++ 0x79, 0xbb, 0xd5, 0x3c, 0xca, 0xc4, 0x77, 0x61, 0x33, 0xe6, 0x61, 0xfd, ++ 0xbd, 0xd0, 0xe7, 0x3d, 0x15, 0x87, 0xc8, 0x2f, 0xd8, 0x76, 0xeb, 0x29, ++ 0xc2, 0xa7, 0x15, 0x0f, 0x0d, 0x89, 0x78, 0x68, 0x77, 0xd5, 0x5b, 0xf4, ++ 0x7e, 0x7b, 0x94, 0xdf, 0x03, 0xd8, 0x65, 0x4e, 0x9f, 0x43, 0xf0, 0x47, ++ 0x96, 0x6b, 0x94, 0x7f, 0x5a, 0x73, 0x74, 0x4e, 0x19, 0xfa, 0x1b, 0x4d, ++ 0xcb, 0x35, 0xb4, 0xeb, 0x4e, 0x06, 0x0a, 0xac, 0xf3, 0x2f, 0xef, 0x42, ++ 0xb4, 0x27, 0x5b, 0x57, 0x91, 0xfd, 0xeb, 0x13, 0xfb, 0xf8, 0x50, 0x98, ++ 0x09, 0xbf, 0x53, 0x23, 0x3f, 0xeb, 0xbe, 0xa5, 0xdf, 0x1e, 0xc0, 0xfe, ++ 0x21, 0xf0, 0x8b, 0x24, 0x03, 0x1b, 0xf5, 0x79, 0xdc, 0x48, 0xe7, 0xf8, ++ 0x3d, 0x05, 0xc4, 0x77, 0x74, 0x90, 0x3a, 0xfb, 0x6a, 0x0c, 0xfa, 0x0e, ++ 0x84, 0x73, 0x1d, 0xdf, 0x0b, 0xf0, 0xef, 0xd2, 0xfa, 0xa3, 0xc9, 0x81, ++ 0x71, 0xb4, 0xaf, 0x32, 0x5d, 0xe9, 0xf1, 0xd5, 0x30, 0xf2, 0x3b, 0x97, ++ 0x83, 0x5f, 0x87, 0xc3, 0xee, 0x56, 0xc3, 0xde, 0x09, 0xf0, 0x7e, 0x77, ++ 0x93, 0xac, 0xaf, 0x67, 0xa9, 0xfe, 0xff, 0x2b, 0xc0, 0xf3, 0xd1, 0x26, ++ 0xfa, 0xf9, 0x3d, 0x85, 0x9d, 0x8b, 0x4f, 0x6f, 0xc1, 0x38, 0xdf, 0xce, ++ 0xa5, 0xe2, 0x3b, 0x67, 0x0e, 0xf8, 0xef, 0x6b, 0xec, 0xf3, 0x28, 0x34, ++ 0x0f, 0xc6, 0x04, 0x28, 0x8f, 0x39, 0xe3, 0xf7, 0xf6, 0xab, 0xfc, 0x59, ++ 0xfc, 0xfb, 0x0b, 0x35, 0x7d, 0x03, 0x68, 0xcf, 0x07, 0xaa, 0x38, 0x5c, ++ 0x2f, 0x06, 0x0c, 0x8e, 0xf7, 0x41, 0x8e, 0xc7, 0x9e, 0x88, 0x4c, 0x7c, ++ 0xb4, 0x6b, 0xb0, 0xda, 0x8b, 0xfa, 0xce, 0x69, 0x37, 0x3e, 0x92, 0xfd, ++ 0xee, 0x24, 0x9e, 0xd7, 0x62, 0xd7, 0x37, 0x17, 0xaa, 0x17, 0x3b, 0xe4, ++ 0xfe, 0x04, 0x77, 0xdf, 0x75, 0x24, 0xef, 0xbe, 0x29, 0x93, 0xbc, 0x62, ++ 0x8c, 0xcb, 0x3b, 0x89, 0xc9, 0x06, 0xfe, 0xae, 0x46, 0x4b, 0x80, 0xd3, ++ 0x53, 0x95, 0x90, 0xd7, 0x1d, 0xae, 0xc4, 0x7e, 0xcc, 0x2b, 0xe8, 0x78, ++ 0xd6, 0xc7, 0xd6, 0x1b, 0x29, 0xba, 0x28, 0x12, 0x63, 0x76, 0xb6, 0xca, ++ 0x19, 0x7f, 0x3f, 0xed, 0x50, 0x40, 0xe1, 0xfb, 0x3f, 0x7c, 0xdf, 0xb9, ++ 0xfd, 0x20, 0xf6, 0xfd, 0x49, 0x81, 0x87, 0x0b, 0xed, 0x3f, 0x86, 0x59, ++ 0xd0, 0x9e, 0xee, 0x8b, 0x6f, 0x1a, 0x73, 0x07, 0xca, 0xf1, 0x56, 0xee, ++ 0x3f, 0xf7, 0x25, 0xde, 0xa2, 0xbc, 0xa3, 0xa2, 0xd9, 0x0b, 0xc9, 0xef, ++ 0x39, 0x72, 0xf0, 0x52, 0xf2, 0x07, 0x8a, 0xaa, 0x4c, 0xdb, 0xef, 0x6b, ++ 0x66, 0x8f, 0xe0, 0xb7, 0x56, 0xe4, 0x78, 0xce, 0x1b, 0x0f, 0x18, 0x49, ++ 0x1e, 0xef, 0x5b, 0xdd, 0x41, 0x7e, 0xf6, 0xbe, 0xc1, 0xcc, 0xf7, 0x62, ++ 0x0a, 0x72, 0x78, 0x5e, 0x5a, 0x1f, 0xc8, 0x4b, 0xfc, 0xbe, 0xc9, 0x48, ++ 0xf3, 0xeb, 0x39, 0x9c, 0xff, 0xfe, 0x29, 0x20, 0xe8, 0x6e, 0xce, 0x3b, ++ 0xf4, 0xbd, 0x8c, 0x34, 0x3d, 0xfb, 0xb2, 0xd0, 0xb3, 0xa4, 0x6f, 0x8b, ++ 0x55, 0x16, 0x53, 0xd2, 0xf2, 0x1c, 0x26, 0x08, 0xfc, 0x39, 0xf5, 0x27, ++ 0x53, 0xe3, 0x9e, 0x4b, 0x6b, 0x88, 0xce, 0x09, 0x7f, 0xfb, 0xc4, 0xf9, ++ 0xc5, 0x43, 0xa6, 0x4c, 0x78, 0xb7, 0xe8, 0x1c, 0xcf, 0x0f, 0x10, 0xaf, ++ 0xb0, 0x0e, 0x53, 0xd0, 0x21, 0x9d, 0x6f, 0xf4, 0xb0, 0xb8, 0x07, 0xf9, ++ 0x26, 0xd6, 0xc4, 0xf3, 0x3c, 0x9c, 0x70, 0x4f, 0xf0, 0xcb, 0x17, 0xb5, ++ 0xbe, 0x60, 0x0e, 0xf7, 0x43, 0xce, 0xcd, 0x27, 0xfc, 0xf5, 0x89, 0x7e, ++ 0x0e, 0xf7, 0xce, 0xda, 0xfb, 0xe9, 0x9e, 0x23, 0xcc, 0x17, 0x42, 0xfa, ++ 0x90, 0x7e, 0xf0, 0x1f, 0xa7, 0xe9, 0x3e, 0xd4, 0xb3, 0x2e, 0xfa, 0x3d, ++ 0xdb, 0x19, 0xcf, 0xba, 0x12, 0x18, 0xd3, 0xba, 0xf3, 0x20, 0xff, 0xbd, ++ 0x45, 0xf9, 0x45, 0x2f, 0xc1, 0xf9, 0xcf, 0x87, 0xf9, 0xf7, 0xd5, 0x13, ++ 0x7e, 0x6e, 0x8f, 0xfd, 0x5a, 0xe7, 0xbf, 0x57, 0xf4, 0x55, 0xf7, 0x60, ++ 0xf7, 0x17, 0xa0, 0x3e, 0xf4, 0xac, 0xc2, 0xc8, 0x9e, 0x8c, 0x83, 0xe2, ++ 0x02, 0x7a, 0x3d, 0x2d, 0xe8, 0x95, 0x3d, 0xc7, 0xeb, 0x2b, 0xbd, 0xbc, ++ 0x7a, 0xe7, 0xc1, 0xfe, 0x65, 0x38, 0xde, 0xaa, 0xe7, 0x78, 0x1e, 0xe6, ++ 0x9d, 0xcf, 0xdf, 0x76, 0xe3, 0x17, 0xa0, 0x7e, 0xdb, 0x80, 0x8b, 0xee, ++ 0x0c, 0xdc, 0xf9, 0xf8, 0x7a, 0x6d, 0x0c, 0xd4, 0x6f, 0x8f, 0x4b, 0x7d, ++ 0x58, 0xff, 0xcd, 0x74, 0x46, 0xbf, 0xf7, 0x19, 0xcb, 0xd3, 0x28, 0xce, ++ 0xf5, 0x9b, 0xc0, 0x60, 0xc1, 0x02, 0xc0, 0xf7, 0x07, 0xeb, 0x3c, 0xcc, ++ 0xb8, 0x0c, 0xe3, 0xa4, 0x83, 0x05, 0xf3, 0x01, 0x0f, 0x77, 0xc4, 0x9f, ++ 0x9e, 0x89, 0xfd, 0xee, 0x78, 0x4a, 0x0a, 0x23, 0xdb, 0xce, 0x78, 0xf6, ++ 0xf1, 0x57, 0x46, 0x03, 0x5c, 0x77, 0x7e, 0x43, 0xa2, 0xfc, 0xaf, 0xaf, ++ 0x1c, 0xc9, 0xb6, 0xd9, 0x85, 0xa7, 0x61, 0x29, 0xd3, 0xe0, 0xfd, 0x9a, ++ 0x83, 0xfc, 0x77, 0x23, 0x6f, 0x63, 0x3d, 0x33, 0x11, 0x1f, 0x77, 0x3e, ++ 0xde, 0x4b, 0xbf, 0x7f, 0x68, 0xe1, 0xf3, 0x83, 0x75, 0x95, 0xcc, 0x48, ++ 0xfb, 0xdd, 0xb0, 0x3b, 0xbf, 0xf1, 0x34, 0xfd, 0x9e, 0xe1, 0x5d, 0xdf, ++ 0x92, 0xe8, 0xf7, 0x15, 0xef, 0x92, 0xf9, 0x3d, 0xa2, 0x7f, 0x7e, 0xde, ++ 0xbb, 0xe8, 0x31, 0x1f, 0xae, 0x6f, 0xbd, 0x76, 0xa9, 0x1f, 0xd7, 0xb5, ++ 0x59, 0xc3, 0x76, 0xb7, 0xc5, 0x5b, 0xbe, 0x8b, 0x29, 0x4d, 0x77, 0xc4, ++ 0x0f, 0x6a, 0x33, 0xe1, 0xfd, 0x1d, 0x07, 0x0e, 0x6a, 0x2b, 0xd1, 0x2f, ++ 0x73, 0xb3, 0x66, 0xd4, 0x3f, 0x5f, 0x39, 0x72, 0x85, 0x4d, 0xee, 0x9c, ++ 0xde, 0xa7, 0x90, 0x7f, 0xb0, 0x26, 0xd7, 0x43, 0xf7, 0xeb, 0x99, 0xcf, ++ 0x0c, 0xcd, 0x9b, 0x30, 0x7c, 0x9f, 0x3f, 0x58, 0xc7, 0x6c, 0x70, 0xdd, ++ 0x61, 0xc5, 0x09, 0xd4, 0xb8, 0x36, 0x37, 0xad, 0xbd, 0x4b, 0xe7, 0xfe, ++ 0xef, 0x57, 0x8e, 0x28, 0xb6, 0x79, 0x2c, 0x3b, 0x20, 0x76, 0x8c, 0xeb, ++ 0x85, 0xd8, 0xdf, 0xfa, 0x29, 0x7e, 0x6e, 0xed, 0xdf, 0x1a, 0xe1, 0x77, ++ 0x5b, 0xfb, 0xb7, 0xc6, 0x0a, 0xc4, 0xab, 0x43, 0x93, 0x33, 0xc1, 0xd3, ++ 0x8d, 0xfb, 0x01, 0xf0, 0xf4, 0xac, 0xd3, 0xa9, 0xdc, 0xb9, 0x2e, 0x44, ++ 0xe5, 0xee, 0x75, 0x06, 0xed, 0xd3, 0x5e, 0xc4, 0x23, 0x94, 0x5d, 0x02, ++ 0xee, 0xc0, 0x54, 0x56, 0x8f, 0xdf, 0xe7, 0x0f, 0x98, 0x3c, 0xed, 0x38, ++ 0xaf, 0xc9, 0xac, 0xc7, 0xbb, 0x65, 0x79, 0x11, 0x5e, 0x2f, 0x58, 0x12, ++ 0x25, 0x3f, 0x64, 0x24, 0x3b, 0xc6, 0x2a, 0xf7, 0xba, 0xa2, 0x2d, 0xe8, ++ 0x43, 0x76, 0xee, 0xe8, 0x9f, 0xa5, 0x82, 0xdd, 0xb3, 0x57, 0x8b, 0xde, ++ 0x8d, 0x91, 0x2f, 0xbd, 0xe3, 0xd5, 0x59, 0x0d, 0x50, 0xff, 0x9b, 0x9c, ++ 0xc8, 0xc6, 0x1c, 0x92, 0x37, 0x61, 0x03, 0xf9, 0xce, 0xf2, 0xcf, 0xbf, ++ 0x9e, 0xc3, 0xe5, 0xee, 0xa6, 0xd1, 0x1a, 0xe1, 0x7b, 0xef, 0xd2, 0xc9, ++ 0x8f, 0x29, 0x96, 0xff, 0x85, 0x71, 0xbf, 0xa5, 0x2b, 0x9f, 0x40, 0x7b, ++ 0x02, 0xfa, 0x6f, 0xcf, 0x21, 0xbe, 0x0d, 0xd3, 0x77, 0xba, 0x46, 0xea, ++ 0x5f, 0xb0, 0xac, 0xce, 0xd6, 0xbf, 0x60, 0xd9, 0x2a, 0xab, 0xff, 0x1e, ++ 0xea, 0xef, 0x39, 0x7f, 0xff, 0xbd, 0xcb, 0xae, 0xb1, 0xcf, 0xbf, 0xec, ++ 0x0e, 0xab, 0xff, 0x23, 0x04, 0xbf, 0xef, 0xfc, 0xf0, 0x17, 0x34, 0x4f, ++ 0xb5, 0xcf, 0xdf, 0xbc, 0x9a, 0xfa, 0x7f, 0xd5, 0xcd, 0xf7, 0x77, 0x28, ++ 0xd7, 0x43, 0xf9, 0xf4, 0x1d, 0xde, 0x70, 0xc2, 0x45, 0xfe, 0x33, 0xa3, ++ 0xef, 0x73, 0xa8, 0x79, 0x97, 0x1e, 0xa2, 0xef, 0x27, 0x9d, 0x8b, 0x33, ++ 0x0d, 0x9a, 0xa8, 0x67, 0x7d, 0x4f, 0xe5, 0x56, 0xa3, 0x1c, 0x4b, 0xd1, ++ 0xd1, 0xf4, 0x6f, 0xe2, 0x3a, 0xfc, 0xc0, 0x5d, 0xe9, 0x74, 0x94, 0x53, ++ 0x97, 0x65, 0xe3, 0xab, 0x5c, 0x33, 0xcf, 0x56, 0xcf, 0x9f, 0x3d, 0xc6, ++ 0xd6, 0x7e, 0x54, 0xa4, 0xcc, 0xf6, 0xbe, 0x70, 0xd1, 0xe5, 0x0e, 0xba, ++ 0xf4, 0xe9, 0x94, 0x07, 0xcb, 0xb8, 0x3e, 0x35, 0x31, 0xce, 0x09, 0x70, ++ 0x6a, 0x63, 0xf8, 0xf7, 0x9a, 0xea, 0xc7, 0x78, 0x68, 0x7d, 0xf7, 0xbf, ++ 0xe8, 0xa5, 0xfa, 0xfd, 0xd7, 0xf0, 0xf5, 0xdd, 0x3f, 0xc6, 0x47, 0x7c, ++ 0x4c, 0xba, 0x0b, 0xf6, 0xfd, 0x7e, 0x2d, 0x7a, 0x65, 0xba, 0x7d, 0x0c, ++ 0xeb, 0x92, 0x30, 0xe4, 0xf5, 0x8c, 0x1e, 0x1d, 0xc8, 0xa9, 0x4d, 0x7f, ++ 0x6e, 0xc8, 0xf8, 0x3c, 0x4b, 0xe1, 0xbf, 0x63, 0x97, 0xe5, 0xe6, 0xfa, ++ 0x72, 0x73, 0xe9, 0xe4, 0xc7, 0x62, 0x69, 0xf8, 0xdc, 0x52, 0x0c, 0xf4, ++ 0x00, 0xf5, 0xb7, 0x73, 0x34, 0x5b, 0x9c, 0x67, 0x73, 0xf1, 0xca, 0x50, ++ 0x4b, 0xda, 0x3c, 0x9b, 0x8a, 0xb5, 0x45, 0x87, 0xaa, 0xf8, 0xf3, 0x5b, ++ 0xd0, 0x8e, 0xd7, 0x23, 0x7f, 0x87, 0xf3, 0x7d, 0x55, 0x1b, 0xba, 0x14, ++ 0xed, 0x57, 0xe7, 0x3c, 0xee, 0xb2, 0x3a, 0xdb, 0x3c, 0x9e, 0x92, 0x55, ++ 0x34, 0x4f, 0xd2, 0x31, 0x8f, 0xbb, 0x64, 0x95, 0x63, 0x1e, 0xcf, 0xa2, ++ 0x43, 0xe2, 0xb9, 0x98, 0xe7, 0x14, 0xd2, 0xc9, 0x48, 0xf3, 0x6c, 0x2e, ++ 0xbb, 0xc6, 0xbe, 0x9e, 0x92, 0x3b, 0x68, 0x9e, 0x5f, 0xe3, 0x3c, 0xb5, ++ 0x69, 0xeb, 0x29, 0xb9, 0xc3, 0x31, 0x4f, 0x16, 0x5f, 0x0f, 0x3c, 0x17, ++ 0xf3, 0xfc, 0xe6, 0xbc, 0xeb, 0x29, 0x9f, 0x6a, 0x5f, 0xcf, 0xd8, 0xd5, ++ 0x34, 0xcf, 0xbf, 0x3b, 0xe6, 0x71, 0x8f, 0x5d, 0xed, 0x98, 0xc7, 0x47, ++ 0xf3, 0xe0, 0x73, 0x9c, 0x87, 0x15, 0x71, 0x3f, 0x4a, 0x73, 0x0f, 0xad, ++ 0xa4, 0xfd, 0xff, 0x81, 0x97, 0x61, 0x1c, 0x48, 0x73, 0x47, 0xff, 0x9a, ++ 0x2e, 0xa9, 0xfc, 0xbd, 0x97, 0xe2, 0xc2, 0xd0, 0xca, 0xc4, 0x76, 0xff, ++ 0x07, 0xfe, 0x22, 0x63, 0x96, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe5, 0x7d, ++ 0x09, 0x78, 0x54, 0x45, 0xb6, 0x70, 0xdd, 0xbe, 0x4b, 0x77, 0x27, 0xdd, ++ 0x9d, 0xce, 0xbe, 0x10, 0xc2, 0x0d, 0x28, 0x8b, 0x86, 0xd8, 0x81, 0x90, ++ 0x01, 0x5c, 0xa6, 0x59, 0xe4, 0xa1, 0x22, 0x06, 0x57, 0x70, 0x81, 0x0e, ++ 0x4b, 0xf6, 0xa4, 0xa3, 0xe2, 0x3c, 0x1c, 0x75, 0xd2, 0x10, 0x45, 0x54, ++ 0xd4, 0x46, 0x51, 0x83, 0x06, 0xa6, 0xc1, 0xa0, 0xe0, 0x80, 0x06, 0x26, ++ 0x68, 0x80, 0x80, 0x0d, 0xa8, 0x83, 0x33, 0x2e, 0x71, 0x9e, 0xe3, 0x32, ++ 0x0b, 0x36, 0x88, 0x04, 0x21, 0x26, 0x0d, 0xa2, 0xe2, 0x9b, 0xc5, 0xbf, ++ 0xce, 0xa9, 0xba, 0xe9, 0x7b, 0x3b, 0x1d, 0x60, 0xde, 0xcc, 0xff, 0xbf, ++ 0x79, 0xef, 0x8f, 0xdf, 0x4c, 0x51, 0xb7, 0xea, 0xd6, 0xad, 0x3a, 0xfb, ++ 0x39, 0x75, 0xaa, 0x9a, 0x0c, 0x4f, 0x22, 0x64, 0x1c, 0x21, 0xfb, 0x12, ++ 0x68, 0x39, 0x86, 0x90, 0x6f, 0xe3, 0x3c, 0x17, 0x39, 0x6d, 0x84, 0xfc, ++ 0x00, 0x7f, 0x3f, 0x26, 0xf4, 0xcf, 0x47, 0x48, 0x2a, 0x2f, 0xd3, 0x08, ++ 0x59, 0x40, 0xf8, 0x5f, 0x60, 0xa9, 0x40, 0x8a, 0x08, 0xa9, 0xb5, 0xb0, ++ 0xea, 0xfc, 0x4d, 0x33, 0x72, 0x16, 0x43, 0xd9, 0x36, 0x29, 0xa3, 0xa4, ++ 0x90, 0xfe, 0x63, 0xa5, 0xdd, 0x75, 0xbe, 0x4a, 0x48, 0x77, 0xdb, 0x24, ++ 0x65, 0x5e, 0x5e, 0x64, 0x3c, 0xad, 0x5c, 0xe0, 0x97, 0x8f, 0x84, 0x86, ++ 0xb3, 0x77, 0x7f, 0x20, 0x91, 0xef, 0xf8, 0x26, 0x92, 0xe1, 0x75, 0xf4, ++ 0xfb, 0x65, 0x09, 0x4e, 0x9c, 0x8f, 0x56, 0x3f, 0x52, 0x4f, 0xeb, 0x66, ++ 0x42, 0x0e, 0xd5, 0x13, 0x2c, 0x3b, 0x65, 0x32, 0xa7, 0x98, 0x3e, 0x3f, ++ 0x5c, 0x4f, 0x27, 0x30, 0x4c, 0x3f, 0xdf, 0xc5, 0xf8, 0xde, 0x11, 0x89, ++ 0xfe, 0x33, 0x85, 0x96, 0x4d, 0x42, 0xc0, 0x27, 0xd0, 0x75, 0xad, 0xf8, ++ 0x40, 0x26, 0x43, 0xf0, 0x33, 0x1f, 0x0e, 0xa7, 0xeb, 0xb8, 0x91, 0x2f, ++ 0x63, 0x81, 0x3f, 0x9e, 0x10, 0x4b, 0x64, 0x1e, 0x5e, 0x33, 0x71, 0xc3, ++ 0x7b, 0xe1, 0xed, 0xe6, 0xc0, 0x3a, 0x01, 0x9e, 0xba, 0x07, 0x98, 0x32, ++ 0x68, 0xd1, 0x98, 0x4c, 0x88, 0x36, 0xdf, 0xc1, 0x84, 0xfc, 0x69, 0xf7, ++ 0xd5, 0x6f, 0x09, 0x0e, 0xac, 0x0e, 0x30, 0x8d, 0x25, 0xe4, 0xe6, 0x65, ++ 0x5b, 0xde, 0x84, 0x6e, 0x1f, 0x09, 0x25, 0x03, 0xef, 0xa0, 0xeb, 0x9d, ++ 0xd9, 0xba, 0x42, 0x1e, 0x40, 0xeb, 0xdd, 0x72, 0x68, 0xb6, 0xcb, 0xa6, ++ 0x1b, 0x67, 0xa6, 0x7c, 0x08, 0xd6, 0x6d, 0xa1, 0xff, 0xc1, 0x38, 0xb3, ++ 0x3c, 0xb4, 0xae, 0xfb, 0xfe, 0x2d, 0xe5, 0xc6, 0xfa, 0x6d, 0x44, 0x8a, ++ 0xd4, 0x73, 0x09, 0xb9, 0xd0, 0x39, 0x98, 0xe3, 0x83, 0x7f, 0x57, 0x0d, ++ 0xc8, 0x80, 0xaf, 0x1b, 0xe9, 0x9a, 0x32, 0x29, 0x0a, 0x6f, 0x83, 0x72, ++ 0x14, 0x34, 0x3b, 0x11, 0x5f, 0xb3, 0x9d, 0xec, 0x5d, 0x6d, 0x3e, 0xde, ++ 0x7b, 0x64, 0x12, 0x84, 0xf9, 0x48, 0xa1, 0x54, 0x92, 0x07, 0x2d, 0xa9, ++ 0xd8, 0xcf, 0x03, 0xfd, 0xd4, 0xbe, 0xf3, 0x9b, 0x2d, 0x5b, 0xdc, 0xc5, ++ 0x14, 0x9f, 0xb3, 0xef, 0x16, 0x11, 0x8e, 0xd1, 0xf3, 0x0d, 0xed, 0x8e, ++ 0x77, 0x9b, 0xf2, 0x69, 0xd9, 0xf8, 0xb5, 0x4c, 0x06, 0x9f, 0x7d, 0xfe, ++ 0x73, 0x16, 0x19, 0xdb, 0x89, 0x8f, 0x7d, 0x4f, 0x83, 0xab, 0x46, 0x07, ++ 0x37, 0xcd, 0x9c, 0xf0, 0xe4, 0x61, 0x1d, 0x7d, 0xcc, 0xf2, 0x5c, 0xf1, ++ 0xe4, 0x61, 0x03, 0x9c, 0x66, 0x18, 0xea, 0xb7, 0xd5, 0xcd, 0x32, 0xf4, ++ 0x9f, 0xb3, 0xa8, 0xc4, 0xd0, 0x5e, 0xe2, 0xab, 0x30, 0xb4, 0xcf, 0x5b, ++ 0x76, 0xbb, 0xa1, 0xbe, 0xc0, 0x7f, 0xb7, 0xa1, 0x7f, 0x59, 0xe3, 0x62, ++ 0x43, 0x7b, 0x45, 0xe0, 0x21, 0x43, 0x7b, 0xd5, 0x86, 0x15, 0x86, 0x7a, ++ 0x4d, 0xcb, 0x2a, 0x43, 0x7f, 0x6f, 0xdb, 0x5a, 0x43, 0xbb, 0x69, 0xf7, ++ 0x88, 0x6b, 0x08, 0x85, 0x63, 0xc3, 0xef, 0x44, 0x62, 0xa6, 0x70, 0xfc, ++ 0xc6, 0x76, 0xe4, 0xb1, 0x8b, 0x53, 0xa0, 0x94, 0x5c, 0x00, 0xf7, 0xa3, ++ 0xf5, 0x19, 0x48, 0xd7, 0xc7, 0xea, 0x55, 0x2c, 0x6b, 0x81, 0xf6, 0xc6, ++ 0x01, 0xff, 0x8c, 0xb6, 0x78, 0x28, 0x9e, 0xbc, 0x71, 0xe1, 0x52, 0x92, ++ 0x48, 0xc8, 0x7d, 0xfe, 0x4b, 0x96, 0x2d, 0xbb, 0x84, 0xd6, 0x15, 0xda, ++ 0x3e, 0x9e, 0x52, 0xbb, 0x7f, 0xe2, 0x32, 0x5f, 0x36, 0x21, 0xcb, 0x9c, ++ 0x2a, 0xd2, 0xbd, 0xd8, 0xa8, 0x90, 0x20, 0x25, 0x55, 0x81, 0x24, 0xf5, ++ 0xd2, 0x75, 0x58, 0xd4, 0xb5, 0x87, 0xce, 0xd2, 0xde, 0x28, 0x91, 0xe0, ++ 0xe8, 0xbe, 0xed, 0x62, 0x28, 0xf6, 0xf3, 0x1e, 0x21, 0x3c, 0x34, 0x8b, ++ 0xae, 0xc3, 0xf7, 0xa9, 0x99, 0xac, 0x17, 0xfa, 0xf2, 0x79, 0x84, 0x2f, ++ 0xc9, 0x00, 0x92, 0xd1, 0x7f, 0x7b, 0x97, 0x89, 0x94, 0xb7, 0xe8, 0xe4, ++ 0xce, 0x7a, 0xa7, 0x09, 0xe7, 0x93, 0xea, 0x9c, 0xb8, 0xde, 0x49, 0xe9, ++ 0xa1, 0x5a, 0x61, 0xfc, 0x5e, 0xbd, 0x35, 0x73, 0x22, 0x71, 0x40, 0x3d, ++ 0x38, 0xb4, 0xce, 0x76, 0x86, 0xef, 0xb5, 0xd0, 0xc9, 0xa4, 0xc3, 0x38, ++ 0x8c, 0x5f, 0x2a, 0x02, 0x03, 0x22, 0xfc, 0x8b, 0xf8, 0x1b, 0x62, 0xe0, ++ 0xfb, 0x61, 0x09, 0x9e, 0x66, 0x27, 0xfd, 0x5e, 0xd7, 0x1e, 0x71, 0x26, ++ 0xcc, 0x83, 0x04, 0xf7, 0xe5, 0x5c, 0x37, 0x12, 0xbe, 0xef, 0x5e, 0x0f, ++ 0xcf, 0x49, 0x1b, 0x1d, 0x24, 0x93, 0xf2, 0x77, 0xbd, 0xfb, 0xc9, 0xc3, ++ 0xe7, 0x13, 0xf2, 0x49, 0xfd, 0x54, 0x2c, 0x7f, 0x5f, 0x5f, 0xfc, 0xe4, ++ 0x61, 0x99, 0x90, 0x3f, 0xd6, 0xcf, 0xc4, 0xfa, 0x81, 0x7a, 0x0f, 0x96, ++ 0xa1, 0xfa, 0x72, 0x2c, 0x0f, 0xd5, 0xd7, 0x61, 0xfb, 0xe1, 0xfa, 0x45, ++ 0x58, 0x3f, 0x52, 0xef, 0xc3, 0xf2, 0x68, 0xfd, 0x32, 0x2c, 0x8f, 0xd5, ++ 0xfb, 0xb1, 0xbd, 0xab, 0xbe, 0x11, 0xeb, 0xdd, 0xf5, 0x01, 0x2c, 0x35, ++ 0x3e, 0xa0, 0xf2, 0x68, 0x4e, 0x31, 0xf0, 0x69, 0x71, 0xb1, 0x09, 0xf8, ++ 0xf4, 0x0e, 0x2b, 0xe1, 0x7f, 0xac, 0x7e, 0x92, 0xaf, 0x41, 0xa4, 0xff, ++ 0xee, 0x40, 0xbe, 0x76, 0x65, 0x00, 0x5f, 0x9f, 0xb4, 0x7d, 0x3b, 0x34, ++ 0x8b, 0xd2, 0xdb, 0xc9, 0x4f, 0x28, 0x31, 0xe5, 0xf6, 0x0f, 0xa7, 0x68, ++ 0xba, 0xeb, 0x1f, 0x7f, 0x6e, 0x13, 0xe0, 0xaf, 0x34, 0x40, 0x89, 0x27, ++ 0xb9, 0x6f, 0xbb, 0x35, 0x8e, 0xe1, 0xc7, 0x6a, 0x22, 0x53, 0x09, 0x95, ++ 0x3f, 0x0f, 0x9d, 0xaf, 0x10, 0x89, 0x7e, 0x3f, 0xee, 0xf5, 0x0b, 0xd7, ++ 0x89, 0xb9, 0xf8, 0x5c, 0x02, 0xd2, 0xa1, 0x8a, 0xc3, 0x35, 0xc3, 0x1e, ++ 0x63, 0xfc, 0xf3, 0x08, 0xe2, 0xeb, 0x6c, 0x78, 0xd2, 0xfa, 0x1f, 0x79, ++ 0xf6, 0xcf, 0x45, 0x73, 0xf3, 0x00, 0x3f, 0x83, 0x91, 0x4e, 0xe2, 0xf6, ++ 0x89, 0x75, 0x0c, 0x6f, 0xcf, 0xbb, 0x00, 0x6f, 0x67, 0x83, 0x9f, 0xc4, ++ 0xf9, 0x2b, 0x1a, 0x8e, 0xc2, 0xeb, 0x7f, 0xca, 0x09, 0xd1, 0xfe, 0x5f, ++ 0xa5, 0x6a, 0xf0, 0xec, 0xc8, 0x21, 0xb4, 0xbc, 0xce, 0x59, 0x7c, 0x14, ++ 0xe8, 0xe0, 0x64, 0xab, 0x19, 0xd7, 0x75, 0xb2, 0x3d, 0x3e, 0x40, 0x60, ++ 0x0c, 0x67, 0x0a, 0xd2, 0x45, 0xff, 0x70, 0x63, 0xf3, 0xa8, 0xda, 0x60, ++ 0xf5, 0xeb, 0xe5, 0x43, 0x4d, 0x4b, 0xa2, 0xdf, 0x28, 0x2f, 0x32, 0xfd, ++ 0x7a, 0x79, 0x71, 0x72, 0xff, 0xf3, 0x0e, 0xe0, 0xfb, 0x3b, 0x32, 0x44, ++ 0xff, 0xe1, 0xd1, 0x40, 0x1f, 0x6e, 0x4e, 0x1f, 0x8c, 0xee, 0xb4, 0xf1, ++ 0x6b, 0x5a, 0x72, 0xfd, 0x36, 0xc3, 0x38, 0xc6, 0xfa, 0x49, 0xbf, 0x30, ++ 0xb5, 0x05, 0xe5, 0xbc, 0x9a, 0x70, 0xfd, 0xc8, 0xfe, 0xe7, 0x79, 0x47, ++ 0x86, 0x82, 0xdf, 0x39, 0xb6, 0x61, 0x48, 0x02, 0x7c, 0xf7, 0x58, 0xbd, ++ 0xc5, 0x0f, 0xdf, 0xe9, 0xaa, 0x77, 0xfa, 0xd9, 0x77, 0x33, 0xfc, 0x7a, ++ 0xba, 0xac, 0x5e, 0x14, 0xef, 0x3f, 0x9c, 0x1c, 0x99, 0x5f, 0x7f, 0xe3, ++ 0xfe, 0xb3, 0xe7, 0x47, 0x48, 0x2b, 0xf9, 0xdc, 0x42, 0x10, 0xf4, 0x3f, ++ 0x0c, 0xe9, 0xbf, 0x7f, 0xbf, 0xf8, 0x90, 0x4e, 0x29, 0xc5, 0x40, 0x1f, ++ 0xed, 0xf2, 0xb7, 0xa0, 0x77, 0xe2, 0x86, 0x6b, 0x7a, 0x47, 0xc2, 0xba, ++ 0x36, 0xae, 0xb7, 0x45, 0xf4, 0x99, 0x2f, 0x82, 0xe7, 0x9b, 0x0c, 0xdf, ++ 0xa3, 0xef, 0xa9, 0x47, 0x34, 0x3c, 0x0d, 0x3e, 0x13, 0xde, 0x25, 0x72, ++ 0x44, 0x5b, 0x27, 0x95, 0x93, 0x23, 0xa9, 0xec, 0x06, 0x3a, 0xa5, 0xc4, ++ 0x8c, 0x78, 0xf6, 0xd0, 0x11, 0x13, 0xe8, 0x78, 0x3d, 0x92, 0x6d, 0x99, ++ 0x40, 0xbf, 0x63, 0x4e, 0x54, 0xb1, 0xdd, 0x0b, 0x1f, 0xa2, 0xf4, 0x54, ++ 0x63, 0x09, 0x29, 0x1e, 0x15, 0xc1, 0xdd, 0x01, 0x76, 0xd6, 0xdc, 0xb1, ++ 0x1a, 0xdf, 0xab, 0x37, 0xfd, 0x81, 0x92, 0xdc, 0x97, 0xbf, 0x91, 0xc9, ++ 0xc3, 0xd0, 0xfe, 0x17, 0x3a, 0x3a, 0x6d, 0x97, 0x79, 0xeb, 0x7c, 0x52, ++ 0xec, 0x20, 0xf4, 0x7b, 0x73, 0x5b, 0xab, 0xa6, 0x81, 0x9c, 0xfc, 0xf2, ++ 0xd5, 0xab, 0xb8, 0x9d, 0xe2, 0x2f, 0x82, 0x75, 0x7f, 0x45, 0x4c, 0x53, ++ 0x81, 0x4f, 0xbe, 0x22, 0xbf, 0x75, 0x8c, 0xd6, 0xd9, 0x65, 0xd3, 0x13, ++ 0x15, 0x36, 0xbf, 0x65, 0x4c, 0x3f, 0xfb, 0xe8, 0x7f, 0xb0, 0x3e, 0x6a, ++ 0xa7, 0x19, 0xf4, 0x75, 0x59, 0xa3, 0xb1, 0x5e, 0x4a, 0xae, 0x4d, 0x03, ++ 0x7e, 0x28, 0x5d, 0x29, 0x93, 0x00, 0x9d, 0x7b, 0x05, 0xe8, 0x7b, 0x6d, ++ 0xdd, 0x94, 0xef, 0x2f, 0x4b, 0x64, 0x76, 0x5c, 0x19, 0xa9, 0x5b, 0x0a, ++ 0x76, 0xca, 0xc3, 0x32, 0x99, 0x09, 0xf8, 0x9e, 0xeb, 0x24, 0xd2, 0x00, ++ 0x2a, 0x27, 0x6a, 0x5e, 0x5b, 0x5d, 0x54, 0x42, 0xeb, 0x37, 0x24, 0x9a, ++ 0x90, 0xae, 0x8e, 0x51, 0xfb, 0x4e, 0xa5, 0x72, 0xa8, 0x22, 0x89, 0xd9, ++ 0x31, 0x95, 0x29, 0x01, 0xc5, 0x4d, 0xdb, 0x3f, 0x6f, 0x1d, 0x7d, 0xe3, ++ 0xc5, 0x04, 0xde, 0x0f, 0x2c, 0x05, 0xb9, 0xe6, 0xb3, 0x13, 0xd7, 0x7a, ++ 0xd2, 0x17, 0xee, 0xf3, 0x96, 0x19, 0xe7, 0x77, 0xb6, 0xf9, 0x47, 0xcf, ++ 0x97, 0x90, 0x25, 0x38, 0x5f, 0x6d, 0x1e, 0xda, 0xb8, 0xda, 0x3c, 0xc4, ++ 0x0d, 0x82, 0x3b, 0x10, 0xc3, 0x9e, 0x9d, 0x97, 0x28, 0x44, 0xec, 0x64, ++ 0x5a, 0xde, 0x99, 0x68, 0xb4, 0x5f, 0x17, 0x41, 0x5d, 0x67, 0xdf, 0xde, ++ 0x17, 0x55, 0x5f, 0x12, 0x55, 0xd7, 0xe8, 0x44, 0xe6, 0x74, 0x62, 0x4e, ++ 0xf4, 0x2c, 0x4a, 0x4c, 0x05, 0xba, 0x08, 0x4f, 0x41, 0x3b, 0x8d, 0x50, ++ 0xfa, 0xc8, 0x8b, 0xf4, 0x53, 0x22, 0xfd, 0xee, 0x3b, 0x53, 0x3f, 0x33, ++ 0xf4, 0x13, 0xb1, 0xdf, 0x92, 0x33, 0xf5, 0xb3, 0x46, 0xc6, 0x7b, 0x30, ++ 0x56, 0xbf, 0x9a, 0xd7, 0x36, 0xbf, 0xea, 0xa3, 0xf4, 0x54, 0xf9, 0xca, ++ 0x53, 0x0e, 0x42, 0xe5, 0xf9, 0x97, 0x92, 0x3f, 0xcd, 0x45, 0x9f, 0x57, ++ 0xaf, 0x7f, 0xc0, 0x01, 0x70, 0x3a, 0x2a, 0xf9, 0x1c, 0x80, 0xef, 0x2f, ++ 0x03, 0xe2, 0xd4, 0x58, 0xf0, 0xda, 0xdd, 0x0b, 0x2f, 0xb7, 0x4d, 0x00, ++ 0x3f, 0x02, 0x49, 0x9b, 0xc2, 0xfd, 0xa5, 0x47, 0xa6, 0x83, 0x9d, 0xf4, ++ 0xed, 0x7a, 0xd9, 0x29, 0xd2, 0x2e, 0xde, 0x0d, 0xe6, 0xa0, 0x99, 0xd2, ++ 0x6f, 0x6d, 0x6b, 0xc5, 0x34, 0x92, 0x8f, 0xf5, 0x83, 0xac, 0xfe, 0xe0, ++ 0x09, 0x11, 0xea, 0x6d, 0x46, 0x7c, 0x56, 0xbe, 0xf8, 0x54, 0x9a, 0x6a, ++ 0x47, 0x3c, 0x30, 0x7b, 0x9b, 0x04, 0xd1, 0xee, 0xa8, 0x6d, 0xfe, 0x62, ++ 0x0a, 0xc8, 0x71, 0x2f, 0x09, 0x23, 0x1d, 0x46, 0xbf, 0x07, 0xdf, 0x3f, ++ 0x9d, 0x84, 0x7c, 0x5f, 0xa2, 0x24, 0xf4, 0x6d, 0xa7, 0xf3, 0x44, 0x3b, ++ 0xd9, 0xcb, 0xf9, 0xcc, 0xdb, 0xfa, 0xc8, 0x09, 0xd1, 0x01, 0xe5, 0x15, ++ 0x9d, 0xc0, 0x67, 0xde, 0x28, 0x3a, 0x2a, 0xef, 0xd5, 0x2f, 0x21, 0xa5, ++ 0x98, 0xce, 0xe7, 0x95, 0x44, 0x7b, 0xca, 0x91, 0x0b, 0x69, 0xf5, 0x47, ++ 0xe4, 0x47, 0x20, 0x0f, 0x34, 0xb8, 0x90, 0x00, 0xb3, 0x2b, 0x1a, 0x36, ++ 0x3e, 0x93, 0x7f, 0x90, 0xce, 0xab, 0xab, 0xf9, 0x37, 0x0e, 0x21, 0x4f, ++ 0x2f, 0x47, 0x18, 0x3d, 0x9e, 0x6c, 0x99, 0xf7, 0xf3, 0x1d, 0x6a, 0xff, ++ 0xf2, 0xa6, 0x9b, 0xfb, 0x45, 0x91, 0xf7, 0x02, 0xf8, 0x9e, 0xda, 0xc6, ++ 0xec, 0x20, 0xd2, 0xce, 0xca, 0x6a, 0x39, 0xe8, 0x00, 0xbb, 0xb3, 0x7a, ++ 0xad, 0xec, 0xa2, 0x94, 0x4a, 0xaa, 0x37, 0x3f, 0xff, 0xc2, 0xb3, 0xe0, ++ 0xaf, 0x7d, 0x6a, 0x46, 0x7f, 0xad, 0x6a, 0xf3, 0x9b, 0x1f, 0x8d, 0xa7, ++ 0xf5, 0xaa, 0x2d, 0x72, 0xca, 0x34, 0xb6, 0x1c, 0x9b, 0x90, 0x16, 0xc1, ++ 0x8f, 0x97, 0xfe, 0x6f, 0xd1, 0xa8, 0x08, 0x3e, 0x2a, 0x7f, 0xf9, 0xa6, ++ 0xa2, 0x8e, 0x64, 0xcf, 0xef, 0x4d, 0x8a, 0xe0, 0xa5, 0x6a, 0xcb, 0x1e, ++ 0x85, 0x8c, 0xec, 0x0b, 0xc7, 0x49, 0x2d, 0x7b, 0x94, 0x90, 0x2d, 0x06, ++ 0x7e, 0x5a, 0x0e, 0x4e, 0x01, 0xbb, 0xa5, 0x61, 0xe3, 0x77, 0x0a, 0xf8, ++ 0x5f, 0x5f, 0xee, 0x16, 0x48, 0x7a, 0x6e, 0xdf, 0xf7, 0xcb, 0xd7, 0xbe, ++ 0x89, 0x7a, 0x11, 0xe0, 0x84, 0xf8, 0xe4, 0xf8, 0xea, 0xc5, 0x5f, 0x1f, ++ 0xbc, 0x05, 0xa7, 0xef, 0x28, 0xc4, 0x7e, 0x4e, 0x90, 0x97, 0x67, 0xc3, ++ 0x9b, 0x9f, 0xcb, 0xe9, 0x9a, 0xd7, 0xec, 0x24, 0x91, 0xce, 0xa3, 0xfc, ++ 0xf7, 0xe6, 0xc0, 0x34, 0xc0, 0xe7, 0xcb, 0x77, 0x3a, 0x60, 0x3d, 0x9d, ++ 0x52, 0x1d, 0xa3, 0xf3, 0xd5, 0x0f, 0xa4, 0xb9, 0xe9, 0xf7, 0xcb, 0x65, ++ 0x5f, 0x9a, 0x13, 0x4b, 0xf6, 0xbc, 0x7c, 0xcd, 0x5d, 0x48, 0x7f, 0x65, ++ 0x42, 0x5d, 0x9a, 0x13, 0xf9, 0xc9, 0x9d, 0x69, 0x42, 0xd9, 0xed, 0xcb, ++ 0x84, 0x75, 0x2e, 0x68, 0xba, 0x01, 0xd7, 0x59, 0x4a, 0x3c, 0x48, 0x87, ++ 0xe5, 0xab, 0xc5, 0xe2, 0x00, 0x2d, 0xbf, 0x91, 0xc8, 0xd4, 0x2d, 0x31, ++ 0xf8, 0xa4, 0x28, 0x89, 0xf1, 0x49, 0xe7, 0x3a, 0x8a, 0x5c, 0xba, 0xce, ++ 0x4e, 0xb0, 0xfb, 0xc1, 0xde, 0xfe, 0xad, 0x18, 0x58, 0x8f, 0xfe, 0xe9, ++ 0xed, 0x04, 0xe4, 0xff, 0x5d, 0x7c, 0xcd, 0x54, 0x53, 0x62, 0xfd, 0x1b, ++ 0x0b, 0xc3, 0x97, 0x2d, 0xc9, 0xa4, 0xf9, 0x8b, 0x16, 0x03, 0xfd, 0x36, ++ 0x3f, 0xd8, 0x01, 0x78, 0x3a, 0x36, 0xd0, 0x9d, 0x0e, 0xf3, 0xa4, 0x70, ++ 0xf0, 0x71, 0xb8, 0x09, 0x3f, 0xd0, 0x71, 0xc5, 0x0f, 0x2e, 0x4f, 0x67, ++ 0x78, 0x22, 0xaa, 0x54, 0xc4, 0xdf, 0xa3, 0xfa, 0x60, 0x12, 0x3c, 0x87, ++ 0xfe, 0x1d, 0xb2, 0xdb, 0x9a, 0x6f, 0x78, 0x8f, 0xcb, 0x4f, 0xf6, 0xfd, ++ 0x85, 0xfc, 0xfb, 0x74, 0xde, 0x71, 0xa0, 0xdf, 0x3a, 0xd3, 0xa8, 0x7d, ++ 0x1f, 0x63, 0x7d, 0x73, 0x61, 0x7d, 0xa8, 0x17, 0xa9, 0x9e, 0xd3, 0xd1, ++ 0x99, 0x8e, 0xdf, 0x19, 0xff, 0x37, 0x3f, 0xc4, 0xf8, 0x5d, 0xe3, 0xff, ++ 0xc0, 0x8c, 0xa9, 0xd0, 0x7e, 0xea, 0x43, 0xc6, 0x47, 0xf0, 0x1e, 0xe8, ++ 0x13, 0x3a, 0xaf, 0x60, 0x3a, 0xb6, 0xef, 0xb9, 0x5e, 0x40, 0xf9, 0x60, ++ 0x26, 0xc1, 0x58, 0x7c, 0xde, 0x2c, 0x73, 0x3e, 0x37, 0xb6, 0x7b, 0x29, ++ 0xbf, 0x42, 0x9c, 0x40, 0xa3, 0x13, 0x3a, 0x7f, 0x49, 0x48, 0xd0, 0xd3, ++ 0x0b, 0xfd, 0x4e, 0x12, 0xe2, 0x01, 0xfd, 0x95, 0xd2, 0x95, 0xf4, 0x7d, ++ 0xbd, 0x7d, 0x03, 0xdf, 0xc5, 0x7e, 0x4a, 0xe4, 0xb9, 0x4e, 0xaf, 0x94, ++ 0x71, 0xb9, 0x50, 0x90, 0x44, 0xe5, 0x41, 0x7c, 0x44, 0x1e, 0x90, 0xa6, ++ 0xd4, 0x73, 0xb2, 0x23, 0xab, 0x65, 0xe2, 0x03, 0x93, 0xb3, 0xfa, 0x53, ++ 0x33, 0xfa, 0xe3, 0xd5, 0x9b, 0xe5, 0x62, 0x58, 0xff, 0xf1, 0x4d, 0xfb, ++ 0x3e, 0xba, 0x99, 0xd2, 0xf9, 0xf1, 0x16, 0x8d, 0x6f, 0x8d, 0x72, 0x35, ++ 0x9a, 0x6f, 0xcb, 0xb7, 0xae, 0x17, 0x80, 0x4e, 0xa3, 0xf9, 0xf6, 0x78, ++ 0x39, 0xd5, 0xe2, 0xb1, 0xf8, 0x96, 0x3e, 0x8f, 0xc9, 0xb7, 0xe5, 0xa1, ++ 0xff, 0xa7, 0x72, 0x55, 0x83, 0xdf, 0xac, 0x24, 0xa3, 0x3c, 0xa5, 0xf2, ++ 0x71, 0x10, 0x98, 0x10, 0xfd, 0xc1, 0x31, 0x5a, 0x3e, 0x7e, 0x03, 0xf6, ++ 0x56, 0x6a, 0x5f, 0xf9, 0x48, 0xff, 0x3e, 0x24, 0x45, 0x7d, 0xe9, 0x50, ++ 0xa3, 0x3f, 0x8d, 0xee, 0xa8, 0x05, 0x37, 0x08, 0xe4, 0x7a, 0x2f, 0x7d, ++ 0x6a, 0xf4, 0xd7, 0x4b, 0x9f, 0x1a, 0xfd, 0x45, 0xaf, 0xd7, 0x08, 0xbf, ++ 0xe8, 0xf6, 0xc1, 0xe0, 0x23, 0x51, 0x3a, 0x29, 0xde, 0x4e, 0x2d, 0x3a, ++ 0x8a, 0xcf, 0xea, 0x76, 0x21, 0x60, 0x46, 0x3e, 0xf7, 0xbd, 0x35, 0xa0, ++ 0x10, 0xe1, 0xe4, 0x46, 0xf5, 0x46, 0xfc, 0x6f, 0x0d, 0x48, 0xd1, 0xd7, ++ 0x03, 0x51, 0xf5, 0x96, 0xa8, 0xfe, 0xee, 0xa8, 0x7a, 0x71, 0x54, 0x7f, ++ 0x4f, 0x54, 0xbd, 0xce, 0xd0, 0xbf, 0xba, 0x6d, 0x9f, 0x42, 0x10, 0xff, ++ 0x41, 0x43, 0x3f, 0xf3, 0xa2, 0xe7, 0xc8, 0xe7, 0x31, 0xfc, 0x41, 0x4d, ++ 0xff, 0x78, 0x5b, 0x4f, 0x28, 0x3e, 0xa0, 0x8b, 0xec, 0xb0, 0x02, 0x72, ++ 0x4f, 0x5e, 0x42, 0x4d, 0x37, 0x88, 0xaf, 0xed, 0x12, 0x31, 0xbe, 0xd6, ++ 0xa3, 0x86, 0x1d, 0x49, 0xf4, 0xf9, 0x03, 0x56, 0xe6, 0xa7, 0xf5, 0x38, ++ 0x79, 0x3d, 0x91, 0xd5, 0xc3, 0xa9, 0xca, 0x52, 0x90, 0x7b, 0xda, 0xf3, ++ 0xb0, 0x95, 0xa0, 0x7f, 0xde, 0x53, 0x1c, 0x76, 0x24, 0xea, 0xfc, 0xff, ++ 0x83, 0xed, 0xa2, 0x43, 0xa5, 0xed, 0xa1, 0x00, 0x99, 0xaa, 0x8f, 0x23, ++ 0x44, 0xe6, 0xd3, 0x80, 0xf8, 0x0e, 0x91, 0xfe, 0xda, 0x59, 0xdc, 0xb0, ++ 0x27, 0xce, 0x91, 0x8f, 0xdf, 0x8b, 0xcb, 0x09, 0x00, 0xfd, 0x5d, 0x2e, ++ 0xda, 0x72, 0x16, 0x81, 0xbf, 0xe7, 0x17, 0x5d, 0x94, 0x7c, 0xc8, 0xfc, ++ 0xc5, 0x37, 0x39, 0x08, 0xa5, 0xb3, 0x9e, 0xf6, 0x21, 0xd7, 0xcc, 0xa4, ++ 0xcf, 0x17, 0xbc, 0x2d, 0x82, 0xb9, 0x4d, 0xd1, 0xe3, 0x96, 0x32, 0x29, ++ 0xdd, 0xcc, 0xe3, 0x74, 0x7c, 0x94, 0xf8, 0x9e, 0xbe, 0x84, 0xae, 0x6f, ++ 0x5e, 0x3b, 0xb3, 0xc3, 0xe7, 0x2f, 0x8f, 0x4d, 0xf7, 0x95, 0xbc, 0x7f, ++ 0xa9, 0x6d, 0xa1, 0x02, 0xf2, 0x95, 0xda, 0xd1, 0x87, 0xf4, 0x71, 0xd1, ++ 0x4a, 0xb2, 0x1c, 0xe9, 0xae, 0xbc, 0x29, 0xea, 0x79, 0xfb, 0x55, 0xc8, ++ 0x1f, 0x95, 0x51, 0xfc, 0xe1, 0xe1, 0xfe, 0xc3, 0x2e, 0x8d, 0x3f, 0x0a, ++ 0x48, 0x01, 0xca, 0x17, 0x42, 0x98, 0xff, 0xcb, 0xe5, 0xf2, 0xe5, 0x62, ++ 0xde, 0x35, 0x33, 0x29, 0x1e, 0x7a, 0xf6, 0x8b, 0xc4, 0xac, 0x82, 0x3f, ++ 0x2b, 0x92, 0xa5, 0xb0, 0xce, 0x4d, 0x42, 0x00, 0xe2, 0x05, 0xc4, 0x97, ++ 0x8a, 0x7c, 0x56, 0x4b, 0xc2, 0x28, 0x0f, 0x35, 0x38, 0x75, 0x01, 0x1f, ++ 0x0d, 0xeb, 0x5f, 0x4e, 0x75, 0x6d, 0xfb, 0x53, 0xd1, 0x3d, 0x40, 0x2f, ++ 0xaf, 0xfe, 0x21, 0xff, 0x39, 0x5a, 0x76, 0xbd, 0xfa, 0xe9, 0xd0, 0x9d, ++ 0x50, 0x7f, 0xed, 0xe3, 0x9c, 0x3f, 0x90, 0xbe, 0xfd, 0x27, 0xed, 0xfe, ++ 0x7e, 0x36, 0xe8, 0xb3, 0x9e, 0xdd, 0x66, 0x8c, 0x8b, 0xf5, 0xec, 0xfe, ++ 0x55, 0xce, 0x3d, 0x50, 0xdf, 0x61, 0xc6, 0xb8, 0x58, 0xcf, 0x12, 0xb3, ++ 0x1b, 0xf8, 0xc0, 0xb7, 0xdb, 0x1e, 0x38, 0x1f, 0xda, 0x07, 0x32, 0xff, ++ 0xa1, 0x61, 0xd7, 0x77, 0xf9, 0x21, 0xd4, 0xaf, 0xf7, 0x23, 0xde, 0x8e, ++ 0x26, 0x31, 0xff, 0xe5, 0x64, 0xfb, 0x9f, 0x0f, 0x08, 0x29, 0x50, 0xd2, ++ 0x55, 0x81, 0xfd, 0xb0, 0x3b, 0x1e, 0xf9, 0xc8, 0xbb, 0xc3, 0x8a, 0xfe, ++ 0x7a, 0xcf, 0xae, 0xef, 0x8a, 0x3c, 0xb6, 0x7f, 0xde, 0x7a, 0x6a, 0x15, ++ 0xe2, 0x41, 0x7a, 0xb4, 0x93, 0x99, 0x5b, 0x81, 0x7e, 0x13, 0x59, 0xfc, ++ 0xd8, 0xbb, 0x73, 0xdc, 0xf3, 0x8b, 0xe9, 0xf7, 0x6b, 0x5a, 0xf7, 0x28, ++ 0xf3, 0x68, 0xfb, 0xa4, 0xd7, 0xff, 0x9a, 0x0f, 0xf2, 0xb3, 0x67, 0x2b, ++ 0xb3, 0x8b, 0xba, 0xe5, 0xd0, 0x1a, 0xe2, 0x22, 0xe4, 0xeb, 0xa4, 0xb2, ++ 0x87, 0x64, 0x88, 0xf3, 0x01, 0x33, 0x65, 0x11, 0xf2, 0x78, 0xf2, 0x86, ++ 0x2b, 0x7c, 0x79, 0xb1, 0xe0, 0xc2, 0xe0, 0xd0, 0x43, 0xe1, 0x00, 0xeb, ++ 0xa2, 0x70, 0x29, 0x07, 0xb9, 0xdf, 0x1f, 0x3c, 0xe2, 0x92, 0x15, 0xa4, ++ 0xf7, 0x7f, 0x3d, 0x78, 0x9c, 0x98, 0xcd, 0xe4, 0xda, 0x8f, 0x08, 0xc4, ++ 0x85, 0x22, 0x70, 0x11, 0xdc, 0xec, 0xb9, 0x3d, 0x60, 0x11, 0x70, 0xfd, ++ 0xec, 0xf9, 0xee, 0xef, 0xf2, 0x41, 0xee, 0x1c, 0x6f, 0x59, 0x8c, 0xf6, ++ 0xca, 0xd9, 0xd6, 0x3d, 0x22, 0xf9, 0x5f, 0x95, 0x0e, 0xfe, 0xab, 0xeb, ++ 0x16, 0x82, 0xe7, 0xb2, 0xee, 0xa9, 0xff, 0xb2, 0xf8, 0x66, 0xf4, 0xff, ++ 0x5e, 0x92, 0x8a, 0xf3, 0x8c, 0xe6, 0x83, 0xbe, 0x74, 0xfe, 0xda, 0x4f, ++ 0xb0, 0xfe, 0xb2, 0xdd, 0x85, 0xf3, 0x3d, 0x47, 0xfe, 0x2f, 0xff, 0xdf, ++ 0x86, 0xf7, 0xad, 0x14, 0xef, 0x8e, 0xb3, 0xe3, 0xfd, 0xc1, 0xff, 0xb1, ++ 0x78, 0x7f, 0x9b, 0xe3, 0xdd, 0xee, 0x34, 0x83, 0x3c, 0xdb, 0xf5, 0x57, ++ 0x8c, 0xb3, 0x6a, 0xeb, 0x3f, 0xdb, 0xba, 0x5f, 0xf8, 0x1f, 0xba, 0x6e, ++ 0xcd, 0x8e, 0xff, 0x95, 0x49, 0xfd, 0xb0, 0x80, 0xf6, 0x7f, 0x9b, 0xf8, ++ 0x3f, 0x1c, 0x4a, 0xe7, 0xd9, 0x94, 0xbd, 0xef, 0x83, 0x02, 0xda, 0x3a, ++ 0x51, 0x20, 0xc5, 0xb1, 0xec, 0x93, 0x8f, 0x92, 0x99, 0x1f, 0x38, 0x51, ++ 0x30, 0xa1, 0xff, 0x47, 0x12, 0x05, 0xee, 0xff, 0x31, 0xbf, 0x69, 0x00, ++ 0xb7, 0x23, 0x06, 0x2c, 0x2c, 0x45, 0x7b, 0x63, 0x40, 0xf6, 0xa3, 0x68, ++ 0x37, 0x10, 0x49, 0x5d, 0x09, 0xfb, 0x77, 0xbf, 0xca, 0x99, 0xe7, 0x7a, ++ 0x18, 0x7b, 0x8c, 0xfa, 0xc4, 0x03, 0x75, 0xe7, 0xa5, 0xbc, 0x6e, 0xf4, ++ 0x1f, 0x9f, 0x13, 0x88, 0x5b, 0xa0, 0x36, 0xe8, 0x80, 0x9c, 0xab, 0xf6, ++ 0x83, 0xfd, 0x9a, 0x9d, 0x2d, 0xa2, 0x7d, 0x4b, 0x4b, 0xb4, 0x6b, 0xdf, ++ 0x70, 0x4c, 0x65, 0xcf, 0xab, 0x15, 0x83, 0xdf, 0x74, 0x05, 0xd1, 0xd5, ++ 0xe9, 0xba, 0xa6, 0xa4, 0x18, 0xfd, 0xa2, 0xc9, 0x7c, 0xbc, 0xcb, 0xc9, ++ 0xe0, 0x0f, 0x0b, 0xe8, 0xfc, 0x2f, 0xb7, 0xc8, 0xce, 0x00, 0x05, 0xd1, ++ 0x15, 0x13, 0x3c, 0x12, 0xac, 0xe7, 0x8a, 0x4c, 0x81, 0xf8, 0x75, 0xfb, ++ 0x47, 0x93, 0xa3, 0xfc, 0xa7, 0xad, 0xd4, 0xc6, 0xd4, 0xc7, 0xd7, 0xfe, ++ 0x5e, 0xf8, 0x59, 0x52, 0x98, 0x9f, 0x39, 0x51, 0x18, 0xbc, 0xb2, 0x18, ++ 0xe0, 0x37, 0x50, 0xc4, 0xf8, 0xe1, 0x59, 0xe1, 0x07, 0xc6, 0x1e, 0xc2, ++ 0xab, 0x20, 0xf0, 0x30, 0xd8, 0x45, 0x92, 0x8b, 0xc1, 0x2f, 0xa9, 0xc6, ++ 0x85, 0xf1, 0x57, 0xee, 0x57, 0xc3, 0x76, 0x33, 0xd8, 0x2b, 0x92, 0x6d, ++ 0x69, 0x07, 0xf0, 0xad, 0x44, 0xa8, 0x5f, 0xcc, 0xe6, 0x8f, 0xfe, 0xb4, ++ 0xe6, 0x17, 0xf7, 0x07, 0x67, 0xc2, 0xfd, 0x6c, 0x89, 0x7f, 0x52, 0x83, ++ 0xbb, 0x94, 0x2d, 0xba, 0xad, 0xc6, 0xf1, 0x10, 0x1e, 0x1a, 0x3e, 0xfe, ++ 0x5e, 0x3c, 0x68, 0xf8, 0xfb, 0x47, 0xf1, 0xf1, 0x7b, 0xc0, 0xc7, 0x98, ++ 0x08, 0x3e, 0xb2, 0x4f, 0x39, 0x25, 0xe0, 0xcf, 0x49, 0xdc, 0x1f, 0x98, ++ 0x7c, 0xaa, 0x43, 0xc4, 0x7a, 0xb6, 0x4b, 0xc2, 0xfd, 0x17, 0xee, 0x0f, ++ 0x4c, 0xb0, 0x25, 0x4a, 0xe0, 0x0f, 0x5c, 0x2a, 0x7d, 0x20, 0x02, 0x5f, ++ 0x96, 0x59, 0xb6, 0x57, 0xc2, 0x3e, 0x82, 0xc5, 0x25, 0x20, 0x5d, 0x0f, ++ 0xeb, 0x32, 0xa1, 0xbf, 0x63, 0x29, 0x14, 0x10, 0xee, 0xc3, 0x1b, 0x25, ++ 0xac, 0x7f, 0x60, 0x72, 0x8e, 0x01, 0x43, 0x7b, 0xfa, 0xc5, 0xaf, 0x1d, ++ 0xbf, 0x9b, 0x40, 0x3c, 0xd9, 0xad, 0x30, 0xc3, 0xbb, 0x98, 0xc5, 0xf3, ++ 0xff, 0xf2, 0xc3, 0x0f, 0x97, 0x14, 0x41, 0x5c, 0x85, 0xfd, 0x95, 0xd1, ++ 0xff, 0x5d, 0x4d, 0xfd, 0xb1, 0xf9, 0x4d, 0x24, 0x18, 0x47, 0xe1, 0xb4, ++ 0x40, 0x22, 0x3e, 0x48, 0x71, 0x58, 0x40, 0x17, 0x75, 0xc8, 0x10, 0x0f, ++ 0x36, 0xd6, 0xe1, 0xef, 0xb2, 0xb4, 0xc8, 0x38, 0x67, 0xeb, 0xdf, 0x9f, ++ 0x1c, 0xf9, 0x67, 0x97, 0xaf, 0x51, 0xb9, 0x75, 0xe8, 0x7c, 0x42, 0xb6, ++ 0x43, 0xc9, 0x82, 0xfd, 0x92, 0xde, 0x6f, 0xfe, 0x51, 0x3b, 0x83, 0x97, ++ 0xf7, 0x1d, 0x12, 0x18, 0x8c, 0xf1, 0x06, 0xb7, 0x58, 0xac, 0xdb, 0x67, ++ 0xfb, 0xf7, 0x14, 0x26, 0x3f, 0x5e, 0xfb, 0xe3, 0xd6, 0xd1, 0x10, 0x3f, ++ 0x9b, 0xd0, 0x93, 0x97, 0xc0, 0xe4, 0x69, 0xa1, 0x09, 0xe8, 0xd2, 0xcb, ++ 0xfd, 0x82, 0x93, 0x44, 0x4d, 0x80, 0x7c, 0x85, 0x93, 0xed, 0x43, 0x12, ++ 0x70, 0x1f, 0x71, 0xbf, 0x68, 0xf7, 0xc4, 0x88, 0xdb, 0x6c, 0xe4, 0xfe, ++ 0xf4, 0x2f, 0xea, 0x31, 0xa8, 0x4c, 0x7a, 0x9a, 0x89, 0x5f, 0x04, 0xbf, ++ 0x89, 0x84, 0x31, 0x7e, 0xeb, 0x6b, 0xb6, 0xc4, 0xdc, 0x0f, 0x9e, 0x9b, ++ 0x62, 0xe2, 0x74, 0xc3, 0xf1, 0x46, 0xff, 0xc4, 0x22, 0xd8, 0xb7, 0x60, ++ 0xdf, 0x5f, 0x40, 0x5f, 0x4d, 0xd0, 0xe3, 0xad, 0x6b, 0xda, 0x97, 0x52, ++ 0x7e, 0x5f, 0x3c, 0xc0, 0xdf, 0x21, 0xdd, 0xfe, 0xca, 0x3f, 0x0a, 0x5f, ++ 0xf0, 0xdf, 0x01, 0xbe, 0x1b, 0xad, 0xa1, 0x29, 0xc5, 0x31, 0xe4, 0xc7, ++ 0x42, 0x0e, 0xbf, 0xe9, 0x7b, 0xbf, 0xc7, 0x78, 0xe7, 0x05, 0xed, 0x6b, ++ 0x4d, 0x40, 0xbf, 0x17, 0x34, 0x9b, 0x0c, 0xfb, 0x93, 0xd5, 0x29, 0xdc, ++ 0xef, 0x1a, 0x45, 0x46, 0xc1, 0xbc, 0xa6, 0xef, 0xb5, 0xda, 0x0b, 0x01, ++ 0x2f, 0xfb, 0x45, 0x97, 0x95, 0xae, 0xcf, 0xdb, 0x7e, 0x42, 0xf1, 0xc4, ++ 0xd8, 0xe7, 0x8a, 0x86, 0x27, 0x8c, 0x0f, 0x71, 0xf4, 0x97, 0x52, 0xd8, ++ 0xbe, 0xc0, 0x4e, 0xb9, 0x65, 0x1e, 0xc0, 0x75, 0xe7, 0x57, 0x16, 0xe2, ++ 0xa3, 0xf8, 0xdd, 0xae, 0xf8, 0xab, 0x62, 0xcd, 0x33, 0x25, 0x8d, 0xc9, ++ 0xb9, 0x05, 0xa4, 0xe5, 0xce, 0xfc, 0xdc, 0x7f, 0x3d, 0xf8, 0x4e, 0xe8, ++ 0xb1, 0x05, 0x27, 0x82, 0x9f, 0xd9, 0x4c, 0x78, 0x5c, 0x23, 0x9a, 0xfe, ++ 0x08, 0xd2, 0xf1, 0xc9, 0x0d, 0x24, 0x00, 0xfa, 0x14, 0xfc, 0x52, 0x90, ++ 0x0b, 0x27, 0x37, 0x11, 0xd4, 0xe7, 0x14, 0x24, 0x8f, 0x82, 0x5f, 0x4d, ++ 0xf9, 0xfd, 0xc7, 0xfa, 0x38, 0xcd, 0xb0, 0xb6, 0x2d, 0xbf, 0x00, 0x3b, ++ 0xa0, 0xb6, 0x5d, 0x70, 0x9a, 0x68, 0x7b, 0xad, 0x14, 0x52, 0x20, 0x1e, ++ 0xeb, 0x6d, 0x4b, 0x14, 0x41, 0xef, 0x16, 0xa8, 0xc4, 0x8d, 0xfb, 0xc3, ++ 0x92, 0x73, 0xe4, 0xf5, 0x3a, 0xbe, 0x78, 0x29, 0x45, 0x42, 0xf8, 0xee, ++ 0x1b, 0xbf, 0xf3, 0x16, 0xf8, 0xee, 0xd7, 0x5d, 0x0a, 0x01, 0x7b, 0xc4, ++ 0xfd, 0x46, 0xd8, 0x01, 0x7a, 0xfb, 0xeb, 0xf6, 0xd1, 0xc8, 0x07, 0xfd, ++ 0xad, 0xeb, 0x97, 0xf5, 0xa4, 0x72, 0xb2, 0x0c, 0xe3, 0x30, 0x79, 0x18, ++ 0x4d, 0x0f, 0x79, 0x9b, 0xe2, 0x0c, 0xf5, 0x8b, 0x45, 0x4f, 0x16, 0xf0, ++ 0xd7, 0x74, 0x73, 0x68, 0xa1, 0x2b, 0x06, 0xfe, 0xa6, 0xa5, 0x32, 0x3a, ++ 0x3b, 0x67, 0xf9, 0x16, 0xf8, 0xff, 0x4c, 0xbe, 0x7d, 0xa8, 0xc9, 0x37, ++ 0x8f, 0x58, 0xac, 0xe3, 0xa3, 0x94, 0x54, 0x46, 0xf7, 0x3a, 0xf9, 0x96, ++ 0x1e, 0x4b, 0xbe, 0xdd, 0x21, 0xa8, 0xe9, 0x00, 0xf7, 0x3b, 0x76, 0x0d, ++ 0x49, 0x07, 0xbc, 0xde, 0xf1, 0xb6, 0x9c, 0x1a, 0x4b, 0xbe, 0x6d, 0xae, ++ 0x67, 0xfb, 0x7f, 0xaf, 0x50, 0x7e, 0x84, 0xb2, 0xa7, 0x95, 0xca, 0xb7, ++ 0x8b, 0x74, 0xf2, 0xad, 0x95, 0xca, 0xb7, 0xdc, 0xbe, 0xef, 0xfd, 0xed, ++ 0x5c, 0xe5, 0x5b, 0xe0, 0xbf, 0x87, 0xff, 0x36, 0x83, 0x7c, 0x8b, 0xb1, ++ 0xde, 0x44, 0x0e, 0x3f, 0x4d, 0xbe, 0xe5, 0xb7, 0x1f, 0x44, 0xf9, 0x96, ++ 0xdf, 0x6a, 0x22, 0xaa, 0xce, 0x7e, 0xb0, 0xa4, 0x9e, 0x4d, 0xbe, 0x09, ++ 0xa9, 0xd7, 0x83, 0x3d, 0xbc, 0x5f, 0x76, 0xc5, 0xc7, 0xa0, 0x9f, 0xcd, ++ 0xdc, 0xfe, 0x7e, 0x85, 0xe7, 0xed, 0xc1, 0x77, 0x40, 0xce, 0xfd, 0x5b, ++ 0x2a, 0xdb, 0x2f, 0x3d, 0x57, 0x39, 0x97, 0x99, 0xc6, 0xf8, 0xe4, 0xac, ++ 0x72, 0xee, 0xbf, 0x09, 0xce, 0x9a, 0x9c, 0xbb, 0x63, 0x1b, 0x95, 0x73, ++ 0xb9, 0xb1, 0xe8, 0x90, 0xc9, 0xb9, 0x3b, 0xb6, 0x53, 0x39, 0x27, 0x00, ++ 0x3d, 0x32, 0x39, 0x77, 0xc7, 0x2e, 0xc2, 0xe2, 0x6f, 0x51, 0xf2, 0x6d, ++ 0x78, 0x1f, 0xf9, 0x46, 0xb0, 0x7f, 0x6d, 0x90, 0xbd, 0xef, 0x6d, 0xcb, ++ 0x7d, 0xe6, 0x56, 0x3a, 0xde, 0x28, 0xb7, 0xec, 0xb2, 0xd0, 0xfe, 0xa3, ++ 0x22, 0xf2, 0x6e, 0x8c, 0x5e, 0xde, 0xfd, 0x5b, 0xaa, 0x84, 0x70, 0xee, ++ 0x23, 0xef, 0xf6, 0x9f, 0x9b, 0xbc, 0xdb, 0xc6, 0xe5, 0x1d, 0x95, 0x63, ++ 0x83, 0x41, 0xbe, 0x46, 0xd3, 0x87, 0xab, 0x3d, 0xce, 0x50, 0xdf, 0x39, ++ 0xae, 0x73, 0xd3, 0x2f, 0x81, 0x5f, 0xde, 0x15, 0x71, 0x7f, 0xf1, 0x03, ++ 0x13, 0xdb, 0x07, 0x7a, 0x6f, 0x5c, 0x67, 0x21, 0xd0, 0xd7, 0x2a, 0x3e, ++ 0x1f, 0x2f, 0xa7, 0xbf, 0xee, 0x7a, 0x1f, 0x8e, 0x3f, 0xe9, 0x0d, 0xb6, ++ 0xbe, 0x9a, 0x4d, 0x2c, 0xfe, 0x5d, 0xdb, 0xca, 0xec, 0xc3, 0xda, 0x66, ++ 0x31, 0xa0, 0xd2, 0x7f, 0x4e, 0x19, 0xff, 0xbd, 0x02, 0xf3, 0xaf, 0xd8, ++ 0x25, 0x90, 0x74, 0x5a, 0x9f, 0x61, 0xf6, 0x3f, 0x6d, 0x03, 0x19, 0xfc, ++ 0xa2, 0x4c, 0xb8, 0x5f, 0x34, 0xad, 0x40, 0x47, 0x0f, 0xf3, 0xc7, 0x56, ++ 0x61, 0x1c, 0xbf, 0xc1, 0xea, 0x58, 0x47, 0x28, 0x1f, 0xcf, 0x97, 0x88, ++ 0x05, 0xe2, 0xf5, 0x55, 0xb6, 0x29, 0x5f, 0x82, 0x1d, 0x5c, 0x35, 0x96, ++ 0xc5, 0xf7, 0xab, 0xf8, 0x73, 0xc2, 0xf3, 0x06, 0xb4, 0x3c, 0xc8, 0xd2, ++ 0xb6, 0xdb, 0xdf, 0x1a, 0x40, 0xfa, 0xe6, 0x0f, 0x4c, 0x37, 0x33, 0x3c, ++ 0x4e, 0x7f, 0x5e, 0x08, 0xac, 0xcd, 0x85, 0xfc, 0x25, 0x63, 0x7b, 0x55, ++ 0x54, 0xfe, 0xe3, 0x63, 0x7c, 0x9d, 0x33, 0xc4, 0x10, 0xc2, 0x85, 0xbc, ++ 0x2f, 0xc6, 0xcc, 0x63, 0x78, 0x2c, 0x1a, 0x1e, 0xfb, 0x39, 0x3c, 0xe8, ++ 0xfa, 0x0d, 0xf0, 0x08, 0x08, 0x31, 0xe1, 0x41, 0x31, 0x3a, 0xad, 0x20, ++ 0x2d, 0xb2, 0xfe, 0x8a, 0x77, 0x43, 0x4b, 0x21, 0x9e, 0x5f, 0xb1, 0x4a, ++ 0xc0, 0x7d, 0x5f, 0x0d, 0x1e, 0xd1, 0xeb, 0xd4, 0xe0, 0xa3, 0xc5, 0xa7, ++ 0xab, 0xf8, 0xfb, 0xde, 0xf6, 0xdb, 0x71, 0xdf, 0x3f, 0x7a, 0xfd, 0x1a, ++ 0xfc, 0xfa, 0xac, 0x5b, 0x83, 0x67, 0xd4, 0xfa, 0xfd, 0xa9, 0x7c, 0xdf, ++ 0xab, 0x80, 0x8c, 0x86, 0x7c, 0x1a, 0x4a, 0x0f, 0x28, 0x3f, 0x7c, 0xbf, ++ 0xa6, 0x70, 0xa0, 0xdf, 0x29, 0x9e, 0x70, 0x7e, 0xba, 0x5e, 0x1e, 0x3f, ++ 0xcd, 0xe1, 0x30, 0xda, 0x3f, 0x61, 0x52, 0x26, 0x01, 0xb8, 0x91, 0x3a, ++ 0xa0, 0x9f, 0xd2, 0xc6, 0xdb, 0xdf, 0xca, 0xa4, 0xeb, 0x1f, 0xf3, 0x89, ++ 0x3a, 0x0a, 0xd4, 0xe4, 0xc5, 0xe3, 0xcd, 0x1e, 0xd8, 0x47, 0xdd, 0x68, ++ 0x0d, 0xa3, 0x7c, 0xd3, 0xe8, 0xab, 0x53, 0xa3, 0x77, 0x3e, 0xce, 0xce, ++ 0xac, 0xba, 0x89, 0xe8, 0xaf, 0xb7, 0x09, 0x4e, 0xb0, 0x2f, 0xbc, 0x41, ++ 0x2b, 0xc2, 0xd1, 0x4b, 0xe9, 0xcc, 0x4a, 0xbb, 0xec, 0x5b, 0xf5, 0xed, ++ 0x14, 0x0e, 0x47, 0xa7, 0x19, 0xf9, 0x8a, 0xeb, 0x1d, 0x0a, 0x77, 0x13, ++ 0xf8, 0x53, 0x9a, 0x1e, 0xa2, 0x70, 0x07, 0xbe, 0x19, 0xdd, 0x7e, 0x02, ++ 0xf7, 0x73, 0x0b, 0x49, 0x18, 0xf7, 0x4b, 0x6a, 0x1b, 0x05, 0x57, 0x90, ++ 0xae, 0xa3, 0xb6, 0x8d, 0xc1, 0x4b, 0x93, 0xb7, 0xf4, 0xcf, 0xa6, 0xc7, ++ 0x47, 0x0c, 0x7a, 0x94, 0x62, 0xd1, 0x23, 0x81, 0x20, 0x71, 0x51, 0x44, ++ 0x0f, 0x56, 0xf1, 0x7e, 0xd3, 0xcd, 0xfe, 0x8f, 0x60, 0x1f, 0x66, 0x3a, ++ 0xa5, 0xf7, 0xb5, 0x24, 0x82, 0xc7, 0xe1, 0xf4, 0x3f, 0xc0, 0x63, 0x34, ++ 0x9e, 0x34, 0x78, 0x9e, 0x8d, 0x3e, 0xbf, 0xe0, 0xf6, 0xc7, 0x66, 0x80, ++ 0xa3, 0x0d, 0xe0, 0x15, 0x66, 0x76, 0x54, 0x90, 0xea, 0x05, 0x7b, 0xa4, ++ 0xdd, 0x2b, 0xf9, 0x0c, 0x70, 0x9c, 0xf4, 0xec, 0x69, 0x46, 0x5f, 0xbb, ++ 0x04, 0x15, 0xf6, 0x13, 0x7a, 0xe1, 0x04, 0xf4, 0x4a, 0xdb, 0xc7, 0xb4, ++ 0x33, 0x7a, 0x05, 0xb8, 0xa9, 0x00, 0xf7, 0xf6, 0x12, 0x11, 0xea, 0xa5, ++ 0x14, 0xbe, 0xc9, 0xb9, 0x7d, 0xd7, 0x09, 0xfb, 0x97, 0x7a, 0xfe, 0xad, ++ 0xd8, 0x75, 0x90, 0x8d, 0xbf, 0x5a, 0x70, 0x91, 0x18, 0xf4, 0xab, 0xad, ++ 0xbb, 0x3f, 0xfa, 0xfd, 0x47, 0xe9, 0xb6, 0x33, 0x8a, 0x6e, 0xdf, 0xb3, ++ 0x86, 0xdf, 0x19, 0x0d, 0x74, 0xbb, 0x4b, 0x60, 0x71, 0x84, 0xf6, 0x44, ++ 0xc3, 0xbe, 0xa3, 0x39, 0x8d, 0xed, 0xbb, 0x6f, 0xb4, 0x52, 0xfa, 0x86, ++ 0xfd, 0xae, 0xb7, 0x65, 0xd7, 0x3a, 0xb5, 0x2f, 0x9f, 0x9f, 0xe6, 0xf0, ++ 0x04, 0xfb, 0x5f, 0xd5, 0xc5, 0xa5, 0x46, 0xc0, 0x02, 0x60, 0x2f, 0x70, ++ 0x83, 0x05, 0xf3, 0xcf, 0x70, 0x1e, 0x83, 0x99, 0x7d, 0xa9, 0x97, 0xaf, ++ 0x9b, 0xad, 0x24, 0xf5, 0xfa, 0xc2, 0xfe, 0xc7, 0x57, 0xb8, 0x3f, 0xd0, ++ 0x9f, 0x7d, 0xa3, 0xd5, 0x47, 0xc2, 0xf7, 0x40, 0xee, 0xb5, 0xd1, 0xef, ++ 0x0d, 0x8f, 0x7c, 0x2f, 0x5a, 0xbe, 0x6b, 0xfe, 0xfe, 0xd9, 0xd6, 0x95, ++ 0x9c, 0xf6, 0x8f, 0xad, 0xab, 0x37, 0x7f, 0x93, 0x74, 0xe0, 0xfe, 0x93, ++ 0x39, 0xd1, 0x73, 0x4f, 0x0a, 0xc6, 0x7f, 0x58, 0x7e, 0xd2, 0x8d, 0x3c, ++ 0x3f, 0x89, 0xce, 0x00, 0xed, 0x2c, 0x5d, 0xbf, 0x8c, 0xd4, 0x31, 0xfd, ++ 0xf7, 0x23, 0x19, 0x16, 0xd4, 0xc3, 0x77, 0xf2, 0xbc, 0xf8, 0xcb, 0x45, ++ 0x1b, 0xf1, 0xd1, 0x75, 0x7c, 0xed, 0x96, 0x91, 0x4e, 0xa9, 0x96, 0xfe, ++ 0xdd, 0x25, 0x20, 0x97, 0x27, 0x52, 0x3d, 0x42, 0x8b, 0xaf, 0xdf, 0x19, ++ 0xf3, 0xf1, 0xad, 0xd8, 0x2e, 0xe2, 0x7e, 0xd4, 0x35, 0xef, 0x26, 0xd7, ++ 0xc0, 0x3e, 0xdd, 0x35, 0x20, 0x8c, 0xe8, 0xf3, 0x6b, 0x0a, 0x04, 0xd4, ++ 0xbf, 0x1f, 0xc0, 0x60, 0xe3, 0xc0, 0x8e, 0xb5, 0x10, 0xb7, 0x99, 0x93, ++ 0x30, 0x6d, 0x1f, 0xfb, 0xa3, 0xc4, 0xc0, 0xc3, 0xb4, 0xbd, 0xa0, 0xd9, ++ 0x3f, 0x49, 0xa5, 0xfc, 0x34, 0x6a, 0x43, 0xa0, 0x01, 0x4a, 0xd7, 0xa4, ++ 0x70, 0xca, 0x7b, 0x00, 0xbf, 0x09, 0x22, 0x01, 0xf8, 0x75, 0xb8, 0x93, ++ 0x27, 0x81, 0xfe, 0xba, 0xf3, 0x0b, 0x52, 0x20, 0xaa, 0xa8, 0x67, 0x71, ++ 0x9c, 0x51, 0xfb, 0x49, 0x2a, 0xf4, 0x1b, 0xef, 0x4e, 0x45, 0x77, 0x60, ++ 0x5c, 0xeb, 0xca, 0x49, 0x10, 0x1f, 0x9d, 0xb1, 0xcf, 0x66, 0x03, 0x3a, ++ 0x1f, 0xde, 0x64, 0x22, 0x1e, 0x1d, 0xfd, 0x8e, 0x27, 0x81, 0x06, 0xd8, ++ 0x87, 0x1f, 0x77, 0xd8, 0x7d, 0x1d, 0xf0, 0x5f, 0x39, 0xb5, 0x17, 0x20, ++ 0xee, 0x5c, 0xde, 0xbe, 0xb6, 0xc1, 0x01, 0xf5, 0x26, 0xc1, 0xa5, 0xd2, ++ 0xf1, 0xbd, 0x3e, 0xcf, 0x14, 0x07, 0x9d, 0xd7, 0xe6, 0xc6, 0x13, 0x53, ++ 0x2e, 0x04, 0x3e, 0xa4, 0xfd, 0x60, 0x18, 0x6f, 0x13, 0xeb, 0xe7, 0x6d, ++ 0x16, 0x5c, 0x90, 0x2a, 0x5b, 0xda, 0xbe, 0x02, 0xf3, 0x71, 0x4a, 0x9b, ++ 0x05, 0xe2, 0x84, 0xfe, 0x01, 0x81, 0x58, 0xd8, 0xb8, 0x01, 0x0b, 0x1d, ++ 0x77, 0x73, 0x13, 0x7d, 0x9f, 0xd6, 0xcb, 0xe0, 0x7d, 0x18, 0xb7, 0xf9, ++ 0xc4, 0x87, 0xd7, 0x01, 0x9f, 0xbf, 0x23, 0xb2, 0xf7, 0x37, 0xb1, 0x7d, ++ 0xeb, 0x52, 0xfa, 0x9e, 0x0a, 0xf4, 0xda, 0x7c, 0x3b, 0x8e, 0x57, 0xd1, ++ 0x24, 0x90, 0x0c, 0x3a, 0x5e, 0xf9, 0x26, 0x26, 0xff, 0xcb, 0xdf, 0x91, ++ 0x5d, 0xd0, 0xde, 0xba, 0x67, 0x15, 0xea, 0xb1, 0x69, 0xf4, 0x7b, 0x99, ++ 0xb9, 0x20, 0xef, 0x83, 0x93, 0xa1, 0x4e, 0x46, 0x0b, 0x4e, 0xb0, 0xb7, ++ 0x49, 0xf6, 0xcd, 0xc8, 0xd7, 0x3d, 0x9c, 0xaf, 0x49, 0xd7, 0x4c, 0x26, ++ 0x37, 0x04, 0x5e, 0xe7, 0x7e, 0x83, 0x66, 0x37, 0xed, 0x4d, 0x63, 0xf9, ++ 0xc1, 0xa5, 0xae, 0xc5, 0x4a, 0x32, 0x1d, 0xe7, 0xbd, 0xb1, 0xa9, 0xb9, ++ 0x90, 0x26, 0xe0, 0x6d, 0x3b, 0x81, 0xfb, 0xd1, 0x87, 0x29, 0x9c, 0x3d, ++ 0x14, 0xce, 0x1f, 0xf0, 0x7c, 0x8e, 0x7d, 0x63, 0x3f, 0x57, 0x42, 0x3a, ++ 0xfd, 0xf3, 0x59, 0xda, 0x10, 0xa4, 0xc3, 0xf9, 0x6d, 0x13, 0x30, 0xcf, ++ 0x61, 0x01, 0x29, 0xc6, 0x3c, 0x87, 0xe9, 0xe3, 0x98, 0xbd, 0xf6, 0xfe, ++ 0xa5, 0xd6, 0x80, 0x40, 0xe7, 0xf5, 0xbe, 0x1c, 0xce, 0x86, 0xe7, 0xfb, ++ 0x2e, 0x35, 0xa3, 0xfd, 0xdb, 0xbd, 0x59, 0xc6, 0xfd, 0xe2, 0xee, 0x81, ++ 0x21, 0x8c, 0x4f, 0x77, 0x36, 0xc9, 0x04, 0xf2, 0x35, 0x1a, 0x9a, 0x44, ++ 0x94, 0x8b, 0x9d, 0x9b, 0x98, 0x1e, 0x17, 0x57, 0xdf, 0x30, 0x25, 0x13, ++ 0xe0, 0xb7, 0x5e, 0x70, 0x81, 0xdc, 0xdc, 0xd7, 0x34, 0x49, 0x01, 0xbd, ++ 0xd6, 0x19, 0x10, 0xf0, 0xfd, 0x49, 0xab, 0xef, 0x4a, 0x63, 0x7e, 0x0c, ++ 0x93, 0x87, 0x9a, 0xdf, 0x56, 0xea, 0xac, 0x30, 0xe8, 0x8f, 0x68, 0xf9, ++ 0xa6, 0xc9, 0xbf, 0x1a, 0x0e, 0x87, 0x68, 0x39, 0x57, 0xa3, 0xe9, 0x99, ++ 0x28, 0x39, 0x57, 0x03, 0xfb, 0xcd, 0x0e, 0x28, 0x8d, 0xcf, 0xbd, 0xc4, ++ 0xc6, 0xe4, 0x1f, 0xd8, 0xfd, 0x80, 0xf7, 0xe0, 0xf7, 0x48, 0xbf, 0xb5, ++ 0xef, 0xc8, 0x04, 0xec, 0x7e, 0xe1, 0xf3, 0xae, 0x29, 0x98, 0xb7, 0x05, ++ 0x7a, 0x93, 0xb6, 0x8f, 0x6b, 0x17, 0xdc, 0xb0, 0xcf, 0x5f, 0xfe, 0x89, ++ 0x39, 0x80, 0xf6, 0x6a, 0xa0, 0x64, 0xce, 0x4f, 0x41, 0x7e, 0x7f, 0x6a, ++ 0x26, 0x82, 0x0a, 0x79, 0xf0, 0x14, 0xee, 0x54, 0x2e, 0x8c, 0x35, 0x87, ++ 0xff, 0xf8, 0x24, 0x7d, 0xfe, 0xe5, 0x07, 0x16, 0xc8, 0x90, 0xa1, 0x74, ++ 0x52, 0x82, 0x70, 0xd6, 0xf2, 0x45, 0x0b, 0xd7, 0xb3, 0xfc, 0x96, 0xc2, ++ 0x0f, 0x56, 0xa6, 0x95, 0x02, 0x1c, 0x26, 0x27, 0xa3, 0x9c, 0x2d, 0x6b, ++ 0x14, 0x89, 0x47, 0x27, 0x2f, 0xbe, 0x14, 0xdc, 0xd7, 0xdd, 0xcc, 0xe4, ++ 0xb1, 0x73, 0xbd, 0x4e, 0x1e, 0x15, 0x2a, 0xfe, 0x52, 0xd0, 0x5f, 0xce, ++ 0x74, 0x26, 0x07, 0xd5, 0xf5, 0x32, 0xe4, 0x8c, 0x90, 0x6d, 0x5c, 0x3e, ++ 0x51, 0x7b, 0xda, 0x0d, 0x76, 0x43, 0xc5, 0xf6, 0x15, 0x69, 0x0a, 0xed, ++ 0xb7, 0x94, 0xe7, 0x83, 0x54, 0xec, 0x5a, 0x91, 0x46, 0x45, 0x03, 0x69, ++ 0x00, 0xbd, 0x45, 0xfb, 0x57, 0x28, 0x6c, 0xfc, 0x8a, 0xdd, 0x82, 0x73, ++ 0xad, 0x6e, 0x7c, 0xed, 0x7d, 0x6d, 0x3c, 0x6d, 0x1c, 0x65, 0xbb, 0x71, ++ 0x9c, 0x21, 0xbb, 0x78, 0xfd, 0x1c, 0xc7, 0xd1, 0xe6, 0xa1, 0x7d, 0xbf, ++ 0x3f, 0x7b, 0x7c, 0xec, 0x7f, 0x9c, 0x5e, 0x29, 0xd0, 0xf1, 0xc6, 0xbe, ++ 0x2f, 0x62, 0x92, 0xf2, 0xd8, 0xcf, 0xa7, 0x0d, 0xd1, 0xef, 0x77, 0x68, ++ 0xa5, 0x16, 0x7f, 0x2d, 0xfa, 0xd0, 0x44, 0xdc, 0x3a, 0xb8, 0x8d, 0xfd, ++ 0x63, 0x1c, 0x71, 0xeb, 0xe8, 0xa2, 0x75, 0x0c, 0xe5, 0x6f, 0x8a, 0xb7, ++ 0xab, 0xdb, 0x98, 0x3d, 0xd4, 0x3a, 0xe6, 0xa0, 0x52, 0x53, 0x88, 0x75, ++ 0x27, 0xf0, 0x73, 0x2d, 0x8f, 0xd3, 0xd6, 0x4e, 0x66, 0xfb, 0x56, 0xad, ++ 0x05, 0x1f, 0xdc, 0x0f, 0xfc, 0x3d, 0xad, 0x50, 0x40, 0x3a, 0x20, 0x3e, ++ 0x8f, 0x92, 0x9c, 0x82, 0x76, 0x90, 0x0a, 0xf1, 0xf1, 0xb2, 0x42, 0xf6, ++ 0x7e, 0x19, 0x7d, 0x1f, 0xf8, 0xae, 0x75, 0x15, 0xe3, 0x43, 0x2a, 0x0f, ++ 0x54, 0x90, 0x17, 0xb5, 0x4d, 0x2b, 0xa6, 0x60, 0xff, 0x66, 0x41, 0x85, ++ 0xf1, 0x5b, 0xd7, 0x96, 0xa0, 0x9e, 0x2f, 0x1f, 0x2b, 0x12, 0x6c, 0x6f, ++ 0x3e, 0x88, 0x76, 0x47, 0x79, 0xdb, 0xc1, 0x14, 0xe0, 0x57, 0xca, 0x9f, ++ 0x2b, 0x41, 0xef, 0xd6, 0x5e, 0x62, 0x76, 0x02, 0x7f, 0x68, 0x7c, 0xa7, ++ 0xf1, 0xf1, 0xfb, 0x32, 0xcb, 0x0f, 0x21, 0x16, 0xe7, 0x48, 0x38, 0x07, ++ 0x50, 0x96, 0xa6, 0xc6, 0xe4, 0x5f, 0xf1, 0x1d, 0xc2, 0xfc, 0xd4, 0x4d, ++ 0x32, 0xf2, 0x9d, 0x77, 0x2c, 0xe3, 0xcb, 0xf7, 0x37, 0x8b, 0xc8, 0xcf, ++ 0xfb, 0x2e, 0xbd, 0x69, 0x0a, 0xf0, 0x61, 0xf7, 0x7a, 0xa1, 0x1f, 0x3e, ++ 0xa6, 0x7c, 0x5a, 0x18, 0xe1, 0x53, 0x71, 0x35, 0xcb, 0xd7, 0x29, 0xdb, ++ 0xc8, 0xfc, 0x95, 0x7d, 0x4d, 0x4c, 0x3e, 0x74, 0xb6, 0x32, 0x3b, 0x71, ++ 0xd2, 0x6a, 0xf9, 0x6a, 0xa8, 0x97, 0xbd, 0x2b, 0x13, 0x16, 0xf7, 0x62, ++ 0xf6, 0xe0, 0xb9, 0xf2, 0x73, 0x1f, 0x3b, 0x65, 0x43, 0x6c, 0x7e, 0xee, ++ 0x8f, 0x7f, 0xa7, 0xcb, 0x2d, 0x1f, 0xdd, 0x49, 0xe7, 0x77, 0xcd, 0xcb, ++ 0x74, 0xfe, 0x6a, 0x04, 0x5e, 0x93, 0x2e, 0xbb, 0xdb, 0x81, 0x71, 0xfa, ++ 0xcb, 0x66, 0xe1, 0x7a, 0x35, 0x39, 0x54, 0x2a, 0xb1, 0x7c, 0xa6, 0xf9, ++ 0xfe, 0xc5, 0x2c, 0xdf, 0x57, 0x62, 0x79, 0x6f, 0x7f, 0xf7, 0xbc, 0xa2, ++ 0xe6, 0xf1, 0x60, 0x9a, 0x3d, 0x22, 0x47, 0x44, 0xa0, 0xf7, 0x44, 0x96, ++ 0x27, 0xdd, 0x2c, 0x23, 0xbd, 0x47, 0xf3, 0xe3, 0x3f, 0xca, 0x47, 0xff, ++ 0x2c, 0xbe, 0xde, 0xc6, 0xe9, 0x48, 0x9b, 0x8f, 0xb8, 0x8b, 0xbd, 0x0f, ++ 0x79, 0x65, 0x41, 0x0a, 0xc7, 0x5f, 0x6d, 0x7a, 0x1e, 0xf3, 0x5a, 0xbf, ++ 0x7a, 0xe9, 0xe0, 0x74, 0xc0, 0x73, 0xd5, 0x4e, 0x4a, 0xbf, 0x74, 0xbd, ++ 0xdd, 0x9b, 0xec, 0x24, 0x08, 0x72, 0x4b, 0x0a, 0xa0, 0xbe, 0xa9, 0x6c, ++ 0x15, 0x31, 0x7f, 0x9c, 0x48, 0xc1, 0xa2, 0xeb, 0xec, 0x7a, 0xfe, 0x64, ++ 0xf9, 0x49, 0x55, 0xaf, 0xd8, 0x91, 0x6e, 0x2a, 0xb7, 0xb2, 0xbc, 0xd3, ++ 0xca, 0x57, 0x3f, 0xcf, 0xc7, 0x7c, 0x91, 0x25, 0x61, 0xcc, 0xbb, 0xf2, ++ 0xbd, 0xc4, 0xed, 0x4d, 0x5f, 0x28, 0x1f, 0xe8, 0xbb, 0x52, 0x62, 0x79, ++ 0x52, 0xd1, 0xfc, 0x3e, 0x21, 0x9d, 0xd9, 0x9f, 0x5d, 0xdb, 0xe3, 0x67, ++ 0xc2, 0x3a, 0x84, 0x0d, 0x7b, 0x70, 0xbf, 0xb5, 0xb2, 0xe5, 0x26, 0x19, ++ 0xe8, 0xaf, 0x57, 0x7e, 0xa4, 0xcb, 0x5a, 0x3f, 0xdc, 0xc7, 0xf4, 0x51, ++ 0xfa, 0x85, 0x7d, 0x76, 0x98, 0xdf, 0x8c, 0x91, 0xfa, 0xf9, 0x2d, 0x46, ++ 0x3c, 0x75, 0x6d, 0x64, 0xfc, 0x5f, 0xd9, 0x26, 0x07, 0xac, 0x30, 0xbf, ++ 0x0d, 0x6b, 0x31, 0x9e, 0xed, 0xdd, 0x70, 0x02, 0xf3, 0xe3, 0x27, 0xbd, ++ 0xb2, 0x19, 0xe3, 0x08, 0xde, 0x36, 0xd1, 0x98, 0x17, 0xb9, 0x41, 0x0c, ++ 0x9a, 0x31, 0x7f, 0x53, 0x3c, 0x68, 0x46, 0xbf, 0xc6, 0x98, 0x9f, 0x58, ++ 0xdb, 0x5a, 0x83, 0xfb, 0x6e, 0xb5, 0x2d, 0x3c, 0xff, 0x2f, 0x2a, 0x2f, ++ 0xae, 0xea, 0x95, 0x5d, 0xaf, 0xfa, 0x28, 0x68, 0xaa, 0x7e, 0xf9, 0xa2, ++ 0x03, 0xe4, 0xc1, 0xb1, 0x8e, 0xf5, 0x0e, 0x80, 0x27, 0x1d, 0x0f, 0xf3, ++ 0x0a, 0x2f, 0x3b, 0x25, 0x19, 0xf2, 0xa3, 0xfa, 0xcf, 0x07, 0x76, 0x1b, ++ 0xf3, 0x0d, 0x5b, 0x1e, 0xe2, 0xf9, 0x86, 0x57, 0x77, 0x92, 0xfc, 0xbe, ++ 0xf9, 0x86, 0xc7, 0xe0, 0x1f, 0xa0, 0x6f, 0xd2, 0xa3, 0xf2, 0x35, 0x37, ++ 0x24, 0xf3, 0xfc, 0xee, 0x60, 0x51, 0x71, 0x8c, 0x78, 0x7e, 0xef, 0xb9, ++ 0x9f, 0xcd, 0xdf, 0xac, 0x81, 0x3c, 0xf9, 0xae, 0xad, 0xc7, 0xd7, 0xc0, ++ 0xfc, 0xab, 0xff, 0xf6, 0xf5, 0x1a, 0xc8, 0x6f, 0x22, 0xbb, 0xad, 0xa8, ++ 0xa7, 0xbc, 0x2f, 0xfd, 0x0e, 0xf3, 0x8a, 0xb5, 0xf7, 0x16, 0xa7, 0x33, ++ 0x7a, 0xeb, 0xde, 0xf8, 0x22, 0xe6, 0x65, 0x77, 0x7f, 0x6a, 0x46, 0x7f, ++ 0xa7, 0x7b, 0x57, 0x67, 0x0e, 0xe4, 0xb7, 0x75, 0x6f, 0xf9, 0x3e, 0x0d, ++ 0xe2, 0x73, 0x0b, 0x77, 0x5d, 0x8e, 0xf1, 0xcb, 0x85, 0xdb, 0x26, 0xa5, ++ 0x93, 0x18, 0xf2, 0x5e, 0x2b, 0x81, 0x3e, 0x03, 0xe7, 0x90, 0x17, 0x1e, ++ 0x8d, 0x8f, 0x7d, 0xad, 0xfb, 0x30, 0x0f, 0xeb, 0xab, 0x4f, 0xcc, 0x28, ++ 0xdf, 0x7a, 0xf3, 0x47, 0x5b, 0x6a, 0x58, 0x5e, 0xae, 0xca, 0xf3, 0x46, ++ 0x37, 0xc5, 0xce, 0xc3, 0xd7, 0xf2, 0x1c, 0x6b, 0x5b, 0xaf, 0xbb, 0xe6, ++ 0x52, 0x90, 0xd7, 0xad, 0xcc, 0xbe, 0xeb, 0xcd, 0x7b, 0x3c, 0x5b, 0xbe, ++ 0xe8, 0x87, 0x14, 0xaf, 0x17, 0x9d, 0x03, 0xfe, 0x36, 0xf1, 0xbc, 0xe0, ++ 0x96, 0xab, 0x63, 0xe6, 0x8b, 0x7e, 0x05, 0xff, 0xa0, 0x78, 0xfa, 0x79, ++ 0xba, 0x31, 0x5f, 0xf4, 0x9b, 0xd6, 0x05, 0x3f, 0x7f, 0x16, 0xda, 0x5a, ++ 0x93, 0xfb, 0xcd, 0x17, 0x0d, 0x9e, 0x03, 0xdc, 0xb4, 0x3c, 0xff, 0xea, ++ 0x74, 0xf7, 0x4b, 0xe9, 0xc0, 0x47, 0x5b, 0xe3, 0x7d, 0x19, 0x0c, 0x6f, ++ 0x81, 0x69, 0x02, 0xd8, 0x81, 0xdf, 0xe4, 0xc0, 0xf9, 0x88, 0xa3, 0x72, ++ 0x18, 0xf3, 0x40, 0xc2, 0xbb, 0xcc, 0x4e, 0xc8, 0x7b, 0xac, 0xdc, 0xf5, ++ 0x31, 0xf2, 0x4b, 0xf7, 0xb6, 0x0f, 0x30, 0xde, 0x4a, 0x78, 0x9e, 0x7d, ++ 0x37, 0xe9, 0xfd, 0x63, 0xf9, 0xd0, 0x02, 0x5f, 0x67, 0xb3, 0x9d, 0xe5, ++ 0x99, 0x72, 0xf8, 0x43, 0x1e, 0xaa, 0xea, 0xc0, 0xe7, 0x3c, 0xdf, 0x94, ++ 0xd1, 0xb1, 0x96, 0x87, 0xda, 0x5f, 0xfe, 0x69, 0x28, 0x9d, 0x9f, 0x1f, ++ 0xe6, 0xe7, 0x0e, 0x6a, 0xa8, 0xdf, 0xc4, 0xf2, 0xd4, 0x23, 0x79, 0xa9, ++ 0xc2, 0x58, 0xc0, 0xd7, 0x41, 0x43, 0x5e, 0xaf, 0xb6, 0xee, 0xe8, 0xf1, ++ 0x9c, 0x5c, 0x8e, 0x46, 0xf2, 0xaa, 0x63, 0xe7, 0xf9, 0x6a, 0x79, 0x84, ++ 0x7d, 0xf1, 0xc5, 0xf4, 0x8a, 0x96, 0x37, 0xdd, 0xbd, 0x96, 0xe7, 0x5b, ++ 0xd3, 0xe7, 0xd9, 0xa3, 0x20, 0x4f, 0x8e, 0xe9, 0x73, 0x6f, 0x40, 0xf8, ++ 0x38, 0x16, 0x7e, 0xb5, 0xbc, 0xea, 0x3f, 0x44, 0xe1, 0x57, 0x5b, 0x5f, ++ 0x7f, 0x7c, 0xa1, 0xf1, 0xe7, 0xd9, 0xe6, 0xfd, 0x5f, 0x85, 0xcb, 0xbb, ++ 0xe9, 0x2c, 0x9e, 0xad, 0xc1, 0xa7, 0xeb, 0x2f, 0xb1, 0xe5, 0xf4, 0xb7, ++ 0x9c, 0xdf, 0xa9, 0xdf, 0xfa, 0x4d, 0xba, 0xce, 0xbf, 0x9d, 0xc3, 0xfd, ++ 0x56, 0x0d, 0x6e, 0xda, 0x7c, 0x97, 0xb6, 0x30, 0xbb, 0xa2, 0x6b, 0x03, ++ 0xf3, 0x1f, 0xa2, 0xf9, 0x9b, 0xae, 0xc7, 0x1d, 0x2b, 0xcf, 0x5e, 0xca, ++ 0x60, 0xf6, 0x6f, 0x6d, 0xdb, 0x9e, 0x7c, 0x90, 0x43, 0x5d, 0x7b, 0xb7, ++ 0x73, 0xba, 0x63, 0x74, 0x5d, 0xbb, 0xe9, 0x20, 0xcb, 0xd3, 0xa5, 0x72, ++ 0x3b, 0xa0, 0x97, 0xdb, 0x84, 0xc5, 0x91, 0xa3, 0xc7, 0x73, 0xf0, 0xf1, ++ 0xbc, 0xed, 0xb1, 0xc7, 0xf3, 0x6e, 0x3a, 0x11, 0x73, 0xbc, 0x63, 0x92, ++ 0xfb, 0x26, 0x98, 0xff, 0xb1, 0x0e, 0x66, 0x47, 0x1d, 0x6b, 0x11, 0xa7, ++ 0x06, 0x62, 0x8c, 0x7f, 0x9a, 0xeb, 0xa5, 0xde, 0x75, 0xdb, 0x15, 0xcc, ++ 0x97, 0x12, 0x1d, 0x71, 0x68, 0x4f, 0x2d, 0xb4, 0x8f, 0xfd, 0x24, 0x21, ++ 0x05, 0x4a, 0x05, 0xf3, 0x7e, 0x1a, 0x16, 0xf3, 0x3c, 0xa1, 0xfb, 0x5c, ++ 0x19, 0x00, 0xe7, 0x06, 0xfb, 0x95, 0x04, 0xe6, 0xf3, 0x00, 0xc0, 0x47, ++ 0x17, 0x7f, 0x90, 0x9d, 0x1e, 0x02, 0x76, 0x9c, 0x9c, 0x51, 0x5c, 0x28, ++ 0xaa, 0x91, 0xf9, 0x6a, 0xed, 0x4a, 0x8a, 0x89, 0x04, 0xf4, 0xf8, 0x97, ++ 0x82, 0xd9, 0x20, 0xdf, 0x0f, 0x14, 0x74, 0xca, 0x30, 0xde, 0x67, 0x51, ++ 0x71, 0x93, 0xcf, 0x24, 0xb2, 0x34, 0x9d, 0xce, 0xeb, 0x33, 0x9f, 0xe0, ++ 0x5a, 0xac, 0xf6, 0x6f, 0x77, 0x6b, 0x75, 0xcf, 0xbd, 0xa2, 0x21, 0xce, ++ 0x51, 0x6b, 0x0e, 0x1f, 0x00, 0xfb, 0x9d, 0xbc, 0x6e, 0xc5, 0xb8, 0xb5, ++ 0xb8, 0xdb, 0xea, 0xc3, 0xb8, 0xd9, 0x1a, 0x2b, 0xae, 0x73, 0xdf, 0xb6, ++ 0xef, 0x5e, 0x00, 0x78, 0x75, 0xff, 0xdc, 0x4c, 0xd8, 0x3e, 0x02, 0x25, ++ 0x0c, 0x2a, 0x17, 0xca, 0x78, 0xfc, 0xa2, 0x73, 0xdb, 0x77, 0x6b, 0xfe, ++ 0x0c, 0x76, 0x26, 0xbc, 0x4c, 0xbf, 0x5f, 0xb6, 0x86, 0xf6, 0x07, 0xfb, ++ 0x7a, 0x53, 0x3c, 0xfa, 0x03, 0x3d, 0x5b, 0x13, 0xf2, 0xd1, 0x9e, 0x7c, ++ 0xfd, 0x9e, 0xe9, 0x20, 0x37, 0xca, 0x40, 0x87, 0x81, 0x9d, 0xf7, 0x4a, ++ 0x7a, 0xa0, 0x81, 0x8e, 0x77, 0x24, 0x95, 0xd5, 0x8f, 0x6c, 0x1e, 0x88, ++ 0xe7, 0x09, 0xaa, 0xb6, 0xda, 0x31, 0xdf, 0x70, 0xdf, 0xb6, 0xd7, 0x6a, ++ 0x41, 0xfe, 0x77, 0xbf, 0x12, 0x0f, 0xdb, 0xd1, 0xe4, 0x2b, 0x39, 0xf4, ++ 0x37, 0xa8, 0x7b, 0x77, 0x26, 0x90, 0xb5, 0x2a, 0xda, 0x81, 0xaa, 0x5e, ++ 0xdf, 0x56, 0x10, 0x49, 0xd5, 0xdb, 0x79, 0x55, 0x50, 0x37, 0xe4, 0xbf, ++ 0x10, 0xf4, 0xd3, 0x31, 0x1e, 0x47, 0xe9, 0xb9, 0xaa, 0x2d, 0x01, 0xcf, ++ 0x8f, 0xe8, 0xfa, 0x71, 0x7e, 0xf6, 0x65, 0xb1, 0xf3, 0x32, 0xc1, 0x2c, ++ 0xe0, 0x3b, 0x6a, 0x4f, 0x1a, 0xbe, 0xa3, 0xb5, 0x5f, 0x9f, 0x31, 0x98, ++ 0x9f, 0xef, 0x0d, 0xff, 0x84, 0xdd, 0xaf, 0xc0, 0xfa, 0x7b, 0x95, 0x70, ++ 0x29, 0xab, 0xfb, 0xb3, 0x18, 0xdf, 0x76, 0x60, 0xff, 0x12, 0x8d, 0x5e, ++ 0x79, 0x7b, 0xdf, 0x71, 0x59, 0xff, 0x39, 0x19, 0x83, 0x0d, 0xfd, 0xb4, ++ 0xf7, 0x6b, 0xcd, 0xa4, 0x2e, 0x16, 0x1f, 0x54, 0x67, 0x08, 0xfc, 0x7c, ++ 0xef, 0x5f, 0x87, 0xc5, 0xba, 0xcf, 0x22, 0xc6, 0xfc, 0xf1, 0xf9, 0x5d, ++ 0x02, 0xf1, 0x99, 0xc0, 0x0e, 0xd8, 0x62, 0x0d, 0x40, 0x5c, 0xa3, 0x5a, ++ 0x09, 0x0e, 0x85, 0xfc, 0xf6, 0x57, 0x15, 0xb6, 0x3f, 0x52, 0xed, 0x08, ++ 0x0e, 0x85, 0xfc, 0xf6, 0x9d, 0x5c, 0xfe, 0x55, 0xc7, 0xd1, 0x3a, 0x7d, ++ 0x9e, 0xc5, 0xe7, 0x01, 0xfd, 0xa1, 0x4e, 0x2c, 0xa1, 0x97, 0x01, 0xdf, ++ 0x35, 0xaf, 0x59, 0x09, 0xe4, 0x27, 0xd5, 0xbc, 0x6e, 0x77, 0x03, 0x9e, ++ 0x6b, 0x5e, 0xfd, 0xee, 0xc8, 0x73, 0x85, 0x90, 0xcf, 0x16, 0x8f, 0x71, ++ 0xab, 0x9a, 0xd7, 0xff, 0x1d, 0xf1, 0x5f, 0x63, 0x0e, 0xce, 0x06, 0xfa, ++ 0x0f, 0x6f, 0x31, 0x93, 0x75, 0xb4, 0x7f, 0xd7, 0x96, 0xb7, 0x73, 0xc0, ++ 0x8e, 0xe8, 0x92, 0x83, 0x39, 0x49, 0x67, 0xd8, 0xf7, 0xa9, 0x69, 0x31, ++ 0x1b, 0xf6, 0xb1, 0xb5, 0x75, 0x1c, 0xab, 0x0f, 0x9c, 0x07, 0xe7, 0xd7, ++ 0xb5, 0x73, 0x8b, 0x95, 0xfd, 0xc8, 0x8b, 0x5d, 0x19, 0xcc, 0x1e, 0x5d, ++ 0x91, 0xe1, 0x7e, 0x3c, 0x03, 0xf9, 0xda, 0xe6, 0x44, 0x79, 0x0d, 0xe3, ++ 0x89, 0x30, 0x4e, 0xdb, 0x10, 0xfd, 0xb9, 0xe6, 0x4a, 0x35, 0xb6, 0x1c, ++ 0x6b, 0xca, 0x90, 0x0d, 0xe7, 0x68, 0xc5, 0xc8, 0x39, 0xc5, 0x26, 0x18, ++ 0xf7, 0x2b, 0x12, 0x5a, 0x9a, 0x45, 0x51, 0x52, 0x23, 0x84, 0x71, 0xff, ++ 0xbc, 0x72, 0xc3, 0x89, 0x91, 0xe0, 0x0f, 0x7f, 0xf6, 0xb3, 0x0b, 0x71, ++ 0x5f, 0xeb, 0x33, 0x25, 0x3c, 0x12, 0xe4, 0xf6, 0x67, 0x39, 0xe1, 0x91, ++ 0x7a, 0x79, 0x7c, 0xb4, 0xde, 0xa2, 0x4a, 0x32, 0xc6, 0x25, 0xb0, 0xec, ++ 0x59, 0x7b, 0xa2, 0x34, 0x8b, 0x40, 0xfe, 0xa0, 0x75, 0x66, 0x2c, 0xf9, ++ 0xb4, 0x39, 0x23, 0x1e, 0xe7, 0x51, 0x79, 0x6f, 0x7c, 0xcc, 0xf3, 0xa0, ++ 0x3b, 0x38, 0xbd, 0xad, 0x06, 0x1a, 0x4c, 0x65, 0xdf, 0x85, 0x38, 0x84, ++ 0xf6, 0xdd, 0xcf, 0x94, 0x80, 0x02, 0xf3, 0xc8, 0xcb, 0x54, 0xb1, 0xbd, ++ 0x32, 0x3b, 0xa0, 0xc0, 0xf3, 0xaa, 0x0d, 0xdb, 0x87, 0x18, 0xee, 0x9d, ++ 0x90, 0xfc, 0xd8, 0x8f, 0xf2, 0x17, 0xc2, 0xa3, 0x82, 0xac, 0x54, 0x0a, ++ 0x6d, 0x7d, 0xe5, 0x4a, 0xc5, 0x22, 0x9b, 0x2a, 0xe1, 0xf9, 0x68, 0xe9, ++ 0x3f, 0x7b, 0xe9, 0x4d, 0x8c, 0xe0, 0x09, 0x83, 0x9c, 0x90, 0xa7, 0xc6, ++ 0x71, 0x48, 0x35, 0x13, 0xc6, 0x41, 0xb5, 0xf3, 0x00, 0x92, 0x5c, 0x6c, ++ 0x01, 0x78, 0x29, 0xa4, 0xd8, 0x29, 0x89, 0x80, 0x6a, 0x3f, 0xf2, 0x69, ++ 0x1c, 0x69, 0xc1, 0xd2, 0x46, 0xcd, 0x11, 0xa6, 0x87, 0xea, 0x08, 0xe4, ++ 0x15, 0x1d, 0xe5, 0xfb, 0xb7, 0x66, 0x49, 0x7d, 0x1c, 0xe4, 0x87, 0x79, ++ 0xbf, 0x88, 0xf2, 0xfc, 0x6c, 0x70, 0xfb, 0x55, 0x86, 0x03, 0xe7, 0x6d, ++ 0x96, 0xea, 0x88, 0x0b, 0xed, 0x8e, 0x69, 0x4e, 0xb0, 0xab, 0x05, 0x9f, ++ 0x87, 0xfc, 0x40, 0xe9, 0xa1, 0xa1, 0x7e, 0xc3, 0x90, 0xc3, 0x6c, 0xff, ++ 0xdf, 0x0d, 0xf9, 0x70, 0x0e, 0xc2, 0xe6, 0xe7, 0x70, 0xbe, 0xf5, 0x3d, ++ 0xd8, 0x07, 0x94, 0xce, 0xd0, 0xcf, 0xf6, 0x5d, 0x46, 0x02, 0x0d, 0xf4, ++ 0x7b, 0x92, 0xc2, 0xea, 0x64, 0x22, 0x09, 0xc4, 0xda, 0x8f, 0xef, 0xe2, ++ 0x78, 0x20, 0xbe, 0x3d, 0x28, 0x7f, 0x6c, 0x24, 0xf2, 0x17, 0xa6, 0xf5, ++ 0x78, 0x94, 0x50, 0xf4, 0xbb, 0x09, 0x7f, 0x1b, 0x0b, 0x7e, 0xae, 0xcd, ++ 0x49, 0x82, 0x60, 0x37, 0xc5, 0xdb, 0x48, 0x30, 0x9e, 0x96, 0xb6, 0x3c, ++ 0xe9, 0x98, 0x9e, 0x7f, 0x1d, 0x84, 0xd5, 0x07, 0x53, 0x72, 0x06, 0xb9, ++ 0xe6, 0xbc, 0xc4, 0xd8, 0x1e, 0x4d, 0xd7, 0xc4, 0x25, 0x9d, 0xea, 0x95, ++ 0x8b, 0x22, 0xbe, 0x7f, 0x2a, 0xea, 0xfd, 0x53, 0x67, 0x7a, 0x5f, 0x83, ++ 0x87, 0xd7, 0x32, 0x24, 0x97, 0x9d, 0x7f, 0x67, 0x70, 0x89, 0xe3, 0x6b, ++ 0xf0, 0x4d, 0x74, 0x9d, 0x0e, 0x01, 0x3c, 0xf2, 0x1d, 0xae, 0x06, 0xc0, ++ 0xa3, 0x12, 0x3e, 0x70, 0x0f, 0xc0, 0x23, 0xdf, 0xc6, 0xfc, 0xc4, 0x94, ++ 0x46, 0xa2, 0xf7, 0xe3, 0x86, 0x64, 0x32, 0x79, 0x75, 0xbf, 0xc0, 0xf4, ++ 0x25, 0xfd, 0x2b, 0xb6, 0xe9, 0xc6, 0x23, 0x4e, 0x0b, 0xc6, 0x4f, 0x1f, ++ 0xe2, 0x70, 0xef, 0xed, 0xaf, 0xc5, 0x55, 0xfa, 0xf4, 0xb7, 0x4a, 0x00, ++ 0xd7, 0x3e, 0xfd, 0xad, 0xfd, 0xf5, 0x8f, 0x8b, 0xdd, 0xdf, 0xde, 0xdf, ++ 0x7c, 0xe2, 0x63, 0xcf, 0x27, 0xb1, 0x9f, 0xf1, 0x7d, 0xb1, 0xfb, 0xd7, ++ 0xbe, 0xfe, 0xf1, 0x7b, 0x41, 0x15, 0x1e, 0x32, 0xb9, 0x21, 0x11, 0x93, ++ 0x76, 0x0e, 0x7a, 0x48, 0x26, 0xf8, 0x5b, 0x09, 0x07, 0xd2, 0x4a, 0x18, ++ 0x55, 0xb0, 0x7d, 0x82, 0x28, 0xbc, 0xc5, 0x01, 0xfd, 0x51, 0x7a, 0x88, ++ 0x3b, 0x4f, 0xf7, 0x1c, 0xfe, 0x2f, 0x4f, 0x87, 0xbf, 0xc1, 0x31, 0xf0, ++ 0x4f, 0x82, 0x48, 0x77, 0x25, 0x7c, 0x3e, 0xb4, 0x6e, 0xcb, 0xa4, 0xf3, ++ 0xbb, 0x99, 0x4f, 0x77, 0x72, 0x33, 0xdb, 0xc7, 0xbc, 0x75, 0x21, 0x8b, ++ 0x23, 0xdd, 0x7c, 0x2f, 0x3b, 0x2f, 0x74, 0xf0, 0x67, 0xec, 0xdc, 0xfe, ++ 0xad, 0x8d, 0xcc, 0xdf, 0xbe, 0x75, 0x11, 0xdb, 0x37, 0x23, 0xe5, 0xec, ++ 0x1c, 0x90, 0x93, 0xfe, 0x07, 0xdf, 0xbb, 0x0d, 0x06, 0xa1, 0xf8, 0xbe, ++ 0xcd, 0x2f, 0x04, 0x82, 0xb9, 0x70, 0x0f, 0x4e, 0x94, 0xfd, 0xda, 0x7b, ++ 0xdf, 0xce, 0x5d, 0x12, 0xf4, 0x2f, 0x89, 0x8a, 0xc7, 0x68, 0xf4, 0xa4, ++ 0x9d, 0x5b, 0x9a, 0xc7, 0xed, 0xeb, 0x5c, 0x4e, 0x9f, 0x0b, 0x48, 0xd8, ++ 0x0e, 0x7c, 0x1f, 0x7d, 0x8e, 0xbe, 0x35, 0x83, 0xe5, 0xa5, 0x51, 0x77, ++ 0xcc, 0x0d, 0xeb, 0xbb, 0x85, 0xaf, 0x4f, 0xd3, 0x03, 0xbe, 0x15, 0x64, ++ 0x38, 0xdc, 0x0b, 0x20, 0x9a, 0xe2, 0x5c, 0xb0, 0x3f, 0x22, 0xf2, 0x73, ++ 0xab, 0xc4, 0xa1, 0xb0, 0xbc, 0xe5, 0xeb, 0x93, 0x0c, 0xf2, 0xe7, 0xe4, ++ 0x70, 0x35, 0x01, 0xf4, 0x1d, 0x79, 0x83, 0x3f, 0xe7, 0xf7, 0x11, 0xdd, ++ 0x71, 0x85, 0x9a, 0xae, 0x3f, 0xe7, 0x25, 0x9d, 0x8e, 0xc7, 0xfb, 0x47, ++ 0x1a, 0x64, 0x57, 0x06, 0xc8, 0x45, 0xf9, 0xf4, 0x55, 0x44, 0xa5, 0x7c, ++ 0xa1, 0x9c, 0x1e, 0x42, 0x54, 0xdd, 0x39, 0x34, 0x6a, 0xdf, 0x21, 0xb3, ++ 0xcb, 0x4e, 0x82, 0x71, 0x1c, 0xc9, 0x59, 0x4c, 0xca, 0xc0, 0x2e, 0x4c, ++ 0xe4, 0x74, 0x96, 0x72, 0x65, 0xaf, 0x1d, 0xf6, 0x3e, 0x85, 0xcb, 0x1d, ++ 0x2b, 0x54, 0x3c, 0x07, 0x7b, 0x53, 0x26, 0xd3, 0x2f, 0x0f, 0x67, 0x15, ++ 0x2f, 0x00, 0xba, 0x10, 0x1d, 0x63, 0x5d, 0x1e, 0x5b, 0x5f, 0xbc, 0xfa, ++ 0xb6, 0xb1, 0xf5, 0x35, 0xc0, 0xfa, 0x72, 0xfb, 0xce, 0xbb, 0x41, 0x71, ++ 0xb9, 0xd0, 0x0e, 0xbd, 0x92, 0x5a, 0x10, 0x18, 0xef, 0x71, 0x59, 0x60, ++ 0x3e, 0xa2, 0x59, 0xfd, 0x58, 0x05, 0xfe, 0xfc, 0x8d, 0x4c, 0xc0, 0xff, ++ 0xef, 0x0b, 0x07, 0x86, 0xcf, 0x93, 0x29, 0x49, 0x01, 0xc8, 0x7f, 0x99, ++ 0xef, 0x78, 0xf8, 0x00, 0xd0, 0xed, 0xf2, 0x7a, 0x27, 0xee, 0xa3, 0x2d, ++ 0xab, 0x1f, 0x8e, 0xe5, 0xc3, 0xf5, 0x19, 0x68, 0x87, 0x2e, 0xad, 0x77, ++ 0x61, 0xa9, 0xc1, 0xc5, 0xe2, 0xf2, 0xbb, 0x45, 0x0a, 0x67, 0xcb, 0x79, ++ 0x6c, 0x3c, 0x8b, 0xd3, 0xc3, 0xec, 0x0c, 0xaa, 0x87, 0x20, 0xff, 0x42, ++ 0x72, 0xd6, 0x05, 0xa1, 0x6e, 0xc9, 0xae, 0x23, 0x60, 0xff, 0x5a, 0x7b, ++ 0xe1, 0xe3, 0x47, 0xf8, 0x28, 0xbd, 0x75, 0x0f, 0xd6, 0xcd, 0x50, 0xa7, ++ 0xa5, 0xdc, 0x38, 0x0d, 0xe1, 0x4b, 0xdf, 0x27, 0x65, 0x10, 0x47, 0xcd, ++ 0xf2, 0x2c, 0x07, 0xf8, 0x58, 0xd5, 0x0b, 0x88, 0xaa, 0xa3, 0x0b, 0x73, ++ 0xc6, 0x28, 0x43, 0xbd, 0x0f, 0xdc, 0x34, 0xfa, 0xd8, 0xcc, 0xe0, 0xf7, ++ 0xa8, 0xc0, 0xe8, 0x23, 0x1a, 0x7e, 0x8f, 0xca, 0x1d, 0x2a, 0xec, 0x3f, ++ 0x3f, 0x7a, 0x45, 0xef, 0xbd, 0x36, 0x08, 0x3f, 0x6a, 0xee, 0x33, 0xf8, ++ 0xfd, 0x9a, 0xed, 0xcf, 0xf5, 0x0b, 0x3f, 0x67, 0x12, 0xda, 0xb3, 0xf3, ++ 0x8b, 0x96, 0xce, 0x6e, 0xa0, 0x8f, 0x1e, 0xe1, 0xfb, 0x90, 0x0f, 0xd6, ++ 0x8f, 0x45, 0x78, 0x3d, 0x04, 0x79, 0x5d, 0xc3, 0xc0, 0x3f, 0x70, 0x63, ++ 0x29, 0x02, 0xfc, 0x28, 0x1d, 0x99, 0xf3, 0x7c, 0x44, 0xa4, 0xef, 0x9b, ++ 0x55, 0x36, 0x67, 0xb3, 0xad, 0xd8, 0x6d, 0x2a, 0x64, 0xb4, 0x0b, 0xf0, ++ 0x13, 0x6d, 0x0c, 0x9e, 0xe6, 0x8c, 0x3a, 0xdc, 0x8f, 0xb3, 0xd8, 0x18, ++ 0xbc, 0x44, 0x9b, 0x0f, 0xe1, 0x22, 0xdb, 0x18, 0xbc, 0x44, 0x1b, 0xa3, ++ 0x37, 0x85, 0xd7, 0x25, 0x80, 0xdf, 0x68, 0x7c, 0x1f, 0x9f, 0x53, 0xf8, ++ 0xb5, 0x66, 0x8e, 0x01, 0x3c, 0x8c, 0x37, 0xc0, 0x4b, 0x49, 0x99, 0x78, ++ 0x6e, 0xf0, 0x5b, 0x45, 0xe1, 0x47, 0xe7, 0x91, 0xc2, 0xf9, 0x2b, 0x1a, ++ 0x0e, 0x29, 0x70, 0x4e, 0x21, 0x2f, 0xc2, 0x57, 0xfd, 0xd9, 0x75, 0x4f, ++ 0xd1, 0xf5, 0x83, 0x1e, 0x7f, 0x86, 0xc2, 0x07, 0xca, 0xd4, 0x7e, 0xfc, ++ 0xc7, 0xd4, 0x2c, 0x26, 0x47, 0x53, 0x4c, 0x75, 0x7b, 0x64, 0x80, 0x47, ++ 0x12, 0xe1, 0xfa, 0xc5, 0x47, 0xb2, 0x8b, 0x08, 0x4b, 0x55, 0x84, 0xbf, ++ 0x0c, 0x1f, 0x51, 0xa1, 0x2e, 0xb0, 0x79, 0x90, 0x66, 0x23, 0x5e, 0x45, ++ 0xa7, 0x14, 0x75, 0xef, 0x9b, 0xfa, 0x0c, 0xd0, 0xc1, 0xca, 0xb7, 0x65, ++ 0x13, 0xec, 0x93, 0x8a, 0x8b, 0xae, 0x32, 0x9c, 0x27, 0x15, 0x67, 0xba, ++ 0x13, 0x55, 0x84, 0xa7, 0x47, 0x00, 0xfd, 0xfc, 0x48, 0xbd, 0x8a, 0xf8, ++ 0x5b, 0x01, 0x78, 0x1c, 0x06, 0xfa, 0x91, 0xf9, 0x63, 0x0f, 0x70, 0x7c, ++ 0x3e, 0x08, 0x7c, 0x82, 0xf8, 0x65, 0xfc, 0xf1, 0x28, 0xe7, 0x97, 0xc7, ++ 0x39, 0x9f, 0x34, 0xb8, 0xd8, 0xf9, 0x89, 0xe5, 0x53, 0x59, 0x5e, 0x56, ++ 0x4a, 0x81, 0x89, 0xdf, 0x87, 0x16, 0x24, 0xfa, 0xbc, 0xa7, 0x44, 0x57, ++ 0x0b, 0x51, 0xe8, 0xbc, 0xd0, 0xc6, 0x56, 0xb1, 0x0c, 0xa2, 0x9d, 0xf1, ++ 0x89, 0x39, 0x70, 0x3e, 0x7d, 0x2f, 0x3e, 0x8f, 0xb8, 0x81, 0x4e, 0x12, ++ 0x3f, 0xb9, 0x3b, 0x80, 0x6b, 0x25, 0xc5, 0x99, 0x60, 0x17, 0x25, 0x72, ++ 0xfb, 0x97, 0x5c, 0xa2, 0x26, 0xce, 0xc2, 0x83, 0xb4, 0x41, 0x89, 0xf9, ++ 0x21, 0x54, 0x14, 0xa2, 0x5f, 0xd3, 0x61, 0x8a, 0x75, 0x0f, 0x56, 0x83, ++ 0x6b, 0xaf, 0x05, 0xe2, 0xa6, 0xfd, 0xcd, 0x67, 0xcf, 0x8c, 0x57, 0x91, ++ 0x2e, 0x4b, 0x2f, 0xc2, 0xf4, 0x60, 0x92, 0xec, 0x29, 0x9e, 0xb5, 0x80, ++ 0xd6, 0x6d, 0x8d, 0xf1, 0x18, 0x1f, 0x8c, 0x77, 0x79, 0x8a, 0x1e, 0x00, ++ 0x3e, 0x6f, 0xb4, 0x23, 0x9d, 0xda, 0xe8, 0xfc, 0xcb, 0x74, 0x78, 0x8f, ++ 0xef, 0x07, 0xaf, 0xcf, 0x66, 0x5d, 0x61, 0xca, 0xa2, 0x74, 0x28, 0x82, ++ 0xd1, 0x46, 0xf1, 0xfb, 0x44, 0xe3, 0x10, 0x2b, 0xc0, 0xf9, 0x29, 0xb9, ++ 0x38, 0x13, 0xe4, 0xeb, 0x53, 0x5c, 0xcf, 0x52, 0x1c, 0xa8, 0xfa, 0x7d, ++ 0xa8, 0x2e, 0x2e, 0x27, 0x1d, 0x85, 0x17, 0x18, 0xfc, 0xd9, 0x95, 0xb2, ++ 0x1b, 0xdf, 0x73, 0x5e, 0x62, 0x94, 0x03, 0x2b, 0xb9, 0xdc, 0x4d, 0x9a, ++ 0x6c, 0xa4, 0x77, 0x4d, 0xee, 0x7e, 0xd4, 0x2b, 0x77, 0x3d, 0xa9, 0x30, ++ 0x9f, 0xb4, 0xd3, 0x93, 0x91, 0x1f, 0x53, 0xae, 0x8d, 0x2d, 0x7f, 0x1b, ++ 0x64, 0xc5, 0x07, 0xf7, 0x0a, 0x34, 0x8c, 0x64, 0xfc, 0xee, 0x2b, 0x51, ++ 0xd0, 0xfe, 0x8b, 0x21, 0x0f, 0x30, 0xae, 0x7d, 0xd2, 0x33, 0x74, 0x1d, ++ 0xc8, 0x53, 0x8d, 0xbe, 0x96, 0x10, 0x26, 0x7f, 0x7c, 0x24, 0xce, 0x85, ++ 0xfa, 0x88, 0xdf, 0xa3, 0xa3, 0xd9, 0xc7, 0xcb, 0xe0, 0xbe, 0x41, 0x2e, ++ 0x67, 0xa1, 0x14, 0xcf, 0x53, 0x90, 0x6e, 0xd2, 0x6e, 0x35, 0x61, 0x7e, ++ 0xde, 0x72, 0x7e, 0x5f, 0xd6, 0x63, 0x94, 0xbe, 0xa0, 0xf4, 0x53, 0xfa, ++ 0x82, 0xf2, 0xd2, 0x2c, 0xb6, 0x9f, 0xb1, 0xc4, 0x32, 0x0a, 0xef, 0x6d, ++ 0x6b, 0xb0, 0x99, 0x50, 0x5e, 0x48, 0x9f, 0x9a, 0x03, 0x36, 0xb0, 0x57, ++ 0xf7, 0x8c, 0x73, 0x42, 0x1c, 0x41, 0x92, 0x5d, 0x1d, 0x6e, 0x88, 0x07, ++ 0xda, 0xa5, 0x96, 0x75, 0x04, 0xfa, 0x15, 0x5a, 0xe0, 0x3e, 0x09, 0x21, ++ 0xb1, 0xd0, 0x09, 0x74, 0xf0, 0xad, 0x7d, 0xfe, 0xa0, 0x33, 0xe5, 0xe1, ++ 0x51, 0x74, 0x0a, 0x40, 0x47, 0xce, 0x94, 0x62, 0x72, 0x28, 0x0f, 0x77, ++ 0x0f, 0xf0, 0x5c, 0xb3, 0xec, 0xbc, 0x96, 0x40, 0x5c, 0xf1, 0x99, 0x94, ++ 0x3a, 0x2b, 0xc0, 0x2d, 0x2f, 0x8b, 0xf9, 0x5d, 0x8d, 0x25, 0x45, 0x08, ++ 0x47, 0x0a, 0xdf, 0x89, 0x59, 0xa9, 0x91, 0x71, 0xd2, 0x67, 0x5e, 0xd9, ++ 0x7b, 0xdf, 0x16, 0x0c, 0xfb, 0x4c, 0x3f, 0xe7, 0xa3, 0xa7, 0x67, 0x71, ++ 0x3b, 0x3a, 0xdb, 0x47, 0xce, 0xd3, 0xf1, 0x7b, 0xa3, 0xc0, 0xed, 0x30, ++ 0xd5, 0x47, 0x86, 0xeb, 0xf8, 0x7e, 0xc9, 0xf9, 0x53, 0x08, 0xec, 0x2b, ++ 0xf5, 0xe5, 0xf7, 0x7e, 0xe4, 0xd9, 0x7a, 0x26, 0xcf, 0xee, 0x17, 0x62, ++ 0xcb, 0x33, 0xcd, 0xfe, 0xd4, 0xe4, 0x99, 0x1c, 0x25, 0x27, 0xb4, 0x72, ++ 0xe9, 0xa0, 0xa9, 0x86, 0xf3, 0x5d, 0x4a, 0x8a, 0x0b, 0x68, 0x17, 0x4a, ++ 0x9f, 0x89, 0xa2, 0x48, 0xf2, 0x5d, 0xf4, 0xe8, 0x2d, 0x89, 0x08, 0x87, ++ 0x79, 0x00, 0x07, 0x92, 0x71, 0x65, 0xaf, 0x5f, 0xfb, 0xe3, 0xc1, 0x60, ++ 0x57, 0x16, 0xc5, 0xa4, 0xb7, 0x68, 0x39, 0x36, 0xbf, 0x57, 0xaf, 0xbb, ++ 0xd3, 0x00, 0x4f, 0x47, 0x65, 0x35, 0x7d, 0x16, 0xd0, 0xd3, 0xdb, 0xfd, ++ 0xe9, 0x75, 0x77, 0x29, 0xd2, 0xa1, 0x7f, 0x80, 0x0a, 0x7a, 0x69, 0xcf, ++ 0x13, 0x57, 0x61, 0x5c, 0xe7, 0xf0, 0x13, 0x76, 0x15, 0xe4, 0x50, 0xd9, ++ 0xe9, 0x87, 0x50, 0x3f, 0x94, 0x9e, 0x1e, 0x87, 0x65, 0x79, 0xe3, 0x15, ++ 0xa8, 0xcf, 0x85, 0x27, 0xaf, 0x2e, 0x02, 0x7a, 0xe8, 0x6c, 0xba, 0x3c, ++ 0xff, 0x53, 0x88, 0xf3, 0xf8, 0xed, 0xa8, 0xb7, 0x3b, 0x1b, 0x27, 0x0d, ++ 0xc5, 0xfd, 0x48, 0x7f, 0xbc, 0x0a, 0xf9, 0x1d, 0x9d, 0x8d, 0xb4, 0xbd, ++ 0x30, 0xd2, 0x0e, 0xf9, 0xe2, 0xa2, 0x2e, 0x5f, 0x80, 0x40, 0xf4, 0x5d, ++ 0x77, 0xfe, 0x9b, 0x14, 0xaa, 0x68, 0x97, 0x6a, 0xf7, 0x9e, 0x51, 0xbf, ++ 0xce, 0x31, 0x1e, 0xe2, 0x42, 0xab, 0x45, 0x3c, 0xd7, 0x54, 0xfa, 0xa4, ++ 0xdd, 0x0d, 0xf6, 0x67, 0x7f, 0xf4, 0x57, 0xda, 0x14, 0x3b, 0x1e, 0x00, ++ 0xba, 0x16, 0xe2, 0xae, 0xf4, 0x83, 0xc3, 0xc1, 0x8e, 0xde, 0xe3, 0x18, ++ 0x1f, 0x0e, 0xd2, 0x71, 0xe7, 0xaf, 0x63, 0xfb, 0x08, 0x0d, 0x8a, 0xfb, ++ 0x48, 0x10, 0xec, 0xa6, 0x27, 0xac, 0xb8, 0x0f, 0xd9, 0x90, 0x14, 0xfb, ++ 0x5e, 0x90, 0x05, 0x59, 0x97, 0x2f, 0x07, 0x39, 0xb0, 0x20, 0xcb, 0xfd, ++ 0x14, 0xe2, 0xc9, 0xc6, 0xee, 0x29, 0xed, 0x9f, 0x1f, 0xd8, 0xf7, 0x8f, ++ 0xc0, 0x26, 0x33, 0xec, 0x63, 0x3d, 0xcb, 0xef, 0x47, 0x91, 0x3c, 0x8e, ++ 0x19, 0x86, 0x7d, 0x36, 0xb6, 0x8f, 0x75, 0x84, 0xc7, 0x59, 0x88, 0xa5, ++ 0x9f, 0xf6, 0x38, 0xde, 0xae, 0xf6, 0xd3, 0xee, 0x60, 0xf9, 0x22, 0xc4, ++ 0x19, 0xbb, 0x5d, 0xf3, 0x33, 0xe2, 0x23, 0x7e, 0x46, 0x0b, 0xac, 0xa3, ++ 0xa6, 0xf1, 0xf8, 0xd2, 0x4f, 0x11, 0x5e, 0xdc, 0xcf, 0xe0, 0xf3, 0x3e, ++ 0x2a, 0xb3, 0x79, 0x1f, 0x7d, 0xc1, 0x1c, 0x58, 0x12, 0x83, 0xfe, 0x8f, ++ 0xf2, 0xfc, 0x94, 0x0a, 0x81, 0xc1, 0x57, 0xe3, 0x83, 0xa3, 0xbd, 0xf6, ++ 0x91, 0x07, 0xef, 0xc3, 0x89, 0xa6, 0x53, 0x61, 0xdd, 0x88, 0x67, 0xc6, ++ 0xd1, 0x71, 0xbf, 0xde, 0x2f, 0xa3, 0xde, 0xa8, 0xa6, 0xf4, 0x85, 0x74, ++ 0xb5, 0x6e, 0x1c, 0xe6, 0xc7, 0x0b, 0x4f, 0x8c, 0x7b, 0x1c, 0xf2, 0x86, ++ 0x4f, 0xbd, 0x23, 0x62, 0x7b, 0xe5, 0x69, 0x2b, 0xb6, 0x77, 0xdd, 0xe7, ++ 0x7a, 0x06, 0xf2, 0x9e, 0xc2, 0xef, 0xca, 0x04, 0xe4, 0xd3, 0xa9, 0xfd, ++ 0x97, 0x27, 0xb0, 0x38, 0x91, 0x31, 0x8e, 0x7d, 0xdb, 0x00, 0x26, 0x17, ++ 0x0e, 0x71, 0xf9, 0x50, 0x7a, 0xfa, 0x11, 0xa4, 0xdf, 0x5e, 0x3a, 0xf1, ++ 0x2f, 0x50, 0x80, 0xff, 0x4a, 0x4f, 0x3f, 0xc6, 0xe8, 0x7b, 0x83, 0x80, ++ 0xf7, 0x56, 0x12, 0x5f, 0xf5, 0xbb, 0x13, 0xce, 0xe3, 0xf4, 0x39, 0x1e, ++ 0xde, 0xaf, 0xb8, 0x7a, 0x09, 0xc0, 0xfb, 0x12, 0x3f, 0xee, 0x93, 0x94, ++ 0xad, 0x37, 0xbb, 0xc0, 0x1e, 0x88, 0xc6, 0xf3, 0xa1, 0x2c, 0xd5, 0x10, ++ 0xf7, 0x28, 0x0b, 0x2d, 0xc7, 0x71, 0x09, 0xb5, 0xbf, 0x52, 0x74, 0xfb, ++ 0xe9, 0x47, 0x79, 0x9e, 0x71, 0xd9, 0x69, 0x76, 0x5f, 0x21, 0x71, 0xfa, ++ 0x48, 0x06, 0xf0, 0x03, 0x97, 0x4f, 0x11, 0x3a, 0x36, 0xde, 0x43, 0xdb, ++ 0x65, 0x8d, 0x1d, 0xa7, 0x3f, 0xc9, 0xed, 0x9f, 0xd2, 0xd3, 0x17, 0x1b, ++ 0xfc, 0x8c, 0xc8, 0xfa, 0x2e, 0xc3, 0xe7, 0xa5, 0x5c, 0xff, 0x97, 0x85, ++ 0xc6, 0x61, 0x3d, 0xb2, 0x9e, 0x67, 0xc6, 0xc5, 0x5a, 0x4f, 0x64, 0x1d, ++ 0x97, 0x60, 0xff, 0xae, 0xc4, 0xd8, 0xdf, 0xcf, 0xe4, 0x70, 0x3e, 0x52, ++ 0x5f, 0x4e, 0xdc, 0x54, 0xbe, 0x95, 0x2b, 0xac, 0x5f, 0xa9, 0xff, 0x2e, ++ 0x05, 0xe4, 0x4e, 0x69, 0x53, 0x62, 0x92, 0xa0, 0x5b, 0x57, 0x59, 0x63, ++ 0x95, 0x21, 0xcf, 0xa3, 0xac, 0xa9, 0x44, 0x99, 0xab, 0x1b, 0x37, 0x82, ++ 0x87, 0xa5, 0xef, 0x4e, 0x90, 0x22, 0x78, 0xc8, 0x7c, 0x6e, 0xf1, 0xd5, ++ 0x4b, 0x6c, 0x60, 0x17, 0x14, 0xcb, 0x03, 0x80, 0x9f, 0xd6, 0x55, 0x14, ++ 0xfd, 0x54, 0x85, 0xf1, 0x98, 0x7c, 0xfa, 0x52, 0xf6, 0xe7, 0x80, 0xbc, ++ 0xee, 0x6c, 0xbc, 0xd3, 0x11, 0xeb, 0xdc, 0x44, 0xe6, 0x80, 0x28, 0xfc, ++ 0x34, 0x72, 0xfc, 0x50, 0xbb, 0xba, 0x50, 0x87, 0x1f, 0x0d, 0x2f, 0xd1, ++ 0xef, 0x1f, 0x59, 0x5b, 0x56, 0xf4, 0x53, 0x88, 0x47, 0xaf, 0x62, 0xb7, ++ 0x90, 0xf4, 0x2f, 0x7f, 0xa2, 0xf0, 0x96, 0x1b, 0x1b, 0x6e, 0xa3, 0x7a, ++ 0xe1, 0x36, 0x1c, 0xf3, 0x8d, 0xce, 0x0e, 0xb7, 0x0b, 0x0d, 0x79, 0x45, ++ 0x7d, 0xe0, 0xc6, 0xf1, 0xab, 0xc1, 0x45, 0x7b, 0x4e, 0xed, 0xa8, 0x0b, ++ 0x07, 0x8c, 0x81, 0xef, 0x11, 0x76, 0x7e, 0xa7, 0x91, 0xe1, 0xff, 0x6c, ++ 0xf0, 0x8a, 0x7c, 0x97, 0xe3, 0x7f, 0x42, 0xec, 0x75, 0xcc, 0xec, 0x5d, ++ 0xc7, 0x22, 0xe2, 0xa3, 0x8c, 0x3a, 0xff, 0xac, 0xeb, 0xb8, 0x87, 0xf8, ++ 0x2c, 0x67, 0x58, 0x87, 0x86, 0x7f, 0xf2, 0x82, 0x01, 0xff, 0x33, 0x9f, ++ 0x5b, 0x8b, 0x7c, 0xa8, 0xe1, 0x7b, 0xfe, 0xde, 0x55, 0x48, 0xbf, 0xf3, ++ 0x29, 0x3f, 0xc2, 0x7e, 0x7f, 0xa7, 0xff, 0x2e, 0x47, 0xac, 0xfc, 0xa2, ++ 0x99, 0xfd, 0xe1, 0xfd, 0x3c, 0x1f, 0xc9, 0x2b, 0xfa, 0xbf, 0x87, 0xf7, ++ 0x2f, 0x65, 0x5f, 0x0e, 0xe4, 0x95, 0xf9, 0x56, 0x58, 0xd1, 0x1f, 0x39, ++ 0xba, 0xee, 0x91, 0x1c, 0x3d, 0x9c, 0x17, 0x64, 0x4d, 0xb8, 0x0d, 0xf0, ++ 0x42, 0x9a, 0x53, 0xcf, 0x49, 0x7f, 0xf8, 0x26, 0xba, 0xf6, 0x83, 0x7f, ++ 0xe9, 0x7b, 0x42, 0xc6, 0x78, 0xda, 0x96, 0x2c, 0x4f, 0x19, 0xbc, 0x5f, ++ 0xce, 0xfd, 0xf0, 0xfb, 0x13, 0xa7, 0x0c, 0x8d, 0x65, 0x1f, 0x3c, 0x50, ++ 0xbf, 0x7f, 0x04, 0xc4, 0xe9, 0x1a, 0xea, 0x3b, 0xb0, 0x94, 0xb9, 0x7d, ++ 0x49, 0xc0, 0xbe, 0xcc, 0x45, 0x7b, 0xc9, 0x1d, 0xeb, 0x7e, 0xaf, 0x65, ++ 0x03, 0x98, 0x5c, 0x79, 0xa0, 0xbe, 0x83, 0xc5, 0x3d, 0x2d, 0x3e, 0xe2, ++ 0xd4, 0x9f, 0x27, 0x26, 0xcc, 0x7e, 0xfa, 0x4f, 0xc2, 0xe2, 0x35, 0xda, ++ 0x7b, 0x8a, 0xec, 0x71, 0x42, 0xfc, 0x54, 0xe1, 0xe7, 0x9d, 0x65, 0xc9, ++ 0xb3, 0x2c, 0xb7, 0x10, 0xe2, 0x1e, 0x29, 0x05, 0x3e, 0x1d, 0xfc, 0x96, ++ 0x0e, 0x60, 0xe7, 0x91, 0x96, 0x67, 0xec, 0x75, 0xc2, 0xb9, 0x62, 0x33, ++ 0x1d, 0x1f, 0xe2, 0x39, 0x96, 0x6c, 0xe9, 0xa4, 0x71, 0x9f, 0x93, 0xd5, ++ 0x0b, 0x84, 0x4f, 0x45, 0xc8, 0x6f, 0x96, 0x53, 0x5a, 0x08, 0xc6, 0x43, ++ 0xf3, 0xe8, 0x73, 0x1d, 0xbc, 0x95, 0x94, 0x0e, 0x43, 0x7c, 0x3a, 0x1a, ++ 0x0e, 0x92, 0xc5, 0x81, 0xfb, 0x4d, 0x12, 0x61, 0xf6, 0x9c, 0xb6, 0x7e, ++ 0xfa, 0x04, 0xf5, 0xd2, 0x83, 0x5c, 0x2f, 0xad, 0xe4, 0x71, 0xcd, 0xa7, ++ 0xeb, 0x5b, 0x30, 0xee, 0xbf, 0x24, 0xde, 0x81, 0xfa, 0x6f, 0xe9, 0x20, ++ 0x13, 0xf3, 0xa7, 0x2c, 0x12, 0xde, 0x57, 0x63, 0x4e, 0x64, 0xfd, 0x95, ++ 0x04, 0x36, 0x6f, 0x2b, 0xc4, 0xbd, 0x45, 0xd0, 0xab, 0x41, 0xac, 0xdb, ++ 0xe1, 0x46, 0x1f, 0x11, 0xaf, 0x46, 0x13, 0xa0, 0x9e, 0x48, 0x54, 0x01, ++ 0xea, 0xc9, 0x24, 0xb8, 0x14, 0xef, 0x49, 0x99, 0x10, 0xfa, 0x09, 0x3c, ++ 0x77, 0x65, 0x78, 0x02, 0x80, 0xc7, 0x6f, 0x33, 0x3b, 0x0e, 0x08, 0x10, ++ 0xc7, 0x2e, 0xf6, 0x0c, 0x03, 0xfd, 0xdb, 0x28, 0xfa, 0x0a, 0x54, 0xda, ++ 0xff, 0xe7, 0x62, 0xb8, 0x00, 0xfa, 0xe5, 0xd0, 0xa6, 0x4f, 0x92, 0x58, ++ 0x39, 0x08, 0xf2, 0xa1, 0x3d, 0xba, 0x7d, 0x2d, 0x76, 0x4f, 0xa8, 0xaa, ++ 0x8f, 0x0b, 0x46, 0xd7, 0x07, 0x2d, 0x92, 0xa2, 0xf6, 0x7b, 0xfe, 0x32, ++ 0x4c, 0xdf, 0xbe, 0x22, 0xc3, 0xfd, 0x0a, 0xcc, 0xa3, 0xc1, 0xca, 0xee, ++ 0x19, 0x4a, 0xf9, 0x5c, 0xc0, 0xfd, 0x9c, 0x06, 0x2b, 0xbb, 0x6f, 0xa8, ++ 0xc1, 0x7e, 0x63, 0x02, 0xe8, 0xf1, 0x5f, 0x0f, 0x60, 0x76, 0x3b, 0xd2, ++ 0x01, 0xd0, 0xd1, 0x7e, 0x66, 0xcf, 0x9c, 0x94, 0xd4, 0x84, 0x24, 0x16, ++ 0x27, 0x55, 0xdf, 0x30, 0xc4, 0xf9, 0x2d, 0xea, 0x1b, 0xba, 0xef, 0x48, ++ 0xdc, 0xdf, 0x6b, 0xa6, 0x74, 0x29, 0xe9, 0xf6, 0x55, 0xce, 0x93, 0xdc, ++ 0x26, 0xa0, 0x9b, 0xf3, 0xfd, 0xf4, 0xb9, 0x7e, 0x9e, 0x31, 0xe2, 0x71, ++ 0x49, 0x36, 0xbc, 0x96, 0x37, 0xe6, 0x7e, 0x8e, 0x36, 0x3f, 0xc8, 0xdb, ++ 0x07, 0x38, 0x8a, 0xa7, 0xa7, 0xa0, 0xbf, 0x16, 0x4d, 0x0f, 0x3b, 0x7b, ++ 0xe3, 0xcc, 0x3e, 0x11, 0xf0, 0x39, 0x4b, 0xbb, 0xbf, 0x58, 0xba, 0x9f, ++ 0xd5, 0x13, 0x89, 0xf6, 0x87, 0xfe, 0xd7, 0xa7, 0xbd, 0xf6, 0xe8, 0xfd, ++ 0xac, 0xce, 0xf7, 0x39, 0xbd, 0x73, 0xd9, 0x3e, 0x66, 0x43, 0x49, 0x02, ++ 0xe6, 0xc7, 0x69, 0xf3, 0x98, 0xd5, 0xfe, 0x60, 0x07, 0xd8, 0xa9, 0xb3, ++ 0xda, 0x33, 0xe7, 0xc1, 0xfe, 0xd6, 0x2c, 0xdb, 0xd0, 0x2f, 0xa0, 0xdc, ++ 0x29, 0x87, 0xf7, 0xc6, 0x83, 0x1d, 0x78, 0x97, 0x80, 0xe7, 0x4a, 0x6e, ++ 0xfe, 0xdd, 0x1b, 0x72, 0x3c, 0x2d, 0xb7, 0x7d, 0xb8, 0x0e, 0xcf, 0x33, ++ 0x7f, 0xc1, 0xe5, 0xe9, 0x6c, 0x12, 0xc6, 0x7b, 0xe1, 0x3d, 0xc4, 0xc9, ++ 0xf7, 0xd9, 0x03, 0xf8, 0x7c, 0x2e, 0x71, 0xf1, 0x7a, 0x8b, 0x0c, 0x7e, ++ 0xfd, 0xad, 0xc1, 0xc0, 0x0d, 0x57, 0xd3, 0xda, 0x6d, 0x6f, 0x04, 0xae, ++ 0x06, 0xb3, 0x6d, 0xf6, 0xfe, 0xf0, 0x9b, 0x20, 0x06, 0x3c, 0x2d, 0xce, ++ 0x29, 0xb8, 0x87, 0xa0, 0xbd, 0xd7, 0xe6, 0x7a, 0x8b, 0xd5, 0xd9, 0x7b, ++ 0xbd, 0xeb, 0x97, 0x2c, 0xb8, 0x9e, 0xc8, 0x7a, 0x2d, 0xb8, 0x7e, 0x6d, ++ 0x7d, 0x74, 0xa6, 0x08, 0xff, 0x5e, 0xf8, 0xf0, 0xfb, 0x9a, 0x34, 0x78, ++ 0x88, 0x73, 0xe9, 0xba, 0x29, 0xbd, 0xcc, 0x4a, 0xb8, 0xf1, 0x4a, 0x72, ++ 0x06, 0xbb, 0x7c, 0x96, 0x6d, 0xf8, 0x17, 0x6c, 0xd3, 0x84, 0xcd, 0x27, ++ 0x1a, 0x3e, 0xa7, 0xa0, 0x89, 0xda, 0x8f, 0x5d, 0x03, 0xdc, 0x24, 0x9b, ++ 0xe2, 0xef, 0x0f, 0x03, 0xdc, 0x02, 0x94, 0xd5, 0x96, 0x70, 0x8e, 0x34, ++ 0x18, 0xf9, 0x44, 0x86, 0x7a, 0xad, 0xe8, 0x19, 0x04, 0xa9, 0xcf, 0x5f, ++ 0x0d, 0xf4, 0x0c, 0x4b, 0x05, 0x38, 0x74, 0x24, 0x9f, 0x93, 0xfc, 0x3c, ++ 0x60, 0x65, 0xfc, 0x7f, 0x00, 0xe8, 0x19, 0xf2, 0xbc, 0x4e, 0xa7, 0xe0, ++ 0xba, 0xb4, 0x7b, 0xe8, 0xf7, 0xdd, 0xdd, 0x69, 0x07, 0xbb, 0x73, 0xe9, ++ 0xb6, 0x8f, 0xf1, 0x9e, 0xe5, 0x1a, 0x31, 0xf4, 0xe8, 0x4d, 0x18, 0x0f, ++ 0x15, 0xd1, 0x6f, 0x3a, 0xd9, 0x3a, 0xec, 0x8c, 0xe7, 0xcf, 0x0e, 0x40, ++ 0x9c, 0x8a, 0xea, 0xbf, 0x81, 0xd9, 0xda, 0x39, 0x4b, 0xb6, 0xce, 0x39, ++ 0x12, 0xe3, 0x93, 0x39, 0xad, 0xf1, 0x98, 0x8f, 0x3f, 0x67, 0x91, 0x68, ++ 0xb8, 0x47, 0x7a, 0xce, 0x22, 0x96, 0xcf, 0x47, 0xa4, 0x8e, 0xfc, 0xeb, ++ 0x0d, 0xf6, 0xfa, 0xfd, 0xfd, 0x8e, 0x03, 0xf1, 0x82, 0xe8, 0x71, 0xe6, ++ 0x2d, 0x9a, 0x44, 0x3e, 0x1f, 0x0d, 0xfb, 0xb4, 0xce, 0x09, 0x18, 0x3f, ++ 0x58, 0xc3, 0xe8, 0x6b, 0xde, 0x64, 0xb7, 0x08, 0xf9, 0xce, 0xe3, 0x97, ++ 0x09, 0xb8, 0xdf, 0x3a, 0xee, 0xb0, 0xda, 0x16, 0xa2, 0xf5, 0x79, 0x81, ++ 0x44, 0x17, 0xb0, 0xe7, 0xbc, 0xbb, 0xff, 0x63, 0x08, 0xdc, 0x73, 0x50, ++ 0xdb, 0xc1, 0xe2, 0x81, 0xe9, 0xe2, 0xed, 0x05, 0xf7, 0x41, 0x9c, 0x65, ++ 0x2f, 0xd3, 0xe3, 0x50, 0xbf, 0x1d, 0xe8, 0xc4, 0xe6, 0x56, 0x6d, 0xba, ++ 0xfd, 0x82, 0x2e, 0xb9, 0xae, 0x00, 0xee, 0xfb, 0xf3, 0xdd, 0x66, 0x73, ++ 0x03, 0xff, 0x97, 0x5c, 0xef, 0xfe, 0x14, 0xef, 0xf3, 0xe5, 0xf1, 0x0a, ++ 0x4d, 0xaf, 0xbe, 0xd6, 0x58, 0x82, 0x79, 0xb2, 0x25, 0xb7, 0xaa, 0x63, ++ 0x01, 0xff, 0x25, 0x2d, 0x56, 0x37, 0x96, 0x16, 0x22, 0xc5, 0x51, 0x39, ++ 0x56, 0x22, 0x11, 0x0b, 0x94, 0xe9, 0x0a, 0x91, 0xac, 0x50, 0xc6, 0x11, ++ 0x0b, 0x94, 0x45, 0x4b, 0xd8, 0xbd, 0xdd, 0xa5, 0x8d, 0x33, 0xd0, 0x3e, ++ 0x70, 0x8c, 0x2d, 0x56, 0xe0, 0x3e, 0xde, 0x92, 0xf6, 0x17, 0xbf, 0x81, ++ 0xf7, 0xcb, 0xa4, 0xe0, 0x1e, 0x76, 0x3f, 0x05, 0x83, 0x4f, 0x49, 0xfb, ++ 0xdb, 0xdf, 0x03, 0x5e, 0x17, 0xb8, 0x8b, 0x31, 0x9f, 0xf1, 0xc2, 0x0d, ++ 0x8a, 0xc1, 0x0f, 0x1c, 0xd9, 0x62, 0xac, 0x5f, 0xd4, 0x66, 0xac, 0x17, ++ 0x04, 0x8d, 0xf5, 0xd1, 0xfb, 0x8d, 0xf5, 0xf5, 0xd9, 0x04, 0xe9, 0x68, ++ 0xae, 0xe5, 0xba, 0x3c, 0x80, 0xd7, 0xde, 0x5d, 0x66, 0xaa, 0x8b, 0x20, ++ 0xff, 0xcf, 0x8c, 0xf9, 0x2e, 0x87, 0x04, 0x86, 0x1f, 0xdf, 0x46, 0x2b, ++ 0xca, 0xc3, 0x49, 0x55, 0xed, 0x45, 0xe0, 0x07, 0x1f, 0x7f, 0xd9, 0x6e, ++ 0x02, 0x3f, 0x7a, 0xe7, 0x5f, 0x7f, 0x89, 0xfb, 0xe1, 0xe1, 0xcd, 0xf1, ++ 0x04, 0xf2, 0xac, 0xf6, 0xfc, 0x3e, 0x8e, 0xc4, 0x41, 0xbe, 0xe2, 0x2b, ++ 0xd6, 0x75, 0xd0, 0x5e, 0x45, 0x71, 0x07, 0xf1, 0xcb, 0xaa, 0x57, 0xac, ++ 0x6b, 0xc1, 0x0f, 0x7f, 0xf5, 0x02, 0xcd, 0x8f, 0x0f, 0xe4, 0xc3, 0x7a, ++ 0x5e, 0xfd, 0x1b, 0xcb, 0xaf, 0x09, 0x6f, 0x34, 0x07, 0x60, 0x7f, 0xfc, ++ 0xf8, 0xf6, 0x17, 0x5f, 0x86, 0xfd, 0xb4, 0xe3, 0x1b, 0x07, 0xa0, 0x7d, ++ 0x75, 0x48, 0xf0, 0x99, 0xe2, 0xe0, 0xfb, 0x5f, 0xb2, 0xf8, 0x67, 0x88, ++ 0xdf, 0x17, 0x17, 0xe2, 0xf7, 0xc5, 0x55, 0x6d, 0x30, 0xfa, 0xc5, 0x77, ++ 0x64, 0x33, 0x39, 0x13, 0x5a, 0x72, 0x71, 0x42, 0x2c, 0xbb, 0x49, 0x2b, ++ 0x87, 0x67, 0x24, 0xe7, 0x4d, 0xa6, 0x73, 0xeb, 0x79, 0xc8, 0x3c, 0x07, ++ 0xe2, 0x40, 0xc3, 0x1a, 0x8d, 0x70, 0xd1, 0xfa, 0x8d, 0x08, 0x18, 0x9f, ++ 0xdf, 0xc3, 0xc7, 0x1f, 0x4f, 0x94, 0x08, 0x9d, 0xe6, 0x42, 0x9e, 0x40, ++ 0xa0, 0xc1, 0x01, 0xfa, 0xf7, 0xf9, 0xd8, 0xf7, 0x24, 0x2f, 0xe1, 0xfc, ++ 0xf3, 0xd2, 0x4b, 0xbd, 0xef, 0x89, 0xfc, 0x9e, 0x38, 0xa2, 0xea, 0xce, ++ 0x4d, 0x45, 0xe4, 0x37, 0x59, 0x38, 0x00, 0xf2, 0x37, 0x00, 0xfe, 0x83, ++ 0x23, 0xcf, 0xab, 0x88, 0x6e, 0x3e, 0x3a, 0xfb, 0x64, 0x2a, 0x1f, 0xff, ++ 0x6b, 0x0b, 0xcb, 0x67, 0x4e, 0xe1, 0xf7, 0xf7, 0x1f, 0xab, 0xdf, 0x8f, ++ 0x7a, 0xbf, 0xd7, 0xee, 0xab, 0x77, 0xbb, 0x27, 0xeb, 0xea, 0xa5, 0x8d, ++ 0x7b, 0xd2, 0x4a, 0xc0, 0x7f, 0x6a, 0xda, 0x93, 0x36, 0x57, 0x07, 0xaf, ++ 0xea, 0x8d, 0xfb, 0xd2, 0x6e, 0xc1, 0xbc, 0x27, 0x09, 0x22, 0xb8, 0xa4, ++ 0x7a, 0xd6, 0x0b, 0x8f, 0x41, 0xbc, 0xa2, 0x7a, 0xa3, 0xd8, 0x02, 0xf3, ++ 0x84, 0x76, 0x80, 0x5b, 0x57, 0xcb, 0x9b, 0x0e, 0xe8, 0x47, 0xed, 0xe1, ++ 0x51, 0x10, 0x07, 0x89, 0xd8, 0xa3, 0x97, 0xbb, 0x27, 0xeb, 0xf8, 0xf8, ++ 0xef, 0xa5, 0x5b, 0x8d, 0xdf, 0xaa, 0xb9, 0xfd, 0xf2, 0xda, 0xd8, 0x8e, ++ 0x29, 0x90, 0xa7, 0x5e, 0xd5, 0x28, 0xb8, 0xa0, 0x5b, 0x55, 0xcb, 0x0d, ++ 0xd7, 0x5d, 0x0d, 0xf0, 0x6e, 0x62, 0xe7, 0x5c, 0x8b, 0x24, 0x52, 0x2c, ++ 0x52, 0xfe, 0xaa, 0xde, 0x72, 0xc3, 0x55, 0x23, 0x21, 0x6f, 0x66, 0xf5, ++ 0x18, 0x17, 0xcc, 0x87, 0x0e, 0x71, 0x3d, 0x3c, 0xaf, 0xda, 0x74, 0x02, ++ 0xcf, 0x33, 0x3c, 0x1c, 0xf5, 0xbb, 0x07, 0x5a, 0xb9, 0x23, 0x9b, 0xd9, ++ 0x85, 0xb4, 0x7f, 0xd0, 0x44, 0xfb, 0x3f, 0x7c, 0xa3, 0xad, 0x1c, 0xe4, ++ 0x17, 0x1d, 0xf7, 0x0d, 0xa8, 0xef, 0x1d, 0xbe, 0x0e, 0xef, 0x57, 0x71, ++ 0x1c, 0x65, 0xfb, 0x0f, 0xf4, 0xf9, 0x27, 0x26, 0x6a, 0xb7, 0x1c, 0x9d, ++ 0xe8, 0x7b, 0xef, 0x16, 0xfa, 0xea, 0x71, 0xd2, 0xf2, 0xd1, 0xd5, 0x10, ++ 0x57, 0x6a, 0x34, 0xd2, 0x23, 0xa5, 0x6f, 0x01, 0xec, 0xb2, 0xf0, 0x7a, ++ 0xc1, 0xb5, 0x0e, 0x9f, 0x2e, 0x29, 0xba, 0x16, 0x4c, 0x6e, 0xf7, 0x62, ++ 0xcc, 0xf7, 0xa5, 0xed, 0x73, 0x62, 0x9d, 0xb7, 0xae, 0x08, 0x18, 0xc7, ++ 0x89, 0xc6, 0xfb, 0x47, 0x7c, 0xbe, 0xf4, 0x6f, 0xb8, 0x9e, 0x7e, 0xa2, ++ 0xfb, 0x25, 0x4f, 0xf3, 0x61, 0x3e, 0x79, 0xf5, 0x22, 0x2a, 0x0f, 0x75, ++ 0x71, 0x82, 0xea, 0xc3, 0x7e, 0xbc, 0x5f, 0x32, 0xfa, 0x3b, 0x44, 0x4f, ++ 0xd7, 0xcc, 0x9e, 0x20, 0x2a, 0xc8, 0xc3, 0xcd, 0x2c, 0x6f, 0x86, 0xfe, ++ 0x09, 0x96, 0x22, 0x9e, 0xa7, 0x3b, 0x84, 0xd5, 0xf1, 0x5e, 0x45, 0xa0, ++ 0x53, 0x4a, 0x28, 0x55, 0x17, 0x90, 0xc9, 0x2a, 0xc0, 0xfb, 0x5a, 0x32, ++ 0x15, 0xca, 0xf1, 0x20, 0x57, 0xe0, 0x3e, 0xfd, 0xb1, 0x2d, 0xf9, 0xd0, ++ 0x7f, 0x87, 0x10, 0x7a, 0xe1, 0x39, 0x1c, 0xcf, 0x8e, 0x72, 0xbc, 0xcb, ++ 0x19, 0xc4, 0x7b, 0x26, 0xb3, 0xf8, 0x39, 0xd3, 0x2e, 0x95, 0xd5, 0x7b, ++ 0x78, 0x9c, 0x53, 0x6b, 0xaf, 0x6c, 0xb7, 0x62, 0x9e, 0xcd, 0xf1, 0xaf, ++ 0x14, 0x94, 0xb3, 0x8b, 0x5b, 0xf6, 0x61, 0x1e, 0x7d, 0xd7, 0xcb, 0x56, ++ 0x93, 0x89, 0xca, 0x83, 0xe3, 0x5b, 0x92, 0x27, 0x42, 0x3e, 0x66, 0x57, ++ 0x0b, 0xbb, 0xa7, 0xf8, 0x58, 0x4b, 0xf2, 0x44, 0xe5, 0x0c, 0x7a, 0x3b, ++ 0x5a, 0x6e, 0x68, 0xfa, 0xf4, 0x20, 0xfc, 0x93, 0xea, 0xdd, 0x3f, 0x67, ++ 0xbb, 0xbf, 0xcd, 0x06, 0x3d, 0x75, 0x3f, 0xcb, 0x57, 0x4d, 0x4f, 0xae, ++ 0x2b, 0x88, 0xf5, 0xfb, 0x17, 0xda, 0x7b, 0x29, 0x4a, 0x5d, 0x01, 0xf8, ++ 0x31, 0xe1, 0xdb, 0x6c, 0xae, 0x75, 0x08, 0x27, 0x5f, 0xae, 0x84, 0x71, ++ 0xf0, 0x0c, 0x17, 0xe4, 0x09, 0x95, 0x08, 0x6c, 0xdc, 0xb8, 0x41, 0xc5, ++ 0xe2, 0x40, 0xda, 0xdf, 0x4e, 0xfb, 0x42, 0x3c, 0x3a, 0x69, 0xbf, 0x88, ++ 0xbf, 0xd7, 0xf0, 0xb9, 0xe8, 0xfa, 0x89, 0x73, 0x08, 0xde, 0x27, 0x8f, ++ 0x76, 0xd0, 0xfc, 0x42, 0x0f, 0xde, 0x4f, 0x49, 0xee, 0x67, 0x79, 0x95, ++ 0xf3, 0x24, 0x12, 0x94, 0x28, 0xbd, 0xcd, 0x03, 0x7d, 0x94, 0x8f, 0x75, ++ 0x94, 0xcb, 0xf3, 0x9a, 0x04, 0xcc, 0x2b, 0x9b, 0xbf, 0xdc, 0xb8, 0x1e, ++ 0xb8, 0x27, 0x57, 0xaf, 0x47, 0x2b, 0x48, 0x80, 0xdd, 0x6f, 0xa1, 0x8f, ++ 0x23, 0x0e, 0x86, 0x7c, 0x17, 0xaa, 0x6f, 0xe0, 0x5e, 0x4b, 0x0b, 0xcb, ++ 0xbf, 0xa8, 0x6c, 0x36, 0xbe, 0x57, 0x45, 0x82, 0x38, 0x9f, 0xea, 0x4d, ++ 0x3f, 0x98, 0x63, 0xc1, 0xeb, 0x1b, 0xa2, 0xad, 0xcb, 0x9d, 0x0d, 0xeb, ++ 0x12, 0xae, 0xb5, 0xe0, 0xbc, 0xee, 0x7c, 0x2a, 0x81, 0xed, 0xf7, 0x28, ++ 0xc4, 0x0d, 0xfa, 0x34, 0xfc, 0x94, 0x1d, 0xe5, 0x7b, 0x15, 0xf1, 0xe0, ++ 0x78, 0x37, 0x73, 0xbd, 0xee, 0xbd, 0xbb, 0xc4, 0x3d, 0x1f, 0xe4, 0xf0, ++ 0xa2, 0x79, 0xee, 0xf9, 0xc9, 0x70, 0xde, 0x96, 0xe9, 0x3f, 0x74, 0xf9, ++ 0x90, 0xbf, 0xd9, 0xbd, 0x5b, 0x55, 0x93, 0x49, 0x70, 0x20, 0xbb, 0x77, ++ 0x83, 0x80, 0x5e, 0xad, 0x6a, 0x17, 0x82, 0x23, 0xa1, 0x6e, 0x21, 0x3e, ++ 0xc7, 0x28, 0xf6, 0x1c, 0xee, 0x1f, 0x80, 0x75, 0xeb, 0xcf, 0xd7, 0x94, ++ 0x13, 0x3f, 0x7e, 0xaf, 0xbc, 0xc9, 0xf8, 0x9c, 0x7c, 0xc8, 0xf0, 0x5a, ++ 0xcd, 0xcf, 0x31, 0x92, 0x66, 0x5d, 0xfb, 0x60, 0xb0, 0xcf, 0x18, 0x3c, ++ 0xaa, 0x37, 0x99, 0x0d, 0x71, 0x9d, 0xf1, 0x9b, 0x04, 0x9f, 0x1d, 0xcf, ++ 0xbb, 0x06, 0x1a, 0xd2, 0xe8, 0xfc, 0x6a, 0x8f, 0x52, 0x59, 0x41, 0x20, ++ 0x4f, 0xf5, 0x07, 0xb3, 0x61, 0x7c, 0xc8, 0xe7, 0x19, 0x83, 0x7a, 0x9f, ++ 0x58, 0x29, 0xde, 0x9e, 0xea, 0x95, 0xeb, 0x81, 0x11, 0xb1, 0xf2, 0xfc, ++ 0x0f, 0x70, 0x38, 0x3e, 0x75, 0x43, 0x69, 0x26, 0xf0, 0xeb, 0xe3, 0x60, ++ 0xb7, 0x66, 0x71, 0x40, 0x8f, 0x45, 0xb9, 0xc5, 0xe3, 0x07, 0x24, 0x68, ++ 0xa1, 0xdf, 0x89, 0x1b, 0xdd, 0x5b, 0xc7, 0xf6, 0xa2, 0x25, 0xac, 0x3e, ++ 0x7d, 0xf5, 0x0b, 0xd3, 0x1b, 0x2f, 0xa1, 0x7e, 0x9e, 0xec, 0xc1, 0x7d, ++ 0xa1, 0x79, 0x62, 0xf1, 0x5b, 0x70, 0x1e, 0xec, 0xc5, 0x41, 0x9e, 0x6b, ++ 0x01, 0x3f, 0xf3, 0x4c, 0xee, 0x1c, 0x09, 0xf9, 0xd6, 0x3d, 0x14, 0xe3, ++ 0xa1, 0x8b, 0x18, 0x1c, 0x9e, 0x19, 0x55, 0x37, 0xa2, 0x2e, 0x86, 0x1d, ++ 0xa8, 0xe1, 0xf9, 0x69, 0xa1, 0x25, 0x08, 0xfb, 0xb2, 0xbe, 0xed, 0xcc, ++ 0xfe, 0xb2, 0x17, 0x86, 0x65, 0xbd, 0x7e, 0xad, 0x1e, 0xc8, 0xe4, 0x51, ++ 0xc2, 0xde, 0x10, 0x9e, 0x9b, 0x08, 0x6f, 0x13, 0xf0, 0x9c, 0xe5, 0x2a, ++ 0xe1, 0x20, 0x9e, 0x47, 0x5c, 0x75, 0x85, 0x4a, 0xc0, 0xbf, 0xcf, 0xa0, ++ 0x78, 0x02, 0x79, 0xbc, 0x4a, 0x20, 0xf7, 0xc3, 0x7d, 0x5c, 0x85, 0xad, ++ 0x33, 0x6e, 0x7f, 0x13, 0xf0, 0x5c, 0x18, 0xe7, 0x82, 0x9f, 0xbb, 0xa8, ++ 0x69, 0x9d, 0x20, 0xd6, 0xd8, 0x70, 0xfd, 0xcc, 0x4e, 0x8b, 0xaf, 0x5b, ++ 0x0b, 0xfb, 0x39, 0xe9, 0x73, 0x86, 0x8f, 0x02, 0x3a, 0xa7, 0xeb, 0x9e, ++ 0x73, 0x2d, 0x7d, 0x7e, 0xfb, 0x40, 0x15, 0xbf, 0x97, 0x69, 0x63, 0x78, ++ 0xcf, 0x58, 0xe2, 0xcb, 0x85, 0xdf, 0x81, 0x4a, 0xd8, 0x5b, 0x7c, 0xfb, ++ 0x9b, 0xc0, 0x87, 0x23, 0xe3, 0xf0, 0x9c, 0x6c, 0x3a, 0x85, 0x95, 0x3d, ++ 0x09, 0xcb, 0x65, 0x60, 0x7f, 0x65, 0x90, 0xc5, 0x02, 0xf4, 0x7b, 0xca, ++ 0xc1, 0xc6, 0x4f, 0x35, 0x89, 0x73, 0x66, 0x40, 0x7d, 0x14, 0xab, 0x27, ++ 0xdd, 0x2b, 0xb8, 0xd7, 0x21, 0xf1, 0xad, 0xc0, 0xf1, 0xd3, 0xcd, 0x64, ++ 0x2a, 0xcc, 0x13, 0x9e, 0x83, 0x1d, 0x69, 0x81, 0xb8, 0x02, 0xb6, 0x07, ++ 0x18, 0x7e, 0x27, 0xd5, 0x15, 0xc0, 0x78, 0xe9, 0x43, 0x58, 0x99, 0xa2, ++ 0x04, 0xb3, 0x61, 0x9c, 0x77, 0x7a, 0xf1, 0xed, 0x41, 0xbf, 0x62, 0x21, ++ 0xd7, 0x63, 0x0b, 0xb7, 0x4c, 0x48, 0x07, 0x3f, 0xef, 0x9d, 0x2e, 0xea, ++ 0x70, 0x53, 0xb9, 0xf5, 0x4e, 0x86, 0x66, 0x0f, 0x05, 0x6d, 0xf8, 0xfb, ++ 0x50, 0xe7, 0x0d, 0x67, 0xfd, 0xb9, 0x5f, 0xb8, 0xb0, 0x80, 0x9d, 0x37, ++ 0x48, 0xc9, 0x31, 0xf6, 0xeb, 0x91, 0xdd, 0x09, 0xa3, 0x41, 0x8e, 0x7e, ++ 0xc0, 0xec, 0xf8, 0x53, 0x36, 0x37, 0xc6, 0xa7, 0x2f, 0x56, 0x62, 0xc7, ++ 0xb3, 0x9e, 0x1b, 0xc8, 0xec, 0x16, 0xef, 0x69, 0x81, 0x04, 0x74, 0x7a, ++ 0xc0, 0x3b, 0xf3, 0x5b, 0xb4, 0x2b, 0xbd, 0xa7, 0x25, 0xc3, 0xf3, 0xae, ++ 0x7a, 0x8b, 0x21, 0xcf, 0xb9, 0xba, 0x7c, 0x2f, 0x9e, 0xbb, 0xaf, 0x21, ++ 0x1d, 0x98, 0x87, 0x5d, 0xd3, 0x12, 0x6f, 0xc8, 0xdb, 0xbd, 0x38, 0x2e, ++ 0xf6, 0x77, 0x35, 0xfa, 0xf6, 0x9e, 0x16, 0x89, 0x2f, 0xe6, 0x77, 0x15, ++ 0xe3, 0xf3, 0xd3, 0xc9, 0xc4, 0x97, 0x1c, 0xab, 0x5f, 0x9a, 0xf1, 0x39, ++ 0x5d, 0x87, 0xa1, 0xde, 0xf6, 0x5d, 0xef, 0x3a, 0xe0, 0x39, 0x19, 0x1b, ++ 0x72, 0x80, 0x3f, 0x38, 0x8d, 0xdb, 0xb5, 0x3d, 0x01, 0x93, 0x4f, 0xbe, ++ 0x28, 0x82, 0x97, 0x6e, 0x67, 0xc8, 0xa0, 0x77, 0xba, 0x55, 0x56, 0xef, ++ 0xe1, 0xfb, 0x71, 0x5a, 0xbb, 0x36, 0x7e, 0xf7, 0x4c, 0x85, 0x9f, 0x2b, ++ 0x62, 0xf7, 0x2a, 0x03, 0x7c, 0x7c, 0xc3, 0x08, 0x79, 0xb6, 0xfd, 0x04, ++ 0xc6, 0xa3, 0xab, 0xdb, 0xf7, 0x4c, 0x61, 0xbf, 0xef, 0xc5, 0xe8, 0x42, ++ 0x0f, 0x27, 0x9f, 0x4e, 0x7e, 0xa4, 0x35, 0x74, 0x04, 0x4d, 0x94, 0xb7, ++ 0x7f, 0x3b, 0xf0, 0xe8, 0x63, 0x79, 0x23, 0x28, 0x89, 0xed, 0xd5, 0xf8, ++ 0xf8, 0xd8, 0x63, 0x6e, 0xca, 0xb7, 0x69, 0xa2, 0xc9, 0xc0, 0xd7, 0xf1, ++ 0x85, 0xbd, 0x7c, 0x8e, 0xe2, 0xe5, 0x29, 0x93, 0xc8, 0xe5, 0xc2, 0xf1, ++ 0xc7, 0x26, 0x5f, 0xa2, 0xaf, 0xb3, 0xfe, 0x91, 0xf7, 0xbb, 0xa6, 0x4f, ++ 0xa6, 0xb6, 0x7d, 0x61, 0x1e, 0x7b, 0xff, 0x8f, 0x03, 0xbf, 0x7a, 0x6f, ++ 0xc9, 0x79, 0x11, 0xb9, 0x44, 0xd7, 0x91, 0x53, 0x6c, 0xd7, 0xd5, 0x2d, ++ 0x51, 0x75, 0x1b, 0xad, 0x8f, 0xd4, 0xd5, 0x9d, 0x51, 0xed, 0x29, 0x51, ++ 0xed, 0x19, 0x51, 0xf5, 0x6c, 0xd6, 0xbf, 0xcb, 0x1e, 0xcc, 0x11, 0x5d, ++ 0x84, 0x74, 0x0e, 0x3c, 0x31, 0x5d, 0x1a, 0x07, 0xfb, 0xd8, 0xc1, 0xd9, ++ 0x70, 0xa3, 0xc0, 0xf2, 0x86, 0xaf, 0xa7, 0x4f, 0xa6, 0xf5, 0x9a, 0xc2, ++ 0x0e, 0xcc, 0x9f, 0xa9, 0x6d, 0x17, 0x5c, 0xb8, 0xad, 0xaf, 0xe5, 0xc7, ++ 0xbb, 0x98, 0x9d, 0x65, 0x73, 0x85, 0xf0, 0xf7, 0xec, 0xe2, 0x0b, 0x3b, ++ 0xde, 0x02, 0x39, 0x50, 0xdd, 0x26, 0x38, 0x05, 0x4a, 0xef, 0xb6, 0x96, ++ 0x2d, 0x98, 0x57, 0x53, 0x0d, 0xef, 0xa9, 0xba, 0xf7, 0x5a, 0x98, 0xdf, ++ 0x59, 0xdd, 0x72, 0x10, 0xdf, 0xeb, 0x77, 0xfc, 0xe1, 0x26, 0xe4, 0xe7, ++ 0x87, 0x87, 0x1f, 0xc2, 0x7e, 0xda, 0xfe, 0xd1, 0x4d, 0xa4, 0xf7, 0xf7, ++ 0x3a, 0x4e, 0x0f, 0x04, 0x3c, 0xb6, 0x74, 0x32, 0x3d, 0x1c, 0xb5, 0x7f, ++ 0xd4, 0x9d, 0xe9, 0xde, 0x87, 0xf2, 0x30, 0xea, 0xfc, 0xab, 0x17, 0xc6, ++ 0xb5, 0x45, 0xe8, 0x5e, 0xeb, 0xff, 0x87, 0x91, 0xed, 0xbf, 0x83, 0x61, ++ 0xe2, 0x17, 0x9e, 0x58, 0x2c, 0xd1, 0xfe, 0x7f, 0xaa, 0xe9, 0x1c, 0x03, ++ 0xf6, 0x12, 0xdc, 0x71, 0x09, 0x72, 0xff, 0x69, 0x21, 0x30, 0x02, 0xf4, ++ 0xf3, 0xb3, 0xc4, 0x33, 0x02, 0xf4, 0xd1, 0x6d, 0x35, 0xe7, 0xef, 0x31, ++ 0xd1, 0x7e, 0x07, 0xe4, 0xd0, 0x6a, 0xb8, 0xaa, 0x61, 0x68, 0x8e, 0xf5, ++ 0x1a, 0x89, 0xca, 0xe9, 0x03, 0xf6, 0xd0, 0x40, 0x81, 0xca, 0x92, 0xe1, ++ 0x6b, 0x92, 0xaf, 0x01, 0x78, 0x1e, 0x48, 0x0d, 0xe1, 0x0d, 0x0d, 0x3f, ++ 0x5b, 0x93, 0xc2, 0xda, 0x07, 0x86, 0x06, 0xc2, 0xbe, 0x6b, 0x5e, 0xce, ++ 0x8f, 0x59, 0xfd, 0xfc, 0xd0, 0x6a, 0xa8, 0x5f, 0xbf, 0xe6, 0x02, 0x56, ++ 0x1f, 0x19, 0x1a, 0x28, 0xd2, 0xf7, 0x07, 0xfb, 0x2e, 0xbc, 0x06, 0xe0, ++ 0xbf, 0xde, 0x19, 0x9b, 0x6f, 0x07, 0xe6, 0x30, 0x79, 0xae, 0xcd, 0x6f, ++ 0x66, 0x81, 0x3b, 0x23, 0x07, 0xec, 0xcd, 0x6a, 0xa6, 0x2f, 0xe0, 0xf8, ++ 0xa5, 0x85, 0xca, 0xc5, 0xd9, 0x95, 0xc7, 0x36, 0xaf, 0xa7, 0x70, 0x98, ++ 0xfd, 0xd3, 0x78, 0x94, 0x57, 0xeb, 0xbb, 0xae, 0xbb, 0xb2, 0x18, 0xd7, ++ 0xef, 0x2b, 0x86, 0x3c, 0x37, 0x76, 0xc5, 0x3b, 0xd7, 0x67, 0x28, 0x97, ++ 0x25, 0xb4, 0x03, 0x32, 0x41, 0x87, 0x25, 0x45, 0xf0, 0x61, 0xcf, 0xe9, ++ 0x50, 0x51, 0xde, 0x5f, 0x50, 0xb7, 0x05, 0xf4, 0x7e, 0xfa, 0xec, 0x3c, ++ 0x94, 0xf7, 0xa7, 0xb2, 0xdd, 0xf5, 0x39, 0x63, 0x22, 0xe5, 0x9f, 0x87, ++ 0xb0, 0xb2, 0x3e, 0x87, 0x9d, 0xf7, 0x48, 0x17, 0x4d, 0x98, 0x6f, 0x90, ++ 0x7e, 0x8f, 0x1d, 0xed, 0xa0, 0xc7, 0xf9, 0x7e, 0x12, 0xe5, 0x1b, 0xc4, ++ 0xaf, 0x8d, 0xe3, 0x63, 0x54, 0x0e, 0x93, 0x7f, 0xa3, 0x72, 0x98, 0x9f, ++ 0x94, 0x35, 0xf0, 0xf2, 0x7a, 0x58, 0xcf, 0xcd, 0xdc, 0x3e, 0x5d, 0xf9, ++ 0x50, 0x60, 0xa3, 0x95, 0xc2, 0xff, 0xf7, 0x40, 0x24, 0x29, 0x18, 0xdf, ++ 0x46, 0x7b, 0xf7, 0x96, 0xb5, 0x54, 0x6e, 0x24, 0x40, 0x3e, 0x85, 0x3b, ++ 0x13, 0xe4, 0xc1, 0x2d, 0x10, 0xff, 0xcd, 0x8b, 0xd4, 0x35, 0xfb, 0x7d, ++ 0x65, 0x01, 0xad, 0xdb, 0x22, 0x7e, 0xda, 0xca, 0x19, 0xee, 0x4c, 0x7d, ++ 0x1e, 0xd0, 0xca, 0xb5, 0xac, 0x5d, 0x93, 0x37, 0x2b, 0x73, 0xd9, 0xfb, ++ 0x9a, 0xde, 0x49, 0x6f, 0x60, 0xf0, 0x49, 0x7f, 0x7c, 0xc4, 0x3a, 0x58, ++ 0x47, 0xbc, 0x44, 0xf0, 0xfc, 0xc5, 0x82, 0x99, 0x43, 0xd7, 0x2d, 0x46, ++ 0xfd, 0x7d, 0x2d, 0xae, 0x9b, 0xb8, 0xdd, 0x99, 0xe0, 0x7f, 0x1f, 0xae, ++ 0x18, 0x6c, 0x02, 0xbb, 0x52, 0xc3, 0xcf, 0xa2, 0x02, 0xf7, 0x34, 0x5c, ++ 0x8f, 0xc8, 0xf2, 0xd5, 0x35, 0x3c, 0x69, 0xdf, 0xaf, 0xe7, 0xeb, 0x9e, ++ 0x27, 0x52, 0xfd, 0x4f, 0xd7, 0x59, 0x3f, 0xc8, 0x83, 0xeb, 0xa7, 0xf6, ++ 0x40, 0x3e, 0x4b, 0x2e, 0x60, 0xf6, 0x40, 0x3d, 0x04, 0x62, 0x53, 0x23, ++ 0xf0, 0x25, 0x52, 0x68, 0x0c, 0x3c, 0xff, 0x5f, 0x04, 0xa7, 0xdb, 0xa1, ++ 0xfd, 0x1f, 0x85, 0x53, 0x0c, 0x79, 0xf1, 0x33, 0xe8, 0x57, 0xb3, 0x88, ++ 0xca, 0x0b, 0x93, 0x4e, 0x5e, 0x70, 0xf8, 0x3d, 0x2d, 0x04, 0xe5, 0xf4, ++ 0x42, 0xdd, 0xfd, 0x25, 0xf4, 0x39, 0xf8, 0x81, 0x37, 0x0d, 0xf4, 0x3c, ++ 0x90, 0xa3, 0xdb, 0xc7, 0x99, 0x7d, 0x4f, 0x0d, 0xda, 0x7f, 0xda, 0xbc, ++ 0xe2, 0xff, 0xfd, 0xb5, 0xa9, 0x37, 0x91, 0xbe, 0x7c, 0x16, 0x6d, 0x9f, ++ 0x1d, 0xf8, 0xbd, 0x65, 0x39, 0xc6, 0x01, 0x95, 0x16, 0x94, 0x8b, 0x07, ++ 0xae, 0x24, 0xae, 0xc5, 0x20, 0x3f, 0xf8, 0xbe, 0xac, 0x66, 0x5f, 0x16, ++ 0xfd, 0xb4, 0xea, 0x1d, 0xf0, 0xa3, 0x4e, 0xe6, 0x88, 0xf8, 0x9e, 0x55, ++ 0xc3, 0xab, 0x50, 0xbc, 0xa5, 0x94, 0xc2, 0xe9, 0x21, 0xaa, 0x56, 0xe1, ++ 0x3c, 0xba, 0x6f, 0x06, 0xcb, 0xef, 0xd1, 0xf4, 0xe6, 0x4a, 0x7e, 0xef, ++ 0xee, 0xca, 0xbb, 0x2f, 0xc4, 0x3c, 0xbf, 0x1e, 0x12, 0xc2, 0xdf, 0x65, ++ 0xf3, 0x8d, 0x25, 0x28, 0xff, 0x7a, 0xdb, 0x67, 0x0d, 0xc5, 0x76, 0x8a, ++ 0x6f, 0x9f, 0x15, 0xf8, 0xbd, 0x22, 0x0e, 0x7f, 0x77, 0x60, 0x65, 0x01, ++ 0xc1, 0x73, 0x36, 0x2b, 0x67, 0x5d, 0x80, 0xed, 0x3b, 0xb5, 0xb8, 0xd2, ++ 0x2c, 0x0b, 0x7e, 0x67, 0xe5, 0x0c, 0x46, 0x4f, 0x2b, 0x2b, 0x58, 0x1e, ++ 0x26, 0xe8, 0x11, 0x80, 0x5b, 0x7f, 0xf4, 0x90, 0xd6, 0xc0, 0xe2, 0x1b, ++ 0x44, 0x72, 0xe7, 0xeb, 0xf3, 0x01, 0xde, 0xe5, 0xf8, 0x8b, 0x2f, 0x0c, ++ 0x6d, 0xfb, 0x18, 0xec, 0xca, 0xe5, 0x56, 0xb4, 0x2b, 0x41, 0x77, 0xe2, ++ 0xfe, 0x88, 0x3f, 0x1d, 0xbf, 0x47, 0xf1, 0xba, 0x0d, 0xe5, 0x99, 0xe6, ++ 0x47, 0x3d, 0x99, 0xc9, 0xee, 0x9b, 0x25, 0x2e, 0xf4, 0xcf, 0x1f, 0xb4, ++ 0xbb, 0x4b, 0x50, 0x5e, 0xdd, 0x17, 0xaf, 0xc2, 0xfc, 0x9b, 0xac, 0x64, ++ 0x99, 0x65, 0x14, 0xb8, 0x23, 0xe4, 0x7e, 0x94, 0x7b, 0x7c, 0x3e, 0xc4, ++ 0xff, 0x0c, 0xe6, 0x79, 0xcc, 0xe1, 0xf6, 0xda, 0x67, 0xe5, 0x27, 0xed, ++ 0x60, 0x0f, 0xbc, 0xc1, 0xe5, 0x0d, 0x10, 0x0c, 0xf8, 0xcb, 0x73, 0x09, ++ 0x6b, 0x9f, 0x7b, 0x6f, 0xfc, 0x41, 0xf0, 0x6f, 0xe6, 0xde, 0xcb, 0xee, ++ 0x9b, 0x25, 0xcb, 0x2e, 0x77, 0x1b, 0xf7, 0x3b, 0xe8, 0x5c, 0xd3, 0x20, ++ 0x3e, 0xce, 0xff, 0x1a, 0xc3, 0x76, 0x80, 0x83, 0x07, 0xde, 0x73, 0xc0, ++ 0xf8, 0xff, 0x69, 0x87, 0xfb, 0x4c, 0x3c, 0xf7, 0xb2, 0xf3, 0xbd, 0xc4, ++ 0x47, 0xdf, 0xd7, 0xe5, 0x43, 0x7f, 0x0c, 0xfc, 0x0b, 0x71, 0x76, 0x91, ++ 0xcd, 0x9f, 0xd4, 0xc7, 0xab, 0xb1, 0xee, 0x05, 0xfd, 0x98, 0xcb, 0x77, ++ 0x3a, 0x7f, 0xb7, 0xfe, 0x7b, 0xda, 0x77, 0xa2, 0xc7, 0xa5, 0xfe, 0xdd, ++ 0x27, 0x40, 0xa7, 0x14, 0xee, 0x41, 0x38, 0x07, 0x16, 0xbe, 0x4f, 0xe4, ++ 0xbf, 0xd7, 0x6a, 0x9c, 0x6f, 0x8a, 0x12, 0x7e, 0xd4, 0x4a, 0xdb, 0x67, ++ 0xd7, 0x8b, 0x89, 0x4b, 0x28, 0x3c, 0x3d, 0x8b, 0xec, 0xb8, 0x5e, 0x6d, ++ 0xbe, 0x73, 0xd2, 0xc3, 0x97, 0xb2, 0xdf, 0x85, 0x35, 0x8e, 0x7f, 0x24, ++ 0xbe, 0xb6, 0x08, 0xe2, 0xe1, 0x9a, 0x3f, 0x42, 0xee, 0x35, 0xfa, 0x63, ++ 0x10, 0x97, 0xe8, 0xad, 0x8b, 0x98, 0x27, 0x8d, 0x7e, 0x4d, 0x9f, 0xe7, ++ 0xdc, 0x9f, 0x8d, 0xf6, 0x03, 0x09, 0xf9, 0x9b, 0x59, 0xdf, 0xaf, 0xf7, ++ 0x9c, 0x86, 0x2a, 0x44, 0xcd, 0x9f, 0xd3, 0x95, 0x2a, 0x48, 0x80, 0x37, ++ 0x0f, 0xcf, 0x5f, 0x50, 0x94, 0xf0, 0x6c, 0xbc, 0x57, 0x2a, 0x6a, 0xde, ++ 0x1a, 0x3c, 0x95, 0x41, 0x26, 0x0e, 0x77, 0x46, 0x17, 0xd1, 0xf0, 0x56, ++ 0x06, 0x71, 0x7a, 0x88, 0x82, 0x77, 0x8a, 0x12, 0x1a, 0x08, 0xe3, 0x7a, ++ 0x16, 0x99, 0x11, 0x4e, 0xd1, 0xe3, 0x6b, 0xfa, 0xf1, 0x19, 0x2b, 0xf1, ++ 0x81, 0x1f, 0xd9, 0x28, 0x08, 0x48, 0xaf, 0x8d, 0x77, 0xc7, 0xa3, 0xbe, ++ 0x23, 0x16, 0x86, 0x67, 0x6f, 0x65, 0x9c, 0x0a, 0xf4, 0xfb, 0xac, 0x12, ++ 0xc6, 0x3c, 0x27, 0xdf, 0x0e, 0xf6, 0xfb, 0xa0, 0x3d, 0xd6, 0xf0, 0xab, ++ 0x28, 0xb7, 0xce, 0x63, 0xf1, 0x86, 0x9e, 0xf7, 0xc4, 0xb5, 0xd0, 0xaf, ++ 0x3b, 0x95, 0xd1, 0x7d, 0xf7, 0x76, 0x99, 0xf3, 0x1b, 0x61, 0xf7, 0x4c, ++ 0xbc, 0x27, 0xae, 0xc3, 0x76, 0x81, 0x8d, 0xdb, 0xbd, 0x38, 0x1e, 0xf3, ++ 0xa7, 0xe0, 0x7c, 0xa8, 0x02, 0xe7, 0x36, 0x7d, 0x7f, 0xae, 0x87, 0xf8, ++ 0x8b, 0xe6, 0xe7, 0x7f, 0xfe, 0x2a, 0xbb, 0x6f, 0x01, 0x7e, 0xd7, 0x47, ++ 0xef, 0x27, 0xc3, 0xb9, 0xda, 0xf2, 0x51, 0x11, 0xf9, 0x81, 0xf7, 0xc7, ++ 0x00, 0xbf, 0xb7, 0xc5, 0xf3, 0x38, 0x92, 0xa7, 0x02, 0xbf, 0x77, 0x4b, ++ 0x1c, 0x81, 0x3c, 0x8d, 0x5a, 0x93, 0x80, 0x79, 0xbf, 0xb5, 0x95, 0x17, ++ 0xe0, 0x39, 0x13, 0xc2, 0xef, 0x79, 0xae, 0xe6, 0x53, 0xab, 0x35, 0x51, ++ 0x7f, 0x71, 0x54, 0x44, 0x0e, 0xd4, 0x9a, 0x0e, 0x0d, 0x05, 0x7f, 0xab, ++ 0xda, 0xb2, 0x1c, 0xef, 0x7f, 0xa6, 0xed, 0x6f, 0x80, 0x9f, 0x06, 0x3f, ++ 0xc3, 0xdb, 0xfb, 0x3b, 0x1f, 0xb9, 0x7d, 0xf1, 0x50, 0xbb, 0xfc, 0xf8, ++ 0x5f, 0xf1, 0xdc, 0x7b, 0xab, 0x91, 0x3e, 0xaa, 0x23, 0x74, 0x84, 0xe7, ++ 0xe7, 0x2a, 0xf5, 0x74, 0x95, 0x1b, 0xa1, 0x17, 0xb4, 0xc7, 0x41, 0x8e, ++ 0x4c, 0x26, 0x78, 0x6e, 0xdf, 0xce, 0xeb, 0xf1, 0x53, 0x3b, 0x02, 0x10, ++ 0xc7, 0xf1, 0xf2, 0xb8, 0x46, 0xea, 0x5e, 0x76, 0xaf, 0xad, 0xbd, 0xb0, ++ 0x85, 0x40, 0x5c, 0xd5, 0x7b, 0x94, 0xd9, 0x23, 0xe3, 0xdb, 0xd7, 0xee, ++ 0x03, 0xff, 0x38, 0x71, 0x6a, 0x07, 0x78, 0x64, 0xb4, 0x3f, 0x8b, 0xcb, ++ 0x45, 0x9f, 0x2f, 0x1a, 0xd7, 0xbe, 0x42, 0x04, 0xbf, 0x4f, 0xb3, 0x63, ++ 0x74, 0x7e, 0xe7, 0x88, 0x6b, 0x47, 0xea, 0x4b, 0x76, 0x1e, 0x17, 0xfc, ++ 0x58, 0xf8, 0x5e, 0x08, 0x1e, 0x01, 0xff, 0x48, 0x4c, 0xff, 0x3d, 0xcd, ++ 0xf5, 0x1f, 0xd5, 0x93, 0x28, 0xaf, 0x17, 0xf8, 0x87, 0xa1, 0x9e, 0x04, ++ 0x3d, 0x06, 0x72, 0x4e, 0xf3, 0x83, 0x41, 0xee, 0x81, 0x9c, 0x79, 0x71, ++ 0xd0, 0xc4, 0x5b, 0x07, 0xa5, 0xc2, 0x7d, 0x86, 0x13, 0x6f, 0x1a, 0xc4, ++ 0xf6, 0x69, 0x46, 0xa0, 0xdd, 0xef, 0x3b, 0xb7, 0xfd, 0x28, 0xad, 0x1f, ++ 0xf8, 0xc3, 0x67, 0x8e, 0x97, 0x31, 0xb8, 0x85, 0x57, 0x25, 0x30, 0x39, ++ 0x02, 0x3f, 0x10, 0x0a, 0x71, 0xe4, 0xdf, 0xc8, 0x6b, 0x1f, 0xc6, 0xf9, ++ 0x49, 0xec, 0xbe, 0xc6, 0xd5, 0xb9, 0x28, 0x97, 0xb5, 0x38, 0x4e, 0x35, ++ 0x8f, 0x63, 0x95, 0xf2, 0xb8, 0x4f, 0x29, 0x8f, 0xfb, 0x40, 0xdc, 0x55, ++ 0x9f, 0x17, 0x0b, 0x71, 0x4d, 0x7d, 0xbd, 0x9a, 0xcb, 0x85, 0x1a, 0xf8, ++ 0xbd, 0x29, 0xbc, 0x4f, 0xc0, 0x1c, 0xc9, 0x8b, 0x85, 0x78, 0xcf, 0x64, ++ 0x12, 0xb4, 0x43, 0x3b, 0xc4, 0x7d, 0x1c, 0xec, 0xfc, 0x9d, 0xfe, 0x7d, ++ 0x2f, 0x09, 0x4c, 0x92, 0x90, 0xce, 0x7f, 0x30, 0x1b, 0xee, 0xcd, 0x5a, ++ 0xc9, 0xd6, 0x3b, 0x87, 0xe3, 0x7d, 0x95, 0x95, 0xc5, 0x7b, 0xc6, 0xdf, ++ 0xbb, 0x56, 0x64, 0x41, 0x2c, 0xb6, 0xde, 0x84, 0x51, 0xee, 0xdc, 0x07, ++ 0x0a, 0x23, 0xf7, 0x77, 0x7d, 0xc1, 0xf1, 0xa4, 0xc1, 0x25, 0x6e, 0xd0, ++ 0xc4, 0x12, 0x80, 0x7b, 0x9c, 0xc8, 0xee, 0x3f, 0x0f, 0x3f, 0xc0, 0x7e, ++ 0x0f, 0xfb, 0x30, 0xd5, 0xdf, 0x5b, 0x78, 0x3c, 0xe4, 0x5a, 0x1b, 0x9e, ++ 0x3f, 0x76, 0x9f, 0x07, 0x79, 0x0b, 0x92, 0x33, 0xe7, 0xda, 0x18, 0xbf, ++ 0xeb, 0xfa, 0xf0, 0x0e, 0x2b, 0xde, 0xe3, 0xef, 0xe7, 0xf2, 0x48, 0x7b, ++ 0x3e, 0x65, 0x10, 0xcb, 0xf7, 0xc5, 0x38, 0x11, 0xc0, 0x7d, 0x71, 0x3c, ++ 0xda, 0xe1, 0x14, 0xcc, 0xf9, 0x40, 0x47, 0x45, 0x83, 0x35, 0x7d, 0x4a, ++ 0xf2, 0x21, 0x3e, 0x75, 0x90, 0xe7, 0x7f, 0xd6, 0xde, 0x68, 0xf3, 0xc0, ++ 0x78, 0x21, 0x1e, 0x37, 0x5f, 0x3d, 0x88, 0xe9, 0x8d, 0xd5, 0x83, 0xd8, ++ 0xef, 0x3f, 0x68, 0xf5, 0x5e, 0xbf, 0x8f, 0xd3, 0x8b, 0xb6, 0xcf, 0x05, ++ 0xf1, 0x1a, 0x7d, 0x7c, 0xbb, 0xb9, 0xb7, 0x3f, 0x8b, 0xaf, 0x68, 0xfa, ++ 0xf7, 0xe9, 0x8a, 0xb8, 0xb5, 0xec, 0xbe, 0x77, 0x8d, 0x6e, 0x4d, 0x78, ++ 0xbe, 0x32, 0x3e, 0xaf, 0x58, 0x81, 0x38, 0xd3, 0x0e, 0x2e, 0x47, 0x4a, ++ 0xb8, 0x3f, 0xbf, 0x03, 0x36, 0x70, 0x41, 0x9e, 0xb4, 0xf0, 0xb8, 0xb4, ++ 0xe4, 0x9c, 0x0d, 0xbf, 0x1b, 0xb4, 0xe3, 0x68, 0x1e, 0xe6, 0x53, 0xa6, ++ 0x28, 0x4c, 0xbe, 0xec, 0xb8, 0x39, 0x8e, 0x40, 0x7e, 0xdf, 0xfe, 0x63, ++ 0x2f, 0x3d, 0xf2, 0x1e, 0x6d, 0x3f, 0x79, 0x54, 0xc1, 0xfb, 0xf2, 0xe6, ++ 0xf3, 0x78, 0xec, 0x0e, 0xb8, 0x17, 0x1e, 0xe4, 0xe5, 0x36, 0x33, 0xc6, ++ 0x19, 0xab, 0x15, 0x66, 0x4f, 0x56, 0xef, 0x1e, 0xc9, 0xec, 0x18, 0xc5, ++ 0xb3, 0x0a, 0xf2, 0xbe, 0x7d, 0x5b, 0x65, 0x8c, 0x7b, 0x55, 0x3b, 0x02, ++ 0x1b, 0x5f, 0xc0, 0xf6, 0x4c, 0x17, 0xc5, 0x2c, 0x9c, 0x17, 0x65, 0x76, ++ 0xf0, 0xf6, 0x78, 0xf6, 0x7e, 0x5c, 0xe0, 0x17, 0x2f, 0x83, 0x5f, 0xba, ++ 0x3b, 0xdd, 0xe5, 0xa3, 0xfd, 0x17, 0x65, 0x78, 0xf6, 0x02, 0x1f, 0x65, ++ 0x99, 0xd5, 0x04, 0xa2, 0xed, 0xbb, 0x0a, 0x91, 0xf3, 0xa4, 0x87, 0x02, ++ 0xcc, 0x6e, 0x3e, 0x04, 0x82, 0x07, 0xbe, 0xd3, 0x6e, 0xe7, 0xbf, 0x33, ++ 0xe0, 0xce, 0x5c, 0x40, 0xc7, 0xf9, 0xfc, 0xa1, 0x74, 0x5c, 0x0f, 0x95, ++ 0xb7, 0x68, 0x5f, 0x7d, 0xfe, 0x98, 0x19, 0xf7, 0xd5, 0x9e, 0xee, 0xfd, ++ 0x2e, 0x8b, 0x8f, 0x1e, 0x92, 0x8b, 0xf1, 0x3e, 0x99, 0x43, 0xdb, 0x0a, ++ 0x5c, 0xd4, 0xf3, 0x24, 0x3d, 0xc5, 0x4a, 0x10, 0xe2, 0xdf, 0xde, 0xc7, ++ 0x99, 0xbd, 0x37, 0xcf, 0xa4, 0xae, 0x01, 0xf8, 0x90, 0xdd, 0xf1, 0x2e, ++ 0x83, 0xbf, 0xfa, 0x58, 0x19, 0xbb, 0x5f, 0xa2, 0xf2, 0xde, 0xe9, 0x67, ++ 0xda, 0xe7, 0x06, 0xf9, 0xae, 0x8f, 0xff, 0x76, 0x93, 0x70, 0x0e, 0xfa, ++ 0xab, 0xe5, 0x83, 0x5b, 0x20, 0xdf, 0xb4, 0xbb, 0x7d, 0x84, 0x8b, 0x6d, ++ 0x67, 0x65, 0xe0, 0x26, 0x4a, 0x2d, 0xdf, 0x7f, 0x3e, 0x2c, 0x33, 0xf8, ++ 0x86, 0x77, 0xc9, 0x48, 0xcf, 0xe7, 0x3a, 0x3e, 0xd0, 0x45, 0xef, 0xef, ++ 0xe0, 0x89, 0x04, 0x7f, 0xdf, 0x4d, 0xbf, 0xdf, 0x16, 0xbd, 0x4f, 0xd1, ++ 0xb7, 0xce, 0xf0, 0xe8, 0xdd, 0x91, 0xce, 0xed, 0x3a, 0x63, 0xfb, 0x75, ++ 0xd9, 0x9e, 0x53, 0xc0, 0x6f, 0xb5, 0x4f, 0x7c, 0x77, 0x60, 0x91, 0x0a, ++ 0xdf, 0x0b, 0xa3, 0x3c, 0x24, 0x7e, 0x16, 0x6f, 0x3f, 0x2c, 0xbb, 0x67, ++ 0x03, 0xdd, 0x26, 0x4e, 0x0e, 0x1a, 0xf2, 0xb8, 0x6c, 0x2a, 0xf7, 0x0f, ++ 0xcc, 0xdc, 0xfe, 0x23, 0x41, 0x45, 0xcf, 0x87, 0x5a, 0x7b, 0xd1, 0x44, ++ 0x12, 0x73, 0x5f, 0xe7, 0xff, 0x00, 0x2e, 0x3f, 0xe0, 0x29, 0x00, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0b, 0xc5, 0x7d, 0x0b, 0x78, 0x54, 0xd5, 0xb5, 0xf0, 0x3e, 0x73, ++ 0xce, 0xbc, 0x92, 0x99, 0x64, 0x66, 0x32, 0x09, 0x93, 0x17, 0x39, 0x79, ++ 0x07, 0x92, 0xc0, 0x10, 0x43, 0x44, 0x8b, 0x3a, 0x09, 0x01, 0x03, 0x46, ++ 0x9d, 0x00, 0x2a, 0x5a, 0x8b, 0xc3, 0x1b, 0x94, 0x3c, 0x04, 0x6d, 0x63, ++ 0x4b, 0x9b, 0x81, 0x44, 0x08, 0x88, 0x1a, 0x2e, 0x01, 0x01, 0x01, 0x27, ++ 0x08, 0x4a, 0xaf, 0xd8, 0x06, 0x2f, 0x20, 0xd6, 0x48, 0x07, 0x44, 0x8a, ++ 0xad, 0xde, 0x3f, 0x3e, 0xda, 0x8b, 0x7a, 0x2f, 0x5f, 0x50, 0x8a, 0x68, ++ 0x05, 0x22, 0x5a, 0x7e, 0xda, 0xab, 0xf5, 0x5f, 0x6b, 0xed, 0x7d, 0x92, ++ 0x39, 0x43, 0x22, 0xd8, 0xdb, 0xdb, 0x3f, 0x7c, 0xb0, 0xd9, 0x67, 0xbf, ++ 0xd6, 0x5e, 0x6b, 0xed, 0xb5, 0xd6, 0x5e, 0x7b, 0xed, 0x9d, 0x58, 0x55, ++ 0x62, 0x2c, 0x91, 0x31, 0x7b, 0x37, 0xf3, 0x85, 0x8a, 0x18, 0xfb, 0x06, ++ 0x7f, 0x6e, 0xe8, 0x4f, 0x63, 0x55, 0x03, 0x95, 0x33, 0x36, 0xc5, 0xcc, ++ 0x92, 0x18, 0xbb, 0x96, 0xf1, 0x9f, 0x8c, 0xd3, 0x50, 0xdf, 0xc6, 0x98, ++ 0x4d, 0x55, 0x19, 0x1b, 0x0d, 0xdf, 0x4f, 0x87, 0x4d, 0xb3, 0x20, 0x9f, ++ 0xb1, 0x24, 0x6c, 0x9a, 0x2b, 0xd2, 0x00, 0xa4, 0x27, 0x8d, 0x2c, 0x6c, ++ 0x29, 0x85, 0x74, 0xa3, 0x3d, 0xb4, 0x2d, 0x13, 0x5b, 0xfa, 0x18, 0xf6, ++ 0x33, 0x77, 0x0c, 0xfc, 0x17, 0x9a, 0xce, 0x95, 0x59, 0x8b, 0xa5, 0x04, ++ 0xbf, 0xab, 0xfb, 0x7b, 0xdc, 0x8c, 0x9d, 0xda, 0xeb, 0xf4, 0xae, 0x82, ++ 0xef, 0xec, 0xab, 0x6f, 0x64, 0x56, 0xc6, 0xd8, 0x0c, 0x26, 0xea, 0x99, ++ 0x59, 0xab, 0xc5, 0xc5, 0xd8, 0x8b, 0x2d, 0x52, 0xd8, 0x02, 0xf5, 0x66, ++ 0x6c, 0x30, 0x6f, 0xb3, 0x42, 0x7f, 0x65, 0xcb, 0x7c, 0xb2, 0x1d, 0xf2, ++ 0xbd, 0x5b, 0x24, 0xef, 0x36, 0xa8, 0x37, 0xa3, 0xa5, 0x3c, 0x6f, 0x23, ++ 0xe4, 0xef, 0xdd, 0x53, 0xec, 0x95, 0xa1, 0x69, 0x1c, 0x8e, 0x83, 0xf9, ++ 0x90, 0x33, 0x24, 0x43, 0xfd, 0x6b, 0x1b, 0xc7, 0xb1, 0x8f, 0xae, 0x62, ++ 0x6c, 0x96, 0x39, 0x64, 0x52, 0xe0, 0x3b, 0x7b, 0x4e, 0x62, 0x3b, 0x18, ++ 0xf5, 0xdf, 0x82, 0xfd, 0x2f, 0x84, 0x46, 0xc9, 0x25, 0x97, 0xe2, 0x61, ++ 0xde, 0x06, 0x33, 0x63, 0x16, 0x3e, 0xf7, 0x6f, 0xf0, 0x9f, 0x50, 0x44, ++ 0x3e, 0x0b, 0xfa, 0xed, 0xec, 0x90, 0x19, 0xcc, 0x97, 0xed, 0x84, 0xef, ++ 0x05, 0xfd, 0xdf, 0x17, 0x2a, 0xe1, 0x83, 0x52, 0x1c, 0x63, 0xb5, 0x9d, ++ 0x51, 0xed, 0xd9, 0xdf, 0xcc, 0x7d, 0xf5, 0x10, 0x50, 0x16, 0x24, 0x3c, ++ 0xbb, 0x4d, 0xec, 0x1e, 0xbf, 0x8d, 0x26, 0x3d, 0xa4, 0xa6, 0x98, 0xb1, ++ 0x3f, 0xe2, 0x7f, 0x93, 0x19, 0x8b, 0xc9, 0xf0, 0x5f, 0xad, 0x12, 0x1d, ++ 0x72, 0x86, 0x4c, 0xb6, 0xc3, 0xbc, 0x2b, 0xf8, 0xbc, 0x7a, 0x77, 0x4b, ++ 0x84, 0xd7, 0x5a, 0xd6, 0x60, 0x62, 0xd8, 0x4f, 0x7b, 0x02, 0x63, 0xd7, ++ 0x44, 0x8c, 0x6b, 0x61, 0xe1, 0x58, 0x48, 0x4f, 0xc9, 0x41, 0x2a, 0x9f, ++ 0x6b, 0x5e, 0x43, 0x69, 0xb5, 0x9a, 0x49, 0x74, 0xbb, 0x97, 0xf5, 0x98, ++ 0x58, 0x36, 0xf6, 0xdb, 0x6b, 0xf2, 0x17, 0x0f, 0xce, 0x07, 0xd5, 0x97, ++ 0xe1, 0x83, 0x9b, 0x05, 0x1f, 0x2c, 0x3c, 0xcd, 0xc2, 0xd7, 0xc1, 0x78, ++ 0x0b, 0x97, 0xb0, 0x70, 0xed, 0x08, 0x9e, 0xda, 0x21, 0x9d, 0xab, 0xb0, ++ 0x60, 0x1c, 0xe0, 0x75, 0x2e, 0xe0, 0x20, 0x5e, 0xa4, 0x31, 0x25, 0x1c, ++ 0xaf, 0x6a, 0x41, 0x3f, 0x5e, 0x16, 0x84, 0xf4, 0x79, 0xc4, 0xa7, 0x1a, ++ 0x81, 0x67, 0xc4, 0x63, 0x64, 0x79, 0xfd, 0xfe, 0x6f, 0xcc, 0x91, 0xf9, ++ 0x21, 0x26, 0xc6, 0xac, 0xae, 0x7e, 0x3a, 0x03, 0xa1, 0x08, 0xae, 0x21, ++ 0xe3, 0x1a, 0x46, 0x35, 0x00, 0x9c, 0xd7, 0x2e, 0x09, 0xc9, 0x0c, 0xe6, ++ 0x97, 0x92, 0xee, 0xbb, 0x31, 0x07, 0xbe, 0xc7, 0x96, 0xf2, 0xf9, 0xd6, ++ 0x1f, 0xb3, 0x58, 0xd4, 0x91, 0x98, 0xf7, 0xb3, 0x2c, 0xa8, 0xf7, 0x65, ++ 0x5a, 0xf9, 0x0b, 0xb9, 0x30, 0xdf, 0x7a, 0x85, 0xf9, 0x3a, 0xa1, 0x3c, ++ 0x16, 0xf0, 0xd2, 0x01, 0xdf, 0xb7, 0x58, 0x59, 0x10, 0xfb, 0x7f, 0x2a, ++ 0x97, 0xcf, 0xd7, 0x63, 0xe2, 0xfc, 0x6b, 0x54, 0xfc, 0x6c, 0x94, 0x0d, ++ 0xe9, 0xd2, 0x1d, 0x36, 0x20, 0x5d, 0x12, 0x99, 0x03, 0xf9, 0x51, 0xc3, ++ 0xe7, 0x16, 0x3b, 0xb4, 0x2b, 0xc1, 0x76, 0x12, 0xb5, 0xeb, 0x6b, 0x6f, ++ 0x61, 0x2d, 0x31, 0x11, 0xed, 0x2b, 0x7e, 0x65, 0x65, 0x0c, 0xd6, 0xcb, ++ 0x85, 0x97, 0xec, 0x21, 0x33, 0x54, 0x65, 0x4a, 0x20, 0xc3, 0x09, 0xfd, ++ 0x25, 0x7d, 0x60, 0x66, 0xab, 0x20, 0x7f, 0xf6, 0x57, 0xf6, 0xf9, 0xd8, ++ 0xdf, 0x59, 0x23, 0x9b, 0xd6, 0x09, 0xf5, 0xdd, 0x32, 0x6b, 0xe8, 0x24, ++ 0x7e, 0x59, 0x4e, 0xf4, 0xf9, 0x19, 0xd2, 0x35, 0x11, 0xb9, 0xa9, 0x22, ++ 0x95, 0x21, 0xef, 0x4b, 0x93, 0x52, 0x99, 0x07, 0xcb, 0x97, 0xd1, 0x78, ++ 0xb5, 0x4e, 0xe0, 0xaf, 0x01, 0xe8, 0xdb, 0x57, 0x9e, 0xd9, 0x7d, 0x3b, ++ 0xe7, 0x2b, 0xb3, 0xba, 0x0d, 0xc6, 0xbb, 0xe0, 0xec, 0xf9, 0x21, 0xe6, ++ 0x01, 0x1e, 0x16, 0x84, 0xfc, 0x0f, 0x91, 0xce, 0x88, 0x97, 0x3d, 0xe3, ++ 0x46, 0xfd, 0x04, 0xbe, 0xd7, 0xfb, 0x6d, 0x5e, 0x8e, 0xfd, 0xc0, 0x28, ++ 0xe4, 0x57, 0xb3, 0xfc, 0xc0, 0xed, 0x16, 0xe0, 0xaf, 0x09, 0xf2, 0x92, ++ 0xde, 0x87, 0x60, 0x1e, 0xb5, 0xe9, 0x36, 0x87, 0x19, 0x9a, 0x54, 0x66, ++ 0xfc, 0xe7, 0x1f, 0xee, 0x84, 0xfc, 0x27, 0x7b, 0x8c, 0xcc, 0x8c, 0x74, ++ 0xde, 0x31, 0x6e, 0x1a, 0xcb, 0xba, 0x14, 0x0e, 0x2d, 0x5d, 0x10, 0x32, ++ 0x7e, 0xd8, 0x13, 0xb1, 0x5e, 0xee, 0xdb, 0xa9, 0xcf, 0xd7, 0x76, 0xea, ++ 0xf3, 0xf5, 0x4c, 0xf9, 0xb0, 0x47, 0xe3, 0x03, 0x40, 0xc1, 0x16, 0xd5, ++ 0xee, 0x3e, 0x55, 0x48, 0xb2, 0xc3, 0xfb, 0x0d, 0xf0, 0xb7, 0xd9, 0xdc, ++ 0x70, 0xba, 0x03, 0xe0, 0x35, 0xbf, 0x6c, 0xf6, 0x2e, 0x85, 0xcf, 0x8b, ++ 0xd4, 0xc0, 0x36, 0x5c, 0x4f, 0x75, 0x86, 0xde, 0x23, 0x88, 0x67, 0x73, ++ 0xc6, 0x67, 0x23, 0x02, 0x80, 0x97, 0x8a, 0x8c, 0xaf, 0x8e, 0xa4, 0x22, ++ 0xfe, 0x7f, 0xca, 0xbc, 0x08, 0xf7, 0x05, 0x6b, 0xf9, 0x0c, 0xa2, 0xc7, ++ 0x46, 0xab, 0x1a, 0x8c, 0x90, 0x5f, 0xf5, 0x82, 0xff, 0xdb, 0x87, 0x56, ++ 0x53, 0x79, 0xfb, 0x26, 0xb3, 0x2a, 0xf1, 0xf2, 0xea, 0xd1, 0x20, 0xb7, ++ 0xe6, 0xd3, 0x12, 0xa6, 0x2a, 0x16, 0x03, 0xe0, 0xbf, 0x7e, 0xc3, 0xc4, ++ 0x4f, 0xa4, 0x11, 0x54, 0x6e, 0x41, 0x7a, 0xb4, 0x03, 0x9f, 0x52, 0xbb, ++ 0x17, 0xa4, 0xd0, 0x52, 0x68, 0x37, 0x7f, 0xc3, 0xbc, 0x6a, 0x06, 0xe5, ++ 0x67, 0x58, 0xc8, 0x64, 0x01, 0x78, 0x3e, 0xd1, 0xf0, 0x2c, 0x77, 0x4d, ++ 0xb0, 0xc0, 0x7f, 0xdb, 0x5d, 0x55, 0xc3, 0x50, 0xbe, 0x28, 0x5f, 0x2b, ++ 0x7e, 0xa4, 0xff, 0x0a, 0xec, 0xea, 0x9a, 0x7e, 0x7c, 0xfd, 0xba, 0x6f, ++ 0x7d, 0x5a, 0xda, 0x4e, 0x02, 0x5e, 0x6e, 0x62, 0x12, 0x8b, 0xc7, 0x79, ++ 0x3b, 0x03, 0xbf, 0xc6, 0x79, 0xd6, 0x5a, 0x7a, 0x4c, 0xe5, 0xd0, 0xcf, ++ 0x0d, 0x5f, 0x7f, 0x49, 0x72, 0x79, 0x5e, 0xe3, 0xab, 0xd9, 0x27, 0xaf, ++ 0x42, 0x79, 0xe3, 0x9b, 0x41, 0xf4, 0x86, 0xf9, 0xa1, 0x1c, 0x99, 0xf7, ++ 0xd0, 0x41, 0xfa, 0x2e, 0x4d, 0xb6, 0x10, 0x7c, 0xa7, 0xd2, 0x6d, 0x21, ++ 0x33, 0x7c, 0x7f, 0x75, 0xa3, 0x99, 0xe7, 0x9d, 0x26, 0xca, 0x9f, 0xda, ++ 0x22, 0x51, 0x7e, 0x5e, 0xa7, 0x14, 0xb2, 0x64, 0x62, 0xfd, 0x8b, 0x09, ++ 0xe5, 0x28, 0xbf, 0xb7, 0x18, 0x1d, 0x66, 0x76, 0x29, 0x9e, 0xa2, 0xf1, ++ 0xf2, 0xf1, 0xe6, 0xff, 0x88, 0x63, 0x00, 0xf2, 0xc7, 0x8c, 0x55, 0xe1, ++ 0xfa, 0x62, 0x8e, 0x86, 0x38, 0xbf, 0x1d, 0xcb, 0x1a, 0xe2, 0x26, 0x17, ++ 0x23, 0xbe, 0x6e, 0xfc, 0x04, 0xe5, 0xd7, 0xbc, 0x2d, 0xb2, 0x37, 0x8c, ++ 0x72, 0xfa, 0x15, 0xbb, 0x37, 0x97, 0x61, 0x7e, 0xfc, 0xb0, 0x39, 0x36, ++ 0x6c, 0xff, 0x45, 0x42, 0x39, 0xe2, 0x6f, 0xeb, 0x78, 0x87, 0x4c, 0xdf, ++ 0x65, 0x3f, 0xca, 0x21, 0xa6, 0xf8, 0xba, 0x6f, 0x80, 0xef, 0xca, 0xd6, ++ 0xab, 0x55, 0x5c, 0x2f, 0x87, 0xb7, 0x70, 0xb8, 0xe7, 0x39, 0x2d, 0xcf, ++ 0x20, 0x9d, 0x6f, 0xf8, 0x5a, 0x26, 0xfe, 0x57, 0x0c, 0x2c, 0xb0, 0xdb, ++ 0x86, 0x74, 0xf0, 0x0d, 0xc3, 0x75, 0xa7, 0x6e, 0xde, 0x31, 0x01, 0xf1, ++ 0xfb, 0x71, 0x4d, 0x8a, 0x81, 0xea, 0x3f, 0x2f, 0x31, 0x07, 0xe2, 0xc3, ++ 0xd9, 0x98, 0x84, 0xdf, 0xe7, 0x49, 0x8a, 0x1f, 0xd7, 0xd9, 0xfc, 0x0d, ++ 0x0b, 0xaa, 0x59, 0x5c, 0x3f, 0xde, 0x57, 0xa9, 0x32, 0xad, 0x9b, 0xf2, ++ 0x8c, 0x25, 0x49, 0x3d, 0x36, 0xe2, 0xfb, 0xdb, 0x51, 0xdf, 0xd5, 0x6e, ++ 0x01, 0x3e, 0xc7, 0xf1, 0x27, 0xbf, 0xff, 0x87, 0x3b, 0xdd, 0xfd, 0x7c, ++ 0x2f, 0x4d, 0xde, 0x70, 0xcb, 0xb5, 0xd8, 0xff, 0xb3, 0x46, 0xe2, 0x2f, ++ 0xad, 0x9f, 0xfa, 0xcd, 0x37, 0x0b, 0xfe, 0x60, 0x2c, 0x0c, 0x78, 0x9a, ++ 0x27, 0xf0, 0x64, 0xce, 0x58, 0x92, 0x87, 0xe3, 0x5f, 0x6e, 0x3d, 0xcc, ++ 0x5b, 0xd6, 0x90, 0xe7, 0xb0, 0x5d, 0x7e, 0x5d, 0xf4, 0xad, 0xf7, 0xcd, ++ 0x7c, 0x7d, 0x48, 0x99, 0x12, 0xc9, 0x55, 0x96, 0xe6, 0x22, 0x3d, 0x33, ++ 0xd8, 0x7a, 0xd4, 0xf4, 0x93, 0xad, 0xc0, 0x40, 0xf2, 0xde, 0xe2, 0x65, ++ 0xbe, 0x1d, 0x90, 0x0e, 0x31, 0x33, 0x9f, 0x04, 0xf2, 0x2b, 0x2f, 0x53, ++ 0x21, 0x3c, 0xe4, 0x65, 0x9a, 0xa8, 0x9e, 0xf2, 0x97, 0x45, 0x3b, 0xdf, ++ 0x04, 0xf8, 0xf7, 0xa9, 0x81, 0xf8, 0x4c, 0xf8, 0x9e, 0xc1, 0x7c, 0xa3, ++ 0x50, 0xcf, 0xa8, 0xbd, 0x8e, 0x8a, 0x78, 0xe8, 0xcd, 0x86, 0x0c, 0x52, ++ 0x8a, 0x70, 0x98, 0x43, 0x3b, 0x48, 0xce, 0x41, 0x1e, 0xf0, 0xb4, 0x3e, ++ 0x91, 0x3d, 0xb3, 0x2a, 0x02, 0xce, 0x2c, 0xec, 0x6f, 0x34, 0xad, 0x57, ++ 0x4f, 0x26, 0xf4, 0x7b, 0xf6, 0xbd, 0xaf, 0x8e, 0x20, 0x1e, 0xeb, 0x86, ++ 0x7e, 0x36, 0x02, 0xf5, 0x76, 0xfd, 0xc5, 0x2f, 0x4d, 0x2a, 0xd0, 0xd3, ++ 0xd6, 0x25, 0x91, 0x9c, 0xb5, 0x79, 0xfd, 0x0c, 0xf9, 0xa3, 0xbe, 0xab, ++ 0x86, 0xcd, 0x2e, 0xea, 0x97, 0x8f, 0xf5, 0x5e, 0x2e, 0xbf, 0xa3, 0xe7, ++ 0x55, 0x9b, 0x69, 0xe4, 0xeb, 0xcc, 0xdd, 0x4b, 0xfd, 0xdc, 0x9c, 0xc5, ++ 0xd7, 0x5d, 0xbb, 0x93, 0xaf, 0xcf, 0x4d, 0x8d, 0x31, 0x21, 0x94, 0x7b, ++ 0x9b, 0xdc, 0x21, 0x2b, 0x02, 0x1d, 0x5b, 0x1a, 0x64, 0x28, 0xdf, 0x6f, ++ 0x29, 0x95, 0xbd, 0x08, 0xb6, 0x66, 0xa7, 0xf8, 0x2d, 0x9c, 0x5e, 0x16, ++ 0xdf, 0xab, 0x4c, 0x46, 0x7e, 0xf5, 0xca, 0x5e, 0x14, 0xf1, 0xdd, 0xbe, ++ 0x8f, 0x5a, 0x12, 0x20, 0xff, 0x66, 0xe9, 0x78, 0xaf, 0x0c, 0x79, 0x9b, ++ 0xef, 0xe9, 0xd6, 0x2c, 0x9c, 0xb7, 0xd7, 0x28, 0xca, 0xb3, 0x83, 0x38, ++ 0xef, 0x37, 0xc6, 0x96, 0x93, 0xbd, 0x72, 0x8b, 0x4f, 0xa6, 0x71, 0xd9, ++ 0xfc, 0xb8, 0x10, 0xaa, 0x8a, 0x6e, 0xdf, 0x3b, 0xee, 0xd9, 0x30, 0xee, ++ 0xad, 0xcc, 0xb7, 0xf6, 0x24, 0xd0, 0xb1, 0x0a, 0x94, 0x37, 0xd2, 0xb1, ++ 0x1b, 0xc7, 0x06, 0x7a, 0x9d, 0x71, 0x04, 0xc6, 0x22, 0x5e, 0xb4, 0xf9, ++ 0xdc, 0xec, 0x9d, 0xb8, 0xf6, 0x64, 0xa4, 0x9d, 0xe1, 0xe3, 0xf6, 0x00, ++ 0x7c, 0xe2, 0x7a, 0xac, 0x74, 0x60, 0x3c, 0x94, 0xa8, 0xe5, 0x15, 0x48, ++ 0xa7, 0x1b, 0xae, 0xe7, 0x74, 0xf8, 0xf4, 0x79, 0x73, 0x68, 0x19, 0x8c, ++ 0xff, 0xa9, 0x15, 0xf4, 0x4c, 0x84, 0xbe, 0xf8, 0xd4, 0xce, 0xf5, 0xce, ++ 0xd4, 0x4c, 0xae, 0xc7, 0x18, 0xeb, 0x1c, 0x8a, 0x72, 0xbf, 0x2f, 0xaf, ++ 0x0c, 0x33, 0xe0, 0xba, 0x7f, 0xc0, 0xc1, 0xf1, 0xe1, 0x36, 0x75, 0x0e, ++ 0xc5, 0xf5, 0xf6, 0x27, 0x49, 0xdf, 0xcf, 0xbd, 0xad, 0x32, 0x0b, 0x81, ++ 0x9c, 0x59, 0xd0, 0x2a, 0xb1, 0x10, 0x80, 0xf8, 0xe9, 0xcf, 0x5f, 0x1c, ++ 0x8a, 0xf2, 0xf7, 0x93, 0x1d, 0x2f, 0x0e, 0x9d, 0x19, 0x01, 0x5f, 0x74, ++ 0x3b, 0x2d, 0x9d, 0xae, 0x8d, 0xd7, 0xf6, 0x84, 0xcf, 0x02, 0xe3, 0xcd, ++ 0x64, 0xda, 0x78, 0xe1, 0x34, 0x1c, 0x6f, 0xa6, 0xd7, 0x7c, 0x02, 0xe5, ++ 0x07, 0x6b, 0x1d, 0xef, 0xeb, 0x89, 0xb0, 0x1f, 0x48, 0x42, 0x46, 0xd4, ++ 0x67, 0x1b, 0x7c, 0x24, 0xbf, 0xcf, 0xc1, 0x6a, 0x44, 0xbe, 0xd3, 0xda, ++ 0x9d, 0x9b, 0x1f, 0xe3, 0x43, 0x3b, 0xf3, 0x1c, 0xb3, 0x84, 0x24, 0x18, ++ 0x6a, 0x66, 0x97, 0x1c, 0x36, 0x63, 0x7f, 0x3e, 0x5f, 0x8e, 0x1b, 0xe8, ++ 0x5d, 0xa7, 0xb5, 0x8f, 0xea, 0x7f, 0x03, 0xf2, 0x0f, 0xc0, 0x25, 0xed, ++ 0x97, 0xc2, 0x76, 0xa8, 0x1f, 0x5b, 0xd4, 0x4b, 0xf2, 0x76, 0x81, 0xc5, ++ 0x7f, 0x24, 0x15, 0x8a, 0x16, 0x20, 0x1d, 0xa1, 0xfe, 0x44, 0xa4, 0xa3, ++ 0x84, 0xfc, 0xea, 0x33, 0xe1, 0xbc, 0x15, 0x89, 0xcb, 0xf3, 0x33, 0x0e, ++ 0xff, 0x83, 0x48, 0x87, 0x39, 0x6d, 0x7a, 0x3a, 0x66, 0x66, 0x3a, 0xb8, ++ 0x7c, 0x77, 0xb8, 0x89, 0xee, 0xa6, 0x3a, 0x9b, 0x82, 0xfa, 0x22, 0xa9, ++ 0x99, 0x71, 0x3b, 0xf0, 0x41, 0x43, 0x08, 0xf5, 0xb5, 0x3b, 0x26, 0x6e, ++ 0x04, 0x03, 0x3b, 0xc6, 0x94, 0xe2, 0xb1, 0xa1, 0x9c, 0xba, 0x21, 0x2f, ++ 0xa6, 0xc5, 0x10, 0x8f, 0xdf, 0x87, 0x86, 0xb0, 0x7e, 0x7a, 0x4a, 0x01, ++ 0xb5, 0x0b, 0x56, 0x70, 0xfe, 0x0e, 0x26, 0xb1, 0x50, 0xb3, 0x84, 0x5d, ++ 0x36, 0x48, 0x64, 0x07, 0x3a, 0x7a, 0x98, 0x02, 0xdf, 0xd3, 0xc6, 0x30, ++ 0xc7, 0x2a, 0x94, 0x45, 0x99, 0xdc, 0x4e, 0xf4, 0x30, 0xef, 0x06, 0x99, ++ 0xec, 0xc4, 0x4e, 0x09, 0xed, 0x44, 0x0d, 0x0f, 0x9a, 0x7c, 0x47, 0xbe, ++ 0x41, 0xb9, 0xf7, 0xa9, 0x64, 0x21, 0xbe, 0x91, 0xba, 0x24, 0xb2, 0xfb, ++ 0x64, 0x43, 0xe7, 0x74, 0xec, 0x77, 0x30, 0x3e, 0xda, 0x12, 0xc5, 0x47, ++ 0x5b, 0xfe, 0xc9, 0x7c, 0xf4, 0xec, 0xa0, 0x7c, 0x14, 0x50, 0x89, 0x8f, ++ 0x3c, 0x96, 0x81, 0xf9, 0x08, 0xf6, 0x4d, 0xdf, 0xa9, 0x3e, 0x0b, 0xfa, ++ 0x15, 0xc0, 0xd7, 0x10, 0x81, 0xaf, 0xc7, 0x85, 0x7c, 0xe9, 0x7d, 0xd0, ++ 0x42, 0x74, 0x83, 0x1f, 0x09, 0xe7, 0x5b, 0x2d, 0xfa, 0xab, 0xb6, 0xd8, ++ 0xc2, 0xf2, 0x08, 0x92, 0x13, 0x9f, 0xf5, 0xc9, 0x6f, 0xe8, 0x67, 0x33, ++ 0xd8, 0x9f, 0xb8, 0x4f, 0x49, 0x46, 0xfb, 0x19, 0xd2, 0xd4, 0xe6, 0x19, ++ 0x2a, 0xb7, 0xdf, 0xbb, 0x7b, 0x24, 0xe8, 0x2f, 0xf6, 0x6a, 0x0b, 0xe9, ++ 0xbd, 0x47, 0x0c, 0xdd, 0x99, 0x68, 0xe7, 0x0f, 0x19, 0xde, 0xb0, 0x1b, ++ 0xf9, 0x63, 0xc8, 0xf4, 0xa2, 0x92, 0x66, 0xb2, 0x4f, 0xd2, 0x9c, 0x28, ++ 0xf7, 0x51, 0xd6, 0xe0, 0xfc, 0xeb, 0x1a, 0xc7, 0xf9, 0xb9, 0x1d, 0x00, ++ 0xfd, 0x22, 0x1f, 0xd5, 0x98, 0x68, 0x3f, 0x51, 0xf7, 0x50, 0xb9, 0x9f, ++ 0xdb, 0x01, 0x55, 0xb4, 0x3e, 0xea, 0x57, 0x5b, 0x55, 0xd4, 0x67, 0xe3, ++ 0xba, 0x32, 0x97, 0x22, 0x7f, 0xd4, 0x2f, 0x01, 0xfb, 0x08, 0xe5, 0xef, ++ 0xfe, 0x8e, 0x8d, 0x73, 0x21, 0x5f, 0x37, 0xd5, 0xe6, 0x45, 0x3b, 0xc5, ++ 0x6a, 0x99, 0x52, 0x84, 0xed, 0x58, 0xab, 0x7e, 0x9d, 0xad, 0x94, 0x3a, ++ 0xc9, 0x2e, 0x0e, 0x4e, 0x64, 0x5e, 0x94, 0xdb, 0xe7, 0x42, 0x86, 0xa0, ++ 0x71, 0x24, 0xca, 0xd9, 0x9e, 0xad, 0x3f, 0x41, 0x3d, 0xbe, 0xa0, 0xc8, ++ 0x1b, 0x54, 0x71, 0xbd, 0x09, 0xbe, 0xcc, 0x61, 0xa4, 0x17, 0xda, 0x9d, ++ 0xbe, 0x64, 0x17, 0xe0, 0x75, 0xdf, 0xdf, 0x64, 0xda, 0x17, 0xb5, 0x8f, ++ 0x82, 0x3c, 0xa4, 0x2f, 0x0b, 0x7a, 0xb6, 0xd7, 0xf8, 0x92, 0x9d, 0x90, ++ 0x9f, 0xb9, 0xda, 0x4a, 0x78, 0x6f, 0xef, 0xe0, 0xe5, 0xe7, 0xec, 0x80, ++ 0x20, 0xe8, 0x3f, 0x45, 0xe6, 0xfd, 0xb1, 0x78, 0x0b, 0xd7, 0x33, 0x97, ++ 0xca, 0x03, 0x0b, 0xe2, 0x3d, 0x69, 0x0c, 0xd3, 0x7e, 0x36, 0x60, 0x3e, ++ 0x45, 0xcb, 0xb7, 0x3d, 0x41, 0x76, 0x8c, 0xb6, 0xde, 0xdb, 0x33, 0x39, ++ 0x3c, 0xf6, 0x22, 0x7f, 0x26, 0x5a, 0xbe, 0x01, 0x75, 0x74, 0x77, 0x0c, ++ 0xf0, 0x4f, 0x92, 0x6c, 0xd0, 0x36, 0x45, 0x41, 0xb4, 0xbb, 0x63, 0x71, ++ 0x4c, 0x9e, 0xf7, 0xe1, 0x70, 0xeb, 0x0c, 0x00, 0x48, 0x0a, 0x66, 0xbf, ++ 0x5e, 0x53, 0x39, 0x36, 0x32, 0xcf, 0xeb, 0xf7, 0xb7, 0x7f, 0x64, 0x72, ++ 0x65, 0x1a, 0xe9, 0xd7, 0xbe, 0x72, 0x04, 0x1b, 0xf4, 0xae, 0x96, 0xf7, ++ 0x59, 0x01, 0x8e, 0x15, 0xf6, 0xfe, 0x72, 0x05, 0xec, 0x49, 0xcb, 0x7e, ++ 0x49, 0xb4, 0xbf, 0x76, 0xf2, 0xf8, 0x1c, 0x98, 0xbf, 0x24, 0xc6, 0x0f, ++ 0x9a, 0xd6, 0xf8, 0x00, 0xde, 0xc7, 0xad, 0x4c, 0x37, 0x5e, 0x24, 0x7c, ++ 0x4a, 0x54, 0xff, 0x46, 0x15, 0xf7, 0xf5, 0xa2, 0x7e, 0x70, 0xa4, 0x7f, ++ 0x3c, 0x54, 0x58, 0x57, 0xa2, 0xb5, 0x6f, 0x6e, 0xf3, 0x01, 0xfc, 0x8f, ++ 0x1b, 0xf5, 0xfd, 0x11, 0x4a, 0x45, 0x7b, 0xcc, 0x68, 0xe3, 0xfd, 0x2e, ++ 0xe7, 0x77, 0x6b, 0x56, 0x8f, 0xed, 0xd7, 0xff, 0x60, 0x0f, 0x38, 0xb3, ++ 0x46, 0xf7, 0xdb, 0x01, 0x2b, 0xde, 0xaf, 0x6e, 0x1b, 0x09, 0x63, 0xc5, ++ 0x3a, 0xbe, 0x30, 0xa1, 0x7e, 0xd5, 0xf4, 0x79, 0xbd, 0x5b, 0x22, 0x3b, ++ 0x23, 0x7a, 0xbd, 0xa6, 0x66, 0x71, 0x7f, 0x05, 0xd8, 0xb5, 0xa9, 0x59, ++ 0x11, 0xf6, 0x6e, 0x35, 0xda, 0xbb, 0x32, 0xd9, 0xb9, 0x13, 0x70, 0x69, ++ 0xd5, 0x2f, 0xf1, 0x33, 0xb4, 0x2f, 0xc1, 0x6e, 0xc8, 0xc0, 0xf1, 0xce, ++ 0xbe, 0xf7, 0xd9, 0xa9, 0x83, 0xf0, 0xbd, 0x7d, 0xf2, 0xa7, 0x64, 0xe7, ++ 0xd7, 0x5f, 0x54, 0xc8, 0xfe, 0xa8, 0x07, 0xfb, 0x03, 0xed, 0x76, 0x4b, ++ 0x17, 0xb7, 0x67, 0xd9, 0x7e, 0x23, 0xe9, 0x5d, 0x8d, 0xee, 0xf7, 0x0a, ++ 0xf9, 0xd3, 0xee, 0x04, 0xbd, 0x8f, 0x7c, 0xfa, 0x8a, 0x34, 0x1a, 0xf9, ++ 0x94, 0xb1, 0x86, 0xa1, 0xb7, 0x01, 0x0d, 0x9a, 0xb3, 0x7c, 0xc3, 0x10, ++ 0x0e, 0x6d, 0x3f, 0x16, 0x0d, 0x6f, 0x45, 0x16, 0xb7, 0xcb, 0xeb, 0x0b, ++ 0x2a, 0x36, 0xe6, 0x61, 0xff, 0xdb, 0x25, 0x86, 0x7a, 0x7f, 0x55, 0xc1, ++ 0x87, 0x49, 0x68, 0x9f, 0xd4, 0x77, 0x9d, 0x48, 0x9a, 0x13, 0xd1, 0x6e, ++ 0xc1, 0xfe, 0x75, 0x84, 0x87, 0x05, 0x3b, 0x8d, 0x03, 0xce, 0xbf, 0x22, ++ 0x8b, 0xdb, 0x9b, 0x75, 0x2f, 0xed, 0xf5, 0xe1, 0x7a, 0xff, 0x34, 0x24, ++ 0xd1, 0x5a, 0x9e, 0xaf, 0x84, 0x56, 0xa2, 0x5d, 0x39, 0x7f, 0xbe, 0x01, ++ 0x2d, 0x35, 0x56, 0x1a, 0x9a, 0x71, 0x27, 0xae, 0x7b, 0x36, 0xcd, 0xc4, ++ 0x72, 0x61, 0x7e, 0x05, 0xc2, 0xae, 0xa9, 0xdf, 0x39, 0x25, 0x78, 0x2d, ++ 0xee, 0xdb, 0xe0, 0xaf, 0x04, 0x9f, 0x36, 0xf9, 0xe7, 0xd2, 0xfa, 0xde, ++ 0x34, 0xcd, 0x62, 0x63, 0x99, 0x08, 0xe7, 0xcc, 0xfb, 0x09, 0x0f, 0x8e, ++ 0x18, 0x1f, 0xe2, 0x61, 0x55, 0x41, 0x45, 0x32, 0x8e, 0x53, 0x57, 0x33, ++ 0xc1, 0x81, 0xfe, 0x93, 0x7a, 0xb0, 0xb3, 0xb0, 0xbc, 0xee, 0xa1, 0xbb, ++ 0xc8, 0x9f, 0xd2, 0x67, 0x07, 0xef, 0x37, 0x56, 0xa1, 0xfd, 0x55, 0x06, ++ 0xf6, 0xd6, 0xbf, 0x01, 0xdc, 0xe9, 0xae, 0x49, 0x55, 0x5e, 0x58, 0x8f, ++ 0xa9, 0xf2, 0xee, 0x51, 0x8b, 0x21, 0xbf, 0x7e, 0x10, 0xf9, 0xfb, 0x5e, ++ 0x36, 0xa7, 0x67, 0x8b, 0xe4, 0x0f, 0xde, 0x8a, 0xeb, 0xfe, 0x25, 0x89, ++ 0xed, 0x50, 0xfb, 0xcb, 0x33, 0xf6, 0x73, 0xbb, 0xee, 0xae, 0x2c, 0x6e, ++ 0x07, 0x6a, 0xdf, 0xef, 0xca, 0x52, 0xa8, 0xdd, 0xd8, 0x60, 0xf7, 0x38, ++ 0xe4, 0xbd, 0x03, 0x4a, 0x4f, 0x2c, 0xda, 0xbf, 0xf5, 0xcc, 0xf7, 0x39, ++ 0xee, 0x3b, 0x99, 0xdf, 0xa6, 0xee, 0x20, 0x3a, 0x71, 0xb9, 0xe3, 0x6e, ++ 0x52, 0xc9, 0xaf, 0x64, 0x71, 0xf7, 0x3c, 0x32, 0x12, 0xcb, 0xc7, 0x2a, ++ 0xb4, 0x9f, 0x60, 0x4a, 0xcf, 0x5a, 0x1c, 0xf7, 0xec, 0x4a, 0xb7, 0x77, ++ 0x15, 0x13, 0xfc, 0x8b, 0xf9, 0x87, 0x8a, 0x42, 0x28, 0x47, 0x8f, 0x66, ++ 0x05, 0xe6, 0x21, 0xff, 0x94, 0x09, 0x3b, 0xf2, 0xec, 0x4b, 0x37, 0x8e, ++ 0x9a, 0x59, 0xd4, 0x6f, 0x27, 0xad, 0xec, 0xb0, 0x86, 0x96, 0x01, 0x1e, ++ 0x56, 0xda, 0xd5, 0x7f, 0xa9, 0x42, 0xf9, 0xf6, 0x17, 0x85, 0xe4, 0x1b, ++ 0xb3, 0xf4, 0x76, 0x8f, 0x43, 0x7a, 0xfc, 0xd5, 0x45, 0xfd, 0xae, 0xb4, ++ 0x86, 0x56, 0x22, 0xfd, 0x83, 0x6b, 0x8c, 0x54, 0xbe, 0x3b, 0x25, 0xb0, ++ 0x08, 0xf9, 0xe6, 0x74, 0x4d, 0x55, 0x1e, 0xee, 0x83, 0x99, 0x2d, 0x98, ++ 0x57, 0x03, 0xfc, 0x64, 0x74, 0xb7, 0x31, 0xb4, 0x17, 0x60, 0xfb, 0x40, ++ 0x7e, 0x06, 0x8b, 0xdb, 0xcf, 0x54, 0xc8, 0x8f, 0x0b, 0xce, 0x50, 0x24, ++ 0x94, 0xf3, 0x51, 0xf6, 0xc7, 0x38, 0xf4, 0xf3, 0xd0, 0xbe, 0x01, 0x06, ++ 0x87, 0xef, 0x15, 0x42, 0x6c, 0xe5, 0x02, 0x17, 0x9c, 0xb2, 0xd0, 0x12, ++ 0x68, 0xf9, 0x26, 0xa1, 0xdf, 0x1e, 0x39, 0xfa, 0xd5, 0x54, 0x05, 0x3f, ++ 0x6a, 0x76, 0x8a, 0xc1, 0x12, 0x58, 0x80, 0x4d, 0x2b, 0xa7, 0xc5, 0x30, ++ 0x19, 0xf9, 0x7e, 0x79, 0xef, 0x11, 0x03, 0xcc, 0x27, 0xd6, 0xdd, 0x4d, ++ 0x76, 0x6c, 0x6d, 0xa7, 0x44, 0xe3, 0xd4, 0x16, 0xbc, 0x60, 0x42, 0xbf, ++ 0xc9, 0x7d, 0x9d, 0x7c, 0x5d, 0xd6, 0x8b, 0x7d, 0x00, 0xe0, 0x6f, 0x28, ++ 0xda, 0x03, 0x8f, 0x64, 0xc5, 0x8a, 0xfd, 0x67, 0x0b, 0xf5, 0x5b, 0xcf, ++ 0xba, 0x69, 0x1f, 0xcd, 0x76, 0x71, 0x7a, 0x32, 0x06, 0xf5, 0xec, 0x91, ++ 0xfb, 0x89, 0xa5, 0x54, 0x4f, 0xeb, 0xcf, 0xb4, 0x8c, 0xfb, 0xbd, 0x6a, ++ 0x85, 0x3f, 0x06, 0x7a, 0xa4, 0xf2, 0xf5, 0x62, 0xbd, 0x6b, 0xfe, 0x09, ++ 0x58, 0x98, 0xc2, 0x3e, 0xe0, 0xe3, 0xae, 0x97, 0xba, 0x7d, 0x32, 0xe2, ++ 0x75, 0x94, 0xe4, 0x8d, 0xe4, 0x1b, 0x2d, 0x7d, 0x3e, 0x8b, 0xeb, 0xf7, ++ 0xf8, 0x43, 0xbd, 0x13, 0x70, 0xfd, 0xf6, 0x02, 0x7f, 0xa1, 0x5f, 0x66, ++ 0xa3, 0x54, 0x73, 0xff, 0x6b, 0x30, 0xbf, 0x8d, 0xa3, 0x87, 0x7b, 0xd1, ++ 0x84, 0xf2, 0x00, 0x3b, 0xc9, 0x25, 0xf8, 0x1d, 0x58, 0x11, 0xf0, 0x5e, ++ 0xba, 0xff, 0xf3, 0x09, 0xc8, 0x37, 0x60, 0x70, 0xd3, 0x7a, 0xad, 0xdb, ++ 0x5f, 0x2e, 0xd7, 0xda, 0x48, 0x6f, 0xd3, 0xfe, 0x71, 0x48, 0x6c, 0x43, ++ 0x07, 0x96, 0x0f, 0xb9, 0xa7, 0x80, 0xf4, 0x6a, 0xcc, 0x55, 0xec, 0x9e, ++ 0xc9, 0xf0, 0xfd, 0x05, 0xb1, 0xce, 0x92, 0x6d, 0xdc, 0xcf, 0xe5, 0x59, ++ 0x16, 0xcc, 0x5c, 0x54, 0x84, 0xe3, 0xfb, 0xef, 0x7f, 0x0d, 0xc7, 0x2f, ++ 0x8e, 0x21, 0x3f, 0xe5, 0x10, 0xa0, 0x8d, 0xdd, 0x45, 0x69, 0x2b, 0xfa, ++ 0x85, 0x3c, 0x6c, 0xa9, 0x84, 0xf5, 0xd6, 0xc5, 0xf1, 0xfe, 0x13, 0x0d, ++ 0xf2, 0x3d, 0x35, 0x45, 0x24, 0x77, 0x29, 0xef, 0xf2, 0x4a, 0xbe, 0x6d, ++ 0x90, 0x76, 0x65, 0x39, 0xa9, 0x7f, 0xd8, 0x77, 0x55, 0x21, 0x9c, 0xf8, ++ 0x9d, 0xf6, 0x63, 0xc0, 0x19, 0xb8, 0x9f, 0x45, 0x3f, 0x17, 0xf6, 0x33, ++ 0x24, 0x9b, 0xa7, 0x67, 0x93, 0xc3, 0x0a, 0x0a, 0x88, 0x4d, 0xac, 0x67, ++ 0xeb, 0x0e, 0xe4, 0xcf, 0xfd, 0x66, 0x07, 0xe2, 0xa9, 0x7a, 0xff, 0x6f, ++ 0x8e, 0xa1, 0xbe, 0xac, 0xb6, 0xb0, 0x4e, 0x19, 0xed, 0x95, 0x28, 0x3b, ++ 0x63, 0x49, 0xfa, 0x94, 0xd7, 0x90, 0x3f, 0xcf, 0x9d, 0x39, 0xb5, 0xf5, ++ 0x61, 0xf8, 0xb6, 0xee, 0xb6, 0x7d, 0xde, 0x00, 0xd1, 0x45, 0x6f, 0x3f, ++ 0x44, 0xef, 0x17, 0xb6, 0x61, 0x95, 0xe4, 0xc1, 0xed, 0xbd, 0x0f, 0xfa, ++ 0xe8, 0xc9, 0xed, 0xbd, 0xbe, 0xfc, 0x3f, 0xdc, 0xde, 0xe3, 0x76, 0x7d, ++ 0x70, 0x47, 0xac, 0xba, 0x23, 0x42, 0x9e, 0xd7, 0x8b, 0x7d, 0xda, 0xb9, ++ 0xf9, 0xe7, 0xe3, 0x50, 0xcf, 0x7c, 0xdc, 0x07, 0x0f, 0xe8, 0xe9, 0xb2, ++ 0x7e, 0x7b, 0x65, 0xe6, 0xf6, 0xd8, 0x13, 0xb8, 0xae, 0xfa, 0xec, 0xfe, ++ 0x28, 0xbb, 0xe1, 0xe8, 0x33, 0xb1, 0x41, 0xa4, 0xff, 0xf9, 0x4e, 0x2b, ++ 0xf9, 0xe9, 0x14, 0xb4, 0x7b, 0x00, 0x9e, 0x33, 0xf6, 0xde, 0x1f, 0x22, ++ 0x72, 0xdc, 0x26, 0xbf, 0x4f, 0xc2, 0xfd, 0xc3, 0x6e, 0xa3, 0x77, 0x19, ++ 0xf4, 0x57, 0x7f, 0xef, 0xa7, 0xbf, 0x30, 0xc0, 0xba, 0x53, 0x3a, 0xc0, ++ 0xee, 0x89, 0x47, 0x7b, 0x5f, 0x8d, 0x27, 0x39, 0xfb, 0xba, 0xcc, 0x76, ++ 0xa0, 0x5d, 0xa6, 0xf8, 0x1c, 0xe8, 0xf7, 0xd0, 0xe0, 0x57, 0x9c, 0x13, ++ 0x3c, 0xa8, 0xb7, 0x5b, 0xc4, 0xfc, 0x17, 0x9a, 0xc2, 0x79, 0x64, 0x07, ++ 0x99, 0xd8, 0x7c, 0xca, 0xc7, 0x85, 0xf3, 0xd0, 0xee, 0x79, 0x59, 0xe8, ++ 0x9d, 0x85, 0x31, 0x90, 0x87, 0xef, 0x8d, 0x9e, 0xc0, 0xd7, 0x48, 0xb7, ++ 0x14, 0x33, 0x97, 0x57, 0xd8, 0x0e, 0xbf, 0x77, 0x08, 0x7b, 0xab, 0x03, ++ 0x50, 0xe2, 0x40, 0xbc, 0x1c, 0x83, 0x7d, 0x77, 0xa6, 0xd0, 0xdf, 0xb8, ++ 0xff, 0x79, 0x34, 0x3d, 0xb4, 0x8a, 0xfc, 0x38, 0x16, 0xa2, 0xe7, 0x47, ++ 0x07, 0xcc, 0xdb, 0xd0, 0xcf, 0xf3, 0x51, 0x81, 0x21, 0x6c, 0xe2, 0x7e, ++ 0x09, 0xf2, 0x63, 0xa9, 0xad, 0x0a, 0x4b, 0x86, 0xfa, 0xea, 0x31, 0x6b, ++ 0x48, 0xe5, 0xfe, 0x2e, 0x8b, 0x01, 0xf4, 0xff, 0xac, 0xc7, 0xef, 0x7b, ++ 0x03, 0xf7, 0x15, 0xb3, 0x0e, 0x70, 0x3f, 0xd6, 0xac, 0x7b, 0x97, 0xdc, ++ 0x82, 0xfb, 0x8f, 0x8f, 0x26, 0x4f, 0x30, 0xa1, 0xbc, 0x99, 0xc3, 0x02, ++ 0xe4, 0x77, 0x9e, 0xc7, 0xb8, 0x1f, 0x7a, 0x01, 0x0b, 0x71, 0x7f, 0x35, ++ 0x73, 0x18, 0x70, 0xbc, 0xfb, 0x40, 0x6c, 0x6c, 0x42, 0x51, 0x13, 0x04, ++ 0xec, 0x5f, 0x0d, 0x9f, 0x25, 0x83, 0x84, 0x76, 0x85, 0xda, 0x02, 0x79, ++ 0x32, 0x9a, 0x7d, 0x6d, 0x55, 0x30, 0xee, 0xcc, 0x16, 0x03, 0xed, 0x4b, ++ 0x66, 0xb5, 0xea, 0xfd, 0xe9, 0x17, 0x56, 0xdd, 0x5f, 0x85, 0x7a, 0x7c, ++ 0x45, 0x8b, 0x81, 0xdb, 0x8f, 0xad, 0x12, 0xe9, 0xf1, 0x59, 0xcc, 0xe7, ++ 0x41, 0xbb, 0x43, 0xc3, 0x6b, 0x61, 0x76, 0x02, 0xc9, 0x83, 0x60, 0x8b, ++ 0xc1, 0x87, 0xe3, 0x8c, 0xcb, 0xe6, 0x7a, 0x05, 0x48, 0x14, 0xa2, 0xf9, ++ 0x89, 0xb4, 0xc5, 0x28, 0xfc, 0xf0, 0x02, 0x8e, 0xa5, 0xcc, 0x10, 0xc6, ++ 0xd4, 0x20, 0xf1, 0x74, 0x85, 0x43, 0xa9, 0x1a, 0x48, 0x3f, 0x6b, 0xfd, ++ 0xb5, 0x18, 0x1b, 0x2c, 0xe8, 0x0f, 0xeb, 0x4d, 0x37, 0x90, 0x1f, 0xf8, ++ 0x82, 0xc9, 0x37, 0x8d, 0xfc, 0xa8, 0xae, 0x3c, 0x86, 0x7e, 0xc4, 0x16, ++ 0x7b, 0x43, 0x6b, 0x15, 0x2f, 0xa7, 0x35, 0x73, 0xc1, 0xda, 0xeb, 0xa7, ++ 0xf2, 0xeb, 0x14, 0x6e, 0xf0, 0x31, 0xd5, 0x85, 0xf2, 0x32, 0x33, 0xdb, ++ 0x40, 0xfd, 0x45, 0xcf, 0x77, 0x4e, 0x9b, 0x3e, 0x1f, 0x7d, 0x3e, 0xb1, ++ 0x20, 0xa4, 0xcf, 0xcf, 0x62, 0x81, 0xfc, 0xe4, 0x6c, 0xf4, 0x1b, 0xe9, ++ 0xbf, 0x67, 0x66, 0x73, 0x3d, 0x70, 0x61, 0x55, 0xa6, 0x38, 0x07, 0xf0, ++ 0xd2, 0x39, 0x40, 0x8b, 0x51, 0x7d, 0x3b, 0x13, 0xe5, 0xd5, 0x4a, 0x85, ++ 0xe4, 0xe5, 0xd2, 0x34, 0x8e, 0x2f, 0x43, 0x3a, 0x4f, 0xb3, 0x9c, 0x95, ++ 0xd3, 0x88, 0x7f, 0x9d, 0x60, 0x5f, 0x10, 0xbc, 0x1c, 0xfe, 0xac, 0xeb, ++ 0xdc, 0x12, 0xea, 0xcd, 0x16, 0x27, 0xe7, 0xcb, 0xff, 0x29, 0xdc, 0xd1, ++ 0xf0, 0xde, 0x94, 0x9d, 0xc7, 0xf1, 0x8b, 0x46, 0x1e, 0x8c, 0xd7, 0xb2, ++ 0x52, 0x0a, 0x71, 0x7c, 0x71, 0xb8, 0xaf, 0xd4, 0x7f, 0xb1, 0x30, 0x5b, ++ 0xbf, 0xef, 0xec, 0xcb, 0xff, 0xe3, 0xf7, 0x9d, 0x9c, 0x1f, 0x57, 0xca, ++ 0x62, 0xbd, 0x39, 0x48, 0x0e, 0xcd, 0x74, 0xf0, 0x39, 0x7d, 0x24, 0x79, ++ 0x9f, 0x09, 0xe3, 0x77, 0x1b, 0xd8, 0x07, 0x00, 0xf7, 0xac, 0x95, 0x72, ++ 0x09, 0xda, 0x29, 0xe3, 0xa6, 0xd8, 0x68, 0x1e, 0x75, 0x07, 0xac, 0xe4, ++ 0x6f, 0xad, 0x5d, 0xd2, 0x33, 0x14, 0xd7, 0x51, 0x5d, 0x45, 0x4f, 0x5e, ++ 0xc3, 0x00, 0x78, 0x45, 0x68, 0x15, 0x4d, 0x7e, 0x41, 0xbd, 0x99, 0x6e, ++ 0xd8, 0x27, 0xe0, 0xba, 0x6d, 0xd5, 0x9f, 0x53, 0x81, 0xa6, 0x65, 0x91, ++ 0xe7, 0x4e, 0x53, 0xd2, 0x7c, 0x4b, 0xb3, 0x13, 0x71, 0x3f, 0xf2, 0xd1, ++ 0xee, 0xdf, 0x20, 0xbd, 0x77, 0x5b, 0x49, 0x3f, 0xc1, 0xff, 0x0e, 0x9a, ++ 0x51, 0x7e, 0xbd, 0x94, 0x49, 0x76, 0x53, 0x5e, 0x5a, 0x60, 0x65, 0x36, ++ 0xea, 0xf5, 0x98, 0xf0, 0xd6, 0x67, 0x33, 0xd1, 0x4e, 0xe1, 0x76, 0x52, ++ 0x6d, 0x97, 0xb9, 0x03, 0xed, 0xc0, 0x99, 0x2d, 0x11, 0xe7, 0x5e, 0xf8, ++ 0xcf, 0x6a, 0xfd, 0x39, 0x18, 0x6b, 0x75, 0x91, 0x7f, 0x83, 0xb5, 0xeb, ++ 0xbf, 0xcf, 0xdf, 0x1c, 0xd5, 0xee, 0x92, 0x73, 0x31, 0xae, 0xef, 0xd7, ++ 0x9b, 0x02, 0xc3, 0xd0, 0xbe, 0xbb, 0xe1, 0x7a, 0x5f, 0x32, 0xca, 0xd5, ++ 0x33, 0x0b, 0x0c, 0x0c, 0xe9, 0x3b, 0x4b, 0xf6, 0xce, 0x45, 0x39, 0x72, ++ 0xc6, 0xaa, 0xb7, 0xbf, 0xcf, 0xd8, 0x39, 0xbd, 0x76, 0x66, 0x6b, 0xf2, ++ 0xdd, 0x9b, 0x87, 0x74, 0xee, 0xcb, 0x5f, 0x42, 0x67, 0x6f, 0x1e, 0xd2, ++ 0x79, 0x96, 0x81, 0x05, 0x22, 0xfb, 0xa9, 0x45, 0x3a, 0x03, 0x7d, 0x17, ++ 0x0a, 0x3a, 0x9f, 0xd9, 0x7b, 0x75, 0x1e, 0xd2, 0xf9, 0xb3, 0xdd, 0x57, ++ 0xe7, 0x21, 0x9d, 0xd7, 0x1b, 0xdb, 0x7c, 0xb8, 0x6e, 0x9e, 0xcd, 0x08, ++ 0xec, 0x42, 0x3c, 0x9e, 0x1c, 0xef, 0x27, 0xfb, 0x09, 0xe4, 0x55, 0xde, ++ 0x77, 0xe1, 0xc7, 0x03, 0x51, 0xfc, 0x78, 0xe0, 0x7f, 0x8f, 0x1f, 0xa9, ++ 0xdd, 0x60, 0xfa, 0xf0, 0xb7, 0x7d, 0x70, 0xe8, 0xf5, 0xa1, 0xdb, 0xa4, ++ 0xa6, 0xa1, 0x3c, 0x9c, 0x69, 0x31, 0x7f, 0xab, 0x5e, 0xc4, 0x9f, 0x01, ++ 0xfd, 0x6b, 0x16, 0x33, 0xf9, 0x25, 0x0e, 0x7c, 0xf5, 0xc5, 0x63, 0xcf, ++ 0xa0, 0x1d, 0xd2, 0x25, 0x93, 0x1d, 0xa2, 0xf5, 0x77, 0x40, 0x09, 0x64, ++ 0xa3, 0x5f, 0xe1, 0xc0, 0x31, 0x8f, 0x37, 0x28, 0x0d, 0xde, 0xff, 0x83, ++ 0xc2, 0x6e, 0xf5, 0x58, 0x58, 0x10, 0xfd, 0x1f, 0x9a, 0xdd, 0xaf, 0xd9, ++ 0x8f, 0xd1, 0xf2, 0xf8, 0xb8, 0x98, 0xcf, 0xd9, 0x6c, 0x5f, 0x0d, 0xed, ++ 0x17, 0x85, 0xbf, 0x76, 0xbe, 0xe8, 0xd3, 0x12, 0xfa, 0x82, 0xdb, 0xa9, ++ 0xdb, 0x25, 0xf2, 0xc7, 0x5a, 0xd4, 0x4e, 0x1f, 0xda, 0xbd, 0x75, 0xaf, ++ 0xcc, 0x70, 0xa0, 0xbf, 0xf6, 0x74, 0x88, 0xfb, 0x67, 0xeb, 0xf6, 0x8e, ++ 0x22, 0xff, 0xed, 0x82, 0xd0, 0xab, 0xe1, 0x54, 0xb4, 0x0b, 0xbb, 0x24, ++ 0x07, 0xee, 0x1f, 0x16, 0x6c, 0x3f, 0x11, 0x87, 0xe7, 0xdd, 0xb0, 0x1f, ++ 0x3d, 0x93, 0x4d, 0x78, 0xe3, 0xfb, 0xd1, 0xf1, 0x62, 0x3f, 0x7a, 0x3a, ++ 0xf4, 0x51, 0x1c, 0x9e, 0x8b, 0xc3, 0xf8, 0x37, 0xe3, 0x3e, 0x22, 0xd6, ++ 0xdd, 0x6b, 0x42, 0xfe, 0xad, 0x83, 0x7d, 0x1a, 0x54, 0x61, 0x75, 0x4a, ++ 0xef, 0x11, 0xec, 0xaf, 0xce, 0xcd, 0xbc, 0x41, 0x14, 0x15, 0xfb, 0xf5, ++ 0xfb, 0x36, 0xed, 0xfc, 0x72, 0x93, 0xdf, 0x44, 0xf2, 0x6e, 0x53, 0x97, ++ 0x14, 0xc2, 0x7d, 0x5a, 0x92, 0x29, 0x90, 0x99, 0x86, 0xfa, 0x89, 0xa5, ++ 0x39, 0x4e, 0xc5, 0xf6, 0xaf, 0x97, 0xff, 0xce, 0xf6, 0xa5, 0xe0, 0xb9, ++ 0x66, 0xff, 0xb9, 0xb1, 0xef, 0x6b, 0x84, 0xcb, 0x8d, 0xe7, 0x4d, 0xd0, ++ 0xbe, 0x67, 0x63, 0x3c, 0xf1, 0x61, 0x8f, 0x91, 0xf9, 0xc8, 0x0e, 0xd8, ++ 0x68, 0x17, 0x72, 0x49, 0x21, 0x39, 0xf5, 0xe7, 0xcd, 0x4e, 0xda, 0xf7, ++ 0xd0, 0x0f, 0xd4, 0xff, 0x73, 0x28, 0x93, 0xf2, 0x9a, 0xbe, 0x9e, 0xab, ++ 0xb0, 0xb0, 0x02, 0x78, 0x9f, 0x3b, 0xd5, 0xf7, 0x1e, 0xd2, 0x0d, 0xe5, ++ 0x77, 0x38, 0x4a, 0x7e, 0x47, 0xe6, 0xfb, 0xce, 0xa3, 0x59, 0x37, 0xd7, ++ 0x2f, 0x20, 0xcf, 0xc3, 0x03, 0x9d, 0x8f, 0x8b, 0x73, 0x6a, 0x3c, 0xdf, ++ 0x8d, 0x6c, 0x5f, 0xc7, 0x7a, 0xa9, 0x1d, 0x9e, 0xf3, 0xea, 0xfa, 0xd5, ++ 0xf6, 0x01, 0xac, 0x61, 0x94, 0x0a, 0x70, 0xdf, 0x77, 0xb7, 0xcd, 0x8b, ++ 0xf6, 0x4b, 0x3d, 0xf0, 0x75, 0x63, 0x49, 0x3f, 0x1f, 0x2e, 0x14, 0x53, ++ 0xd1, 0xf8, 0xb0, 0x4e, 0xf8, 0x79, 0xeb, 0xe7, 0x7f, 0x48, 0xfb, 0x81, ++ 0xfa, 0xfd, 0x92, 0x03, 0xfd, 0xbb, 0x0b, 0xbd, 0x9c, 0x0f, 0x17, 0xc2, ++ 0x3e, 0xc9, 0x3c, 0xe2, 0xd2, 0x75, 0xcb, 0x3a, 0x81, 0x0f, 0x23, 0xe0, ++ 0x1e, 0x6c, 0x1d, 0x5f, 0x9d, 0xa3, 0x5f, 0xc7, 0x7d, 0xf9, 0x7f, 0x92, ++ 0x3f, 0xb3, 0x22, 0x47, 0x6f, 0xcf, 0x6a, 0xf3, 0xd7, 0xfc, 0xe2, 0x7d, ++ 0xf3, 0xec, 0x92, 0xf8, 0xfa, 0x8a, 0x9a, 0x57, 0xf4, 0xfe, 0x32, 0xda, ++ 0x9f, 0xad, 0xed, 0x0f, 0xaf, 0x54, 0xae, 0xdd, 0xd9, 0x07, 0x0f, 0xc7, ++ 0x47, 0x5f, 0xfe, 0x9f, 0x2c, 0xd7, 0xe6, 0x44, 0xe1, 0x65, 0xb0, 0xf3, ++ 0x82, 0xef, 0x2c, 0xd7, 0xa2, 0xcf, 0x0d, 0x72, 0xb8, 0x1f, 0x1c, 0xcf, ++ 0x0d, 0xf0, 0x5c, 0xf7, 0x7f, 0x7a, 0x6e, 0xf0, 0x89, 0xda, 0x96, 0x64, ++ 0x20, 0x3d, 0xe8, 0xd3, 0x9d, 0xa7, 0xa2, 0x9d, 0x8e, 0xe3, 0xb4, 0x6e, ++ 0x91, 0xc9, 0x3e, 0x98, 0x20, 0xf3, 0x73, 0xe8, 0x5a, 0xbb, 0x99, 0xfc, ++ 0xb4, 0xd1, 0xe7, 0xad, 0xf5, 0xea, 0x04, 0x71, 0xbe, 0xd8, 0xfd, 0x87, ++ 0x6b, 0x50, 0x7f, 0xee, 0x31, 0x32, 0xd4, 0xeb, 0xf3, 0x6d, 0xf3, 0xe8, ++ 0x3c, 0xb3, 0x5e, 0xde, 0x65, 0x72, 0xa8, 0x03, 0x9c, 0x33, 0x2a, 0x07, ++ 0xc9, 0x7e, 0xff, 0xae, 0xe7, 0xef, 0x8f, 0xe6, 0xf4, 0x9d, 0xbf, 0x67, ++ 0xe2, 0xf9, 0x7b, 0x59, 0x85, 0x5e, 0x3e, 0xbf, 0x6a, 0xfb, 0x22, 0x21, ++ 0x10, 0x41, 0xe7, 0x8a, 0x22, 0x30, 0xfc, 0x07, 0xe0, 0x67, 0x8b, 0x12, ++ 0x64, 0xae, 0x88, 0xef, 0x4f, 0xe6, 0x70, 0x7b, 0xf8, 0x55, 0x11, 0x27, ++ 0xe3, 0x31, 0xb1, 0x56, 0x8c, 0xbf, 0x78, 0xdc, 0x1e, 0xeb, 0xc3, 0x7d, ++ 0x87, 0xc7, 0xc0, 0xe3, 0x78, 0x9a, 0xb3, 0xfc, 0x5b, 0x50, 0x0e, 0x5a, ++ 0x54, 0x8e, 0xc7, 0xa7, 0x5e, 0xba, 0x83, 0x19, 0x60, 0x7e, 0x4f, 0x19, ++ 0x3b, 0x49, 0x5e, 0x04, 0x6b, 0x6d, 0x5e, 0x94, 0x7b, 0x9a, 0x9f, 0x45, ++ 0xeb, 0xdf, 0x2e, 0xfc, 0x05, 0x57, 0xca, 0xdf, 0x7b, 0xa3, 0xd6, 0xfb, ++ 0xde, 0x7f, 0xf2, 0x7a, 0xff, 0xb5, 0x36, 0xde, 0x77, 0x3d, 0x07, 0xdb, ++ 0x00, 0xb8, 0xd1, 0xad, 0x03, 0x46, 0xe7, 0x5d, 0x6f, 0xe0, 0xf9, 0x4d, ++ 0xe6, 0xa5, 0xfc, 0x3a, 0x58, 0x3f, 0x83, 0xf1, 0xed, 0xdb, 0x39, 0xfe, ++ 0x37, 0x73, 0x68, 0xbd, 0xf9, 0x46, 0xd0, 0xb9, 0xfe, 0x15, 0xca, 0x95, ++ 0xd8, 0xd2, 0xde, 0x8f, 0xd0, 0x9f, 0xc3, 0xf6, 0x98, 0x55, 0xdc, 0x57, ++ 0xa0, 0x5f, 0x83, 0xf4, 0xe1, 0xea, 0x64, 0xae, 0xa7, 0x14, 0x6f, 0x19, ++ 0xe2, 0x19, 0xec, 0xb9, 0x32, 0x8c, 0x83, 0x3a, 0x8e, 0xff, 0xbd, 0x66, ++ 0x70, 0xfb, 0xef, 0x74, 0xdf, 0xba, 0xe7, 0xf6, 0xdf, 0xe9, 0x41, 0xe5, ++ 0xcf, 0xdf, 0x67, 0xff, 0x35, 0x65, 0xf8, 0x3f, 0xc5, 0x79, 0x9e, 0x2c, ++ 0xf7, 0xe5, 0xa1, 0x7e, 0x5c, 0x61, 0x07, 0xf8, 0x71, 0x5f, 0xf7, 0x73, ++ 0x1e, 0x3f, 0xb3, 0xd9, 0xca, 0xf9, 0x73, 0xb3, 0xc4, 0xf9, 0x92, 0x35, ++ 0x26, 0x68, 0xfe, 0x11, 0x9a, 0x57, 0xf0, 0x79, 0x7e, 0xfe, 0x1d, 0xcd, ++ 0x57, 0x2c, 0x57, 0xcf, 0x57, 0x7d, 0xf9, 0x7f, 0xb2, 0xdc, 0xb4, 0xf5, ++ 0xc1, 0xf1, 0xbf, 0x2c, 0x37, 0xe7, 0xff, 0x35, 0x0e, 0xfd, 0x9c, 0x83, ++ 0xf7, 0x13, 0x24, 0xba, 0x95, 0x55, 0x74, 0x13, 0xde, 0x7a, 0x5f, 0x91, ++ 0xd8, 0xb6, 0x08, 0xff, 0x73, 0x7d, 0x37, 0x8f, 0x43, 0x4b, 0x17, 0xf0, ++ 0x6a, 0xdf, 0xff, 0x2a, 0xec, 0xbf, 0xb9, 0xb9, 0xbe, 0xa1, 0x18, 0xcf, ++ 0xf5, 0xd9, 0x7b, 0x16, 0x0b, 0x8b, 0x07, 0x53, 0x07, 0x79, 0x0c, 0xed, ++ 0x2e, 0xbf, 0x8d, 0xfc, 0xff, 0x75, 0x9d, 0x3c, 0x4e, 0xa4, 0x6e, 0x09, ++ 0xa3, 0xf3, 0xde, 0x3a, 0xf4, 0x6f, 0x16, 0xa1, 0xdf, 0xaf, 0x86, 0xa1, ++ 0x7d, 0xb7, 0x4f, 0x0d, 0x14, 0x60, 0xfb, 0x15, 0xef, 0xdb, 0x82, 0x72, ++ 0x3c, 0xfa, 0xc5, 0x27, 0x33, 0xb2, 0xeb, 0xde, 0xe3, 0xf9, 0x45, 0x6a, ++ 0xa0, 0x88, 0xe2, 0xc5, 0x96, 0xf4, 0xe8, 0xce, 0x19, 0xca, 0xbe, 0xf9, ++ 0x62, 0x39, 0xfa, 0x2d, 0x00, 0x5e, 0xf2, 0x03, 0xb8, 0xd1, 0x2f, 0x13, ++ 0x41, 0xa7, 0x69, 0xb9, 0xfc, 0x7c, 0x40, 0x4b, 0x6f, 0x8b, 0x82, 0x1f, ++ 0xfd, 0xf4, 0xc4, 0xff, 0x9d, 0x72, 0x08, 0xed, 0xc1, 0x58, 0xb5, 0x9b, ++ 0xfc, 0xfe, 0x75, 0x7b, 0xb8, 0x91, 0x56, 0x26, 0xfb, 0xc8, 0x3f, 0xcf, ++ 0xee, 0x73, 0x31, 0xe4, 0xa3, 0xba, 0x3d, 0xe5, 0xa3, 0x5e, 0xa3, 0xfa, ++ 0xd6, 0x51, 0x68, 0xcf, 0x96, 0x7d, 0x50, 0xed, 0x40, 0x3f, 0xc4, 0x67, ++ 0xd7, 0xb9, 0x29, 0xbe, 0x60, 0xa8, 0xdc, 0xb3, 0x00, 0xed, 0xa9, 0xa3, ++ 0x59, 0x81, 0x71, 0x08, 0xaf, 0xbd, 0x34, 0x34, 0x11, 0xed, 0xd1, 0x0c, ++ 0xb0, 0x47, 0xd1, 0xbe, 0xfd, 0x6c, 0xf7, 0xc4, 0x51, 0x08, 0xb7, 0x26, ++ 0xff, 0xd6, 0xa3, 0x7f, 0x1b, 0xfa, 0x5d, 0x6f, 0xd7, 0xfb, 0xaf, 0x99, ++ 0xc5, 0x97, 0xf9, 0x30, 0xfa, 0xb7, 0xb7, 0x0d, 0xa1, 0xfd, 0xe1, 0xee, ++ 0x94, 0xc0, 0xcd, 0xb9, 0xb8, 0x4f, 0xb3, 0x72, 0x78, 0x83, 0x6b, 0xac, ++ 0x7c, 0xbd, 0x0a, 0xbf, 0x76, 0xf4, 0xfa, 0xd7, 0xd6, 0xfd, 0x10, 0xd9, ++ 0x40, 0xe3, 0x0c, 0xf9, 0xbe, 0x85, 0xce, 0xa1, 0x35, 0xb9, 0xb0, 0xde, ++ 0xc8, 0x02, 0x96, 0xec, 0x7e, 0x79, 0x72, 0x95, 0x88, 0x97, 0x03, 0x7c, ++ 0xf0, 0x78, 0xbd, 0xae, 0x1a, 0x1e, 0xe7, 0x21, 0xf2, 0x36, 0xb7, 0x3e, ++ 0x6e, 0xf1, 0x6c, 0xf6, 0xf8, 0xab, 0x70, 0x7e, 0x57, 0xe5, 0xf2, 0xb8, ++ 0x94, 0x39, 0x96, 0x5e, 0x09, 0xfd, 0xec, 0x73, 0xc4, 0xf9, 0xfb, 0x8d, ++ 0x22, 0x8e, 0x42, 0x8b, 0xa3, 0x3a, 0xe3, 0xf0, 0xcf, 0xc6, 0xfa, 0x6c, ++ 0x49, 0x55, 0xff, 0xb9, 0x7b, 0x16, 0xb6, 0x77, 0x70, 0xfe, 0x17, 0xf1, ++ 0x31, 0xb1, 0x17, 0xb9, 0x9d, 0x9c, 0xe5, 0x30, 0x11, 0xdf, 0xd8, 0x5b, ++ 0x19, 0x3f, 0x37, 0x02, 0xbe, 0x41, 0xfa, 0x8c, 0xed, 0xed, 0x1e, 0x17, ++ 0x0f, 0xf3, 0xc9, 0x69, 0x0f, 0x8f, 0x45, 0x7c, 0x1e, 0xb8, 0x68, 0x20, ++ 0x7c, 0x28, 0x35, 0x6f, 0xd0, 0x79, 0x49, 0x3c, 0x92, 0x0d, 0xfa, 0xc9, ++ 0x5e, 0xdd, 0xb3, 0x32, 0x1f, 0xfd, 0x25, 0x8e, 0x77, 0xaf, 0x43, 0xba, ++ 0xa8, 0x6d, 0x8e, 0x0a, 0x44, 0xdd, 0x3e, 0xd5, 0xff, 0x00, 0xc1, 0xa1, ++ 0x34, 0x14, 0xe0, 0xfe, 0xb1, 0xe2, 0xf7, 0x46, 0x1e, 0x0f, 0xf8, 0x4a, ++ 0x2c, 0xe9, 0xf9, 0xf6, 0xa1, 0x0b, 0x29, 0x1e, 0xf0, 0xec, 0xfb, 0xc0, ++ 0xaf, 0x99, 0x97, 0xea, 0x03, 0x2d, 0x0d, 0xb2, 0x65, 0x14, 0xff, 0x97, ++ 0xb5, 0xff, 0x1d, 0xf2, 0xdb, 0xdb, 0xf7, 0x48, 0x03, 0xc6, 0x75, 0x3e, ++ 0x9e, 0x6b, 0xe3, 0xe7, 0x49, 0xc1, 0x6e, 0x8a, 0x33, 0x63, 0x63, 0xdd, ++ 0x84, 0x0f, 0xe5, 0x95, 0x0f, 0x82, 0x68, 0x5f, 0x28, 0x2b, 0x15, 0xf2, ++ 0x54, 0xb4, 0x18, 0x7d, 0x06, 0x2b, 0xd2, 0x75, 0x29, 0x23, 0x3f, 0x7b, ++ 0x6e, 0xbb, 0xc3, 0x80, 0x74, 0xc9, 0x10, 0x71, 0x25, 0xe7, 0x0e, 0xfc, ++ 0xf7, 0x88, 0x00, 0xed, 0x47, 0x34, 0x3f, 0x7d, 0x88, 0x52, 0xc5, 0xd8, ++ 0xb3, 0x1c, 0xf7, 0x57, 0xca, 0xd2, 0x9e, 0xeb, 0x61, 0x05, 0xb3, 0xda, ++ 0x3d, 0x4e, 0x43, 0x1d, 0xfa, 0x35, 0x8d, 0xbd, 0x75, 0xe4, 0x17, 0x79, ++ 0x25, 0x96, 0xfc, 0x9f, 0x19, 0xfb, 0xb3, 0x97, 0x7d, 0x0f, 0xf2, 0x19, ++ 0xad, 0x0e, 0x26, 0xa1, 0xfc, 0xf9, 0xd5, 0x7d, 0x19, 0xc8, 0xd7, 0x41, ++ 0x98, 0x67, 0xee, 0x00, 0xf3, 0x6c, 0xcc, 0xe5, 0x71, 0x3b, 0xca, 0x2b, ++ 0xb1, 0x06, 0xd4, 0x5b, 0xca, 0x1a, 0x46, 0x71, 0x88, 0x8a, 0x33, 0xa9, ++ 0x82, 0xe0, 0x5e, 0x07, 0x79, 0xe8, 0x67, 0x91, 0xe0, 0x1b, 0xed, 0xfc, ++ 0x11, 0xc0, 0xf5, 0xa0, 0x3e, 0x9a, 0x9b, 0x1b, 0xd8, 0x8e, 0x78, 0x8e, ++ 0x15, 0x72, 0x80, 0x35, 0xc6, 0x90, 0xbf, 0xd0, 0xae, 0x70, 0xbf, 0x86, ++ 0xbd, 0xf1, 0xfd, 0xe7, 0x97, 0x42, 0x7e, 0xab, 0xf0, 0xb7, 0x1e, 0x3a, ++ 0x50, 0x38, 0x99, 0xfc, 0x73, 0x2b, 0x15, 0x09, 0xe9, 0x70, 0xc1, 0x39, ++ 0x23, 0xc3, 0x01, 0xdf, 0x7f, 0x99, 0xcb, 0xed, 0x11, 0xbb, 0xd2, 0xcd, ++ 0x1c, 0xb6, 0x48, 0xfc, 0x1f, 0xa2, 0xb8, 0xcb, 0xac, 0x57, 0x78, 0x5c, ++ 0x9a, 0x62, 0xe4, 0x7c, 0xa2, 0xac, 0x74, 0x77, 0xa0, 0xff, 0xef, 0xcb, ++ 0xb4, 0x00, 0xc5, 0x97, 0x5e, 0xd7, 0x12, 0x96, 0xe9, 0xfc, 0xca, 0x71, ++ 0x72, 0x6d, 0x95, 0x1a, 0xb1, 0x7f, 0xd9, 0xc0, 0xf5, 0x48, 0xdd, 0x4e, ++ 0xbe, 0x6f, 0x8e, 0xde, 0xaf, 0x5c, 0x4e, 0x7f, 0x1c, 0xcd, 0xd5, 0xdb, ++ 0xdd, 0x7d, 0xf9, 0x7f, 0x92, 0x5d, 0xf2, 0x4e, 0xdf, 0xf8, 0x7f, 0xe7, ++ 0x3e, 0x84, 0xe9, 0xf7, 0x6f, 0xd1, 0xf6, 0x49, 0xf4, 0x7e, 0xed, 0x12, ++ 0xfb, 0x3a, 0xaa, 0xbf, 0xc1, 0xec, 0x14, 0x2d, 0x8e, 0xa3, 0xa2, 0x7f, ++ 0x1c, 0xe2, 0x87, 0x57, 0xed, 0x9a, 0x1d, 0x14, 0xd4, 0xc5, 0xb9, 0x54, ++ 0xd8, 0xf8, 0xb8, 0xcc, 0xa2, 0xef, 0xff, 0xf9, 0x4c, 0x2e, 0x27, 0xb4, ++ 0xb8, 0x97, 0xa4, 0x66, 0x75, 0x29, 0xc6, 0x97, 0xf7, 0xfe, 0x94, 0x91, ++ 0x3f, 0x4d, 0x8b, 0xcb, 0xd1, 0xe2, 0x70, 0x82, 0x15, 0x7c, 0x9f, 0x10, ++ 0x34, 0x80, 0xdc, 0xcb, 0xc4, 0xf3, 0x9f, 0x36, 0x8a, 0xbf, 0x49, 0x65, ++ 0x61, 0x49, 0x22, 0x7b, 0xbf, 0x87, 0x61, 0xfb, 0x21, 0x18, 0x87, 0x03, ++ 0xed, 0x7b, 0x72, 0xb3, 0xa8, 0xff, 0x2d, 0xcc, 0xdb, 0x2a, 0x93, 0x5c, ++ 0x54, 0x25, 0x84, 0xdf, 0x8a, 0xf1, 0x1b, 0x09, 0x08, 0x77, 0x68, 0xe3, ++ 0x5c, 0x1c, 0xef, 0x36, 0x1b, 0x8d, 0x67, 0xc5, 0xf8, 0x8d, 0x04, 0xda, ++ 0x27, 0xd0, 0x3a, 0x4e, 0xf1, 0xf3, 0xb8, 0xcd, 0x71, 0xf3, 0x79, 0xbc, ++ 0x67, 0x0a, 0xe8, 0x5f, 0xcc, 0xa7, 0xe4, 0x70, 0xbe, 0xb4, 0x4e, 0x33, ++ 0x51, 0x1c, 0xa7, 0x16, 0x97, 0xa1, 0xc5, 0x6f, 0x68, 0x78, 0xa9, 0x10, ++ 0xf8, 0x4e, 0xc9, 0x9f, 0x9b, 0x89, 0xfb, 0x01, 0x2d, 0xce, 0x63, 0x7d, ++ 0x4c, 0xe8, 0xe7, 0x56, 0x19, 0xe3, 0x3b, 0x84, 0xdc, 0x5f, 0x60, 0x20, ++ 0xb9, 0xaf, 0xc5, 0xcf, 0xb5, 0xe7, 0xaa, 0x21, 0xe4, 0xf7, 0x73, 0x18, ++ 0xe7, 0x69, 0xbb, 0xf2, 0x78, 0x8e, 0x68, 0xfc, 0x6a, 0x71, 0x1d, 0x37, ++ 0xa4, 0x07, 0x92, 0xf3, 0x46, 0x53, 0x5c, 0x07, 0xe9, 0x51, 0x2d, 0x1e, ++ 0x43, 0xe3, 0x97, 0x08, 0x3a, 0x06, 0xad, 0x30, 0xfe, 0xa6, 0x57, 0xb8, ++ 0xfd, 0x5e, 0x31, 0xdf, 0x44, 0xf0, 0x9f, 0x5b, 0x30, 0x89, 0xfc, 0x87, ++ 0xe7, 0x16, 0x18, 0x18, 0xae, 0xa3, 0x8a, 0x2e, 0x33, 0xe7, 0xbf, 0xa8, ++ 0xf1, 0x36, 0x4d, 0x33, 0xb1, 0x30, 0xf6, 0xab, 0x84, 0xac, 0x28, 0x3f, ++ 0x35, 0x3e, 0xb8, 0x9c, 0xfd, 0x0a, 0x74, 0x2d, 0x40, 0xff, 0xec, 0xa1, ++ 0xa6, 0x9d, 0xd9, 0x27, 0x61, 0xcd, 0x1f, 0x6e, 0xea, 0xa4, 0xf4, 0x9c, ++ 0x55, 0xea, 0x94, 0x47, 0x62, 0xda, 0x3b, 0x1d, 0x25, 0xd5, 0x88, 0x67, ++ 0x87, 0x4e, 0x51, 0xae, 0xc1, 0x38, 0x95, 0xde, 0xa1, 0x12, 0xb0, 0x4e, ++ 0xc9, 0xce, 0x9c, 0xa9, 0x94, 0x4f, 0xec, 0x3d, 0x8e, 0xf9, 0x49, 0xf9, ++ 0x37, 0x4f, 0x55, 0x40, 0x4f, 0x9c, 0xcb, 0xed, 0xdd, 0x2a, 0x61, 0x9c, ++ 0x49, 0xfe, 0x89, 0x29, 0x94, 0x47, 0x9e, 0x4c, 0x61, 0x6c, 0xcc, 0x33, ++ 0xbf, 0x9f, 0x12, 0xa4, 0x79, 0x73, 0x7f, 0xd3, 0x38, 0xe1, 0x6f, 0x32, ++ 0x3b, 0x03, 0xd7, 0xe5, 0x25, 0xe2, 0x7d, 0x80, 0x9e, 0xe5, 0xdd, 0xe4, ++ 0xd7, 0xe1, 0x71, 0xfd, 0x18, 0xf7, 0x87, 0xf4, 0xf0, 0xd8, 0x4c, 0x64, ++ 0xdf, 0x78, 0x44, 0xbc, 0x25, 0xab, 0x14, 0xf1, 0x97, 0x78, 0xf2, 0x02, ++ 0xf9, 0xe6, 0xe4, 0x51, 0x74, 0x5e, 0x6d, 0x63, 0xea, 0x9e, 0x6e, 0x2c, ++ 0x4f, 0x33, 0x73, 0x7d, 0xcf, 0x38, 0x3f, 0x37, 0xe7, 0x72, 0x7f, 0x30, ++ 0xa9, 0x48, 0x94, 0x9d, 0x69, 0x9a, 0xff, 0xa8, 0x27, 0x88, 0xf2, 0xaa, ++ 0x39, 0xd3, 0x49, 0xed, 0xfb, 0xe4, 0xea, 0x1e, 0x73, 0x88, 0xfb, 0xb1, ++ 0xf8, 0xf8, 0x6f, 0xed, 0x2d, 0xa6, 0x73, 0x26, 0x2d, 0x8e, 0x94, 0x31, ++ 0x47, 0xfa, 0xd4, 0x62, 0x8a, 0x37, 0xd1, 0xe5, 0x1f, 0xb7, 0xf2, 0x73, ++ 0x4f, 0xa6, 0x38, 0xd2, 0xd1, 0x7e, 0x68, 0x36, 0x0a, 0x3b, 0x55, 0xe4, ++ 0x63, 0xd2, 0x02, 0x77, 0xe5, 0x45, 0xd8, 0x49, 0x6f, 0x8d, 0xff, 0x51, ++ 0x11, 0xae, 0x87, 0x33, 0xfb, 0x7e, 0x92, 0x83, 0x72, 0xea, 0x46, 0x13, ++ 0xd8, 0xf1, 0x03, 0xc8, 0xa5, 0xd4, 0x02, 0x2e, 0x97, 0xce, 0x19, 0x6d, ++ 0xad, 0x12, 0xd8, 0x6d, 0x6f, 0xa4, 0x06, 0x66, 0x21, 0xbe, 0x8e, 0xc5, ++ 0x4e, 0x9f, 0xe0, 0x84, 0x79, 0x4d, 0x4b, 0x28, 0x37, 0x39, 0x11, 0xde, ++ 0xe0, 0xcf, 0x65, 0x94, 0x93, 0x89, 0x82, 0xde, 0xce, 0xa9, 0x1c, 0x3e, ++ 0x67, 0xa5, 0x5f, 0x9a, 0x03, 0xfd, 0x36, 0x5b, 0x61, 0x3d, 0x43, 0xfb, ++ 0xc4, 0x80, 0xe2, 0x23, 0x7b, 0x3d, 0x30, 0x55, 0xba, 0x0d, 0xe0, 0x6e, ++ 0x96, 0x84, 0xfd, 0xce, 0xd4, 0x78, 0xb2, 0xdb, 0x0b, 0xd4, 0x78, 0x3c, ++ 0xd7, 0x5b, 0xd8, 0xf8, 0x0e, 0xc5, 0x55, 0xcb, 0x42, 0x0e, 0xc8, 0x42, ++ 0x0e, 0xbc, 0xdd, 0xd4, 0x93, 0xa3, 0xe4, 0x82, 0xca, 0xed, 0x5c, 0x23, ++ 0xa3, 0xbd, 0xfd, 0x8e, 0x38, 0x5f, 0x7e, 0x27, 0x93, 0xdd, 0x53, 0x33, ++ 0x80, 0x3f, 0x73, 0x7d, 0x1e, 0xb7, 0x0f, 0x27, 0xcb, 0x6a, 0x31, 0xf2, ++ 0x91, 0xfb, 0xe1, 0xb1, 0xef, 0x54, 0x03, 0x5f, 0xc8, 0x26, 0x6f, 0x88, ++ 0xe8, 0x97, 0x6e, 0x57, 0x91, 0xdf, 0x0f, 0xda, 0xcb, 0x3c, 0x3d, 0xd0, ++ 0x8f, 0x94, 0xf1, 0xd3, 0x52, 0x8c, 0x4b, 0x6e, 0x4e, 0xff, 0x69, 0x29, ++ 0xc6, 0x95, 0xc8, 0x2e, 0xaf, 0xc7, 0x1f, 0x91, 0x5f, 0x9f, 0xc7, 0xf9, ++ 0xb8, 0x12, 0xeb, 0x21, 0xde, 0x62, 0x1b, 0x4a, 0x51, 0x8f, 0xfd, 0xc3, ++ 0xfa, 0x8b, 0x87, 0xfe, 0x8a, 0xfe, 0xfe, 0xfe, 0xfa, 0xfa, 0x31, 0x73, ++ 0xb8, 0x16, 0x5a, 0x7a, 0x87, 0x2a, 0xb0, 0x3e, 0xbd, 0x9e, 0xc0, 0x26, ++ 0xa4, 0xdb, 0x85, 0x19, 0x27, 0xe8, 0xbc, 0xf5, 0x87, 0x29, 0x6f, 0x1d, ++ 0xc7, 0xf8, 0x88, 0xb7, 0x8c, 0x6d, 0xe3, 0xe2, 0x50, 0x0e, 0x65, 0x4a, ++ 0x82, 0x6f, 0xb9, 0xbd, 0x76, 0x24, 0x5f, 0xf3, 0x6b, 0xf2, 0xb8, 0xf6, ++ 0x23, 0x85, 0xdc, 0xaf, 0x09, 0x72, 0x88, 0xc7, 0x4f, 0x16, 0xf3, 0x7b, ++ 0x34, 0xd5, 0x53, 0x19, 0xad, 0xe7, 0x6a, 0x11, 0x57, 0x31, 0xc1, 0xc1, ++ 0xef, 0x25, 0x4d, 0x28, 0xcd, 0xf4, 0x36, 0xc3, 0xd4, 0x6e, 0x61, 0xbd, ++ 0x0a, 0xca, 0xe9, 0x09, 0xc7, 0xfc, 0x71, 0x48, 0x3f, 0x36, 0x35, 0x50, ++ 0xea, 0x2f, 0x1e, 0xdc, 0x0e, 0x63, 0x1e, 0xa3, 0x1a, 0x29, 0x57, 0x26, ++ 0xaa, 0x11, 0x79, 0xf8, 0x7b, 0x53, 0x81, 0x3e, 0x7f, 0xb3, 0x57, 0x9f, ++ 0xbf, 0x75, 0xcc, 0xd7, 0xf9, 0x91, 0xf9, 0x35, 0x1e, 0xdf, 0x8b, 0x38, ++ 0xef, 0x97, 0x25, 0x1e, 0xa7, 0x19, 0xbc, 0x86, 0x39, 0x68, 0x9e, 0x6e, ++ 0x29, 0x88, 0xf6, 0x52, 0xe1, 0x8b, 0x29, 0x1d, 0xc2, 0x7f, 0x4b, 0xf1, ++ 0x84, 0xff, 0x2a, 0xf6, 0x73, 0x2f, 0x8e, 0x61, 0x54, 0x9e, 0xb4, 0xd3, ++ 0xb2, 0x0d, 0xef, 0x17, 0x68, 0x7e, 0x70, 0x59, 0x94, 0x17, 0x7a, 0x98, ++ 0x25, 0xc3, 0x45, 0xf8, 0x20, 0x3d, 0xdb, 0x2b, 0x89, 0xb8, 0x44, 0x37, ++ 0x9d, 0xf5, 0xb0, 0x7d, 0xf7, 0x3b, 0x38, 0xfe, 0xa0, 0xae, 0x09, 0xfa, ++ 0xd9, 0x37, 0x43, 0xa5, 0x75, 0x9c, 0x64, 0x33, 0xb0, 0xeb, 0x71, 0xad, ++ 0x97, 0x5a, 0xc8, 0x7e, 0xd2, 0xd6, 0x45, 0xb3, 0x15, 0xf8, 0x1b, 0xf0, ++ 0x58, 0x96, 0x6a, 0x89, 0x41, 0x7e, 0x6f, 0x36, 0x7a, 0x37, 0x60, 0x5f, ++ 0x72, 0x8c, 0x59, 0x45, 0xbd, 0x5a, 0x1e, 0x67, 0xa1, 0xbe, 0xe5, 0x9f, ++ 0x29, 0xa4, 0x97, 0x96, 0x5a, 0xcd, 0x14, 0xda, 0x7a, 0xe8, 0xd1, 0x18, ++ 0xca, 0x97, 0x29, 0xcc, 0x8f, 0xf1, 0x18, 0x00, 0xe2, 0x54, 0x4c, 0xdf, ++ 0x32, 0x7a, 0x43, 0x0d, 0x38, 0x5f, 0xa8, 0x87, 0xf3, 0x6d, 0x76, 0x32, ++ 0x92, 0x57, 0x72, 0x99, 0x89, 0xf4, 0x34, 0xf4, 0x4b, 0x74, 0x3d, 0xb4, ++ 0xc6, 0x10, 0x62, 0x34, 0xff, 0x72, 0x85, 0xe2, 0x2d, 0x05, 0xcc, 0xda, ++ 0xba, 0x83, 0x91, 0xe8, 0xfb, 0x13, 0x62, 0x5d, 0xcb, 0x06, 0x16, 0x26, ++ 0x39, 0x96, 0x62, 0x21, 0x39, 0x76, 0x18, 0xfa, 0xc7, 0x7e, 0x0f, 0xbd, ++ 0x2e, 0x77, 0x90, 0x1f, 0xad, 0x40, 0xbd, 0x1b, 0xcb, 0xcf, 0x5b, 0xf2, ++ 0xe9, 0xfe, 0x4d, 0x7d, 0xdf, 0xbd, 0x22, 0xc5, 0x80, 0xc0, 0x15, 0x08, ++ 0x3b, 0xca, 0xd9, 0xc5, 0xef, 0x7f, 0x69, 0xeb, 0x59, 0x93, 0x2f, 0xd1, ++ 0xeb, 0x19, 0xa4, 0x60, 0x8e, 0x3b, 0x89, 0x71, 0x10, 0x55, 0xfc, 0x07, ++ 0xa6, 0x91, 0x84, 0x7a, 0x9f, 0x91, 0x3d, 0xaf, 0x9d, 0x0f, 0xa6, 0x5b, ++ 0xb4, 0x72, 0xc5, 0x87, 0xe3, 0x24, 0xf7, 0xd5, 0xe7, 0xf7, 0xaf, 0x92, ++ 0x44, 0x3e, 0x35, 0x3f, 0x93, 0xd6, 0x1b, 0x54, 0x09, 0x1b, 0x4a, 0xd0, ++ 0xfe, 0xf8, 0xcd, 0x5f, 0x90, 0x6f, 0x35, 0xf9, 0xb0, 0x75, 0xc5, 0xcf, ++ 0x48, 0x3e, 0x5c, 0x8a, 0xff, 0x82, 0x07, 0x29, 0x3f, 0xc9, 0xee, 0xe0, ++ 0xf8, 0xcf, 0x4f, 0xc3, 0x75, 0x28, 0xc7, 0xe4, 0xa7, 0xa1, 0xbe, 0x6b, ++ 0x76, 0x7a, 0x55, 0x7f, 0x44, 0xbe, 0x00, 0x96, 0xd1, 0x34, 0x17, 0xe2, ++ 0x07, 0xea, 0x41, 0x7e, 0x4a, 0xd5, 0x89, 0x1c, 0x25, 0xc2, 0xff, 0x97, ++ 0x9a, 0xaf, 0x92, 0xb0, 0x84, 0x7a, 0xbe, 0x04, 0x80, 0xe3, 0x90, 0x55, ++ 0x4d, 0xc3, 0xf5, 0x3a, 0xc0, 0xb8, 0xb5, 0x7c, 0xdc, 0xd8, 0x7f, 0xec, ++ 0xb8, 0x1e, 0x18, 0x17, 0xea, 0x1d, 0xb2, 0xc3, 0xb8, 0x50, 0x6f, 0xbb, ++ 0xd5, 0x1c, 0x36, 0xc4, 0x0d, 0x34, 0xfe, 0x18, 0x15, 0xc7, 0xbb, 0xdc, ++ 0xb8, 0x80, 0x4e, 0x42, 0xea, 0x24, 0x81, 0x67, 0xe0, 0x8b, 0x20, 0xfa, ++ 0xa5, 0x0e, 0xd9, 0x0d, 0xc4, 0x9f, 0x93, 0x44, 0x7c, 0xee, 0xa1, 0x44, ++ 0x3e, 0x1e, 0x2b, 0xd0, 0xc7, 0xcf, 0xe4, 0xc4, 0xc0, 0xf8, 0xe4, 0x6f, ++ 0xd5, 0xc7, 0xcb, 0xdc, 0x28, 0x6d, 0x6e, 0x41, 0xbd, 0xfc, 0x84, 0x35, ++ 0x6e, 0x1b, 0xf2, 0xe3, 0x6f, 0x04, 0x9f, 0x1c, 0x89, 0xfd, 0x59, 0x0e, ++ 0xda, 0x55, 0xbf, 0x99, 0x9e, 0x77, 0x18, 0xe5, 0xca, 0x84, 0xf8, 0xa5, ++ 0x2d, 0xc8, 0x24, 0x93, 0x58, 0x27, 0xc9, 0x1b, 0x4d, 0xee, 0x5d, 0x48, ++ 0x3e, 0x51, 0x86, 0x79, 0x90, 0x7f, 0xd7, 0xe6, 0x03, 0xdd, 0x7f, 0x98, ++ 0xf5, 0xd6, 0x74, 0xec, 0xfc, 0xb0, 0xf3, 0x89, 0x1c, 0xd4, 0x7f, 0x20, ++ 0x1f, 0xbe, 0x97, 0x9f, 0x78, 0x29, 0xfc, 0x1a, 0x3f, 0x6a, 0x70, 0x23, ++ 0x1f, 0xe2, 0x3a, 0xe8, 0xe3, 0xc3, 0x28, 0xf8, 0x35, 0x3e, 0x62, 0xb7, ++ 0x74, 0x52, 0x80, 0xe1, 0x16, 0xb0, 0x4b, 0x31, 0xd5, 0xec, 0x54, 0xc6, ++ 0x1a, 0x78, 0x1c, 0xb8, 0x9a, 0xde, 0x3f, 0x3f, 0x60, 0xe2, 0x09, 0x96, ++ 0x06, 0x3e, 0x8f, 0xa5, 0x41, 0x82, 0xfb, 0x46, 0xe7, 0x5a, 0x8a, 0x37, ++ 0x1b, 0x31, 0x2c, 0xe0, 0x47, 0xb8, 0xa6, 0x8d, 0xfc, 0x7c, 0xa8, 0x82, ++ 0x95, 0x3d, 0x33, 0xf2, 0x71, 0x1f, 0x06, 0xf0, 0xd6, 0xfc, 0xff, 0x84, ++ 0x37, 0xda, 0x2e, 0xbf, 0x5c, 0x3c, 0xb4, 0x06, 0x57, 0xf4, 0x3a, 0xd6, ++ 0xc6, 0x97, 0x26, 0xef, 0xa4, 0x78, 0xe8, 0xfa, 0xa9, 0x36, 0x8a, 0x8f, ++ 0x1e, 0x27, 0xe2, 0x4a, 0xeb, 0xe7, 0x1b, 0x28, 0x4e, 0x08, 0xf6, 0x6f, ++ 0x64, 0xf7, 0xd7, 0x31, 0x4b, 0x08, 0xe5, 0xf0, 0xb5, 0xc2, 0x8e, 0xd6, ++ 0xe2, 0xf4, 0x7f, 0x25, 0x71, 0xff, 0x67, 0x70, 0xaf, 0x59, 0xdd, 0x11, ++ 0x61, 0x8f, 0x5f, 0x1a, 0x27, 0xad, 0x52, 0x1c, 0x76, 0x70, 0x09, 0x8f, ++ 0xa7, 0xee, 0xb3, 0xb7, 0x6b, 0xb9, 0xbd, 0xdd, 0xa7, 0xd7, 0xc4, 0xbd, ++ 0x80, 0xf6, 0x51, 0x5c, 0x96, 0xb7, 0xdf, 0xaf, 0x52, 0xbc, 0xc4, 0xcb, ++ 0x12, 0xaf, 0x1f, 0x9c, 0xc1, 0xb8, 0xbd, 0x5e, 0x23, 0xca, 0xe7, 0x38, ++ 0x44, 0x3c, 0x05, 0xcc, 0x25, 0xa9, 0x3f, 0x5e, 0xbd, 0xbd, 0x83, 0x11, ++ 0xff, 0xb7, 0xdb, 0xb3, 0xa8, 0x3c, 0x45, 0xe6, 0xfa, 0x87, 0x7d, 0x8f, ++ 0xeb, 0x9f, 0xf6, 0x4c, 0x6e, 0x4f, 0xb6, 0xdf, 0x99, 0x47, 0xe5, 0xb0, ++ 0x2f, 0x18, 0x86, 0x78, 0x9f, 0x25, 0x83, 0xfd, 0xcc, 0xcf, 0xe7, 0xf9, ++ 0xfe, 0x20, 0x97, 0x8f, 0x17, 0xed, 0xa7, 0x5d, 0x9f, 0xcf, 0xed, 0xb2, ++ 0x3e, 0x3b, 0x47, 0xe4, 0xa3, 0xfd, 0xb2, 0xcf, 0x66, 0x04, 0x36, 0x22, ++ 0xdf, 0xcf, 0x29, 0xf2, 0x0d, 0x95, 0x80, 0xaf, 0x66, 0x99, 0xb8, 0xdf, ++ 0x15, 0xf8, 0x6e, 0x33, 0xde, 0x89, 0xa9, 0x62, 0x0d, 0xdb, 0x95, 0x6c, ++ 0xbc, 0x5f, 0xd1, 0xf0, 0xae, 0x21, 0x9b, 0xf8, 0xee, 0x29, 0xe2, 0xbb, ++ 0x42, 0xe0, 0xbb, 0x6c, 0x1d, 0xdf, 0x85, 0xf2, 0x47, 0x73, 0xf9, 0x8b, ++ 0xc2, 0x54, 0xe3, 0xbb, 0x3e, 0x7e, 0x2b, 0x88, 0x8e, 0x87, 0x0b, 0xfc, ++ 0x1c, 0xfb, 0x69, 0x77, 0x76, 0x7e, 0x50, 0x87, 0xfb, 0x8a, 0x2e, 0x33, ++ 0xd1, 0x41, 0x8b, 0x6b, 0x8c, 0x5e, 0xe7, 0x11, 0xf0, 0x9c, 0x34, 0x72, ++ 0x78, 0xdc, 0xb2, 0x4c, 0xf0, 0xec, 0x1e, 0x08, 0x9e, 0x2b, 0xe1, 0xff, ++ 0x48, 0x7e, 0x1b, 0xc2, 0x38, 0x9f, 0x0f, 0xb6, 0x0e, 0x86, 0x28, 0x2c, ++ 0x68, 0x2f, 0xe9, 0x5f, 0x07, 0x6b, 0x3c, 0x81, 0x30, 0x8e, 0xdb, 0xb7, ++ 0x1e, 0x96, 0xf3, 0x7d, 0xe4, 0x25, 0x70, 0xcb, 0x36, 0xe2, 0x8b, 0xdb, ++ 0xef, 0x94, 0x39, 0xbf, 0xc6, 0x72, 0x7d, 0x8e, 0xe7, 0x49, 0xc9, 0x30, ++ 0x7e, 0x8d, 0x18, 0xff, 0xf6, 0x95, 0xfe, 0x4a, 0x27, 0xd6, 0xab, 0x91, ++ 0x08, 0x0f, 0x35, 0x5d, 0xb5, 0x14, 0xf7, 0xc5, 0x2a, 0xf9, 0xb9, 0x90, ++ 0x17, 0xfe, 0x20, 0x3c, 0xcd, 0x42, 0xce, 0x69, 0xe7, 0x57, 0xd3, 0x44, ++ 0xfb, 0x29, 0x8e, 0x1a, 0x23, 0xfa, 0xe3, 0xa6, 0x56, 0xeb, 0xcf, 0x91, ++ 0xa6, 0xd9, 0xf8, 0x39, 0xd5, 0xed, 0x53, 0x8d, 0x1f, 0x46, 0xda, 0x3d, ++ 0xd3, 0xd8, 0xea, 0xcf, 0x31, 0x4e, 0x71, 0x1a, 0x9e, 0x33, 0x69, 0xf5, ++ 0x81, 0x8f, 0xde, 0xcf, 0xb7, 0xbb, 0xe9, 0xfc, 0x5b, 0x65, 0xf9, 0x78, ++ 0xce, 0x74, 0x58, 0xf8, 0x59, 0xce, 0x01, 0x5f, 0x23, 0xdf, 0xbf, 0x96, ++ 0x38, 0x6f, 0xf3, 0xfd, 0xc0, 0x77, 0xf9, 0x4f, 0x16, 0x95, 0xa0, 0x3f, ++ 0x6e, 0x7c, 0xd2, 0x82, 0xed, 0x6b, 0x20, 0xff, 0xec, 0xa6, 0xe1, 0x94, ++ 0x7f, 0x2d, 0xe9, 0xfb, 0x0f, 0xbc, 0x85, 0xe5, 0x5b, 0xf3, 0x28, 0x5f, ++ 0x69, 0x90, 0x88, 0x4f, 0xcf, 0xd5, 0xf2, 0xf6, 0x05, 0x65, 0x77, 0x4e, ++ 0xca, 0x8c, 0x43, 0xf9, 0x2f, 0xfa, 0xc5, 0xf5, 0x84, 0xfb, 0xf5, 0x98, ++ 0x40, 0x7b, 0x0d, 0xd4, 0xf3, 0x8c, 0xc8, 0x2a, 0xc1, 0xf8, 0xd1, 0x4a, ++ 0xe1, 0x37, 0x38, 0x77, 0x3f, 0xa3, 0xf2, 0x9b, 0x46, 0xda, 0x79, 0x48, ++ 0xee, 0x3c, 0x95, 0xfc, 0x7e, 0x95, 0x31, 0xa2, 0xfc, 0x07, 0xbc, 0xdf, ++ 0x37, 0x46, 0xfd, 0x47, 0x09, 0xc6, 0x11, 0x57, 0x66, 0xf5, 0x4e, 0x47, ++ 0xfe, 0x7e, 0xa3, 0xe4, 0xe5, 0xe1, 0x98, 0x3f, 0x2c, 0x7d, 0x3e, 0x7d, ++ 0xa0, 0x38, 0x86, 0xc2, 0x02, 0x29, 0x3c, 0x0c, 0xf0, 0x52, 0xe9, 0xe2, ++ 0xf5, 0xab, 0x4b, 0x7e, 0x9e, 0x82, 0x7e, 0x98, 0xca, 0x0a, 0x9e, 0x2f, ++ 0xf4, 0x96, 0xaf, 0xcc, 0xc6, 0x72, 0xc3, 0xf9, 0xe9, 0x03, 0xdd, 0xef, ++ 0x8d, 0x11, 0xfb, 0x9e, 0xbe, 0xfb, 0x6a, 0x62, 0x5d, 0xbf, 0xe8, 0x3b, ++ 0x41, 0xf7, 0xd3, 0xfc, 0x16, 0xc9, 0x8b, 0x53, 0xf4, 0x8f, 0x39, 0x41, ++ 0x7e, 0x07, 0x66, 0x93, 0x1c, 0xe8, 0x3a, 0xf3, 0xfb, 0x32, 0x15, 0xf4, ++ 0x73, 0x8f, 0xf3, 0xf1, 0x38, 0xd3, 0x0a, 0xcb, 0xd2, 0x64, 0x94, 0x5f, ++ 0xb7, 0x04, 0x4c, 0xa5, 0x18, 0x2f, 0xec, 0xb0, 0x8c, 0x3a, 0x8c, 0x71, ++ 0x04, 0xf1, 0x63, 0xca, 0x47, 0x23, 0x5d, 0xc7, 0x59, 0x18, 0xd1, 0x15, ++ 0xf8, 0x3c, 0xae, 0x00, 0xd6, 0xd7, 0xb4, 0xab, 0x3f, 0x1f, 0x1a, 0x87, ++ 0xcc, 0x65, 0xd3, 0xf3, 0xb9, 0xc6, 0x47, 0x35, 0x1a, 0x7f, 0x57, 0xea, ++ 0xf9, 0x18, 0xd6, 0xa7, 0x1b, 0xdb, 0x5f, 0x4e, 0xde, 0x0e, 0xc6, 0xc7, ++ 0x30, 0xfe, 0xd0, 0x02, 0x5c, 0x67, 0xdf, 0xd3, 0xeb, 0x9b, 0xbe, 0xfe, ++ 0xa2, 0xd6, 0x5b, 0x74, 0xff, 0x83, 0xc9, 0x01, 0xfc, 0x89, 0x94, 0x8b, ++ 0xfd, 0x70, 0x74, 0xd2, 0xba, 0x4a, 0xc3, 0xe8, 0xbd, 0x6c, 0x5c, 0x77, ++ 0x6d, 0xda, 0xba, 0x1b, 0x89, 0xf3, 0x30, 0x19, 0xba, 0xe9, 0x9e, 0x4e, ++ 0x86, 0xe4, 0x1d, 0x4e, 0x17, 0x56, 0xc7, 0x78, 0x2d, 0xa4, 0x8f, 0xa2, ++ 0xe0, 0xd6, 0xe0, 0x4b, 0x07, 0xd9, 0xc6, 0x4a, 0x2e, 0x85, 0x0b, 0x7f, ++ 0x14, 0xcd, 0x5e, 0xe4, 0x3f, 0x6e, 0xf4, 0x4b, 0xa4, 0x89, 0x72, 0x68, ++ 0xe7, 0x63, 0xae, 0x7e, 0xb8, 0x60, 0xfc, 0x1b, 0x10, 0x0f, 0x6c, 0x39, ++ 0x87, 0x67, 0x8b, 0xd4, 0xc0, 0xe5, 0x86, 0xd8, 0x1f, 0x68, 0xfe, 0x8c, ++ 0x3a, 0x6d, 0xbe, 0xfb, 0xf5, 0xf3, 0x2d, 0x8b, 0xe1, 0xf7, 0xd6, 0x3d, ++ 0xe8, 0x77, 0xc2, 0x76, 0xee, 0x51, 0xc3, 0xbf, 0x0d, 0xee, 0x7a, 0xa1, ++ 0x4f, 0xa7, 0x5a, 0xfc, 0x8f, 0x9a, 0x61, 0x0e, 0xb7, 0x39, 0x67, 0x11, ++ 0x3f, 0xdc, 0x01, 0x1a, 0xcd, 0x09, 0xf3, 0xff, 0x5b, 0x6a, 0xa0, 0x06, ++ 0xf1, 0xd1, 0x2c, 0x05, 0x5f, 0xe9, 0xc9, 0x24, 0x7f, 0x3c, 0xc5, 0x77, ++ 0x00, 0xbd, 0x27, 0x17, 0x44, 0xd8, 0x01, 0x1a, 0x5c, 0xd1, 0xf8, 0xa8, ++ 0x1b, 0x44, 0x1e, 0x46, 0xc3, 0x1d, 0x8d, 0x87, 0x7e, 0xfa, 0x74, 0x27, ++ 0x63, 0xaa, 0xdd, 0x77, 0xeb, 0x9b, 0x57, 0xd4, 0x7c, 0xa2, 0xed, 0x02, ++ 0xb7, 0x49, 0xef, 0xcf, 0x73, 0x09, 0xbf, 0x9b, 0xab, 0xdf, 0xcf, 0x56, ++ 0x80, 0xe5, 0xd5, 0x2c, 0xc6, 0x4b, 0x7e, 0x36, 0xaf, 0x44, 0xfb, 0xa8, ++ 0x6a, 0xd0, 0xf3, 0x28, 0x47, 0xab, 0xab, 0x18, 0xf9, 0x47, 0x5c, 0x36, ++ 0x03, 0xf9, 0xd9, 0x34, 0x7d, 0x3f, 0x18, 0x7f, 0xdf, 0x70, 0x3d, 0x97, ++ 0x37, 0xd5, 0x0b, 0x99, 0xb8, 0x4f, 0xc7, 0xe7, 0x11, 0xcd, 0x5f, 0x43, ++ 0x58, 0xcf, 0x83, 0xf4, 0x9e, 0x83, 0x45, 0xdd, 0x38, 0x1b, 0xd7, 0xed, ++ 0x7c, 0x9b, 0x2e, 0x0e, 0xbe, 0xda, 0xc6, 0xfd, 0xf3, 0x2b, 0x0b, 0x24, ++ 0xe1, 0x97, 0xef, 0x19, 0x8d, 0x7e, 0x89, 0xbe, 0xfc, 0x25, 0xfe, 0xe0, ++ 0x9e, 0xd1, 0x28, 0x3f, 0xa6, 0xcb, 0xfa, 0x73, 0xaa, 0xea, 0x8b, 0xdc, ++ 0x1f, 0xec, 0xba, 0x28, 0x51, 0x5a, 0xed, 0x3d, 0x31, 0x1a, 0xfd, 0x2c, ++ 0xae, 0xaa, 0x9e, 0xd1, 0x28, 0x87, 0x1e, 0x19, 0xea, 0x5b, 0x85, 0x74, ++ 0x3d, 0x6e, 0xe0, 0xfe, 0xf2, 0x4b, 0xfc, 0x16, 0x05, 0x06, 0xcd, 0x1f, ++ 0x7c, 0x45, 0x7c, 0x17, 0x4d, 0x0f, 0xed, 0xfc, 0x2f, 0x26, 0xcd, 0xbf, ++ 0x01, 0xc7, 0x39, 0x23, 0x75, 0x97, 0x61, 0xe1, 0x86, 0x2c, 0x71, 0x3e, ++ 0xc3, 0x02, 0x99, 0xc8, 0x97, 0x4e, 0x47, 0x66, 0x39, 0xfa, 0x71, 0x40, ++ 0xce, 0x7d, 0xf3, 0x0d, 0x6e, 0x1e, 0xb1, 0x08, 0xf0, 0x35, 0x26, 0x23, ++ 0x10, 0xc2, 0x76, 0x77, 0x30, 0xff, 0x78, 0xbc, 0x6b, 0xe9, 0xaa, 0x0a, ++ 0x18, 0xf9, 0x79, 0x05, 0xa3, 0xf9, 0x2f, 0x12, 0xf3, 0x1f, 0x2f, 0xf4, ++ 0xdf, 0xf9, 0xcd, 0x3c, 0xae, 0xa2, 0xd2, 0x57, 0xf0, 0x04, 0x1e, 0x89, ++ 0xd4, 0x1f, 0x35, 0xb2, 0x10, 0xad, 0x3f, 0x1f, 0xe9, 0xb1, 0xfb, 0x04, ++ 0xfc, 0xe7, 0x41, 0xd5, 0x85, 0xb1, 0xfe, 0x2e, 0x3b, 0xe9, 0xc1, 0x79, ++ 0xaf, 0xcf, 0xa2, 0x78, 0x89, 0xfc, 0x0d, 0x86, 0xfe, 0x77, 0x2b, 0xe0, ++ 0xef, 0xb0, 0x50, 0x8c, 0xee, 0xdd, 0x8a, 0xc2, 0x9d, 0x2e, 0x5d, 0xbe, ++ 0xb8, 0x33, 0x45, 0x57, 0x7f, 0xe4, 0xfe, 0x2c, 0x5d, 0xf9, 0xa8, 0xf0, ++ 0x70, 0x5d, 0xf9, 0x55, 0x47, 0x4b, 0x74, 0xf9, 0xd1, 0xdd, 0xd7, 0xea, ++ 0xea, 0x5f, 0x7d, 0xac, 0x42, 0x97, 0xbf, 0xa6, 0x67, 0x92, 0xae, 0xfe, ++ 0xf7, 0x4e, 0x4f, 0xd6, 0xe5, 0xaf, 0xeb, 0xbd, 0x4b, 0x57, 0xff, 0xa3, ++ 0xbe, 0x7d, 0xbc, 0xd0, 0xdf, 0x41, 0x5f, 0x77, 0x01, 0xcc, 0x7b, 0xb6, ++ 0xc6, 0x9f, 0x17, 0x67, 0xea, 0xda, 0xff, 0x29, 0x6e, 0xc2, 0x51, 0xe4, ++ 0xcf, 0xd9, 0xab, 0x79, 0xfc, 0x77, 0x39, 0x60, 0x48, 0xf7, 0x8e, 0x47, ++ 0x1b, 0xd7, 0xf3, 0x0d, 0xf0, 0x07, 0xe9, 0x3b, 0x9e, 0xf5, 0x52, 0xdc, ++ 0x5d, 0x5d, 0x48, 0xf2, 0x86, 0x19, 0xc6, 0x91, 0xe9, 0xed, 0x80, 0x05, ++ 0xfb, 0x3b, 0x08, 0x8f, 0x97, 0xbb, 0xf7, 0x9e, 0xef, 0x9e, 0x61, 0x40, ++ 0xd3, 0xf7, 0x83, 0x02, 0x11, 0x6f, 0x72, 0x35, 0xbb, 0x9a, 0xc7, 0x8d, ++ 0x7e, 0x3b, 0x5d, 0xf3, 0x58, 0xce, 0xdf, 0x45, 0x57, 0xb3, 0x47, 0x4f, ++ 0x57, 0xab, 0xaa, 0xa7, 0x6b, 0x6c, 0x81, 0x9e, 0xae, 0x76, 0xaf, 0x9e, ++ 0xae, 0xf1, 0x63, 0xf4, 0x74, 0x75, 0xfa, 0xf4, 0x74, 0x4d, 0xa8, 0xd2, ++ 0xd3, 0x35, 0xd1, 0xaf, 0xa7, 0xeb, 0x90, 0x69, 0x7a, 0xba, 0x26, 0x07, ++ 0xf4, 0x74, 0x4d, 0x9d, 0xaf, 0xa7, 0x6b, 0x7a, 0x83, 0x9e, 0xae, 0x19, ++ 0x8d, 0x7a, 0xba, 0x65, 0x06, 0xef, 0xd5, 0x95, 0x0f, 0x46, 0x6f, 0x4d, ++ 0x1e, 0x66, 0xb7, 0x2e, 0xd2, 0xd5, 0xef, 0xa3, 0xbb, 0x7f, 0x3e, 0xc5, ++ 0x11, 0xe5, 0xb6, 0xfd, 0x58, 0xd7, 0xbf, 0x46, 0xf7, 0x20, 0xfc, 0x41, ++ 0xba, 0xe7, 0x33, 0x11, 0xef, 0xf8, 0x3f, 0xa4, 0x7b, 0xf2, 0x30, 0x3d, ++ 0xbd, 0x41, 0x7f, 0xa4, 0x0c, 0x1b, 0x4d, 0x7a, 0x3f, 0x1d, 0xd3, 0x69, ++ 0xf9, 0xc2, 0xbe, 0xf6, 0x0f, 0xac, 0xf7, 0x35, 0xf9, 0x13, 0xa9, 0x67, ++ 0x23, 0xf7, 0x97, 0x83, 0xc9, 0xa5, 0x4b, 0xf4, 0x8a, 0xd8, 0x6f, 0x0e, ++ 0xaa, 0x57, 0xa2, 0xf6, 0x9b, 0xef, 0x31, 0xd0, 0x7b, 0x34, 0xc8, 0x6a, ++ 0xf2, 0x1f, 0xdd, 0x29, 0xf8, 0xf3, 0x50, 0x0c, 0xc7, 0xfb, 0x17, 0x58, ++ 0x74, 0x0d, 0xd4, 0x83, 0x3a, 0x63, 0x00, 0xae, 0xf7, 0x10, 0x6e, 0x18, ++ 0xe7, 0xbd, 0x98, 0x42, 0xf2, 0x0b, 0xdc, 0xc5, 0x3a, 0x8d, 0xd8, 0xff, ++ 0xdd, 0xac, 0x9b, 0xd2, 0xe9, 0xac, 0x97, 0xd2, 0x00, 0x73, 0x90, 0x1e, ++ 0x9d, 0xc9, 0xbc, 0x94, 0xce, 0x66, 0x7e, 0x93, 0xf0, 0x13, 0xdc, 0x30, ++ 0x2c, 0x11, 0xfd, 0x07, 0x3d, 0x65, 0xa8, 0x87, 0x2f, 0xcc, 0x78, 0xeb, ++ 0x38, 0x9d, 0x2f, 0xbd, 0x91, 0x70, 0x45, 0xef, 0x3d, 0x7c, 0x88, 0xe7, ++ 0x18, 0xb9, 0x8c, 0x9d, 0x12, 0xf2, 0xe0, 0x24, 0x9e, 0x67, 0x40, 0xfe, ++ 0xac, 0x55, 0xf8, 0xd3, 0x7c, 0x4c, 0x75, 0x47, 0xe0, 0xed, 0x94, 0xf0, ++ 0xfb, 0xcd, 0x1c, 0x27, 0x91, 0x3e, 0x64, 0x72, 0x0c, 0xc5, 0x59, 0xcd, ++ 0xbc, 0x43, 0x22, 0x7d, 0x32, 0xf3, 0xff, 0xf2, 0xf4, 0x8e, 0x61, 0xdc, ++ 0x1e, 0x8d, 0x4e, 0x9b, 0x1b, 0x35, 0xfc, 0xf1, 0x7d, 0xca, 0xda, 0x61, ++ 0x2a, 0xc9, 0xf7, 0x34, 0xd6, 0x29, 0xf4, 0x1e, 0x0b, 0xd8, 0xb2, 0xa9, ++ 0x1f, 0x7e, 0xfe, 0xf0, 0xb4, 0x89, 0xf6, 0x93, 0x1e, 0x0b, 0x87, 0xef, ++ 0x79, 0x89, 0x29, 0x63, 0x5c, 0x74, 0xed, 0x8c, 0xe8, 0xea, 0xb1, 0x70, ++ 0x78, 0x9e, 0x37, 0x32, 0x0b, 0xe2, 0xf3, 0x39, 0x16, 0x50, 0x91, 0x18, ++ 0x8f, 0x28, 0x20, 0xa2, 0xf8, 0x7d, 0x87, 0xe1, 0xc8, 0x1f, 0x33, 0xff, ++ 0xef, 0x5b, 0x59, 0xe8, 0x2f, 0x8b, 0x59, 0xb5, 0x7b, 0x6a, 0xe5, 0x35, ++ 0x78, 0x3e, 0x12, 0x5c, 0x4a, 0xfe, 0xea, 0x1f, 0x30, 0xbd, 0xbf, 0xfa, ++ 0xee, 0x06, 0x89, 0xfc, 0xd5, 0x3f, 0x00, 0x38, 0x21, 0xf5, 0x38, 0xbc, ++ 0x1e, 0xd4, 0x97, 0x5a, 0x3e, 0x88, 0xf0, 0xc2, 0x3c, 0x2a, 0xb1, 0x1e, ++ 0x7c, 0x1f, 0xe2, 0x69, 0x90, 0xd0, 0x3f, 0xf4, 0x0f, 0xeb, 0x6f, 0xcf, ++ 0x8f, 0x79, 0xbd, 0xbf, 0xb3, 0xbf, 0xbe, 0x7e, 0x18, 0x87, 0x0b, 0x7f, ++ 0x90, 0x7e, 0x9a, 0xff, 0xb1, 0xc0, 0xc0, 0xe3, 0x15, 0x7a, 0xef, 0xe7, ++ 0xfb, 0x94, 0xed, 0x3f, 0x60, 0xdc, 0x8f, 0xd6, 0x18, 0x2c, 0x0f, 0xe2, ++ 0xf9, 0xa4, 0x0c, 0x1b, 0x4a, 0x8c, 0x67, 0x32, 0xf2, 0x7b, 0xe8, 0x6b, ++ 0x87, 0x65, 0xf2, 0xfb, 0x6e, 0xac, 0x9b, 0xf6, 0xf9, 0xec, 0x88, 0x66, ++ 0x5f, 0x06, 0x48, 0xfe, 0x16, 0x89, 0x7b, 0x0e, 0x67, 0xc5, 0xf9, 0xde, ++ 0xdc, 0x0e, 0x0b, 0xc3, 0x78, 0x99, 0xa2, 0xdd, 0x07, 0x5d, 0x78, 0x9e, ++ 0x37, 0x17, 0x78, 0xb0, 0x1b, 0xf5, 0xb0, 0x12, 0xa0, 0x77, 0x56, 0x8a, ++ 0x36, 0xbe, 0xe6, 0xe2, 0xfe, 0x37, 0xa3, 0x13, 0xef, 0x2f, 0x6a, 0xfa, ++ 0x7f, 0x70, 0x3e, 0x55, 0xd8, 0xa9, 0x88, 0xfb, 0x02, 0xc0, 0x77, 0x0d, ++ 0x03, 0xd9, 0x1f, 0x7b, 0x86, 0xf3, 0x73, 0xfa, 0xe6, 0xa6, 0xee, 0x61, ++ 0x78, 0x1e, 0xa7, 0xc1, 0xf3, 0x70, 0xd3, 0x51, 0xca, 0xcb, 0x8a, 0x97, ++ 0xe2, 0x0c, 0xf1, 0x1d, 0x26, 0x67, 0x44, 0x7b, 0x93, 0x1b, 0xca, 0x23, ++ 0xe4, 0x9d, 0x62, 0x83, 0xf6, 0x11, 0x72, 0xc8, 0x68, 0xf3, 0xd3, 0x63, ++ 0x26, 0xcb, 0x9b, 0xba, 0xe9, 0x9c, 0xcf, 0x28, 0xde, 0x8b, 0x5a, 0x91, ++ 0xb6, 0xc8, 0x11, 0x88, 0xd8, 0xc7, 0xbd, 0x30, 0x8c, 0x8f, 0xcf, 0x2c, ++ 0x41, 0xe6, 0x48, 0x62, 0xc2, 0x04, 0xc7, 0x54, 0x39, 0x85, 0x72, 0xed, ++ 0xaf, 0x8c, 0xef, 0x67, 0xcd, 0x1e, 0xe8, 0x27, 0x52, 0x7e, 0x5e, 0x4c, ++ 0x64, 0x91, 0x7e, 0xfa, 0xd6, 0xa6, 0x63, 0x04, 0xef, 0x72, 0x29, 0x10, ++ 0xc0, 0x4e, 0xcc, 0x39, 0x2c, 0x6c, 0x05, 0xfa, 0x98, 0x15, 0xbc, 0x73, ++ 0x0b, 0xdf, 0x37, 0xde, 0x78, 0x14, 0xe3, 0xa9, 0x4c, 0xf6, 0x45, 0xde, ++ 0xb0, 0x3a, 0x38, 0xde, 0xcc, 0x1e, 0xe5, 0x42, 0xa4, 0x3c, 0x7d, 0x75, ++ 0x98, 0xd8, 0x47, 0x0b, 0x79, 0xfa, 0x2f, 0x4d, 0xbd, 0x85, 0x38, 0x4e, ++ 0x73, 0x53, 0x8f, 0x86, 0x2f, 0x86, 0xe7, 0xa6, 0xc1, 0x64, 0x7e, 0x8f, ++ 0xbe, 0xb9, 0xe9, 0x13, 0xfa, 0x6e, 0xa8, 0x52, 0x89, 0xdf, 0x5e, 0xdd, ++ 0x98, 0x7f, 0x50, 0x85, 0xf2, 0xe3, 0xf0, 0x17, 0xdf, 0xb5, 0x31, 0xbb, ++ 0x39, 0x5c, 0xec, 0xa2, 0x9b, 0xf4, 0xea, 0x74, 0xc1, 0x07, 0xe8, 0x13, ++ 0x4b, 0x07, 0xfe, 0x39, 0xde, 0x68, 0x24, 0x3e, 0x5b, 0x9c, 0x6e, 0x23, ++ 0x7f, 0xfd, 0xe2, 0x37, 0x73, 0x0f, 0xfa, 0x60, 0x3d, 0x9b, 0x60, 0xba, ++ 0xf2, 0x77, 0x80, 0xbb, 0x7f, 0x1c, 0x8e, 0x27, 0x93, 0x90, 0xa7, 0xc0, ++ 0x4f, 0x7e, 0x94, 0x0f, 0xa6, 0x14, 0x85, 0xfc, 0xf6, 0x2e, 0xc7, 0x64, ++ 0xa2, 0xd3, 0xdf, 0xdb, 0x9f, 0x86, 0x5f, 0x93, 0x95, 0xd1, 0x7b, 0x44, ++ 0xa6, 0x74, 0x1b, 0xd9, 0x05, 0x57, 0x0a, 0xe7, 0xb9, 0x28, 0x7d, 0x05, ++ 0x78, 0x21, 0xf9, 0xbf, 0x58, 0xe0, 0x45, 0x7b, 0x5f, 0xe9, 0xf8, 0x03, ++ 0x8c, 0xf6, 0x0b, 0x8b, 0x1f, 0xe2, 0xfe, 0xbb, 0xc5, 0xb5, 0x8c, 0xe2, ++ 0xfd, 0x59, 0x23, 0xfc, 0x94, 0xf5, 0xf3, 0x8d, 0xa6, 0x67, 0x12, 0xf1, ++ 0x25, 0x18, 0xf8, 0xd8, 0xd6, 0x04, 0x2b, 0x0e, 0xba, 0x78, 0xac, 0xc9, ++ 0xc2, 0x02, 0xf9, 0x60, 0x87, 0x60, 0x7c, 0x7c, 0x76, 0x3f, 0x1d, 0xdb, ++ 0x7c, 0x8a, 0x13, 0x8f, 0xfa, 0xd7, 0x54, 0xba, 0x6b, 0x30, 0x7d, 0x6c, ++ 0xcc, 0xc9, 0x36, 0x14, 0x7f, 0x8f, 0x8f, 0xfd, 0xb2, 0x1b, 0x53, 0xf4, ++ 0xd5, 0xe3, 0xf8, 0x8e, 0x06, 0x16, 0x42, 0xfb, 0x98, 0xce, 0xe0, 0x61, ++ 0x7c, 0xe7, 0x7c, 0xc8, 0xc3, 0xf8, 0x71, 0xa2, 0x3c, 0x2e, 0xc0, 0xf3, ++ 0xf1, 0xa2, 0x3c, 0x7e, 0x1a, 0xcf, 0xa7, 0xfb, 0x5e, 0x90, 0x2a, 0x11, ++ 0xb0, 0xa8, 0x73, 0xa5, 0x74, 0x9b, 0x6b, 0x62, 0x0e, 0xca, 0xe9, 0xd9, ++ 0x8c, 0xdf, 0xb7, 0x16, 0xef, 0x2d, 0x6c, 0x11, 0xfa, 0x22, 0xd5, 0xe6, ++ 0xaa, 0xa9, 0xc4, 0xf2, 0xbb, 0x19, 0xdd, 0xbf, 0xd0, 0xca, 0x9f, 0x14, ++ 0xe5, 0xc9, 0xb6, 0x0f, 0x5b, 0xb3, 0x51, 0x8f, 0x4c, 0xd5, 0xb7, 0xdf, ++ 0x28, 0xf0, 0x30, 0xc4, 0xf6, 0x61, 0xdb, 0x38, 0x3a, 0x7f, 0xd2, 0x97, ++ 0x6b, 0xe7, 0x3b, 0x89, 0xb6, 0xf3, 0x47, 0xa9, 0x7d, 0x91, 0xbe, 0x7c, ++ 0x9d, 0x68, 0x6f, 0xb7, 0x9d, 0xef, 0x1e, 0x87, 0xe5, 0x39, 0xfa, 0xf1, ++ 0x1f, 0x15, 0xe5, 0xb1, 0x36, 0x2e, 0x0f, 0x99, 0x9f, 0xf1, 0x77, 0x01, ++ 0x44, 0xf9, 0x23, 0xa2, 0xdc, 0x8a, 0xe5, 0x38, 0xbe, 0x97, 0x97, 0xcb, ++ 0xda, 0xfb, 0x17, 0xa2, 0xde, 0x4a, 0x01, 0x07, 0xc6, 0xb6, 0x91, 0xff, ++ 0x73, 0x18, 0xf7, 0x7f, 0x6e, 0x6d, 0xb2, 0x14, 0x11, 0x5d, 0x9a, 0x2e, ++ 0x12, 0x7d, 0x1e, 0x6b, 0x62, 0x94, 0x9f, 0x34, 0xdc, 0xc5, 0xef, 0x65, ++ 0x57, 0x71, 0x7c, 0xbb, 0xdc, 0x9c, 0x1f, 0x1c, 0x8d, 0x6c, 0xc0, 0xf7, ++ 0x00, 0x26, 0x0d, 0xe7, 0xfb, 0xaa, 0x38, 0xb5, 0xc7, 0xe7, 0x1b, 0x40, ++ 0xee, 0x69, 0xe5, 0x2e, 0x07, 0x7f, 0xef, 0x40, 0xf6, 0x98, 0x88, 0x9f, ++ 0xcc, 0x36, 0x21, 0x37, 0xc4, 0x7a, 0xec, 0x93, 0x1b, 0x52, 0x83, 0x97, ++ 0x33, 0x19, 0xf7, 0x97, 0x5f, 0x8e, 0xaf, 0x61, 0xa1, 0x5d, 0x40, 0xfb, ++ 0x68, 0x28, 0xfc, 0x20, 0x5f, 0xa7, 0x3d, 0x60, 0x60, 0x81, 0x08, 0x79, ++ 0x99, 0xb2, 0x30, 0x86, 0x05, 0x22, 0xea, 0x7b, 0x66, 0xbb, 0x74, 0xf9, ++ 0xa4, 0xbb, 0x53, 0x74, 0xf5, 0xdd, 0x53, 0xb3, 0x74, 0xe5, 0xb6, 0xd2, ++ 0xe1, 0xba, 0x72, 0x36, 0xd5, 0x45, 0xeb, 0x66, 0x91, 0xe0, 0xaf, 0x98, ++ 0xa2, 0x12, 0x5d, 0xb9, 0xf6, 0x0e, 0x03, 0xdb, 0x2e, 0xea, 0x89, 0xf5, ++ 0x6b, 0xcc, 0xb9, 0x56, 0x57, 0xef, 0x7c, 0x81, 0x1a, 0x8f, 0x3c, 0x7e, ++ 0x6a, 0x22, 0xe8, 0x1f, 0x8a, 0x2b, 0xf0, 0x5a, 0x50, 0x3e, 0x2c, 0xb2, ++ 0x67, 0x0d, 0x41, 0xfd, 0xf3, 0x5c, 0xd3, 0x18, 0x42, 0xce, 0xf3, 0xb0, ++ 0xae, 0xc0, 0x68, 0x65, 0xbb, 0x9c, 0x3c, 0xde, 0x7c, 0x17, 0x9e, 0xe3, ++ 0x41, 0xf9, 0xbf, 0x36, 0xf9, 0xe8, 0xfb, 0x0e, 0x28, 0x57, 0x21, 0x7d, ++ 0x1a, 0xd6, 0x9d, 0x0a, 0xf5, 0x3b, 0x9a, 0x1c, 0x94, 0x7f, 0xaa, 0xc9, ++ 0x43, 0xe9, 0x96, 0x26, 0x95, 0xd2, 0x27, 0x9b, 0x0a, 0xa8, 0x7c, 0x63, ++ 0x93, 0x97, 0xf2, 0x4f, 0x40, 0xff, 0x98, 0xae, 0x83, 0x7e, 0xf0, 0xfb, ++ 0xda, 0xa6, 0x2a, 0xca, 0xaf, 0x69, 0xf2, 0x53, 0xfe, 0xf1, 0xa6, 0x69, ++ 0x94, 0x7f, 0xb4, 0x29, 0x40, 0xe9, 0x23, 0x4d, 0xf3, 0xe9, 0xfb, 0xca, ++ 0xa6, 0x06, 0xca, 0xaf, 0x68, 0x6a, 0xa4, 0xf4, 0xe1, 0xa6, 0x20, 0xa5, ++ 0xcd, 0x4d, 0xad, 0x54, 0x1e, 0x14, 0xf4, 0xde, 0x25, 0xee, 0xaf, 0xee, ++ 0x2a, 0xe7, 0xf7, 0xd2, 0xa3, 0xe9, 0xf8, 0xf0, 0x70, 0x49, 0xf7, 0x5e, ++ 0x9c, 0xbd, 0x3f, 0x7e, 0xe4, 0xe1, 0xe1, 0x18, 0x3f, 0xd2, 0xd9, 0x43, ++ 0x76, 0xb8, 0x16, 0x3f, 0x82, 0xf3, 0xa6, 0xfe, 0xac, 0x7c, 0xfe, 0xd1, ++ 0xfd, 0x6d, 0x1a, 0xce, 0xfd, 0x09, 0xc3, 0x59, 0xf7, 0xd2, 0x58, 0xbe, ++ 0x9e, 0xe9, 0x9c, 0x36, 0x77, 0xbf, 0x77, 0x59, 0x2c, 0xf0, 0x7d, 0x6a, ++ 0x03, 0xa7, 0x43, 0xe6, 0xfe, 0x5e, 0x2a, 0x4f, 0x9e, 0xcf, 0x69, 0xb1, ++ 0x49, 0xe8, 0x65, 0xe6, 0x0e, 0xb2, 0xb4, 0x32, 0x3a, 0xad, 0xa7, 0x7a, ++ 0x67, 0xa5, 0xee, 0x8a, 0x58, 0x7e, 0xbe, 0x4d, 0xfe, 0x0c, 0xe6, 0x81, ++ 0x79, 0x96, 0x89, 0x77, 0x92, 0x88, 0xed, 0x42, 0x06, 0x84, 0x4b, 0x19, ++ 0xc3, 0xf5, 0xa7, 0x46, 0xd7, 0xbe, 0x79, 0x3b, 0x39, 0x9c, 0x38, 0xff, ++ 0x81, 0xe0, 0xdd, 0x21, 0xe0, 0x95, 0x4b, 0x3b, 0xf9, 0xfb, 0x27, 0x55, ++ 0x6d, 0x61, 0x64, 0xfb, 0x18, 0x5f, 0x03, 0xbd, 0x7f, 0x62, 0x99, 0xe6, ++ 0x0f, 0x2b, 0x90, 0xba, 0xfd, 0x01, 0x7a, 0x8f, 0x61, 0xf8, 0xc5, 0x09, ++ 0xb0, 0x39, 0x03, 0x79, 0x73, 0xf1, 0x7a, 0xa6, 0x42, 0x9a, 0xb6, 0x50, ++ 0xbf, 0x6f, 0x4b, 0x99, 0x5d, 0xa2, 0xdb, 0x17, 0xc9, 0x17, 0x1f, 0x63, ++ 0x2a, 0xc8, 0x01, 0x5b, 0x91, 0x7e, 0x7f, 0x15, 0x93, 0xb3, 0x48, 0xd7, ++ 0xce, 0x92, 0xf6, 0x63, 0x5d, 0xb9, 0xc9, 0xbd, 0x4c, 0x57, 0x3e, 0xf3, ++ 0xbe, 0xcc, 0xe5, 0x1e, 0xc4, 0x67, 0x2a, 0x3f, 0xe7, 0x31, 0xaf, 0x5e, ++ 0xca, 0x92, 0x01, 0xae, 0x39, 0xed, 0x6b, 0x08, 0xae, 0x77, 0x04, 0x1d, ++ 0xcf, 0x4a, 0x2a, 0xdd, 0xe3, 0x0e, 0xee, 0xd6, 0xe2, 0x1e, 0xf8, 0xfe, ++ 0xe2, 0x59, 0xa1, 0x5f, 0x98, 0x65, 0x35, 0xd9, 0x63, 0xf9, 0x4e, 0x9e, ++ 0xcd, 0x8b, 0x0f, 0x1a, 0x50, 0x3f, 0x7c, 0xf6, 0x6f, 0xf1, 0x24, 0x97, ++ 0x9e, 0x79, 0xca, 0x10, 0x42, 0x7f, 0x2e, 0x88, 0x27, 0x03, 0xae, 0xff, ++ 0x42, 0x30, 0xfb, 0xb0, 0xbc, 0x98, 0xf5, 0x50, 0x1e, 0x43, 0x56, 0x30, ++ 0x3f, 0x8a, 0xa9, 0x32, 0xe6, 0xaf, 0x62, 0xbd, 0xb4, 0xbf, 0x82, 0xfd, ++ 0xc5, 0xef, 0x86, 0x63, 0xfc, 0xa8, 0x1c, 0x78, 0xca, 0x0a, 0xf9, 0x33, ++ 0xe9, 0x81, 0x67, 0x79, 0xfc, 0x5a, 0x98, 0xf4, 0x67, 0x9e, 0xa0, 0x67, ++ 0x9e, 0xb6, 0x9f, 0xda, 0xa0, 0x44, 0xfb, 0x79, 0xdf, 0x1a, 0x4e, 0x7c, ++ 0xa8, 0xbf, 0xc7, 0xd6, 0x22, 0xf6, 0x17, 0x2d, 0x56, 0xee, 0x7f, 0x5b, ++ 0xea, 0x2c, 0x1b, 0x82, 0x76, 0xeb, 0xd9, 0x41, 0xe2, 0x0d, 0xed, 0x9e, ++ 0x57, 0x8f, 0xcc, 0x06, 0x7c, 0xdb, 0x93, 0x0f, 0x52, 0xaa, 0x7d, 0x7f, ++ 0x54, 0x35, 0x0c, 0x78, 0x4f, 0xfb, 0x8f, 0x51, 0xfc, 0x3f, 0x0c, 0x98, ++ 0x5d, 0xf0, 0xff, 0x1f, 0x11, 0x9e, 0x33, 0xa5, 0x6f, 0x27, 0xa1, 0x1b, ++ 0xaa, 0x2e, 0xa7, 0x97, 0xd6, 0xc1, 0x59, 0xc9, 0xe7, 0x99, 0x81, 0xf8, ++ 0x7d, 0x5d, 0xe6, 0xfc, 0x08, 0x3b, 0x2e, 0x9c, 0x9f, 0x22, 0xf0, 0xab, ++ 0xec, 0x2e, 0xf7, 0xcc, 0x00, 0x3c, 0x2a, 0x6f, 0x66, 0x7b, 0x83, 0xac, ++ 0x7f, 0x9c, 0x67, 0x9a, 0x8e, 0x65, 0x63, 0x3c, 0x80, 0x96, 0xcf, 0x13, ++ 0xf1, 0xb2, 0x3b, 0x9b, 0x92, 0x73, 0x2a, 0x23, 0xbe, 0x3b, 0x0b, 0x39, ++ 0x3c, 0x05, 0xac, 0xbb, 0x0a, 0xf5, 0x55, 0x41, 0x91, 0xc1, 0x1b, 0xc2, ++ 0x8e, 0x7d, 0x0e, 0x9d, 0x1f, 0xc3, 0x9a, 0xd3, 0xe6, 0xc3, 0x77, 0x07, ++ 0x94, 0x12, 0xe6, 0x45, 0x31, 0x37, 0x8c, 0xb5, 0x2d, 0x43, 0xdd, 0xad, ++ 0xfc, 0x4d, 0xa6, 0x78, 0x27, 0xe5, 0xd0, 0x35, 0x4c, 0x85, 0xfd, 0x8c, ++ 0xcd, 0x16, 0x66, 0x18, 0x1f, 0xa6, 0xf5, 0xcb, 0x84, 0x3f, 0xe4, 0x01, ++ 0x21, 0x37, 0xbf, 0x74, 0x54, 0xc6, 0xd3, 0x7b, 0x92, 0x29, 0x7d, 0xf2, ++ 0x0f, 0x75, 0x24, 0xfb, 0xd2, 0xe6, 0xeb, 0x46, 0x3e, 0xfa, 0xb2, 0xdd, ++ 0xc8, 0xe7, 0x75, 0x48, 0x5f, 0x5e, 0x60, 0xe3, 0x71, 0x5c, 0x73, 0x0b, ++ 0x4c, 0x21, 0x55, 0xc2, 0xf7, 0xcb, 0xda, 0xe8, 0xbd, 0x44, 0x65, 0xab, ++ 0xc4, 0xd2, 0x32, 0x11, 0x8e, 0x71, 0x84, 0x07, 0xb6, 0x2f, 0x96, 0xf8, ++ 0x30, 0x76, 0xc3, 0x08, 0x16, 0x84, 0xf5, 0x52, 0xea, 0x0c, 0xfc, 0x05, ++ 0xf9, 0xe4, 0x4c, 0x58, 0xdd, 0x67, 0xc8, 0x16, 0x3c, 0x09, 0xf5, 0x6a, ++ 0x0b, 0x4d, 0xdb, 0xd0, 0x3e, 0xcb, 0x47, 0xbc, 0xd8, 0x10, 0x2f, 0x77, ++ 0xe6, 0x54, 0xe2, 0xd0, 0x39, 0x05, 0x84, 0xdf, 0x39, 0x62, 0xde, 0x79, ++ 0x85, 0x7c, 0xbd, 0xb6, 0xa4, 0x47, 0xc1, 0xc3, 0xbc, 0x3e, 0x7c, 0x57, ++ 0x74, 0x6e, 0xbb, 0xe6, 0xc7, 0xd1, 0xcf, 0xf3, 0xd1, 0xd2, 0x8a, 0x5b, ++ 0xf1, 0xfd, 0xc5, 0xe6, 0x6e, 0x99, 0xab, 0xb5, 0x28, 0x7c, 0xae, 0x32, ++ 0x76, 0x8f, 0x98, 0x01, 0x5d, 0x9f, 0xe9, 0x01, 0xb8, 0x64, 0x82, 0x33, ++ 0xaf, 0x10, 0xe5, 0xc2, 0x86, 0x32, 0x16, 0x24, 0x3d, 0xce, 0xe7, 0x57, ++ 0xfb, 0x94, 0xc4, 0x36, 0x65, 0x92, 0x5c, 0xaa, 0x22, 0x3d, 0x3e, 0xda, ++ 0xc0, 0x22, 0xcf, 0x31, 0xb5, 0xb4, 0xb8, 0x90, 0xcb, 0xdf, 0x97, 0x86, ++ 0xf3, 0xf7, 0xda, 0xec, 0x9e, 0x23, 0xc4, 0x8f, 0xfd, 0xf9, 0xc3, 0x47, ++ 0x66, 0x03, 0x3e, 0x9e, 0x33, 0xb0, 0x02, 0x3a, 0xbf, 0x35, 0xf0, 0xfd, ++ 0xb1, 0x16, 0x37, 0x23, 0xa3, 0x1f, 0x00, 0xd2, 0x9f, 0x14, 0x6a, 0xfe, ++ 0xd2, 0x16, 0x36, 0x09, 0xf5, 0xb6, 0xd3, 0x40, 0x71, 0xa0, 0x72, 0x47, ++ 0x0c, 0xdd, 0x4f, 0x95, 0x9d, 0x0a, 0xc5, 0x9f, 0xb7, 0xd8, 0x2a, 0x1d, ++ 0xf7, 0x62, 0x3f, 0x0e, 0x85, 0xce, 0x6b, 0x26, 0xc8, 0x63, 0xbb, 0xd1, ++ 0x8e, 0x36, 0x3b, 0x0d, 0x57, 0xa1, 0x1d, 0x7e, 0x78, 0xdb, 0x8f, 0xbb, ++ 0x31, 0x7e, 0x47, 0x4e, 0x57, 0x18, 0xfa, 0xbd, 0x5a, 0x1c, 0x0a, 0xb7, ++ 0x43, 0xd2, 0x0c, 0x14, 0x97, 0xa7, 0x38, 0x2b, 0x2d, 0x78, 0xbe, 0x93, ++ 0x67, 0x3b, 0x59, 0x8e, 0xf8, 0x3c, 0xd8, 0xf1, 0x43, 0x7a, 0x8f, 0x41, ++ 0x7e, 0x50, 0xc4, 0xce, 0x08, 0xbf, 0x98, 0x51, 0x90, 0xac, 0x85, 0x35, ++ 0x50, 0xff, 0xc1, 0x34, 0x45, 0xbc, 0xeb, 0xe2, 0xab, 0x1e, 0x95, 0x24, ++ 0x8e, 0x26, 0x54, 0xdc, 0x0f, 0x55, 0x7d, 0x82, 0xfb, 0xed, 0xc3, 0x8e, ++ 0xf3, 0x56, 0xdc, 0x17, 0xa8, 0xb6, 0xb9, 0xe4, 0x0f, 0xac, 0x2b, 0xe4, ++ 0xfb, 0x44, 0x23, 0x9e, 0xe3, 0x41, 0xfe, 0xa9, 0x25, 0xe7, 0x9d, 0x28, ++ 0xbf, 0x5e, 0xef, 0x58, 0xee, 0xca, 0x44, 0x7b, 0x3a, 0xa4, 0x90, 0x2d, ++ 0x52, 0xf0, 0x75, 0x73, 0x0a, 0xbd, 0x3b, 0xd0, 0x61, 0xa2, 0x77, 0x11, ++ 0x34, 0xbc, 0x66, 0x04, 0x15, 0xdd, 0x79, 0x60, 0x7a, 0xa3, 0x3e, 0x6f, ++ 0x8e, 0x3a, 0x17, 0x34, 0x46, 0xdd, 0x47, 0x9b, 0x85, 0xe3, 0x93, 0x9f, ++ 0x78, 0x1a, 0x0b, 0x47, 0xcc, 0xc7, 0xe8, 0xe1, 0xfb, 0x37, 0xe6, 0xb6, ++ 0xd1, 0xfe, 0xa7, 0xae, 0x50, 0xbc, 0x87, 0x29, 0xf2, 0x73, 0x30, 0x0f, ++ 0xa4, 0xd8, 0x69, 0x0c, 0xa6, 0x78, 0x01, 0x3f, 0x87, 0x3a, 0xe6, 0x66, ++ 0xe0, 0xbc, 0x2e, 0xbc, 0x14, 0xa0, 0xf8, 0xef, 0xc1, 0xec, 0xff, 0xd2, ++ 0x42, 0x55, 0x8c, 0x17, 0xb4, 0x1a, 0xe8, 0xfd, 0xdd, 0xb0, 0x15, 0xe3, ++ 0xc1, 0xb7, 0x37, 0x31, 0x2f, 0xda, 0x79, 0x96, 0x90, 0x42, 0xf1, 0xf8, ++ 0x3b, 0x84, 0x3c, 0xcb, 0xb1, 0x71, 0xfe, 0xf7, 0x17, 0x71, 0x3e, 0x8f, ++ 0x4e, 0x73, 0xda, 0xf8, 0xba, 0x53, 0x76, 0xc5, 0x84, 0x62, 0x91, 0x6e, ++ 0x8e, 0xce, 0x92, 0x20, 0xac, 0xf3, 0xc2, 0x57, 0x27, 0x32, 0x15, 0xf4, ++ 0x60, 0x8e, 0xc3, 0x67, 0x40, 0x7f, 0x7c, 0x4e, 0xa3, 0xc9, 0x8b, 0xf6, ++ 0xe7, 0x84, 0x5f, 0xda, 0x88, 0x4f, 0xce, 0xdb, 0x78, 0x3c, 0x95, 0xd2, ++ 0xf8, 0x88, 0x8a, 0xdf, 0x9b, 0xb7, 0x95, 0x15, 0x44, 0xde, 0xb3, 0x0b, ++ 0x35, 0x39, 0xbc, 0x28, 0x9f, 0xb6, 0x35, 0x59, 0xbc, 0x18, 0xa3, 0x1e, ++ 0x1a, 0x44, 0xbe, 0x66, 0x3b, 0x0d, 0x14, 0xc7, 0xae, 0x1a, 0x78, 0x5c, ++ 0x65, 0xbb, 0x58, 0x8f, 0xed, 0x85, 0xb1, 0x94, 0xae, 0x15, 0x72, 0xe6, ++ 0x69, 0x25, 0x38, 0x19, 0xe1, 0x7c, 0x1a, 0xe8, 0x89, 0xf1, 0xf3, 0x07, ++ 0x57, 0x73, 0xfb, 0x78, 0xd1, 0x52, 0x0b, 0xc1, 0xb1, 0xe8, 0xf5, 0x6c, ++ 0xb2, 0xaf, 0x06, 0xc3, 0xdb, 0x33, 0x4d, 0x1e, 0x6f, 0x0e, 0xc2, 0xb3, ++ 0xda, 0x90, 0x82, 0xfe, 0xaa, 0xf2, 0x95, 0x39, 0xab, 0xf0, 0x9d, 0x8c, ++ 0x45, 0x76, 0xfe, 0x8e, 0xb0, 0x1c, 0x3f, 0x9c, 0xfc, 0xb6, 0xec, 0x77, ++ 0x46, 0x86, 0xf6, 0x7c, 0x73, 0xdc, 0xb5, 0xde, 0x59, 0x11, 0xf2, 0x5d, ++ 0x8e, 0x1f, 0x5b, 0x80, 0x7c, 0x25, 0xcb, 0xc1, 0x14, 0xf4, 0xe7, 0xfc, ++ 0xbc, 0xf0, 0xdc, 0x6d, 0x18, 0x57, 0x0b, 0xf4, 0xdb, 0x84, 0xf9, 0xdd, ++ 0xcf, 0xfd, 0xe1, 0x36, 0x8c, 0xa3, 0xdd, 0x69, 0x0f, 0xa6, 0x60, 0x9c, ++ 0xed, 0x4b, 0xcf, 0xbd, 0xcf, 0xcb, 0x13, 0x83, 0x9b, 0x30, 0xce, 0xf6, ++ 0xe0, 0x73, 0xc7, 0x79, 0x79, 0x7a, 0x30, 0xc5, 0x00, 0xf9, 0xd7, 0x9f, ++ 0xfb, 0x90, 0x97, 0xe7, 0x06, 0x37, 0x61, 0xfe, 0xad, 0xe7, 0x4e, 0xf1, ++ 0x72, 0x3c, 0x03, 0x03, 0xd9, 0xf9, 0xde, 0x73, 0x9f, 0xde, 0x16, 0x44, ++ 0x7f, 0x8b, 0xc9, 0x3b, 0x1f, 0x05, 0xf2, 0x2f, 0x00, 0xfe, 0x22, 0x58, ++ 0x62, 0x9d, 0x22, 0xfd, 0x40, 0xe0, 0x45, 0x2b, 0x7f, 0x01, 0xbf, 0xc3, ++ 0x06, 0x6c, 0x8f, 0x48, 0xa3, 0xcb, 0xf7, 0x89, 0x76, 0xfb, 0x07, 0x29, ++ 0xff, 0x95, 0x28, 0xef, 0x1a, 0xa4, 0xff, 0x03, 0xa2, 0x5d, 0x78, 0x90, ++ 0xf6, 0x87, 0x44, 0xbb, 0xc3, 0x83, 0xb4, 0x3f, 0x22, 0xda, 0x1d, 0x1d, ++ 0xa4, 0xfc, 0xb7, 0xa2, 0xfc, 0x8d, 0x41, 0xfa, 0xff, 0x77, 0xd1, 0xae, ++ 0x7b, 0x90, 0xf6, 0x6f, 0x8b, 0x76, 0xef, 0x0e, 0xd2, 0xfe, 0x0f, 0xa2, ++ 0xdd, 0xb1, 0x41, 0xca, 0xdf, 0x17, 0xe5, 0xff, 0x19, 0xd5, 0xff, 0x71, ++ 0x51, 0xbf, 0x47, 0x7c, 0xcf, 0xb2, 0xaf, 0x7e, 0x1f, 0xfd, 0xf7, 0x59, ++ 0x20, 0x47, 0x50, 0x2e, 0x15, 0xd8, 0x57, 0xbb, 0x70, 0x9d, 0x6f, 0x6b, ++ 0x2d, 0x25, 0xfe, 0x6f, 0x2e, 0xe3, 0xe7, 0x54, 0x1a, 0xbf, 0x67, 0x49, ++ 0x8c, 0xde, 0xf7, 0xad, 0x2e, 0xe2, 0xef, 0x8a, 0x55, 0x17, 0x71, 0xf9, ++ 0xfb, 0x67, 0xd1, 0x3f, 0xf0, 0xe1, 0xe3, 0xc8, 0x77, 0x8b, 0xde, 0x94, ++ 0x29, 0xae, 0xa7, 0xd9, 0xe0, 0x3d, 0x1d, 0x42, 0x39, 0xba, 0xca, 0x40, ++ 0xf6, 0xc0, 0xa2, 0xd7, 0xf9, 0x7e, 0x7d, 0xd1, 0x4a, 0x25, 0x14, 0x79, ++ 0x2f, 0xe7, 0xcf, 0x51, 0xf0, 0x2f, 0x47, 0xf8, 0x80, 0x71, 0x5b, 0x30, ++ 0x85, 0xf5, 0x76, 0xa6, 0x90, 0xc7, 0xf5, 0x9b, 0x3d, 0x1e, 0x6f, 0x75, ++ 0x84, 0x3c, 0x33, 0x3a, 0xf4, 0x79, 0x90, 0x17, 0x0c, 0xe5, 0x2e, 0xc8, ++ 0x6f, 0x8a, 0xdf, 0x2e, 0x58, 0x59, 0xd1, 0x5a, 0x00, 0xf9, 0x54, 0x97, ++ 0x81, 0x2c, 0x10, 0xa5, 0xd6, 0x12, 0xc6, 0xf7, 0x3a, 0x14, 0xbb, 0xd0, ++ 0x0b, 0x8e, 0xd2, 0xb6, 0x02, 0x84, 0xcf, 0xa6, 0xd0, 0x3b, 0x05, 0x9a, ++ 0x9c, 0x67, 0x36, 0x8f, 0xce, 0xaf, 0xd1, 0x62, 0x53, 0xe8, 0xdd, 0x36, ++ 0xd9, 0xce, 0xcb, 0x27, 0xfc, 0x72, 0xac, 0x03, 0xed, 0xac, 0x16, 0x16, ++ 0xe8, 0xf6, 0x61, 0x7b, 0x8f, 0x42, 0x76, 0xfc, 0xc1, 0xd6, 0x12, 0x07, ++ 0xca, 0x3d, 0x93, 0x7d, 0xb6, 0x03, 0xd7, 0xef, 0xbb, 0xc5, 0x7c, 0x5e, ++ 0x95, 0x75, 0x05, 0x31, 0x28, 0xaf, 0xe5, 0x47, 0x0d, 0x24, 0xbf, 0x0f, ++ 0x3b, 0xf8, 0x7a, 0xdf, 0xea, 0xe1, 0xf1, 0x4e, 0xa0, 0x57, 0xe8, 0x9e, ++ 0x13, 0xc8, 0x6b, 0x2f, 0xea, 0x88, 0x7c, 0x16, 0x5e, 0x8a, 0x72, 0x73, ++ 0xe7, 0x63, 0xfb, 0x66, 0x70, 0x3f, 0x1f, 0xb3, 0x8f, 0x2a, 0xa3, 0x7b, ++ 0x44, 0xda, 0xf9, 0xb6, 0xa4, 0x44, 0xec, 0x03, 0xae, 0x2b, 0xe2, 0xf8, ++ 0xc9, 0x10, 0x7a, 0x44, 0x41, 0xfd, 0x02, 0xe9, 0xd3, 0xa5, 0xe2, 0xfe, ++ 0x4b, 0x90, 0xfb, 0xa3, 0x32, 0x14, 0xe6, 0x49, 0x8d, 0xb8, 0xc7, 0x7b, ++ 0x5d, 0x91, 0xcc, 0xef, 0x1f, 0x29, 0x88, 0x23, 0xe8, 0x4b, 0xae, 0xa6, ++ 0xf7, 0xab, 0x86, 0x2e, 0x51, 0x74, 0xe7, 0x08, 0x69, 0x0f, 0xe8, 0xf3, ++ 0xa6, 0x28, 0xbd, 0xa1, 0x44, 0xe9, 0x95, 0xec, 0x56, 0x90, 0x93, 0xba, ++ 0xf3, 0x13, 0x87, 0x2e, 0x5f, 0x54, 0x24, 0xfc, 0x3c, 0x5e, 0xe6, 0x45, ++ 0x3b, 0x76, 0xc2, 0x2f, 0x57, 0x93, 0x3c, 0x3c, 0x8f, 0xfa, 0x4d, 0x1a, ++ 0x5c, 0xee, 0xf5, 0xc9, 0x5f, 0x21, 0x8f, 0x9f, 0x46, 0x04, 0xa0, 0x1c, ++ 0x0d, 0xf2, 0x7b, 0xe4, 0x07, 0x57, 0x97, 0xfc, 0x16, 0xe9, 0xbd, 0x68, ++ 0xa5, 0x81, 0xde, 0x8d, 0xbe, 0x52, 0x39, 0xfa, 0x67, 0x84, 0x05, 0xf0, ++ 0x90, 0x1b, 0x90, 0x48, 0x2f, 0xc0, 0x84, 0x52, 0x70, 0xdf, 0x74, 0x39, ++ 0x3c, 0xe4, 0x1a, 0xfd, 0x2e, 0x7a, 0x57, 0xe3, 0x32, 0xf8, 0xc8, 0x5d, ++ 0x57, 0xea, 0x42, 0x79, 0x9b, 0x1b, 0x50, 0xa8, 0xff, 0x4b, 0xf4, 0xc6, ++ 0x65, 0xf0, 0xf5, 0xbc, 0xe4, 0x3d, 0x16, 0x40, 0x3a, 0x3a, 0x63, 0x84, ++ 0x5d, 0x0d, 0x0c, 0x80, 0x7e, 0x3b, 0x57, 0x4c, 0x07, 0xc6, 0x17, 0x9b, ++ 0x84, 0x3f, 0x45, 0x8b, 0x17, 0x56, 0x86, 0x28, 0xfc, 0x5d, 0x7c, 0x71, ++ 0x5f, 0x55, 0x16, 0x7c, 0xfc, 0x30, 0xf3, 0xa9, 0xae, 0x6c, 0x7c, 0x17, ++ 0xa8, 0x81, 0xfc, 0xfb, 0x8b, 0x77, 0x3f, 0xe0, 0x41, 0xbb, 0x7d, 0x85, ++ 0x21, 0xe0, 0xc0, 0xfc, 0x51, 0xd7, 0xa4, 0x5e, 0x1c, 0x67, 0x11, 0x6c, ++ 0xfa, 0x11, 0x7f, 0x3b, 0xb1, 0x0f, 0x7a, 0x1f, 0xf3, 0xb7, 0xb7, 0xfb, ++ 0x00, 0xfe, 0xce, 0x90, 0x49, 0x7b, 0xbf, 0x32, 0x8c, 0xff, 0xec, 0xc6, ++ 0x38, 0x20, 0xed, 0x7d, 0x4c, 0x0f, 0xd9, 0x6b, 0xa2, 0xfe, 0xb5, 0xb7, ++ 0x57, 0x02, 0xde, 0x3b, 0x15, 0x47, 0x21, 0x9a, 0xa0, 0x4b, 0x77, 0x5d, ++ 0xb7, 0xde, 0x78, 0x1d, 0xd4, 0x37, 0xb1, 0xbe, 0xfa, 0x78, 0xef, 0xee, ++ 0xb9, 0xc3, 0x06, 0xf1, 0x7e, 0xe6, 0xb8, 0xf5, 0x95, 0x20, 0x97, 0x76, ++ 0xc7, 0x30, 0xdd, 0xfb, 0xa0, 0xbb, 0xd1, 0xcf, 0x4e, 0xfd, 0x4d, 0x58, ++ 0x8f, 0xef, 0x81, 0xc2, 0x78, 0x37, 0xc9, 0xb0, 0x37, 0x5b, 0x5b, 0x74, ++ 0xf3, 0x7a, 0x5b, 0x72, 0x3f, 0x3c, 0xeb, 0x8a, 0xa7, 0xac, 0x5f, 0x8a, ++ 0x0e, 0x3b, 0xb1, 0x4f, 0x71, 0x32, 0xfe, 0xae, 0xfb, 0x19, 0xb5, 0x27, ++ 0x0e, 0x97, 0x0f, 0xec, 0x57, 0x7e, 0x52, 0x04, 0xf4, 0xad, 0xed, 0x38, ++ 0x99, 0x14, 0xb9, 0x5f, 0xd7, 0xea, 0xc7, 0x8b, 0xfa, 0x75, 0x5d, 0xbd, ++ 0x75, 0xbb, 0x54, 0xaa, 0xbf, 0x94, 0xea, 0xef, 0xef, 0x8d, 0x2b, 0x22, ++ 0x7c, 0xf7, 0x96, 0x45, 0xd6, 0x8f, 0x13, 0x7e, 0x80, 0x88, 0xfa, 0x2b, ++ 0xbe, 0xad, 0x7e, 0x81, 0x06, 0xcf, 0xae, 0xb7, 0x6f, 0x2f, 0xe2, 0xf5, ++ 0x1f, 0xc5, 0xfa, 0x67, 0xd5, 0x9e, 0x24, 0x8a, 0xad, 0x89, 0x82, 0x27, ++ 0xe1, 0xd2, 0xfe, 0xd7, 0x7e, 0x5b, 0xff, 0xc3, 0x45, 0xfd, 0x33, 0xe1, ++ 0xb7, 0xa9, 0xfe, 0x59, 0xd6, 0x93, 0x54, 0x9c, 0x49, 0xed, 0x36, 0x61, ++ 0xbb, 0x73, 0x6f, 0xbc, 0x5d, 0x26, 0xe6, 0x9d, 0x84, 0xe7, 0x38, 0xef, ++ 0xda, 0x7c, 0x4f, 0x16, 0x81, 0x5c, 0x6a, 0xc0, 0x3e, 0xd0, 0x7e, 0x56, ++ 0x1a, 0x54, 0xfc, 0xde, 0x69, 0x69, 0x73, 0xa0, 0xfd, 0x66, 0x35, 0xb6, ++ 0xf9, 0x51, 0x0e, 0xe7, 0xe0, 0x3b, 0x5f, 0x63, 0xfa, 0xd3, 0xad, 0xa8, ++ 0x3c, 0x46, 0x5f, 0xfa, 0x3d, 0x9a, 0x9f, 0x3b, 0x2d, 0x2c, 0xa1, 0x1a, ++ 0xf9, 0xb5, 0xd1, 0x40, 0xfb, 0x9b, 0xfd, 0x3d, 0x86, 0x47, 0x90, 0x2f, ++ 0xb7, 0xa6, 0x8d, 0x75, 0xe0, 0xfe, 0x79, 0xb7, 0xa9, 0xbb, 0xa4, 0x08, ++ 0xed, 0xd7, 0xbd, 0x36, 0xb2, 0x5f, 0x0d, 0x19, 0x9f, 0x59, 0xd1, 0x6f, ++ 0x6e, 0xce, 0xe7, 0xeb, 0xdf, 0xea, 0x6c, 0xf0, 0x16, 0x41, 0xde, 0x9a, ++ 0x5e, 0x44, 0xef, 0x74, 0xca, 0x0f, 0x2d, 0xea, 0xa4, 0xf7, 0xc2, 0x7f, ++ 0xca, 0xdf, 0xd1, 0x52, 0x7e, 0x66, 0x0a, 0x6c, 0x47, 0x7e, 0x0c, 0x2f, ++ 0x2a, 0x98, 0x13, 0xb1, 0xbe, 0xd7, 0x15, 0x1b, 0x09, 0xbe, 0x95, 0xaf, ++ 0xd9, 0x56, 0xe3, 0xfe, 0x60, 0xa5, 0xd1, 0xdb, 0x96, 0x8f, 0x76, 0xb8, ++ 0x5d, 0xa1, 0xf8, 0x4b, 0xe5, 0x67, 0xfb, 0x26, 0x91, 0x7d, 0xf8, 0x0b, ++ 0x03, 0x23, 0xf9, 0x0f, 0xf3, 0xac, 0x80, 0x7e, 0x5b, 0x66, 0x28, 0xf4, ++ 0xfb, 0x0e, 0x4e, 0x14, 0xcf, 0x3c, 0x58, 0x44, 0xf8, 0xf0, 0xfb, 0x2b, ++ 0xa0, 0xde, 0xd0, 0x44, 0x45, 0xc2, 0x7b, 0x3a, 0x0f, 0x2b, 0x7e, 0x0b, ++ 0x9e, 0x77, 0x98, 0x85, 0x5d, 0xb7, 0xd5, 0xcb, 0xef, 0x69, 0x69, 0xe3, ++ 0x7e, 0x2c, 0xec, 0xcf, 0x8f, 0x8b, 0xf8, 0xbb, 0xee, 0x5b, 0xd3, 0x2e, ++ 0xbc, 0x37, 0xcf, 0x8d, 0xef, 0x30, 0x98, 0xe8, 0x7e, 0xa5, 0x6d, 0xa1, ++ 0x21, 0x6c, 0x8a, 0xc3, 0xfb, 0x66, 0xdb, 0x4e, 0xcf, 0x43, 0x7a, 0xc6, ++ 0xf6, 0xac, 0xc4, 0xfb, 0xc6, 0x31, 0x29, 0x8a, 0x03, 0xe7, 0xf7, 0x64, ++ 0x35, 0x94, 0xd1, 0xb9, 0x5c, 0x27, 0x7d, 0x0f, 0xd6, 0x1a, 0x68, 0xdf, ++ 0x90, 0xb0, 0xd0, 0xe0, 0x43, 0xff, 0x63, 0x4c, 0x8e, 0x49, 0xe7, 0xef, ++ 0xb0, 0xc1, 0x38, 0x91, 0xfe, 0x90, 0x6f, 0x8a, 0x03, 0xc7, 0x10, 0xee, ++ 0xab, 0xde, 0x54, 0x6e, 0x42, 0x3c, 0x7b, 0xee, 0x37, 0xd0, 0x3b, 0xa4, ++ 0x8f, 0x7a, 0xde, 0xb5, 0x18, 0x00, 0xce, 0xb8, 0x52, 0x7d, 0x7b, 0xc7, ++ 0x58, 0x7d, 0x7b, 0x57, 0xa5, 0xbe, 0xdc, 0x5d, 0xad, 0x2f, 0x4f, 0x9a, ++ 0xaa, 0x2f, 0xf7, 0xdc, 0x6d, 0x8a, 0xf2, 0xeb, 0xe8, 0xf3, 0x33, 0x34, ++ 0xbe, 0x02, 0x99, 0x60, 0x03, 0x3d, 0x15, 0xc3, 0x8b, 0x58, 0x8c, 0xed, ++ 0x42, 0x13, 0xee, 0x7b, 0x56, 0xbc, 0x16, 0xc3, 0x88, 0x3e, 0x4b, 0xd6, ++ 0xb7, 0xe5, 0xe3, 0xfa, 0x8c, 0xed, 0x25, 0x7c, 0xc5, 0x0c, 0x8f, 0x21, ++ 0xbf, 0xc0, 0x8a, 0x64, 0x13, 0xc9, 0xf5, 0x15, 0xc5, 0xdc, 0xaf, 0x7f, ++ 0x28, 0xdd, 0x74, 0x13, 0xe5, 0x61, 0x5e, 0xc8, 0x1f, 0x5b, 0xd3, 0x8e, ++ 0xd0, 0x7e, 0xe4, 0x12, 0xbc, 0xd8, 0x4e, 0x7f, 0x8d, 0xfd, 0xdb, 0x58, ++ 0xc4, 0x77, 0xb4, 0x33, 0x8a, 0x7d, 0x7f, 0x29, 0x1a, 0xcd, 0xf3, 0x9e, ++ 0x32, 0xf4, 0xe3, 0x31, 0x92, 0x87, 0xcf, 0x4b, 0x3e, 0xef, 0x41, 0xc4, ++ 0xf7, 0x5b, 0xdc, 0x5f, 0xb1, 0xb5, 0x91, 0xfb, 0xb1, 0x1f, 0x9d, 0xca, ++ 0xe3, 0x11, 0x69, 0x06, 0x65, 0xb8, 0xde, 0x79, 0xfd, 0x38, 0xcb, 0xea, ++ 0x6e, 0xdc, 0x97, 0xc5, 0xd9, 0x5a, 0xef, 0xc7, 0x38, 0xcb, 0x68, 0xbc, ++ 0x26, 0x89, 0xf3, 0x86, 0xad, 0x78, 0xcb, 0x16, 0xf9, 0x2e, 0xc0, 0xdf, ++ 0x67, 0x5e, 0xae, 0xdd, 0x77, 0xc2, 0xef, 0x65, 0x74, 0x7b, 0x81, 0xde, ++ 0x1f, 0x1b, 0x3f, 0x82, 0xf3, 0x8b, 0x53, 0xd8, 0x09, 0xf1, 0x9e, 0x84, ++ 0xa2, 0x96, 0x88, 0x7b, 0x13, 0x49, 0xc2, 0x6f, 0xf2, 0xf8, 0xd8, 0x99, ++ 0x56, 0xd4, 0x1f, 0xbb, 0xc5, 0x7b, 0x1e, 0x7d, 0xfd, 0xa9, 0x34, 0x28, ++ 0x0f, 0x3d, 0x45, 0xbf, 0x72, 0xb1, 0x24, 0xf6, 0x53, 0xbc, 0xfd, 0x7a, ++ 0xed, 0x9c, 0x47, 0xe4, 0x13, 0x9d, 0x3c, 0xbf, 0xfb, 0xb0, 0xeb, 0x26, ++ 0x5c, 0x5f, 0xeb, 0xa7, 0xba, 0x4a, 0x70, 0xbf, 0xbf, 0x42, 0xd8, 0x77, ++ 0xf1, 0x69, 0x26, 0xdf, 0x30, 0x98, 0xd7, 0xda, 0xa3, 0xa6, 0xa0, 0x34, ++ 0x12, 0xf2, 0x0a, 0x3b, 0x6c, 0x04, 0xbb, 0x60, 0xb7, 0x8b, 0x8f, 0x6b, ++ 0x7a, 0x3d, 0x26, 0x88, 0xf7, 0xf3, 0xd6, 0x7a, 0x4a, 0xe9, 0xbe, 0xdf, ++ 0x75, 0x62, 0xbc, 0x17, 0xca, 0xbd, 0xef, 0xe0, 0x7a, 0xef, 0x85, 0x75, ++ 0x84, 0x71, 0x5f, 0x6b, 0xdd, 0x5e, 0x6b, 0x89, 0x38, 0x37, 0x0d, 0x02, ++ 0x7c, 0x68, 0x5a, 0xe0, 0x3e, 0xe5, 0x60, 0x75, 0x09, 0xed, 0x77, 0xd7, ++ 0xfa, 0xbc, 0x56, 0xd4, 0x9b, 0x6b, 0xd3, 0xbc, 0x56, 0x8c, 0x97, 0xb6, ++ 0x26, 0x2b, 0x0e, 0x8c, 0x07, 0x75, 0x79, 0x14, 0x7a, 0x8f, 0x6d, 0xad, ++ 0x25, 0xe0, 0x40, 0xfb, 0xc7, 0x05, 0x8a, 0xd4, 0x84, 0xe7, 0x49, 0xe9, ++ 0x6d, 0x13, 0xe9, 0x9e, 0x1b, 0xe0, 0xda, 0x50, 0xc6, 0x8f, 0x1a, 0x98, ++ 0x88, 0x33, 0xc4, 0x38, 0xbf, 0x04, 0x81, 0xcf, 0xad, 0x9e, 0xd9, 0x0e, ++ 0x7c, 0x1f, 0xc1, 0x9d, 0xb3, 0xe7, 0x47, 0xe8, 0xa7, 0x4f, 0xc0, 0xfe, ++ 0xe2, 0x78, 0x3b, 0xc4, 0x93, 0x53, 0xe0, 0x69, 0x7c, 0xb1, 0x4a, 0x70, ++ 0xbb, 0x45, 0xff, 0x09, 0xb3, 0x5f, 0xa0, 0xfa, 0xf8, 0xd3, 0x52, 0x16, ++ 0xd1, 0x9f, 0xa0, 0xa3, 0x69, 0x22, 0x0b, 0xe1, 0x3e, 0x4d, 0x1b, 0x5f, ++ 0xeb, 0xa7, 0xaf, 0x7f, 0xe6, 0xa3, 0x73, 0x80, 0xe5, 0xbf, 0xe5, 0x78, ++ 0x5b, 0x9a, 0xce, 0xdf, 0xa1, 0x32, 0xdd, 0xc7, 0x68, 0x3f, 0xf7, 0x42, ++ 0x79, 0x60, 0x27, 0xf2, 0x59, 0x6f, 0x72, 0x0c, 0xc9, 0xbb, 0x14, 0x4f, ++ 0x4a, 0x05, 0xf2, 0x51, 0xca, 0xd1, 0x4d, 0x93, 0xf1, 0xfe, 0xc3, 0xf2, ++ 0xdf, 0xc6, 0xf0, 0x71, 0xe6, 0x70, 0x7e, 0x4f, 0x51, 0x98, 0xe5, 0x7a, ++ 0x9c, 0x77, 0x62, 0xc0, 0x81, 0x78, 0x8c, 0x5e, 0xaf, 0xc9, 0x87, 0xdb, ++ 0x6a, 0x90, 0x29, 0x35, 0xba, 0x44, 0xaf, 0xdf, 0x64, 0x85, 0xb5, 0xca, ++ 0xae, 0x4b, 0xd7, 0x71, 0xb2, 0xc7, 0x5d, 0x91, 0x37, 0x62, 0x80, 0xf5, ++ 0x1c, 0xb5, 0x5e, 0x92, 0x8f, 0xf6, 0x3e, 0x88, 0xfd, 0x47, 0xaf, 0xeb, ++ 0x2d, 0xb1, 0xc7, 0x47, 0x71, 0x3d, 0x12, 0xf1, 0x5d, 0xbe, 0x7c, 0xbe, ++ 0x45, 0xea, 0x59, 0x49, 0x72, 0x38, 0x59, 0xa1, 0x75, 0x96, 0x1e, 0x35, ++ 0x1e, 0xbe, 0x67, 0x87, 0x79, 0x89, 0x19, 0x54, 0x8c, 0x4f, 0x5e, 0x57, ++ 0xec, 0xd4, 0xde, 0xad, 0x52, 0x11, 0xaf, 0xbb, 0x4d, 0x8e, 0x71, 0x36, ++ 0x7e, 0xde, 0x4e, 0xfc, 0x55, 0xf1, 0xe2, 0xea, 0xbb, 0x7e, 0x07, 0xf9, ++ 0x0b, 0xf8, 0x7b, 0x73, 0xa0, 0x56, 0xea, 0xd1, 0xb6, 0x6e, 0xd2, 0x8b, ++ 0xfb, 0x03, 0xf9, 0x58, 0x7f, 0xb3, 0x12, 0x78, 0x0a, 0xfd, 0xe9, 0x9b, ++ 0x8f, 0x0d, 0xa1, 0x77, 0x22, 0xcd, 0xb1, 0xfc, 0x9d, 0x4f, 0x53, 0xd4, ++ 0xbb, 0x25, 0x9a, 0xbe, 0x58, 0x57, 0xcc, 0xf7, 0x31, 0x6a, 0xd4, 0xfb, ++ 0x96, 0xdf, 0x35, 0xed, 0x4c, 0x4b, 0x2b, 0x74, 0x00, 0xcf, 0xac, 0x7b, ++ 0xfe, 0xb7, 0x7f, 0xb0, 0x24, 0xfe, 0xe3, 0xed, 0x9f, 0xb4, 0xc3, 0x9d, ++ 0x4b, 0x6d, 0xb0, 0xa6, 0xb7, 0xec, 0xba, 0x65, 0x3d, 0xc6, 0x47, 0x5a, ++ 0xdf, 0xe4, 0xe5, 0x9b, 0x21, 0x1f, 0x54, 0x10, 0x2f, 0x0b, 0xc9, 0xef, ++ 0x72, 0x68, 0xe8, 0xbd, 0x34, 0xff, 0xe6, 0xf7, 0xcc, 0xe4, 0xcf, 0x2a, ++ 0x96, 0xbd, 0x1b, 0x30, 0xcf, 0x3e, 0xb0, 0x92, 0x3f, 0x6e, 0xe7, 0xde, ++ 0xb1, 0xd3, 0x70, 0x9d, 0x34, 0xdb, 0xcb, 0x54, 0xb4, 0xf7, 0x9f, 0x11, ++ 0xf2, 0x67, 0xbb, 0x58, 0xcf, 0xd1, 0xf3, 0x92, 0x4d, 0xde, 0x00, 0xda, ++ 0x03, 0xd1, 0xdf, 0xb7, 0x16, 0x8b, 0x73, 0x09, 0xe6, 0x3d, 0xd6, 0x01, ++ 0xf4, 0x2d, 0x7e, 0xda, 0x44, 0xef, 0x25, 0xf5, 0xc5, 0x47, 0x74, 0x58, ++ 0xf9, 0xef, 0x33, 0x13, 0x76, 0xe8, 0x6c, 0x21, 0xcf, 0x66, 0xef, 0x5b, ++ 0x35, 0xf4, 0x20, 0xc3, 0xf7, 0x30, 0x6a, 0xf6, 0x15, 0xc3, 0xb8, 0xb3, ++ 0xed, 0x95, 0x49, 0x08, 0x4f, 0xea, 0x45, 0x89, 0x05, 0x40, 0xfe, 0x6d, ++ 0x16, 0xe7, 0xb3, 0xa9, 0xee, 0x17, 0x24, 0x94, 0x33, 0x69, 0xee, 0xc3, ++ 0xe5, 0x28, 0xef, 0xd3, 0x59, 0xf7, 0x52, 0x94, 0x1b, 0xe9, 0x0d, 0xfa, ++ 0xf3, 0xb2, 0xd4, 0x8b, 0x0a, 0xb5, 0xdb, 0x9d, 0xe2, 0xa3, 0xfe, 0xf0, ++ 0x07, 0xef, 0x39, 0x9b, 0x98, 0x58, 0xd3, 0xae, 0x00, 0x5b, 0x8a, 0x72, ++ 0x3e, 0x85, 0x9f, 0xb7, 0x98, 0x1c, 0x31, 0xfc, 0x7e, 0xba, 0xa7, 0x52, ++ 0x77, 0x9f, 0x59, 0x7b, 0x47, 0xf6, 0x55, 0x81, 0x0f, 0x13, 0xe0, 0xd4, ++ 0x58, 0x02, 0xa9, 0x4d, 0xe1, 0xf7, 0xe7, 0xa3, 0xea, 0x1f, 0x15, 0xf8, ++ 0x92, 0xd1, 0x6f, 0x8f, 0xce, 0x7f, 0xc7, 0x91, 0x63, 0xd4, 0xaf, 0x4d, ++ 0xf9, 0x2c, 0xf2, 0x5d, 0x16, 0xdc, 0x97, 0x92, 0xd0, 0x5a, 0xc8, 0xcf, ++ 0x3f, 0x01, 0x4f, 0x41, 0xdc, 0x87, 0xb2, 0x78, 0x17, 0x3f, 0x2f, 0xf5, ++ 0xf9, 0xd4, 0xc8, 0xb8, 0xd6, 0x54, 0x90, 0xbb, 0xe6, 0x12, 0x8c, 0x3f, ++ 0x09, 0x52, 0x9c, 0x48, 0xb2, 0xb8, 0x9f, 0xa0, 0xc5, 0xf5, 0x00, 0x06, ++ 0x9c, 0xe8, 0x77, 0xd3, 0xe2, 0x3e, 0xb6, 0x31, 0xbd, 0x3d, 0xa2, 0xa5, ++ 0xda, 0xfe, 0x3c, 0xa7, 0x51, 0xa6, 0x7d, 0x47, 0xe1, 0xab, 0x56, 0xbe, ++ 0x3f, 0x68, 0x65, 0x21, 0xab, 0x84, 0xfe, 0x30, 0x46, 0x72, 0x27, 0x67, ++ 0x35, 0x3f, 0x9f, 0xd6, 0xfc, 0x62, 0xd5, 0xb8, 0x98, 0x68, 0x3d, 0x38, ++ 0x0c, 0x3c, 0xfe, 0xa7, 0x93, 0xe2, 0x99, 0x35, 0xbb, 0x0a, 0xe8, 0x4b, ++ 0x72, 0x67, 0x65, 0xd4, 0x7b, 0x4f, 0xda, 0x7b, 0xd5, 0x5f, 0x88, 0xf5, ++ 0xb4, 0xb9, 0xc9, 0x41, 0x74, 0xd4, 0xca, 0xd3, 0x02, 0xd1, 0x74, 0xd4, ++ 0x9f, 0x73, 0x6a, 0xf5, 0x52, 0x2f, 0xa6, 0xb2, 0x40, 0x42, 0x64, 0xbf, ++ 0x21, 0xea, 0x37, 0xb5, 0x71, 0x0f, 0xf1, 0x43, 0xea, 0xc5, 0xa1, 0x54, ++ 0xbe, 0xb9, 0x49, 0xbd, 0x4c, 0xff, 0x59, 0x83, 0xf4, 0x9f, 0x4c, 0xfc, ++ 0x32, 0x78, 0xff, 0x69, 0x54, 0xbe, 0x25, 0xfc, 0xae, 0xf3, 0x16, 0x40, ++ 0xc5, 0x93, 0xbd, 0x7b, 0x9c, 0x7e, 0x15, 0xe5, 0x4a, 0x78, 0xa2, 0x77, ++ 0x00, 0x3c, 0xa7, 0x3e, 0xa0, 0x97, 0x93, 0x23, 0xf7, 0xeb, 0xe5, 0xae, ++ 0x86, 0x97, 0xcd, 0x8a, 0xcf, 0x5d, 0x03, 0xf8, 0xde, 0xfc, 0x80, 0xc1, ++ 0xdb, 0xc1, 0x30, 0xfe, 0x54, 0x5f, 0xaf, 0x2a, 0xf3, 0xf7, 0x4e, 0xfe, ++ 0x7e, 0xb4, 0x56, 0x3f, 0xec, 0x9e, 0x82, 0xf5, 0x17, 0xf2, 0xfa, 0xdf, ++ 0x3b, 0xad, 0xaf, 0xef, 0x2f, 0xdf, 0x1b, 0x5d, 0x9f, 0xe0, 0xbb, 0xe1, ++ 0x62, 0x94, 0x7d, 0x18, 0x45, 0x9f, 0x68, 0x78, 0x01, 0xae, 0xc4, 0xdb, ++ 0x22, 0xe0, 0x1a, 0x67, 0xd1, 0xff, 0xfe, 0xb8, 0x69, 0x33, 0x2e, 0x81, ++ 0x2b, 0xf1, 0x8e, 0x08, 0xb8, 0x6e, 0xf4, 0xe8, 0xeb, 0x07, 0x96, 0x0e, ++ 0x0c, 0xd7, 0x4d, 0x05, 0xe6, 0x6f, 0x85, 0x4b, 0xab, 0x77, 0xeb, 0x98, ++ 0x2b, 0xab, 0x17, 0x3d, 0x8f, 0x29, 0x55, 0xe6, 0x41, 0xf0, 0xce, 0xeb, ++ 0xdf, 0x31, 0xed, 0xca, 0xfa, 0xfd, 0xfe, 0xfc, 0x6f, 0xaf, 0x77, 0x4f, ++ 0x63, 0xf4, 0x38, 0x41, 0xed, 0xfc, 0x48, 0x67, 0x8f, 0x24, 0x34, 0x72, ++ 0xfb, 0xdd, 0xc1, 0x7a, 0x29, 0xce, 0x44, 0xb3, 0x3b, 0x5c, 0xcc, 0x21, ++ 0xe2, 0xbf, 0xb8, 0xdd, 0xf0, 0x0e, 0xfe, 0x17, 0xf6, 0xb3, 0x4b, 0x46, ++ 0xf8, 0x6f, 0x1d, 0x31, 0x1a, 0xf1, 0xef, 0xbb, 0x7b, 0x9d, 0x8a, 0xf7, ++ 0x54, 0xb8, 0xbe, 0x62, 0xd5, 0xfc, 0x7d, 0x48, 0xd8, 0x97, 0x14, 0x47, ++ 0xbe, 0x7f, 0xdd, 0x0f, 0xd7, 0x32, 0xea, 0xf7, 0x65, 0x8c, 0x77, 0x22, ++ 0x3d, 0x6b, 0xf1, 0xa2, 0xdd, 0x59, 0x98, 0xca, 0x2c, 0xc9, 0x68, 0x7c, ++ 0x79, 0x42, 0x59, 0xf8, 0x0e, 0xd8, 0xf4, 0x11, 0x9a, 0xbc, 0xe6, 0xf1, ++ 0xe5, 0xc3, 0x05, 0xee, 0x9e, 0x4f, 0xe9, 0x5c, 0xe4, 0xa4, 0x75, 0x1e, ++ 0x72, 0x21, 0x3c, 0xdf, 0x75, 0xdc, 0x7b, 0x47, 0xf8, 0xe6, 0x8c, 0x48, ++ 0xec, 0xaf, 0x3f, 0x98, 0xbf, 0x45, 0xc3, 0x93, 0xc9, 0xd4, 0x49, 0xbf, ++ 0x3f, 0xa1, 0xb7, 0xd6, 0xe6, 0x45, 0xfd, 0xf0, 0x2e, 0x16, 0x41, 0xbb, ++ 0xa7, 0x6f, 0x37, 0x87, 0xd1, 0xae, 0xd6, 0xe2, 0x50, 0x8f, 0xc5, 0x4e, ++ 0x3f, 0x92, 0xa8, 0xd2, 0xfb, 0x03, 0x8b, 0xb1, 0xff, 0x69, 0x77, 0x4c, ++ 0x5c, 0x8e, 0x79, 0xe9, 0x50, 0x82, 0xba, 0xc8, 0x86, 0xf7, 0x97, 0x7a, ++ 0xb4, 0x7b, 0x9e, 0x3f, 0x42, 0xbc, 0x2d, 0xb4, 0x04, 0x32, 0x92, 0x0c, ++ 0x74, 0xbe, 0x9a, 0x8f, 0xfb, 0x61, 0xe6, 0x4f, 0x10, 0x97, 0x82, 0xfd, ++ 0xc5, 0x03, 0xc5, 0x69, 0x68, 0xf0, 0x54, 0x4a, 0x1c, 0xff, 0x31, 0x69, ++ 0x81, 0x20, 0xf6, 0x53, 0x69, 0xe8, 0xde, 0xea, 0xc7, 0x6f, 0x4a, 0x37, ++ 0xdf, 0x67, 0x3b, 0x12, 0xf9, 0xfb, 0x47, 0xf8, 0xce, 0xcd, 0x00, 0xeb, ++ 0x5f, 0xc3, 0x43, 0x85, 0xe8, 0xe7, 0xa0, 0xd1, 0xfb, 0x55, 0x2f, 0xcc, ++ 0xef, 0xe0, 0x9a, 0x78, 0xba, 0x0f, 0x3f, 0x3b, 0xe1, 0x8e, 0xe9, 0xf8, ++ 0x36, 0xca, 0x1c, 0x83, 0x3f, 0x09, 0x0f, 0xd0, 0x23, 0xe0, 0x7e, 0x8c, ++ 0xe0, 0xb6, 0xcd, 0xc8, 0x48, 0x46, 0xb8, 0x8d, 0x02, 0x6e, 0x4b, 0xa2, ++ 0xc0, 0xbb, 0x2f, 0xe7, 0xdb, 0xe0, 0xee, 0x8b, 0x97, 0xf9, 0xa9, 0xa4, ++ 0xbd, 0x53, 0x4e, 0xf9, 0x17, 0x83, 0x4e, 0xba, 0x77, 0x6e, 0x36, 0x7c, ++ 0xf1, 0xee, 0x14, 0xd4, 0xc3, 0xc5, 0x06, 0x2f, 0xda, 0x9d, 0x9b, 0xc1, ++ 0xbe, 0xc0, 0x77, 0xd6, 0xfe, 0x8f, 0xc0, 0xf7, 0x16, 0x3c, 0x63, 0x71, ++ 0xd1, 0x77, 0x7a, 0x7f, 0xcd, 0x23, 0xee, 0x5f, 0x79, 0xd6, 0x1b, 0xe8, ++ 0xbd, 0x15, 0x7f, 0xc5, 0x4b, 0x44, 0xa7, 0xa7, 0xeb, 0x6c, 0x5e, 0xdc, ++ 0xb7, 0xcf, 0x60, 0x2a, 0xbd, 0x6f, 0x3a, 0x4b, 0xdc, 0x47, 0xf9, 0x63, ++ 0xf9, 0x7f, 0xbf, 0xd2, 0x03, 0xf3, 0xdb, 0x35, 0x22, 0xf0, 0x2c, 0xd2, ++ 0xe7, 0x9e, 0x04, 0xc3, 0xd0, 0x77, 0x09, 0x8e, 0x40, 0x21, 0xbd, 0x67, ++ 0x35, 0xf6, 0xca, 0xe2, 0x67, 0xb5, 0x73, 0xf8, 0xc9, 0xc2, 0x3e, 0x98, ++ 0x23, 0xf0, 0x38, 0x85, 0xf9, 0x28, 0x6e, 0xf7, 0x36, 0x16, 0x30, 0xe2, ++ 0xb8, 0x6f, 0x9f, 0x35, 0xf9, 0xd0, 0x2e, 0x7d, 0x5b, 0xc4, 0x23, 0xdf, ++ 0xc1, 0x82, 0xf4, 0xfd, 0x4e, 0x16, 0xa2, 0xf4, 0xfb, 0x2c, 0x4c, 0xf5, ++ 0x7f, 0x80, 0x2f, 0xb7, 0x42, 0xfe, 0xad, 0xd8, 0x11, 0xe9, 0x8d, 0x00, ++ 0x5f, 0xcd, 0x13, 0xf9, 0xb9, 0xb8, 0x1e, 0x23, 0xf0, 0xfe, 0x8a, 0xe0, ++ 0x97, 0x7b, 0xdc, 0x9c, 0x5f, 0x3e, 0x1e, 0x82, 0x78, 0x6f, 0x4f, 0xbc, ++ 0x22, 0xfe, 0xad, 0x91, 0x38, 0xfe, 0x96, 0x8c, 0x08, 0x1c, 0xc1, 0x79, ++ 0x8f, 0xb3, 0xa8, 0x6e, 0x2f, 0xc2, 0xe4, 0x18, 0x97, 0x86, 0x7e, 0x94, ++ 0xbe, 0xf5, 0x53, 0x99, 0xc8, 0xf9, 0x4f, 0x71, 0xe4, 0x7e, 0xdb, 0xfa, ++ 0xe9, 0x3e, 0xaf, 0xdd, 0xbb, 0xf7, 0xd9, 0x92, 0xcb, 0xf0, 0xdd, 0x2d, ++ 0xfe, 0x73, 0xa3, 0xef, 0x3e, 0x8a, 0x17, 0xc7, 0xb8, 0x7c, 0x37, 0xd0, ++ 0xa1, 0x5b, 0xe5, 0xf7, 0x0d, 0x41, 0x6c, 0xd8, 0x83, 0x40, 0xa7, 0xaa, ++ 0x72, 0x99, 0xe2, 0xf6, 0x56, 0x7c, 0x2e, 0xee, 0x49, 0xa3, 0x13, 0x03, ++ 0xea, 0xfd, 0x66, 0x94, 0x4c, 0xef, 0x84, 0x69, 0xe7, 0x92, 0xb7, 0x88, ++ 0xfe, 0x6e, 0x49, 0xe3, 0xf7, 0x06, 0xab, 0xcb, 0xa7, 0xb4, 0xc4, 0x03, ++ 0x5e, 0x26, 0x7c, 0xd5, 0x53, 0x1a, 0x86, 0xb4, 0x2a, 0x4d, 0x7f, 0x8f, ++ 0x70, 0xa2, 0xbb, 0x83, 0x9e, 0x0e, 0x9f, 0x94, 0xa3, 0xff, 0x7e, 0x13, ++ 0x6b, 0xa3, 0x03, 0xe2, 0xea, 0x22, 0x7d, 0x9c, 0xf9, 0x2d, 0x51, 0xfe, ++ 0xcf, 0x83, 0x38, 0x36, 0xf0, 0xd5, 0x27, 0x23, 0x44, 0xbc, 0xe4, 0x70, ++ 0x36, 0x3c, 0xf2, 0xbe, 0xc1, 0xad, 0xa2, 0xed, 0xf9, 0xea, 0x2f, 0x4c, ++ 0xe7, 0x60, 0xfc, 0xf4, 0x91, 0x81, 0x5e, 0xc4, 0xe3, 0xa2, 0x9b, 0xff, ++ 0x38, 0x9d, 0xf6, 0x75, 0x0a, 0x7b, 0xf3, 0x2a, 0x98, 0x5f, 0xdd, 0xbf, ++ 0xcb, 0x64, 0x4f, 0x7e, 0xd8, 0x04, 0x33, 0xc9, 0xc7, 0xb8, 0x6a, 0x0b, ++ 0xf3, 0x81, 0xc1, 0x7f, 0x0a, 0xec, 0x0a, 0xcc, 0x9f, 0x6e, 0xf2, 0x50, ++ 0xfa, 0x29, 0xd8, 0x01, 0x98, 0x7e, 0xd6, 0x54, 0x40, 0xe5, 0x67, 0x9b, ++ 0xbc, 0x94, 0x1f, 0x3f, 0xd2, 0xff, 0x17, 0xa4, 0xf3, 0xcc, 0xd6, 0xcf, ++ 0x15, 0xd4, 0x47, 0x2b, 0xb4, 0x78, 0x6c, 0x01, 0x87, 0x16, 0x57, 0xb8, ++ 0x42, 0xc4, 0x4f, 0x2c, 0xb6, 0x2f, 0x3a, 0x86, 0xf1, 0x0b, 0x8b, 0x29, ++ 0xe0, 0x9d, 0xc1, 0x62, 0x6f, 0x9b, 0x80, 0xe0, 0xdf, 0xbb, 0xbf, 0xf3, ++ 0x08, 0xa6, 0xf0, 0x5d, 0xc6, 0x7d, 0xc8, 0xe2, 0x35, 0x12, 0xf9, 0x75, ++ 0xe6, 0x1c, 0x0e, 0x2c, 0x47, 0x32, 0xcf, 0x7b, 0xa3, 0xe7, 0x16, 0x14, ++ 0x13, 0xa3, 0x7f, 0x7f, 0x32, 0x09, 0xf7, 0xe9, 0xb5, 0x68, 0xc7, 0x02, ++ 0xeb, 0x2f, 0x76, 0xf9, 0x2c, 0x23, 0x61, 0x7c, 0x5f, 0xd7, 0x89, 0x23, ++ 0x09, 0x50, 0xff, 0xe3, 0xa6, 0x31, 0x04, 0xdf, 0x27, 0x4d, 0x3e, 0x82, ++ 0xef, 0x4f, 0x4d, 0x55, 0x94, 0x4e, 0x1f, 0xe9, 0x8f, 0xa3, 0x7a, 0xec, ++ 0x73, 0x7a, 0x6f, 0xe9, 0xe6, 0x5d, 0x27, 0x14, 0xfc, 0x3d, 0x68, 0xe3, ++ 0x7d, 0x12, 0xf9, 0xef, 0xaf, 0xf7, 0xb1, 0x50, 0x08, 0xf0, 0xba, 0xc1, ++ 0xc8, 0xe5, 0xfb, 0x06, 0x90, 0xef, 0xb8, 0x3e, 0xcb, 0x8b, 0x27, 0x6f, ++ 0x79, 0x00, 0xe1, 0x1b, 0x11, 0xf0, 0x8c, 0x04, 0xfc, 0xdd, 0xe6, 0x9a, ++ 0x35, 0x3e, 0x01, 0xbe, 0xdf, 0x32, 0x66, 0x86, 0x82, 0xf5, 0xee, 0xf8, ++ 0x0a, 0x74, 0x50, 0x66, 0x3f, 0x1f, 0x5e, 0x8e, 0xaf, 0xcf, 0x1c, 0x90, ++ 0x08, 0x3f, 0x67, 0x0e, 0x38, 0x09, 0x1f, 0x1a, 0x9e, 0x6a, 0x05, 0xbd, ++ 0xce, 0xec, 0x2b, 0xbc, 0x15, 0xdf, 0x1f, 0x3b, 0x70, 0x54, 0xa6, 0xf8, ++ 0xd3, 0xf3, 0x17, 0x0d, 0x04, 0xdf, 0xf9, 0x63, 0x31, 0x14, 0x9f, 0x1a, ++ 0xdd, 0x7e, 0xd1, 0xde, 0xec, 0x21, 0x68, 0x8f, 0xfd, 0x09, 0xe8, 0x87, ++ 0x07, 0x1f, 0x8b, 0xf6, 0x16, 0x92, 0x3f, 0xfe, 0x4f, 0xcf, 0xff, 0x48, ++ 0x8d, 0x8c, 0xfb, 0xfd, 0x93, 0xab, 0xf3, 0xc2, 0xfb, 0x28, 0xa7, 0xfe, ++ 0x8b, 0xcb, 0x29, 0xb0, 0x37, 0x4f, 0x6d, 0x42, 0x39, 0x96, 0x96, 0x42, ++ 0xef, 0xe8, 0xf4, 0xc5, 0xab, 0xb1, 0x86, 0x58, 0xd4, 0x63, 0x75, 0x26, ++ 0xb1, 0xbe, 0x40, 0xce, 0x60, 0xfe, 0x4f, 0x31, 0x7c, 0x1f, 0x5c, 0xf6, ++ 0x8b, 0xd4, 0x0a, 0x5c, 0x2f, 0x38, 0x1e, 0xc6, 0x7b, 0x99, 0xc5, 0xef, ++ 0x9b, 0x80, 0xfe, 0x8e, 0xff, 0x18, 0xfa, 0xdb, 0xb7, 0xc9, 0x43, 0xef, ++ 0xee, 0x7c, 0xb6, 0xfb, 0x89, 0x2c, 0x1c, 0x7f, 0x67, 0xe7, 0x9c, 0xf7, ++ 0x37, 0x41, 0xff, 0x67, 0x42, 0xfc, 0xf7, 0x4d, 0x9c, 0x61, 0x9d, 0x67, ++ 0x7f, 0x85, 0xf2, 0x74, 0xbb, 0x8d, 0xfc, 0x96, 0x2b, 0x24, 0x80, 0x0b, ++ 0xf5, 0xe9, 0x8e, 0x14, 0xca, 0x17, 0x48, 0x4a, 0x4c, 0x23, 0x39, 0x33, ++ 0x42, 0xb4, 0x6e, 0x0b, 0x24, 0x55, 0xc1, 0x77, 0xc8, 0x16, 0xbe, 0xb0, ++ 0x31, 0x05, 0xf9, 0x0b, 0xef, 0x8b, 0x63, 0x5c, 0xfd, 0xcb, 0x6b, 0x62, ++ 0x49, 0x4e, 0xbd, 0x6c, 0xf4, 0x1e, 0x6f, 0xc4, 0xfe, 0xb6, 0xf0, 0xfe, ++ 0x9e, 0x7d, 0xec, 0xa1, 0x0f, 0xf7, 0x63, 0xfa, 0x68, 0x6d, 0xc9, 0x43, ++ 0x90, 0xde, 0x3e, 0xd2, 0x45, 0x78, 0x9f, 0xfd, 0x2f, 0x0b, 0x86, 0x63, ++ 0x7b, 0xd0, 0xd7, 0xf4, 0x7b, 0x95, 0x9f, 0x7b, 0x51, 0x0a, 0xa3, 0x1f, ++ 0xa4, 0xb8, 0xfd, 0xe0, 0x32, 0x8c, 0x63, 0x1a, 0xb9, 0xf9, 0x84, 0x21, ++ 0x05, 0xd2, 0x51, 0xdb, 0xa5, 0x66, 0x4c, 0x0b, 0xd3, 0x27, 0x1d, 0x45, ++ 0xff, 0xc1, 0xdd, 0x23, 0x55, 0x82, 0xe3, 0xaa, 0x5d, 0x99, 0x32, 0xc6, ++ 0xa6, 0x0f, 0x4f, 0x09, 0xbd, 0x7f, 0x03, 0x8f, 0x1b, 0xd1, 0xe9, 0xf7, ++ 0xa2, 0xf6, 0xcf, 0x2b, 0x70, 0x9b, 0xa9, 0xe9, 0xf9, 0xe1, 0x52, 0xe7, ++ 0xa7, 0x1d, 0xb8, 0x2f, 0x1e, 0x7a, 0xac, 0x84, 0xdf, 0xef, 0xe2, 0xef, ++ 0x44, 0xef, 0xed, 0x9a, 0xf2, 0xce, 0xf7, 0x19, 0xce, 0x03, 0x2c, 0x08, ++ 0x84, 0x7b, 0x86, 0x89, 0xe2, 0x2e, 0x58, 0x28, 0xd8, 0x81, 0x74, 0x3e, ++ 0x13, 0x28, 0xf0, 0xd2, 0xfb, 0x26, 0xfe, 0xe0, 0x46, 0xe4, 0xaf, 0x33, ++ 0x81, 0x24, 0x7a, 0x4f, 0x7a, 0x9f, 0x21, 0x18, 0x87, 0xbf, 0x2f, 0x29, ++ 0x78, 0x9c, 0xff, 0x5e, 0x9f, 0x17, 0xb7, 0xbf, 0x15, 0x87, 0xf1, 0x14, ++ 0xf1, 0x7b, 0x8c, 0x0c, 0x7f, 0xff, 0x74, 0xed, 0xa8, 0xde, 0x09, 0x14, ++ 0x1f, 0x92, 0xae, 0xd2, 0x7e, 0x3c, 0x7d, 0xeb, 0x8d, 0x55, 0x88, 0x9f, ++ 0xba, 0x3d, 0x7b, 0x3b, 0xa8, 0x9f, 0x85, 0x16, 0x2f, 0xfa, 0x63, 0xe7, ++ 0xef, 0xfd, 0x82, 0xee, 0xbd, 0xb0, 0x89, 0x3c, 0x0e, 0xf5, 0xcc, 0x1e, ++ 0x9e, 0x7f, 0xa4, 0xd2, 0x47, 0xef, 0x8a, 0xcf, 0xef, 0xf8, 0x33, 0xcf, ++ 0x77, 0xfb, 0x29, 0xef, 0x97, 0x83, 0x99, 0x74, 0x7f, 0x62, 0x16, 0xb7, ++ 0x77, 0x9e, 0x10, 0xfa, 0x8c, 0xf5, 0x8c, 0x60, 0x91, 0xef, 0x12, 0x69, ++ 0xf4, 0x7a, 0x04, 0x8a, 0xb1, 0x7c, 0x43, 0x66, 0x30, 0x19, 0xdf, 0x9f, ++ 0xd2, 0xf4, 0x20, 0xe8, 0xaf, 0x26, 0x5c, 0x7f, 0xe8, 0x76, 0xa4, 0xf6, ++ 0x8e, 0x29, 0xfc, 0xbe, 0xfa, 0x15, 0xea, 0x2f, 0x93, 0xd0, 0x47, 0x5a, ++ 0x7f, 0x4f, 0x98, 0xf8, 0x7b, 0xb9, 0x28, 0x46, 0xf0, 0xf7, 0xcf, 0x6c, ++ 0x36, 0x71, 0xbd, 0xbb, 0x03, 0xe4, 0x0d, 0xf2, 0x8b, 0xa6, 0x77, 0x61, ++ 0xdc, 0xc7, 0x71, 0x5c, 0x93, 0xb8, 0x2f, 0x93, 0x0a, 0x4a, 0x76, 0x14, ++ 0xcc, 0x27, 0xf5, 0x09, 0x33, 0x97, 0xdf, 0x57, 0x38, 0x7e, 0xf4, 0xbd, ++ 0x52, 0xcd, 0x0e, 0x99, 0x96, 0xd0, 0x4c, 0xf7, 0x47, 0x3f, 0x4b, 0x0d, ++ 0x3c, 0x89, 0xf2, 0x41, 0xbb, 0x47, 0xca, 0x14, 0x2f, 0xbd, 0xef, 0xf7, ++ 0x41, 0xaa, 0x6f, 0xf3, 0xc8, 0xd1, 0xfc, 0xdd, 0x0c, 0x9c, 0x03, 0xe8, ++ 0xc5, 0x10, 0xd6, 0xab, 0x93, 0xc1, 0x8e, 0xca, 0x8e, 0xb0, 0xa3, 0x2c, ++ 0x57, 0xa6, 0x17, 0xff, 0x96, 0xea, 0x7b, 0x06, 0xdb, 0x5f, 0x69, 0xfd, ++ 0x68, 0x39, 0x3c, 0x56, 0xc0, 0xbf, 0xd8, 0x6e, 0x20, 0x3c, 0x2c, 0x5e, ++ 0x67, 0x26, 0x7f, 0xd8, 0x58, 0x71, 0xbf, 0x74, 0xec, 0xf9, 0x63, 0xb1, ++ 0x28, 0x4f, 0x16, 0xff, 0xb9, 0x84, 0xe4, 0x4a, 0x33, 0x63, 0x03, 0xe2, ++ 0xe7, 0x95, 0x26, 0x1e, 0xe7, 0xfd, 0x6b, 0xf4, 0x23, 0x40, 0x7a, 0xdd, ++ 0x97, 0x3d, 0x32, 0xed, 0x47, 0x0e, 0x1b, 0x16, 0x1e, 0x01, 0xfd, 0x4a, ++ 0x20, 0x90, 0xff, 0xb0, 0xb7, 0x39, 0xbe, 0x94, 0xf2, 0x3e, 0x24, 0xf7, ++ 0xf5, 0x5f, 0x1a, 0x06, 0xdc, 0x2f, 0x6a, 0x29, 0xd0, 0xeb, 0x35, 0x9c, ++ 0x9f, 0xef, 0x2b, 0xbd, 0xff, 0xe1, 0x86, 0xaf, 0x1c, 0xf4, 0xfb, 0x29, ++ 0x99, 0xcd, 0x75, 0x45, 0xf3, 0xee, 0x7f, 0x67, 0x47, 0x3f, 0x7f, 0xed, ++ 0xbd, 0x2b, 0x98, 0x5f, 0x0f, 0xea, 0xf7, 0xc5, 0x9f, 0x1b, 0x88, 0x7f, ++ 0x17, 0x7f, 0x5e, 0x42, 0x72, 0xb3, 0xeb, 0x0a, 0xe7, 0x6b, 0x75, 0xfb, ++ 0xfe, 0x03, 0xe9, 0x1a, 0x3d, 0x1f, 0x80, 0xff, 0xbf, 0x06, 0x82, 0xbf, ++ 0x8f, 0xdf, 0x7b, 0xaf, 0x0c, 0xfe, 0x07, 0x25, 0x46, 0xbf, 0xd7, 0x07, ++ 0xd4, 0x15, 0xf9, 0xb7, 0xbb, 0xc4, 0x7b, 0x02, 0x5d, 0x0b, 0x8a, 0xe8, ++ 0x5d, 0x8b, 0x7d, 0xf8, 0x2e, 0x08, 0xca, 0xcd, 0xc9, 0xfc, 0xde, 0x51, ++ 0x17, 0xf6, 0x0d, 0xf5, 0xbb, 0x12, 0x1d, 0xf4, 0xee, 0xc6, 0xcb, 0x46, ++ 0x9e, 0x0f, 0xde, 0x29, 0xda, 0x8b, 0x77, 0x1a, 0xbb, 0xee, 0x4c, 0xe1, ++ 0xef, 0x66, 0x98, 0x1b, 0x7e, 0x57, 0x8c, 0xfd, 0x37, 0xf3, 0xf8, 0xb8, ++ 0x2e, 0x63, 0x88, 0x7e, 0x1f, 0x6c, 0xd7, 0x4f, 0x13, 0xe8, 0x3e, 0x81, ++ 0x16, 0x3f, 0x7e, 0x4c, 0xc8, 0xed, 0x66, 0x29, 0xfc, 0x7d, 0x7a, 0x0f, ++ 0xe4, 0x73, 0x13, 0xe3, 0xef, 0xea, 0x85, 0x53, 0xeb, 0x4b, 0xf1, 0x1d, ++ 0x90, 0xe1, 0x54, 0xff, 0x98, 0xf8, 0xfd, 0xc9, 0x57, 0xfa, 0xae, 0xde, ++ 0x5d, 0x82, 0x3e, 0xed, 0x1d, 0xa1, 0x1d, 0xeb, 0x01, 0x8e, 0xff, 0x07, ++ 0x35, 0x8a, 0x15, 0xa9, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xed, 0x7d, ++ 0x0b, 0x78, 0x94, 0xd5, 0xb5, 0xe8, 0xfe, 0xe7, 0x9f, 0x99, 0xcc, 0x24, ++ 0x93, 0x64, 0x12, 0x42, 0x1e, 0x84, 0x84, 0xc9, 0x83, 0x10, 0x24, 0xe0, ++ 0xe4, 0x05, 0x01, 0x42, 0x18, 0x20, 0xa1, 0xa8, 0x68, 0x03, 0x08, 0x02, ++ 0xc6, 0x38, 0x21, 0x21, 0x84, 0xbc, 0x08, 0x48, 0xcf, 0x49, 0x2d, 0x35, ++ 0x83, 0x09, 0x0f, 0x15, 0x6b, 0x38, 0x46, 0x8d, 0x8a, 0x3a, 0x58, 0xa0, ++ 0xa0, 0x60, 0x07, 0x05, 0x44, 0x0d, 0x9e, 0x01, 0xd4, 0x52, 0x1f, 0x35, ++ 0xd5, 0xea, 0xb1, 0xda, 0x62, 0x02, 0x88, 0x0f, 0x1e, 0x09, 0x41, 0xfd, ++ 0xb0, 0xd7, 0xdb, 0xde, 0xb5, 0xd6, 0xde, 0x3b, 0x33, 0xff, 0x24, 0x51, ++ 0xdb, 0x73, 0xfd, 0xee, 0x77, 0xbe, 0xef, 0xa6, 0x5f, 0xdd, 0xec, 0x7f, ++ 0xbf, 0xd7, 0x5a, 0x7b, 0xed, 0xb5, 0xd7, 0x63, 0x4f, 0xdb, 0xbc, 0x74, ++ 0xbb, 0xcb, 0xc6, 0xd8, 0x08, 0x95, 0x35, 0x78, 0x32, 0x18, 0x6b, 0x4b, ++ 0x72, 0xc4, 0x45, 0x42, 0xfa, 0xa1, 0x81, 0x2d, 0xc6, 0xfc, 0x9f, 0x19, ++ 0xfc, 0xc5, 0x31, 0xf6, 0x98, 0x81, 0xb9, 0xcc, 0x91, 0x8c, 0x5d, 0x65, ++ 0x5f, 0x16, 0x6d, 0x1f, 0xce, 0x98, 0xf3, 0x86, 0x10, 0x3d, 0x0b, 0xc7, ++ 0x42, 0x47, 0x9c, 0x92, 0xc3, 0xd8, 0x23, 0x15, 0xa3, 0xd9, 0xdd, 0x0a, ++ 0x64, 0x5b, 0x1f, 0x62, 0x2c, 0x9a, 0xb1, 0xc5, 0x26, 0x46, 0x7f, 0x4b, ++ 0x83, 0xc3, 0x26, 0xb0, 0xab, 0xe9, 0x9f, 0x0e, 0xd3, 0x44, 0xc6, 0x16, ++ 0xf2, 0xcf, 0x6c, 0xc9, 0xf2, 0x9d, 0x66, 0xa7, 0x05, 0xf2, 0x55, 0xe6, ++ 0x6e, 0x65, 0x02, 0x63, 0x1f, 0x54, 0xdd, 0x19, 0x6a, 0x83, 0xf1, 0x16, ++ 0x3a, 0x55, 0x6f, 0x50, 0x18, 0x54, 0xb8, 0xb1, 0xc8, 0xd1, 0x95, 0xce, ++ 0xeb, 0xfe, 0x23, 0x19, 0xc7, 0x75, 0xd0, 0xb8, 0xac, 0x62, 0x18, 0x63, ++ 0x93, 0x21, 0xd5, 0x7b, 0xcb, 0x19, 0x8c, 0xfb, 0x72, 0xaf, 0x89, 0xdd, ++ 0x9d, 0x04, 0x75, 0xf0, 0x6f, 0xba, 0x2f, 0x65, 0xcc, 0xc5, 0x18, 0xd4, ++ 0xff, 0xcc, 0xcc, 0xc7, 0xaf, 0xf3, 0xcc, 0xb8, 0xff, 0x8c, 0xec, 0x0f, ++ 0xfe, 0x5f, 0x65, 0xb4, 0x6c, 0x56, 0xc2, 0xb1, 0x3c, 0xd1, 0xcd, 0x60, ++ 0xfc, 0xfd, 0x23, 0x9c, 0xa3, 0xed, 0xb9, 0x8c, 0xad, 0x3a, 0x7c, 0xcd, ++ 0xfd, 0x67, 0x4c, 0xbe, 0x7a, 0x15, 0xcb, 0x8b, 0xd2, 0x98, 0xce, 0x37, ++ 0x6e, 0xe0, 0x38, 0x81, 0xe3, 0x35, 0xbb, 0x75, 0x2e, 0x03, 0x8c, 0x37, ++ 0xca, 0xb4, 0x20, 0xe3, 0x0c, 0x34, 0x69, 0x86, 0x02, 0x1d, 0xcc, 0xd3, ++ 0xe5, 0x31, 0xbb, 0x77, 0x26, 0xe1, 0xbc, 0x7b, 0xff, 0xbc, 0x02, 0xf2, ++ 0xcd, 0x8b, 0xaf, 0xb2, 0xdf, 0x0d, 0xd9, 0x39, 0xf3, 0x4d, 0x0e, 0x25, ++ 0x8a, 0xb1, 0xbe, 0x03, 0x41, 0xee, 0x20, 0x05, 0xbf, 0x07, 0x3b, 0x70, ++ 0x5d, 0xcd, 0x47, 0x42, 0xdd, 0x3a, 0xc8, 0xdf, 0xaa, 0x70, 0xf8, 0x37, ++ 0x2b, 0x8c, 0xbe, 0xbb, 0xf6, 0x1b, 0xdc, 0x3b, 0xe1, 0x5b, 0xad, 0xd1, ++ 0xbd, 0x67, 0x17, 0xb4, 0xab, 0x7d, 0x79, 0xac, 0x1d, 0x46, 0x66, 0x87, ++ 0x8c, 0xf0, 0x1f, 0x2c, 0x7f, 0x31, 0x84, 0x97, 0x87, 0x39, 0x92, 0x36, ++ 0xe4, 0x60, 0x79, 0x0c, 0xe1, 0xf7, 0x25, 0x83, 0x2d, 0x9c, 0xca, 0x7f, ++ 0xaf, 0x32, 0x2a, 0x0f, 0xf6, 0xa6, 0x45, 0x00, 0xbc, 0x1b, 0x63, 0x9d, ++ 0xb3, 0x10, 0xae, 0x23, 0x82, 0x00, 0xff, 0x16, 0xec, 0x97, 0x7f, 0x3f, ++ 0x89, 0xeb, 0x00, 0xf8, 0x9c, 0x84, 0x6e, 0x11, 0xbf, 0xae, 0x86, 0x50, ++ 0xea, 0x97, 0x89, 0xbc, 0xf3, 0x17, 0xc3, 0xdc, 0x77, 0xd3, 0x7a, 0x1c, ++ 0x71, 0xcb, 0x31, 0x7f, 0xdb, 0x38, 0x5a, 0x8f, 0x13, 0xe7, 0x01, 0xf3, ++ 0x62, 0xf5, 0x0a, 0xad, 0xf7, 0xa4, 0xd5, 0x7d, 0x57, 0x1a, 0x94, 0x9f, ++ 0xec, 0x18, 0x4e, 0xf3, 0x88, 0x12, 0xf4, 0x70, 0xb2, 0xf8, 0xeb, 0xb7, ++ 0x26, 0x41, 0xbd, 0x93, 0x87, 0x55, 0x3b, 0xf6, 0xf9, 0x97, 0x46, 0xd5, ++ 0x6b, 0x0c, 0xc3, 0x72, 0x8e, 0x0f, 0x65, 0xbe, 0x29, 0xad, 0x1d, 0xda, ++ 0x9d, 0x7e, 0x31, 0xd4, 0x1e, 0x04, 0xe5, 0x25, 0xf7, 0xd5, 0xbc, 0x89, ++ 0xdf, 0x4b, 0xee, 0xac, 0x9b, 0x4b, 0x69, 0xf5, 0xba, 0x1b, 0x18, 0xd4, ++ 0xef, 0xba, 0xf3, 0xa3, 0x44, 0x67, 0xc6, 0x40, 0x7c, 0x94, 0xd4, 0x42, ++ 0x2b, 0x3f, 0x3c, 0xae, 0xb2, 0x3b, 0x4a, 0x11, 0xbf, 0xf7, 0xd8, 0x9d, ++ 0x65, 0xb8, 0xde, 0x55, 0x19, 0x5d, 0x95, 0x0c, 0xe8, 0xea, 0xa2, 0xb1, ++ 0xf3, 0x71, 0xa6, 0x32, 0xf6, 0xfe, 0x48, 0x67, 0x05, 0x7e, 0xef, 0x79, ++ 0xe1, 0xd3, 0x5d, 0xf8, 0x1d, 0xf0, 0x94, 0x56, 0x3c, 0x1e, 0x96, 0xa1, ++ 0x07, 0x3a, 0x41, 0xfa, 0xed, 0x9a, 0x40, 0x74, 0xbd, 0x4a, 0xd0, 0xef, ++ 0xb0, 0x4c, 0x67, 0x35, 0xf6, 0x07, 0x70, 0x2c, 0x65, 0x29, 0x8c, 0x85, ++ 0x64, 0x74, 0x1a, 0x71, 0x1e, 0x6c, 0xdd, 0xf0, 0x1f, 0x44, 0x27, 0x5f, ++ 0x74, 0xec, 0x3c, 0xa4, 0xc0, 0x38, 0x35, 0xc1, 0x1d, 0xf5, 0x94, 0xaa, ++ 0xee, 0x09, 0xd8, 0xcf, 0x39, 0xc5, 0x1b, 0xa6, 0xa4, 0x10, 0x1c, 0x9d, ++ 0xb8, 0xff, 0xce, 0x5b, 0xbd, 0x61, 0x88, 0x0f, 0xa7, 0x0e, 0xf2, 0x80, ++ 0x9f, 0x9a, 0xdd, 0xda, 0x75, 0xe1, 0x9f, 0x1e, 0xe6, 0x55, 0x83, 0xff, ++ 0x80, 0x76, 0x35, 0x1e, 0xd5, 0x61, 0xc6, 0xfd, 0xc3, 0xdc, 0x46, 0x9c, ++ 0x7f, 0x0d, 0x33, 0xfa, 0xea, 0x27, 0xf1, 0x7d, 0x88, 0x74, 0x00, 0xfd, ++ 0x3c, 0x49, 0xfb, 0xd5, 0xf2, 0x97, 0xd2, 0x5f, 0x00, 0x1e, 0xaa, 0xf7, ++ 0x8c, 0xcd, 0xba, 0x1b, 0xf0, 0x53, 0x13, 0x71, 0xf8, 0x57, 0x53, 0xa9, ++ 0x1e, 0xb4, 0x93, 0xfb, 0x45, 0x1d, 0x98, 0x97, 0xeb, 0x19, 0x38, 0x1f, ++ 0xbe, 0xbe, 0xf3, 0x62, 0x1f, 0x9c, 0x87, 0x2f, 0x06, 0xa4, 0x9f, 0xbd, ++ 0x41, 0x9c, 0xfe, 0x19, 0xa7, 0x8f, 0x8b, 0x7b, 0xe2, 0x04, 0xfd, 0x70, ++ 0xba, 0xbd, 0xb8, 0x67, 0x8c, 0x1b, 0xe7, 0x13, 0x2d, 0xf6, 0xcd, 0x45, ++ 0xc5, 0xa5, 0x0b, 0xc6, 0x76, 0xbf, 0x64, 0xf6, 0x9d, 0x30, 0x2f, 0x66, ++ 0xf7, 0x4c, 0x9c, 0x37, 0x1e, 0x67, 0xef, 0x99, 0x38, 0x3f, 0x94, 0xb1, ++ 0x07, 0x15, 0xce, 0x9f, 0x6a, 0x86, 0x79, 0x26, 0x22, 0xbf, 0x92, 0xfc, ++ 0x8b, 0x99, 0x3c, 0x13, 0xe6, 0x41, 0x39, 0x4b, 0xf7, 0x4c, 0x98, 0x0f, ++ 0xf5, 0x5f, 0x12, 0xf5, 0x58, 0xb1, 0x27, 0x8d, 0xbe, 0xbb, 0x3d, 0x69, ++ 0xd8, 0xfe, 0x90, 0x8e, 0x55, 0x21, 0x3c, 0xe5, 0x7c, 0xaa, 0x9f, 0x8e, ++ 0xdf, 0x4e, 0xf0, 0x30, 0xf1, 0xfd, 0x5a, 0xfd, 0xf4, 0x38, 0x82, 0x8f, ++ 0x1c, 0xa7, 0x19, 0xf9, 0x48, 0x38, 0xa6, 0x40, 0x9f, 0x61, 0x03, 0xd7, ++ 0xfd, 0x5b, 0xbb, 0xc2, 0xf7, 0x7f, 0xe8, 0xc4, 0x18, 0xe4, 0x6b, 0x43, ++ 0xe1, 0x3f, 0x3d, 0x76, 0x58, 0x06, 0xb2, 0x92, 0x8b, 0x4b, 0x8c, 0xb7, ++ 0x3a, 0xa0, 0xdf, 0x31, 0xed, 0x46, 0x4d, 0x3f, 0xb2, 0xde, 0x58, 0xb7, ++ 0xf6, 0xfb, 0x61, 0xd1, 0xff, 0xa8, 0x00, 0x7c, 0x8e, 0x50, 0x7b, 0x8f, ++ 0x06, 0xc1, 0x7c, 0xd9, 0xaf, 0x01, 0x4e, 0x6c, 0xe0, 0x78, 0xff, 0x89, ++ 0xed, 0x80, 0x4e, 0x9f, 0x7a, 0xaa, 0x1f, 0x7f, 0x2a, 0xc7, 0x27, 0x63, ++ 0x36, 0x49, 0x37, 0x36, 0x82, 0x13, 0xc7, 0xd3, 0x9f, 0x8d, 0x12, 0x4f, ++ 0x6b, 0xe3, 0x81, 0x5f, 0xd7, 0x20, 0x4c, 0x92, 0x7d, 0xf0, 0x3a, 0x94, ++ 0xe9, 0x8c, 0x8f, 0x84, 0xf4, 0x22, 0xe6, 0x61, 0xfe, 0x87, 0x22, 0x20, ++ 0x0f, 0x69, 0xbd, 0x80, 0xbf, 0xcc, 0x4b, 0xb8, 0x07, 0xd2, 0xdf, 0x9d, ++ 0x7f, 0xae, 0x8c, 0xef, 0x82, 0xf6, 0xe7, 0xed, 0x3a, 0x9a, 0x57, 0x20, ++ 0x5c, 0xd7, 0x03, 0xfc, 0xb0, 0xbc, 0xd9, 0xc0, 0x6e, 0x2d, 0x86, 0xf6, ++ 0x5f, 0x34, 0x9d, 0x48, 0x39, 0x63, 0xf0, 0xad, 0xe7, 0x6c, 0x93, 0xc3, ++ 0x01, 0x47, 0x4d, 0x7f, 0xbe, 0xb2, 0x3d, 0xd3, 0x84, 0xfb, 0x6e, 0xc5, ++ 0xb6, 0x4c, 0xd3, 0x32, 0x3f, 0xb8, 0x37, 0xef, 0xce, 0x3e, 0x61, 0x03, ++ 0xbc, 0x9e, 0xdf, 0xad, 0xc7, 0x91, 0x58, 0xb3, 0xde, 0xfd, 0xab, 0x29, ++ 0x51, 0xf8, 0x5d, 0xf5, 0xb8, 0x18, 0x95, 0x9b, 0x1c, 0x38, 0x0f, 0xcb, ++ 0xb1, 0x3f, 0x60, 0xbd, 0xca, 0x6d, 0x11, 0x59, 0xaa, 0xcd, 0xd7, 0x7e, ++ 0x45, 0x7b, 0x91, 0xa3, 0xc2, 0x0f, 0xfe, 0xe3, 0x76, 0x6b, 0xf1, 0x31, ++ 0xde, 0xa3, 0xcd, 0x5f, 0x7d, 0x58, 0x9b, 0xff, 0x1a, 0xb9, 0x5a, 0xee, ++ 0x3f, 0xdf, 0x2e, 0xd3, 0xab, 0xcd, 0x67, 0x9f, 0xd0, 0xe6, 0x3f, 0xfd, ++ 0xd3, 0xda, 0x45, 0xb8, 0x0d, 0x9e, 0xcf, 0xe3, 0xfb, 0xe6, 0x33, 0x77, ++ 0xa8, 0xdb, 0x04, 0x70, 0xad, 0xfa, 0x68, 0xf6, 0x09, 0x3c, 0x47, 0x3f, ++ 0x3b, 0xf4, 0x7c, 0x18, 0xe2, 0xab, 0xe6, 0xaf, 0x15, 0xaf, 0xc5, 0x33, ++ 0x5c, 0x87, 0x96, 0x4e, 0x01, 0x8f, 0x8a, 0x1e, 0xd6, 0xeb, 0xda, 0xa5, ++ 0x10, 0xbd, 0xac, 0x74, 0x07, 0xee, 0x5f, 0xc1, 0x37, 0x06, 0xec, 0xeb, ++ 0xf5, 0xb4, 0x1e, 0xdc, 0x59, 0xfe, 0x74, 0x13, 0x88, 0xdf, 0x73, 0xcc, ++ 0xb3, 0xc8, 0x01, 0xf4, 0x55, 0xdb, 0xf8, 0x6e, 0xca, 0x99, 0x6c, 0x98, ++ 0xd7, 0x5c, 0x20, 0x64, 0x98, 0xcf, 0x64, 0xcf, 0x56, 0x23, 0xb3, 0x0c, ++ 0x1c, 0x6f, 0x28, 0xfe, 0xc1, 0x2c, 0x0e, 0x1b, 0x03, 0xfa, 0x2b, 0xcb, ++ 0xe3, 0x65, 0x53, 0x1a, 0x67, 0xb1, 0xd3, 0xd0, 0x1f, 0xdb, 0xf2, 0xc7, ++ 0xd9, 0xb8, 0x5f, 0xcb, 0xee, 0x51, 0x48, 0xde, 0x28, 0x7b, 0x6e, 0xcc, ++ 0x2b, 0x48, 0x37, 0xdd, 0xfb, 0x97, 0x5c, 0x4b, 0xe9, 0xa2, 0x39, 0x04, ++ 0x87, 0x72, 0xe6, 0x30, 0x22, 0x3f, 0x5c, 0xd1, 0xa1, 0x78, 0x43, 0x21, ++ 0x6f, 0xcd, 0xb3, 0x1d, 0xee, 0x82, 0x76, 0xcb, 0xdd, 0x8a, 0x1d, 0xe7, ++ 0xbd, 0xac, 0x25, 0xc8, 0xc7, 0xcf, 0xe0, 0xff, 0x15, 0x5b, 0x02, 0xe6, ++ 0xd1, 0xe6, 0x57, 0x0e, 0xf3, 0x5f, 0x71, 0xf8, 0xe8, 0x37, 0x0a, 0xf4, ++ 0x5f, 0xb5, 0x4d, 0xdb, 0x6e, 0x25, 0xc0, 0x0b, 0xcf, 0x8f, 0xea, 0x1d, ++ 0xff, 0x08, 0xf2, 0xff, 0x0e, 0x82, 0x10, 0xc1, 0x6b, 0x4a, 0xc7, 0x76, ++ 0x15, 0xd7, 0xbd, 0x5c, 0xcc, 0x5f, 0x9e, 0x7f, 0xcc, 0x55, 0xc0, 0x70, ++ 0x7d, 0x53, 0x78, 0x13, 0x76, 0x06, 0xff, 0x03, 0xe7, 0x46, 0xf0, 0x28, ++ 0x67, 0x6e, 0x66, 0xae, 0xef, 0x1c, 0x9c, 0xd2, 0xc6, 0xdb, 0x03, 0xe3, ++ 0x2b, 0xc3, 0x75, 0xd7, 0x59, 0x8c, 0x36, 0x5c, 0x77, 0x9d, 0x89, 0x79, ++ 0x43, 0x60, 0x3e, 0x27, 0x42, 0x8d, 0x0e, 0x2b, 0x7c, 0xbf, 0xdc, 0x1e, ++ 0x4a, 0xf2, 0x43, 0x65, 0x10, 0x73, 0x99, 0xb2, 0x28, 0x65, 0xe6, 0x2c, ++ 0x6c, 0x67, 0x0f, 0xc7, 0x76, 0x67, 0xdf, 0x56, 0x49, 0x4e, 0xaa, 0x03, ++ 0xde, 0x43, 0xfd, 0x3c, 0xa1, 0xb8, 0x9b, 0xb1, 0x1f, 0x55, 0xe1, 0xf9, ++ 0x5f, 0xf3, 0xfc, 0x4a, 0xe6, 0xa5, 0xf5, 0x20, 0xdd, 0x38, 0xfc, 0xd7, ++ 0xe9, 0xd6, 0xe6, 0x59, 0xeb, 0x30, 0x92, 0x4b, 0x6a, 0xf5, 0xde, 0xa3, ++ 0x08, 0x97, 0x6a, 0xd6, 0x45, 0xf0, 0x66, 0x80, 0x4f, 0x87, 0x84, 0x23, ++ 0xc0, 0xad, 0x16, 0xd6, 0xf9, 0x41, 0x24, 0xca, 0x5f, 0xda, 0xf6, 0xab, ++ 0x98, 0x87, 0xea, 0xaf, 0x3a, 0xfc, 0x8f, 0x20, 0xff, 0xef, 0x20, 0x67, ++ 0x32, 0x13, 0xd4, 0xdf, 0x16, 0x0c, 0x29, 0xcd, 0xdf, 0x4d, 0x70, 0x54, ++ 0x8d, 0xcc, 0xa1, 0x83, 0x79, 0xaa, 0x77, 0x04, 0xbb, 0x5d, 0x24, 0x87, ++ 0x14, 0x07, 0x23, 0x9d, 0x1a, 0xf0, 0xbc, 0x00, 0xb8, 0xb6, 0xdd, 0xe5, ++ 0x48, 0xc3, 0x79, 0x6f, 0x50, 0x1c, 0x69, 0x56, 0xe4, 0x63, 0x5b, 0xcd, ++ 0x76, 0xe4, 0x63, 0x4b, 0xb7, 0xf3, 0x73, 0xa8, 0x2d, 0x02, 0xe4, 0x57, ++ 0x68, 0xdf, 0xb6, 0xf2, 0x2a, 0x6a, 0xbf, 0x14, 0xe5, 0x29, 0x94, 0x53, ++ 0x96, 0x70, 0x7e, 0xd7, 0x16, 0xe1, 0xf1, 0x22, 0xdf, 0x6f, 0x7b, 0x20, ++ 0x89, 0xcb, 0x53, 0x7f, 0x57, 0x09, 0x2e, 0xbd, 0xf7, 0x9a, 0xdd, 0x4f, ++ 0x42, 0xfd, 0xb6, 0x4c, 0x2e, 0xf7, 0xb4, 0x6d, 0x1d, 0x43, 0xed, 0x91, ++ 0x5f, 0x92, 0x3c, 0x75, 0x6f, 0x28, 0x6f, 0x3f, 0x8f, 0xc3, 0xb5, 0x6d, ++ 0xb8, 0xd5, 0xed, 0x82, 0xfc, 0x87, 0x38, 0x45, 0x80, 0x4f, 0xdb, 0x76, ++ 0x47, 0x9a, 0x89, 0xda, 0x81, 0x9c, 0x96, 0xe4, 0x3b, 0xa7, 0xa4, 0x3c, ++ 0xfd, 0x9b, 0x51, 0xce, 0xdb, 0x10, 0xdf, 0x72, 0xbd, 0x52, 0xfe, 0x66, ++ 0x55, 0x3f, 0x4c, 0xde, 0xdc, 0x29, 0xce, 0xcf, 0xde, 0xad, 0x30, 0x4f, ++ 0xe8, 0xff, 0x8c, 0x52, 0xfc, 0x9a, 0xce, 0x4f, 0x1e, 0x6e, 0xc9, 0xe4, ++ 0xfc, 0x7f, 0xe2, 0x4c, 0xc7, 0x2e, 0x51, 0xcf, 0x8e, 0xf5, 0x2a, 0x74, ++ 0xf3, 0xee, 0x9e, 0x0e, 0xf3, 0xad, 0x78, 0x50, 0x67, 0x6b, 0x4e, 0xf2, ++ 0xc1, 0x9d, 0x39, 0x1c, 0x69, 0x08, 0xe7, 0x33, 0x5b, 0xcd, 0x59, 0x48, ++ 0x67, 0x13, 0x67, 0x02, 0x1f, 0x06, 0xfa, 0x3b, 0x99, 0xc9, 0xf9, 0x79, ++ 0x48, 0x0e, 0x73, 0xb8, 0x21, 0xbd, 0x57, 0xf4, 0x7b, 0x6f, 0xa6, 0x4e, ++ 0x93, 0xc6, 0x06, 0x03, 0xfd, 0x41, 0x3f, 0x67, 0x8a, 0xbc, 0x06, 0xc4, ++ 0x6f, 0x68, 0x4e, 0xb1, 0x11, 0xcf, 0x43, 0x38, 0xc3, 0x89, 0x9f, 0x07, ++ 0xae, 0xe3, 0x61, 0xd1, 0x4f, 0x85, 0xb1, 0xf8, 0xf5, 0x69, 0x83, 0xcc, ++ 0xa7, 0x9f, 0x0e, 0x0a, 0xb9, 0xdc, 0x72, 0x66, 0xb5, 0xf2, 0x24, 0x9f, ++ 0x17, 0xc7, 0xf3, 0xc4, 0xff, 0x30, 0xdb, 0x9b, 0x69, 0xdd, 0x7c, 0x7e, ++ 0x12, 0xee, 0x40, 0x37, 0xb9, 0x74, 0xde, 0x0b, 0xbe, 0x15, 0xd1, 0x4f, ++ 0x27, 0xee, 0x3d, 0x66, 0x40, 0xed, 0x56, 0x29, 0x4f, 0x23, 0xfe, 0x15, ++ 0x0d, 0x9d, 0x10, 0x3c, 0xdb, 0xee, 0x1d, 0x4f, 0x78, 0x5c, 0x2a, 0xf0, ++ 0xcc, 0xee, 0x35, 0x0b, 0x3a, 0x61, 0xec, 0x6f, 0x58, 0x5e, 0x64, 0xa3, ++ 0x72, 0xa0, 0x13, 0x82, 0x4f, 0x5b, 0x26, 0xe0, 0xcd, 0xe2, 0x3b, 0xf7, ++ 0xda, 0xe6, 0x39, 0xe2, 0x22, 0xfc, 0xce, 0x23, 0xa0, 0x03, 0x2a, 0x07, ++ 0x7c, 0xef, 0xcf, 0x1c, 0x3e, 0xf0, 0xbe, 0x25, 0xf1, 0xcd, 0xf4, 0xee, ++ 0xdc, 0xe2, 0xd0, 0xa1, 0xf1, 0xbd, 0x2c, 0x2f, 0x62, 0xa2, 0x02, 0xa0, ++ 0x8e, 0xd7, 0x33, 0x57, 0x10, 0xc0, 0x05, 0xcf, 0x3c, 0x82, 0xcb, 0x5d, ++ 0x7a, 0xf7, 0x9d, 0x30, 0x9f, 0x91, 0x7a, 0x0e, 0xff, 0x04, 0x3d, 0xa7, ++ 0x2f, 0xe0, 0xce, 0xae, 0xe0, 0x2c, 0xaa, 0xef, 0x30, 0x42, 0xbe, 0xec, ++ 0xfe, 0x15, 0xcc, 0x01, 0xf5, 0xcb, 0xe2, 0x99, 0x5d, 0xe1, 0xf5, 0x59, ++ 0x38, 0xd6, 0x87, 0x6e, 0x54, 0x48, 0xf1, 0xcc, 0xc0, 0x76, 0x65, 0xe1, ++ 0xbc, 0xdf, 0xb2, 0x18, 0xe6, 0xbe, 0x53, 0xc8, 0xfd, 0xc8, 0xaf, 0x52, ++ 0x31, 0x4d, 0xa6, 0x7e, 0x1d, 0xba, 0x48, 0xde, 0x3e, 0x2c, 0x8b, 0xda, ++ 0xbb, 0x74, 0xbc, 0xbd, 0x43, 0x0f, 0xe9, 0xa8, 0x14, 0xbe, 0x5f, 0x7a, ++ 0x37, 0x04, 0xd1, 0xfe, 0x29, 0xdb, 0x94, 0x90, 0x86, 0x74, 0x30, 0x77, ++ 0xa6, 0x96, 0x0e, 0x52, 0xb3, 0x38, 0xdd, 0xc8, 0xb4, 0x35, 0xcb, 0x26, ++ 0xce, 0x19, 0x7b, 0x2c, 0xee, 0xef, 0x65, 0x2d, 0x63, 0xe9, 0xdc, 0x68, ++ 0x36, 0x17, 0xd7, 0x1d, 0x44, 0x7c, 0xed, 0x0b, 0x21, 0x79, 0xb0, 0x6c, ++ 0xe3, 0x2d, 0xd7, 0xe7, 0xe2, 0xfc, 0x9e, 0x19, 0x86, 0x12, 0x0e, 0xfb, ++ 0xe2, 0x86, 0xfd, 0x13, 0x91, 0xde, 0x96, 0xb5, 0x2c, 0xf9, 0xd9, 0x7b, ++ 0x78, 0x1f, 0xd9, 0x6d, 0xa6, 0xef, 0xfb, 0xb2, 0x9c, 0x1f, 0xe3, 0xfe, ++ 0xfa, 0x42, 0xb1, 0x95, 0x1e, 0x84, 0x0f, 0xcb, 0x16, 0x1e, 0x37, 0xc6, ++ 0x42, 0x7b, 0xa7, 0x67, 0xde, 0x85, 0x17, 0x21, 0xbd, 0xc1, 0xb5, 0xff, ++ 0x0f, 0x28, 0x17, 0xdc, 0x70, 0xa3, 0x4a, 0xf5, 0x6f, 0x60, 0x9e, 0xaf, ++ 0x3f, 0x44, 0xbe, 0xd0, 0xc2, 0xc7, 0xb9, 0xde, 0x75, 0x49, 0x1f, 0x0b, ++ 0xfd, 0x5d, 0x9f, 0xaf, 0x30, 0x2c, 0xef, 0x36, 0x5b, 0x13, 0x57, 0xc3, ++ 0xfc, 0xcb, 0x04, 0xfe, 0xce, 0x09, 0xfa, 0x6d, 0x36, 0xb3, 0xc5, 0xcf, ++ 0x5a, 0x70, 0x5e, 0x09, 0x69, 0xc9, 0xf0, 0xfd, 0x7a, 0x94, 0x54, 0x07, ++ 0x91, 0x03, 0xc7, 0x66, 0x09, 0x39, 0x71, 0x86, 0xb2, 0x0d, 0xe5, 0x9e, ++ 0x51, 0xb3, 0xf8, 0xfe, 0x92, 0xf5, 0xb1, 0x1f, 0xec, 0xf7, 0x6a, 0x84, ++ 0x07, 0xd4, 0xfb, 0x5a, 0xec, 0x2b, 0x99, 0x07, 0xb8, 0x52, 0xfd, 0x8a, ++ 0xcd, 0x41, 0xdd, 0x29, 0x61, 0x98, 0x1a, 0xbc, 0x63, 0x20, 0x5d, 0x94, ++ 0x33, 0xf3, 0x6f, 0xb8, 0xce, 0xb9, 0xc9, 0x6c, 0x36, 0xde, 0x9b, 0x7a, ++ 0x7f, 0xae, 0xb2, 0x27, 0x69, 0xbe, 0xbd, 0x65, 0xb4, 0xef, 0x43, 0xd3, ++ 0x6c, 0xb8, 0xef, 0x9d, 0x8c, 0x79, 0x89, 0xef, 0xb9, 0xc7, 0x12, 0xdd, ++ 0x77, 0xcf, 0xe8, 0xed, 0xde, 0x04, 0xf9, 0xee, 0xed, 0x63, 0xec, 0xcd, ++ 0xc4, 0xd7, 0xf9, 0xfd, 0x7d, 0xb9, 0x95, 0xd1, 0xf9, 0xde, 0x3d, 0x83, ++ 0xf3, 0x35, 0xc9, 0x5f, 0x4e, 0x5a, 0xbb, 0x42, 0x89, 0x5e, 0xc5, 0x7d, ++ 0xbe, 0x5c, 0x90, 0xc6, 0x27, 0x8d, 0xb3, 0x1e, 0x9c, 0x04, 0xf5, 0xcb, ++ 0x2d, 0xc6, 0x6e, 0x3c, 0x0f, 0x96, 0x3f, 0xb0, 0x20, 0xcc, 0x06, 0xf3, ++ 0x2c, 0x6f, 0x83, 0xfb, 0x3c, 0x9c, 0x63, 0x6c, 0x8b, 0xf6, 0x3e, 0x0f, ++ 0xf7, 0xed, 0xa8, 0xac, 0xdc, 0x81, 0xf7, 0xf2, 0xc0, 0xfb, 0x37, 0xd2, ++ 0x0c, 0xd2, 0x51, 0xc5, 0x16, 0x85, 0xe8, 0x70, 0x54, 0xb3, 0xdd, 0x18, ++ 0x47, 0x7c, 0x4c, 0xb1, 0xe2, 0xfa, 0x2a, 0x2c, 0xde, 0x54, 0x3c, 0xff, ++ 0x2a, 0xec, 0x66, 0x3b, 0x96, 0x9f, 0x6f, 0x72, 0xdc, 0x7f, 0x06, 0xe4, ++ 0xc3, 0x8b, 0x4d, 0x73, 0x28, 0x65, 0xdf, 0x02, 0xdc, 0x61, 0x9e, 0x57, ++ 0x21, 0xf2, 0x60, 0xdf, 0xa7, 0x67, 0x3b, 0x93, 0xb2, 0x00, 0x8e, 0x65, ++ 0xad, 0x65, 0x74, 0x9f, 0x0c, 0xc9, 0x70, 0x12, 0x7f, 0x72, 0x0a, 0xba, ++ 0x9b, 0x0b, 0x60, 0x56, 0x90, 0xdf, 0xe8, 0xbb, 0xe2, 0x70, 0x1f, 0xbe, ++ 0x93, 0x29, 0xbe, 0x47, 0x5a, 0xd3, 0x2c, 0x44, 0xcf, 0x66, 0x86, 0x70, ++ 0xe8, 0x36, 0x58, 0xd3, 0x70, 0x5e, 0xdd, 0x1b, 0xcc, 0x3a, 0x3c, 0x37, ++ 0xe7, 0xde, 0xc9, 0xe9, 0x1a, 0xf6, 0x99, 0x49, 0x0f, 0xed, 0xef, 0xd2, ++ 0xb3, 0x60, 0xdc, 0xef, 0x3d, 0xd8, 0x1e, 0xc6, 0x2b, 0x59, 0xaf, 0x2f, ++ 0xde, 0x0e, 0xf9, 0x91, 0x26, 0xa6, 0x0f, 0x8d, 0x44, 0xba, 0xca, 0x24, ++ 0xba, 0x6e, 0xcf, 0x71, 0x7e, 0x8d, 0xfc, 0xe0, 0xb3, 0x5f, 0xb2, 0x3c, ++ 0x94, 0x0b, 0xca, 0xb7, 0x6c, 0xa5, 0xf9, 0x48, 0xba, 0x60, 0xfa, 0xce, ++ 0xc2, 0x61, 0x28, 0xe7, 0xed, 0x4c, 0xca, 0xc2, 0xfb, 0xb5, 0xa4, 0xa3, ++ 0xf6, 0x9c, 0x99, 0x79, 0x08, 0xbf, 0x7e, 0x7a, 0xb8, 0x51, 0x21, 0x3a, ++ 0x80, 0xf4, 0x68, 0x0a, 0xd1, 0xc3, 0xfc, 0x69, 0x58, 0x3e, 0x77, 0xa6, ++ 0x37, 0x75, 0x0d, 0xcc, 0xab, 0x48, 0xad, 0x65, 0x0e, 0xd4, 0x33, 0xc4, ++ 0x32, 0x7b, 0x10, 0xcc, 0xbf, 0x8f, 0xf5, 0x92, 0x3c, 0xd1, 0x07, 0xf2, ++ 0x04, 0x9e, 0x67, 0x92, 0x9f, 0x48, 0xbe, 0x01, 0x74, 0xe0, 0x30, 0x45, ++ 0xfb, 0xf0, 0xbb, 0xab, 0x09, 0xa6, 0x02, 0x3c, 0x79, 0x77, 0x93, 0x89, ++ 0xd2, 0xa7, 0x9a, 0xac, 0x4c, 0x0f, 0xf0, 0xdd, 0xdb, 0x14, 0x4b, 0xf9, ++ 0x67, 0x9a, 0x6c, 0x94, 0x7a, 0x9a, 0xd2, 0xe9, 0xfb, 0xb3, 0x4d, 0x76, ++ 0xca, 0x1f, 0x68, 0xca, 0xa3, 0xfc, 0xa1, 0x26, 0x07, 0xe5, 0x0f, 0x37, ++ 0xcd, 0xa1, 0xf4, 0xc5, 0xa6, 0x62, 0xfa, 0x2e, 0xf9, 0x12, 0xc0, 0x85, ++ 0xf8, 0x90, 0xe4, 0x2b, 0x92, 0x1f, 0x49, 0x7a, 0x92, 0x7c, 0x29, 0x90, ++ 0x8e, 0x4a, 0x01, 0xbc, 0x05, 0x59, 0xd4, 0x9e, 0xf8, 0x9e, 0xe4, 0x77, ++ 0xb8, 0x0e, 0x5d, 0x96, 0x8f, 0x1f, 0x49, 0xfc, 0x26, 0x2b, 0xc5, 0xae, ++ 0xd8, 0x24, 0xe4, 0x63, 0x5d, 0x4b, 0x90, 0x5f, 0x14, 0xa9, 0xe7, 0xf7, ++ 0x3d, 0x0f, 0xf0, 0xed, 0xab, 0xb2, 0xd8, 0x83, 0x6c, 0x08, 0x17, 0xce, ++ 0xf7, 0xfa, 0x2c, 0x26, 0x3a, 0xe7, 0x13, 0x8d, 0xec, 0x30, 0xde, 0xff, ++ 0x9b, 0x57, 0x3b, 0xba, 0x37, 0xf9, 0x9d, 0xab, 0x37, 0x57, 0x29, 0x4c, ++ 0xef, 0x47, 0xb7, 0xb7, 0x34, 0x98, 0x99, 0xde, 0x8f, 0x6e, 0x6f, 0x6d, ++ 0x8c, 0xd0, 0xe4, 0x4b, 0x1a, 0xdf, 0x7d, 0x35, 0x06, 0xfa, 0xff, 0x47, ++ 0x82, 0x73, 0x35, 0xd2, 0xdf, 0xc9, 0x3b, 0xce, 0x3e, 0xf6, 0x5f, 0xf0, ++ 0xfd, 0x89, 0x3b, 0xbe, 0x18, 0x8d, 0xf8, 0x86, 0x79, 0xec, 0x7c, 0x08, ++ 0xc7, 0x5d, 0x17, 0xdc, 0x3f, 0x8f, 0x48, 0xcc, 0xb7, 0x18, 0xe8, 0x9c, ++ 0x19, 0x15, 0xcc, 0xef, 0x49, 0xa3, 0x82, 0xf9, 0x3d, 0x09, 0xff, 0x10, ++ 0x3f, 0xcb, 0x18, 0xdf, 0xa7, 0x4f, 0xdc, 0xf1, 0x37, 0xda, 0xe7, 0xdd, ++ 0x8d, 0x41, 0x36, 0x15, 0xe5, 0x0f, 0xc4, 0x17, 0xc0, 0xf7, 0x2f, 0x02, ++ 0x5f, 0xcb, 0x1a, 0x83, 0x08, 0x8e, 0x65, 0x1b, 0x4e, 0xef, 0x7b, 0x1e, ++ 0xf7, 0xfb, 0x3a, 0x23, 0xf1, 0xbb, 0x65, 0x2d, 0x62, 0x7f, 0x6e, 0x06, ++ 0xb8, 0xfa, 0xc9, 0x6d, 0xa7, 0xe2, 0x18, 0xc9, 0x67, 0x8a, 0x83, 0xb1, ++ 0x46, 0x80, 0xdf, 0xa9, 0x5f, 0x1a, 0xbd, 0x70, 0xf6, 0xb3, 0x53, 0x8a, ++ 0xc9, 0xad, 0x40, 0x43, 0x05, 0x2e, 0x4d, 0x25, 0x08, 0xd7, 0xcd, 0xbf, ++ 0xfb, 0x00, 0xe5, 0x6d, 0xa5, 0xf1, 0x04, 0xc9, 0xc7, 0x4e, 0x93, 0xc5, ++ 0xab, 0xe2, 0xfc, 0x5c, 0x86, 0xf3, 0xfe, 0xfd, 0x29, 0x8d, 0xaf, 0x51, ++ 0x3d, 0xd6, 0x35, 0x32, 0xe2, 0x6c, 0x08, 0x6d, 0x45, 0x86, 0x70, 0x0c, ++ 0xc9, 0x71, 0x18, 0x91, 0x4f, 0x20, 0x6d, 0x23, 0xfe, 0x96, 0xa5, 0x1f, ++ 0x63, 0xb8, 0xbf, 0x59, 0xab, 0x62, 0x1d, 0x0d, 0xeb, 0xaa, 0x10, 0xdf, ++ 0x2b, 0x36, 0x2b, 0x24, 0x77, 0x48, 0xf8, 0x3f, 0x92, 0xa5, 0xd2, 0xbe, ++ 0x7a, 0x2f, 0x53, 0x4f, 0x69, 0x36, 0xee, 0xd9, 0xe1, 0xc4, 0xc0, 0xe8, ++ 0x9c, 0x92, 0x74, 0x0b, 0x7c, 0xc3, 0xe1, 0xc6, 0xfd, 0xd1, 0x9a, 0x69, ++ 0xac, 0xf4, 0xe3, 0xc7, 0xcb, 0xc4, 0xf7, 0xf2, 0x74, 0x1d, 0xa5, 0xf2, ++ 0xfb, 0x7b, 0xb0, 0x2d, 0x91, 0x4e, 0xb2, 0x11, 0x49, 0x90, 0xde, 0x9d, ++ 0x9e, 0x6c, 0x5c, 0x4e, 0xfc, 0xce, 0x66, 0x44, 0x7e, 0x20, 0xeb, 0x2f, ++ 0x4b, 0xcf, 0xda, 0x98, 0x9c, 0x83, 0xfd, 0xcc, 0x88, 0x62, 0x7e, 0xfb, ++ 0x72, 0x57, 0x96, 0x9e, 0xda, 0xbd, 0x97, 0x69, 0xe5, 0xf3, 0x31, 0xc1, ++ 0x39, 0x06, 0xed, 0x6a, 0x87, 0x38, 0x0f, 0xa4, 0x7c, 0xf2, 0x19, 0xfe, ++ 0x73, 0x32, 0xcd, 0x9f, 0xee, 0x5f, 0xd5, 0xcf, 0x3c, 0xfd, 0xcc, 0x8b, ++ 0xa8, 0x97, 0xf8, 0x28, 0x88, 0xf0, 0x54, 0x7d, 0xb5, 0xd0, 0x6f, 0x64, ++ 0xb8, 0x27, 0x2e, 0x20, 0xb9, 0xc6, 0x61, 0x51, 0x60, 0x9d, 0xf5, 0x02, ++ 0xff, 0x85, 0x4f, 0xff, 0x35, 0xac, 0x0b, 0xca, 0x57, 0x1d, 0xe0, 0xfa, ++ 0x53, 0x48, 0xbb, 0x31, 0xad, 0x5f, 0x57, 0x45, 0xfa, 0xb2, 0x7a, 0xb8, ++ 0x8f, 0x16, 0x44, 0x22, 0x7f, 0x35, 0x9c, 0xea, 0xf2, 0xa3, 0xcb, 0x57, ++ 0x9e, 0xf9, 0x28, 0xac, 0x8b, 0xee, 0x17, 0xae, 0x78, 0x5d, 0x2c, 0xa6, ++ 0xde, 0x78, 0x06, 0x69, 0xfd, 0x81, 0xd3, 0xb3, 0x19, 0xf6, 0xc7, 0x7a, ++ 0x37, 0x5a, 0x2d, 0x03, 0xdb, 0xad, 0x52, 0xbe, 0xa5, 0x7b, 0xa6, 0x5c, ++ 0x47, 0xd1, 0x91, 0xaf, 0xa2, 0x69, 0x7c, 0xe5, 0x4a, 0x34, 0xd5, 0x3f, ++ 0xb2, 0x21, 0x7a, 0x30, 0x3d, 0xc8, 0x2a, 0xa6, 0x3f, 0xd5, 0xbf, 0x7f, ++ 0x49, 0xcf, 0xe0, 0xd0, 0xe8, 0xd5, 0x56, 0xb1, 0x2d, 0x97, 0x54, 0x98, ++ 0xef, 0xaa, 0x75, 0x73, 0x3e, 0x45, 0x3a, 0x0f, 0xac, 0xff, 0x41, 0x56, ++ 0x68, 0x14, 0xd2, 0x0f, 0x9b, 0xc4, 0x26, 0x91, 0x1e, 0x43, 0xcf, 0x74, ++ 0x88, 0xef, 0x35, 0x26, 0x0e, 0x87, 0x3e, 0xf7, 0xe8, 0x70, 0xf6, 0x1d, ++ 0xfa, 0x97, 0x55, 0xed, 0xd0, 0x08, 0x44, 0xad, 0x3e, 0xbd, 0x2d, 0xdc, ++ 0x0e, 0xf3, 0xed, 0x61, 0x6c, 0xce, 0x60, 0x78, 0x49, 0xc8, 0xe6, 0xe7, ++ 0xf4, 0x05, 0xd8, 0x47, 0x0c, 0xee, 0x52, 0x3d, 0x7b, 0x55, 0xba, 0x2f, ++ 0xf4, 0xec, 0x0d, 0x25, 0xfa, 0xaf, 0xdf, 0x7b, 0xff, 0x6b, 0x53, 0x21, ++ 0x5f, 0xbf, 0x43, 0xc1, 0x61, 0x59, 0x1d, 0xeb, 0x24, 0x38, 0xd5, 0x1f, ++ 0x50, 0x99, 0xc9, 0xff, 0x3c, 0x43, 0xfd, 0xce, 0xb0, 0xa1, 0xe7, 0x59, ++ 0xf3, 0x74, 0x68, 0x03, 0xd2, 0xd3, 0x4a, 0x8f, 0xe2, 0xd8, 0x09, 0xf3, ++ 0xe9, 0x33, 0xd9, 0xc2, 0x87, 0xfb, 0xcd, 0xe7, 0x6f, 0x82, 0x9e, 0x6a, ++ 0x82, 0x3c, 0x13, 0x09, 0xae, 0x62, 0xfe, 0xbd, 0x82, 0x9f, 0xc9, 0x7a, ++ 0x2b, 0x3b, 0xee, 0x37, 0x22, 0xbe, 0xa0, 0xde, 0x45, 0x92, 0x5f, 0x7e, ++ 0x1b, 0xc2, 0x48, 0x6f, 0xc6, 0x7a, 0xff, 0x80, 0xf3, 0x3c, 0xb7, 0x2d, ++ 0xdb, 0x8e, 0xfa, 0xbd, 0x95, 0x9e, 0xfd, 0xf5, 0x74, 0xfe, 0xef, 0x0d, ++ 0xb1, 0x8e, 0x86, 0x75, 0x7c, 0x21, 0xf4, 0xfc, 0xb2, 0x1f, 0x63, 0x36, ++ 0xdf, 0x4f, 0xc6, 0x6c, 0x2e, 0x6f, 0x9c, 0x13, 0xfa, 0xdc, 0x73, 0xcf, ++ 0xa8, 0xc4, 0x87, 0x70, 0x9e, 0xb8, 0x0f, 0xbf, 0x40, 0x39, 0xd7, 0x6f, ++ 0x9e, 0x16, 0xd1, 0xce, 0x22, 0xe0, 0xf6, 0x1c, 0xee, 0xc7, 0x5c, 0x5f, ++ 0xfd, 0x95, 0x9e, 0xee, 0xb0, 0x54, 0xa8, 0xff, 0xe9, 0xe1, 0x77, 0x29, ++ 0x8d, 0xce, 0xe6, 0xeb, 0x5a, 0x69, 0xe9, 0x9c, 0x80, 0xe7, 0xe6, 0xa7, ++ 0x07, 0x42, 0xe6, 0xb8, 0x29, 0x7d, 0x74, 0xf6, 0x4b, 0x30, 0xde, 0x05, ++ 0xcf, 0x8c, 0x28, 0xc5, 0x6f, 0x5f, 0xa5, 0x64, 0x1b, 0x38, 0x3e, 0xb6, ++ 0xa9, 0x73, 0x10, 0x5e, 0xcc, 0x3d, 0x4c, 0xc8, 0xf9, 0x1e, 0x5a, 0xcf, ++ 0xb9, 0xbd, 0xf1, 0x0a, 0xdd, 0x6f, 0x11, 0xde, 0x20, 0xe7, 0x9f, 0x3b, ++ 0xf0, 0x5c, 0x98, 0x8e, 0xf6, 0xad, 0x4b, 0x83, 0x47, 0x9d, 0x89, 0xeb, ++ 0x69, 0x83, 0x22, 0x6c, 0x42, 0xce, 0x34, 0xb5, 0xa2, 0xbc, 0xb1, 0x14, ++ 0xa4, 0xbb, 0x70, 0xe0, 0x77, 0x75, 0x07, 0x2e, 0xd1, 0xf9, 0x1b, 0xf8, ++ 0x5d, 0xd6, 0xa7, 0xfd, 0x16, 0x87, 0xf7, 0xef, 0x5e, 0xd2, 0x6b, 0xc0, ++ 0x9f, 0x0e, 0xe9, 0xb7, 0xce, 0xca, 0x71, 0x5e, 0xa4, 0x66, 0xc4, 0xe0, ++ 0x3e, 0x28, 0xbd, 0xda, 0x76, 0xd3, 0xcd, 0xc8, 0xc7, 0xde, 0x30, 0x70, ++ 0x3c, 0x8c, 0xb4, 0x3d, 0x84, 0xf7, 0xaa, 0xd2, 0xb7, 0x87, 0x91, 0xde, ++ 0x62, 0x8d, 0xc1, 0x16, 0x83, 0xf9, 0x2f, 0xdf, 0x84, 0x8b, 0x20, 0xcc, ++ 0xbb, 0x34, 0x5b, 0xec, 0xef, 0xd8, 0xae, 0x5c, 0xd4, 0x73, 0x76, 0x27, ++ 0xf1, 0x73, 0xbd, 0x76, 0x33, 0x5c, 0x54, 0x60, 0x3d, 0x23, 0x00, 0xef, ++ 0x2e, 0x58, 0x72, 0xad, 0x5b, 0x65, 0x4e, 0xc8, 0xab, 0xe2, 0x3e, 0x73, ++ 0x4d, 0x76, 0x32, 0xad, 0xef, 0x91, 0x2a, 0x9d, 0xc3, 0x48, 0x76, 0x16, ++ 0x6f, 0x1a, 0xea, 0x3d, 0x4f, 0x1a, 0x99, 0x4b, 0x45, 0x79, 0xf9, 0x59, ++ 0x33, 0xb7, 0x07, 0x24, 0x73, 0xbd, 0xfe, 0x23, 0x48, 0xef, 0x90, 0xd6, ++ 0x46, 0x7a, 0xd3, 0x86, 0xa1, 0xfe, 0x4b, 0xe0, 0xb1, 0x76, 0x3e, 0x94, ++ 0xfb, 0xe1, 0xb3, 0xf6, 0x49, 0x6f, 0x1a, 0xca, 0x2f, 0xe7, 0x8d, 0x5c, ++ 0xcf, 0x87, 0xe5, 0x56, 0x4c, 0xb3, 0x78, 0xbd, 0x66, 0x41, 0x37, 0xd8, ++ 0x0f, 0xf6, 0xdb, 0x9d, 0x64, 0xbd, 0x48, 0x72, 0xe6, 0xc1, 0x50, 0x86, ++ 0xf2, 0xbe, 0xee, 0xf9, 0x50, 0xae, 0x57, 0xf8, 0x8d, 0xf9, 0xc9, 0x20, ++ 0xbf, 0x73, 0x73, 0x89, 0xa0, 0x2b, 0x90, 0x99, 0x5c, 0xb8, 0x7e, 0xd7, ++ 0x4e, 0x3e, 0x3f, 0x9c, 0x17, 0xca, 0xcf, 0x2b, 0x8d, 0xad, 0x69, 0x28, ++ 0x5f, 0xca, 0x71, 0x57, 0x86, 0xb5, 0xd2, 0x78, 0xe7, 0xc5, 0x78, 0x2b, ++ 0x83, 0x5b, 0xb9, 0x7d, 0xc2, 0xc8, 0xf5, 0x91, 0x58, 0x9f, 0xc6, 0x37, ++ 0x30, 0xb2, 0xa3, 0xf4, 0xee, 0x09, 0x22, 0x39, 0xf5, 0x8b, 0xb8, 0xce, ++ 0x43, 0x38, 0xfe, 0x17, 0x7b, 0xc6, 0x32, 0x3c, 0xc7, 0xbb, 0x93, 0xdc, ++ 0x95, 0x87, 0xa9, 0x1c, 0xe4, 0x37, 0xc0, 0x47, 0xf5, 0x53, 0x41, 0x5e, ++ 0x9c, 0xef, 0xe7, 0x7b, 0x42, 0xdd, 0x0c, 0xea, 0x7f, 0x6e, 0xe0, 0xf2, ++ 0xd0, 0xe7, 0xa1, 0xd1, 0x24, 0x0f, 0x9d, 0x08, 0x7d, 0xb0, 0x94, 0xec, ++ 0x32, 0x3b, 0x82, 0x14, 0xd4, 0xab, 0x7c, 0xae, 0x30, 0x63, 0x2c, 0x96, ++ 0xef, 0xe4, 0x76, 0x8c, 0xea, 0xa6, 0x46, 0xb2, 0x3f, 0x54, 0xc3, 0x76, ++ 0x67, 0x59, 0x94, 0xce, 0x61, 0x91, 0x58, 0x3e, 0x96, 0xf4, 0x2d, 0x9f, ++ 0xff, 0x1e, 0xf6, 0xa9, 0x42, 0xdf, 0x37, 0xe3, 0x77, 0x27, 0x6b, 0x2d, ++ 0xbd, 0x1d, 0xf7, 0xdd, 0xee, 0x10, 0xd2, 0xbb, 0x7d, 0xf1, 0xd4, 0xff, ++ 0x1a, 0x3b, 0x98, 0xdd, 0xa2, 0x7a, 0x87, 0x56, 0xbf, 0x24, 0xe9, 0x40, ++ 0x96, 0xdf, 0x9e, 0xcd, 0xef, 0x1b, 0xb7, 0x67, 0xf3, 0x7b, 0xc1, 0x1d, ++ 0xd9, 0xfc, 0x9c, 0xa9, 0x0b, 0xf1, 0x3c, 0x98, 0x4c, 0xeb, 0xe4, 0xfb, ++ 0x15, 0xf0, 0x40, 0xf7, 0x2e, 0xd8, 0x1f, 0xd1, 0xa8, 0xef, 0x3e, 0xe9, ++ 0x79, 0x21, 0x5a, 0xb1, 0x20, 0x9c, 0xbd, 0x69, 0x8f, 0x22, 0xdc, 0x77, ++ 0xf3, 0xfb, 0xcd, 0x17, 0x7b, 0x0d, 0x64, 0x77, 0xa9, 0x7e, 0x3e, 0xd4, ++ 0x41, 0x7a, 0x9c, 0x4d, 0x93, 0x74, 0x78, 0x5e, 0x54, 0xab, 0x5c, 0x0e, ++ 0xae, 0xd6, 0x01, 0xf8, 0x20, 0x55, 0xee, 0xd8, 0x9d, 0x86, 0x72, 0x76, ++ 0xf3, 0x1e, 0x73, 0x16, 0xc2, 0x03, 0xe0, 0x4d, 0xf7, 0xc8, 0xde, 0x9d, ++ 0xaa, 0x18, 0x87, 0x8f, 0xfb, 0xf9, 0xae, 0x04, 0xae, 0xd7, 0xf7, 0x8a, ++ 0xfc, 0xa1, 0xf1, 0xa4, 0xd7, 0x9f, 0x1b, 0xc9, 0x6e, 0x9d, 0x4f, 0x72, ++ 0xce, 0xb6, 0x09, 0x08, 0xd7, 0xcb, 0x3b, 0x42, 0x74, 0x48, 0x17, 0x30, ++ 0x8e, 0x43, 0x01, 0xf8, 0x54, 0xdf, 0xfe, 0x0b, 0x0e, 0xcf, 0xf0, 0x4a, ++ 0x92, 0xcb, 0x61, 0xff, 0x11, 0xbf, 0xac, 0x15, 0xfc, 0xb2, 0x6e, 0xd3, ++ 0xd4, 0xf0, 0xa9, 0xb8, 0x9f, 0xde, 0x56, 0x19, 0xca, 0x05, 0x97, 0xf5, ++ 0xf6, 0x18, 0xe4, 0x87, 0x81, 0xf0, 0x7a, 0x4b, 0xf0, 0x95, 0x9a, 0x43, ++ 0x8f, 0x19, 0xd1, 0x6e, 0x57, 0x0b, 0xfb, 0xc6, 0x09, 0xfb, 0xa6, 0x46, ++ 0xd8, 0xc7, 0x6a, 0x9e, 0x52, 0x48, 0xae, 0xab, 0xd9, 0x38, 0xf5, 0x21, ++ 0xe2, 0x83, 0x7f, 0x30, 0xb0, 0xd1, 0x30, 0x8f, 0xf3, 0x9e, 0xfb, 0xc3, ++ 0xfc, 0xf1, 0xf1, 0xbc, 0xe0, 0x67, 0xbe, 0xf6, 0x76, 0xaa, 0x5f, 0x03, ++ 0xf5, 0x79, 0xfb, 0x37, 0xc2, 0x68, 0x3e, 0xbb, 0x0c, 0x76, 0x9c, 0x4f, ++ 0x20, 0x1e, 0x7f, 0x70, 0xfb, 0xa7, 0xd4, 0x1f, 0xd4, 0xbe, 0x9f, 0x3e, ++ 0x3c, 0x70, 0xae, 0x4f, 0x18, 0xb8, 0xee, 0xcb, 0xac, 0xf3, 0xdf, 0x3e, ++ 0x42, 0x7e, 0xb2, 0xd7, 0x4c, 0xfa, 0x2b, 0xc0, 0x7b, 0x22, 0xca, 0x1d, ++ 0xe7, 0x0c, 0x9e, 0x4a, 0x5c, 0xf7, 0xb9, 0x7d, 0x66, 0xe2, 0x33, 0xe7, ++ 0x22, 0xf8, 0x7e, 0xff, 0x14, 0xf8, 0xa1, 0x6b, 0x0c, 0xce, 0xe3, 0xba, ++ 0xfb, 0x48, 0xbf, 0xf1, 0xce, 0x02, 0x86, 0xe7, 0xc1, 0x0a, 0xb7, 0xb6, ++ 0x5f, 0x39, 0x6e, 0x87, 0xe0, 0xbf, 0x75, 0xc3, 0xec, 0xe1, 0xa8, 0x27, ++ 0xab, 0x03, 0x3c, 0x60, 0x7f, 0x80, 0x97, 0x9f, 0x52, 0xfb, 0xb7, 0x0d, ++ 0xd4, 0x3e, 0x70, 0x1d, 0x8f, 0x8a, 0x76, 0xfd, 0xfb, 0x73, 0x5f, 0x08, ++ 0xd1, 0xcb, 0xb9, 0x11, 0x1c, 0x1f, 0xe7, 0x9e, 0x19, 0x43, 0xe7, 0x4a, ++ 0x77, 0x04, 0xa7, 0x73, 0x98, 0x6f, 0x22, 0xde, 0x57, 0xce, 0x45, 0xf0, ++ 0x94, 0xa1, 0x30, 0x02, 0x74, 0x50, 0x2d, 0xee, 0xa3, 0xe7, 0x66, 0x78, ++ 0xe8, 0xfe, 0x7d, 0x4e, 0xd9, 0x4f, 0x69, 0xb7, 0x81, 0xb7, 0xab, 0x6e, ++ 0x14, 0x76, 0x63, 0xa0, 0xbb, 0x58, 0xa4, 0x1b, 0xa4, 0x49, 0xb4, 0x87, ++ 0x99, 0xb6, 0x74, 0xa2, 0x3c, 0x81, 0xfa, 0xea, 0x89, 0x59, 0x94, 0x7a, ++ 0x83, 0x22, 0x07, 0xea, 0x9d, 0x91, 0x3e, 0xf1, 0x1c, 0x8a, 0xca, 0xe1, ++ 0xfb, 0x8b, 0xe1, 0x78, 0xd1, 0xc2, 0xfe, 0x41, 0x72, 0x8a, 0xc7, 0x88, ++ 0x7c, 0xd9, 0x29, 0xe4, 0xb8, 0xda, 0xbd, 0x03, 0xed, 0x70, 0x88, 0xdf, ++ 0xda, 0xbd, 0x0a, 0xd9, 0x91, 0x2e, 0x8b, 0x73, 0x10, 0x67, 0x1d, 0x25, ++ 0xf5, 0xe5, 0x40, 0x8f, 0x35, 0x2e, 0xc5, 0x61, 0xc6, 0xf9, 0xb4, 0xac, ++ 0x5e, 0x49, 0x76, 0xa4, 0x86, 0xad, 0x37, 0x23, 0xbd, 0xcb, 0x75, 0xd4, ++ 0xe8, 0xd9, 0x1c, 0xbc, 0x0f, 0x75, 0x2b, 0x2a, 0xcd, 0xa7, 0xdb, 0x0c, ++ 0xfb, 0x06, 0xe1, 0xe0, 0x3f, 0x9e, 0x9f, 0xdc, 0xf5, 0x77, 0xc1, 0x0f, ++ 0xf0, 0xcf, 0x1a, 0x4d, 0x72, 0x26, 0x09, 0xd7, 0xba, 0x1c, 0x1b, 0xa7, ++ 0x1f, 0xc8, 0xb6, 0x42, 0x7f, 0xb5, 0x2d, 0xca, 0x16, 0x1a, 0x27, 0x49, ++ 0xde, 0x2b, 0xf9, 0xfa, 0x24, 0x9c, 0x00, 0x2c, 0x46, 0xd4, 0x97, 0xc1, ++ 0x7d, 0x9f, 0x97, 0x0f, 0xb1, 0x7e, 0x39, 0xcf, 0xc0, 0xf5, 0xcb, 0xf9, ++ 0x44, 0xe7, 0x70, 0xfe, 0xde, 0x9d, 0x64, 0xbb, 0x2f, 0x1f, 0xf1, 0xfd, ++ 0x96, 0x6a, 0xc7, 0x7b, 0xfa, 0xe5, 0x6f, 0xb3, 0xc3, 0x23, 0xbf, 0x43, ++ 0x2e, 0xc3, 0x9b, 0x5b, 0xbf, 0xde, 0x18, 0xe6, 0x9f, 0x82, 0x34, 0x05, ++ 0xeb, 0x3a, 0x8b, 0xfc, 0x0d, 0xf7, 0x33, 0xea, 0xa5, 0x61, 0x9e, 0x69, ++ 0xdb, 0xb4, 0xf6, 0x90, 0xf4, 0x1d, 0xda, 0xfc, 0x55, 0x7b, 0xb5, 0xf9, ++ 0x8c, 0x03, 0xda, 0xfc, 0x84, 0x0e, 0x6d, 0xde, 0xfe, 0x8a, 0x36, 0x1f, ++ 0x22, 0xc6, 0x95, 0x70, 0xc2, 0x7b, 0xaf, 0x6d, 0x0c, 0xbf, 0xf7, 0x62, ++ 0x8a, 0xf7, 0x5e, 0x5b, 0x10, 0xbf, 0xf7, 0x62, 0x1e, 0xef, 0xbd, 0x98, ++ 0xe2, 0xbd, 0x17, 0xbf, 0xe3, 0xbd, 0x17, 0xf3, 0x78, 0xef, 0xc5, 0x3c, ++ 0xde, 0x7b, 0x31, 0x8f, 0xf7, 0x5e, 0x4c, 0xf1, 0xde, 0x8b, 0xdf, 0x6f, ++ 0x14, 0x70, 0xaa, 0x15, 0x7a, 0x47, 0xc4, 0x03, 0xda, 0x65, 0xd8, 0x0b, ++ 0x66, 0x69, 0x67, 0xa7, 0xfd, 0xd2, 0xb3, 0x24, 0x9a, 0xf8, 0xa7, 0xb4, ++ 0x93, 0xf6, 0xac, 0xcc, 0xa0, 0x7c, 0xbf, 0x5e, 0x67, 0x9e, 0x89, 0xf4, ++ 0x3a, 0xa4, 0xbb, 0x01, 0xb9, 0x64, 0xc1, 0x48, 0x67, 0x41, 0xce, 0x70, ++ 0xb4, 0x9f, 0x76, 0x6e, 0x8c, 0x43, 0xbc, 0xe9, 0xbb, 0x48, 0x9f, 0xbb, ++ 0xea, 0x45, 0xae, 0xcf, 0xad, 0xcd, 0x32, 0x5b, 0x50, 0xcf, 0xd0, 0xb5, ++ 0xe1, 0xd3, 0x8d, 0x28, 0x3e, 0xa5, 0x8d, 0x74, 0xce, 0xca, 0x81, 0xf5, ++ 0xf6, 0x18, 0x7a, 0x77, 0x11, 0x1d, 0xe8, 0xbd, 0xc4, 0x37, 0xba, 0xd6, ++ 0xdb, 0xde, 0x9e, 0xce, 0xf1, 0x47, 0xfa, 0x0e, 0x66, 0x89, 0xa4, 0xfb, ++ 0x49, 0x19, 0x9e, 0x77, 0x91, 0x43, 0xe3, 0x31, 0xd0, 0xae, 0xc2, 0xb6, ++ 0x68, 0xed, 0x28, 0x81, 0x76, 0x95, 0x40, 0x7b, 0x4a, 0x20, 0x1d, 0x48, ++ 0x3b, 0xca, 0x13, 0x86, 0xde, 0x38, 0xe4, 0xf7, 0xa7, 0xf7, 0x98, 0xb6, ++ 0xe0, 0xfc, 0x4f, 0x0b, 0x3d, 0x19, 0x5b, 0x6c, 0x22, 0xf9, 0x4b, 0xca, ++ 0xd5, 0x45, 0xaa, 0x85, 0xe0, 0xb4, 0xe6, 0x5e, 0xe5, 0x49, 0x3c, 0xa7, ++ 0x2a, 0x72, 0x22, 0xa9, 0x7d, 0xdf, 0x09, 0x90, 0xb7, 0x07, 0x39, 0x6f, ++ 0x65, 0x5a, 0x7e, 0x25, 0x9b, 0xe4, 0xea, 0xfe, 0xfc, 0x16, 0x45, 0x47, ++ 0x76, 0x1a, 0xa7, 0x83, 0xce, 0xa1, 0xdb, 0xc4, 0x9c, 0x12, 0x95, 0xde, ++ 0xee, 0x4d, 0x48, 0x23, 0xa1, 0x3a, 0x3a, 0xc7, 0x2f, 0x5b, 0x74, 0x74, ++ 0x2f, 0xb8, 0xfc, 0x27, 0x95, 0xe4, 0x88, 0x31, 0xed, 0x3a, 0xcd, 0x7a, ++ 0xc6, 0xba, 0x83, 0x35, 0xf4, 0x35, 0x6e, 0x77, 0x64, 0x80, 0x3d, 0x70, ++ 0x84, 0xa6, 0xfe, 0xd5, 0x87, 0x93, 0x03, 0xec, 0x81, 0x57, 0x69, 0xed, ++ 0x54, 0x37, 0xae, 0x3f, 0x8a, 0xf7, 0xeb, 0x05, 0x5b, 0xb2, 0x35, 0xf5, ++ 0x2a, 0x8a, 0xa7, 0x06, 0xc0, 0x51, 0xcc, 0x5b, 0xc8, 0xa5, 0xcd, 0xeb, ++ 0xda, 0x13, 0x91, 0xff, 0xdc, 0x16, 0xda, 0x47, 0xf3, 0xbf, 0xed, 0xa0, ++ 0x99, 0xfc, 0x2e, 0x2a, 0xe0, 0x7c, 0x71, 0xc0, 0xba, 0xab, 0x30, 0x03, ++ 0xfc, 0xb1, 0xca, 0xe4, 0xb8, 0x01, 0xe1, 0x57, 0xe5, 0x31, 0x44, 0xa0, ++ 0x5e, 0xab, 0x5c, 0x9c, 0x3f, 0xac, 0x51, 0x7b, 0x1e, 0x57, 0xe9, 0x99, ++ 0xcb, 0x1a, 0xe9, 0xa3, 0xbb, 0x2a, 0x2b, 0x73, 0x44, 0x40, 0xfb, 0x0b, ++ 0x99, 0xad, 0xbb, 0x74, 0x80, 0xb7, 0x0b, 0xba, 0x6d, 0x0f, 0xe6, 0xdb, ++ 0xd0, 0xbe, 0xb4, 0x3d, 0xd1, 0x0a, 0x74, 0xb5, 0x56, 0xf1, 0x44, 0x4f, ++ 0x86, 0xfe, 0x4e, 0x47, 0x38, 0xff, 0x03, 0xe9, 0x33, 0xd1, 0xe0, 0xfd, ++ 0x55, 0x09, 0xf2, 0xcb, 0xfd, 0x29, 0x6c, 0x3d, 0xd4, 0x3b, 0xbd, 0xe5, ++ 0xb9, 0x30, 0x92, 0xbb, 0x05, 0x9d, 0x25, 0x1a, 0xac, 0xc1, 0x88, 0xef, ++ 0xed, 0xad, 0x2a, 0xdd, 0x0b, 0x50, 0x3f, 0x85, 0xfa, 0x20, 0x49, 0x0f, ++ 0xdb, 0x5b, 0x87, 0x05, 0xa7, 0x5a, 0x7c, 0xeb, 0xf4, 0xe1, 0xff, 0x5b, ++ 0x5a, 0x1f, 0xe0, 0x85, 0xfc, 0x46, 0xfa, 0x2c, 0xc7, 0x46, 0xde, 0x86, ++ 0x72, 0x9c, 0x87, 0xaf, 0xb7, 0x6a, 0x86, 0xe2, 0x22, 0x39, 0x59, 0xac, ++ 0x67, 0x8d, 0x38, 0x57, 0x58, 0x0b, 0xef, 0x67, 0xad, 0xc8, 0x9f, 0x11, ++ 0xf7, 0x05, 0xb9, 0xbe, 0xf3, 0x63, 0x8f, 0x4e, 0xb0, 0xa1, 0x5d, 0xb3, ++ 0xe9, 0x70, 0xa2, 0x8a, 0x7c, 0x5c, 0xb7, 0x77, 0x57, 0x1c, 0xca, 0x17, ++ 0x31, 0xce, 0x7d, 0xb8, 0x7f, 0xaa, 0xb6, 0x8f, 0xfe, 0xaf, 0x7c, 0x18, ++ 0xb7, 0xfa, 0x3d, 0x95, 0xa1, 0x1d, 0xf9, 0x93, 0xb6, 0x59, 0x61, 0x93, ++ 0x51, 0xfe, 0xdc, 0x67, 0xb0, 0xcf, 0x85, 0xfc, 0xa6, 0xd6, 0x5f, 0x1b, ++ 0xf1, 0x5e, 0x50, 0xad, 0x77, 0x1b, 0xf1, 0xde, 0x59, 0xb5, 0x67, 0xbb, ++ 0x11, 0xed, 0xff, 0x3f, 0xd9, 0xbd, 0x9d, 0xbe, 0x57, 0xee, 0x2e, 0xa3, ++ 0xfb, 0xf6, 0x0a, 0xd6, 0x40, 0xf7, 0xc8, 0xcf, 0x0c, 0xfc, 0x9c, 0x96, ++ 0xf0, 0xa8, 0x9a, 0xa9, 0x6c, 0xb3, 0xc2, 0xbc, 0x87, 0xe7, 0x72, 0xb9, ++ 0xaf, 0x2a, 0x98, 0xfb, 0x83, 0x14, 0xa9, 0xf9, 0xaf, 0x46, 0xe1, 0x7a, ++ 0x77, 0x2b, 0x99, 0xb8, 0xde, 0x1b, 0x8b, 0xf7, 0x1b, 0xcb, 0xe0, 0xfb, ++ 0xef, 0x04, 0x7f, 0x09, 0xdc, 0x1f, 0x7d, 0x6f, 0x2e, 0x28, 0x1a, 0x8e, ++ 0x7a, 0x25, 0x0f, 0xb7, 0x83, 0x0e, 0xb5, 0x1f, 0x16, 0x7a, 0xc7, 0xd2, ++ 0x7e, 0x58, 0x70, 0x25, 0x89, 0xd2, 0x1b, 0xaf, 0x8c, 0xa3, 0x7b, 0xd5, ++ 0x7b, 0xac, 0x78, 0x3c, 0xf1, 0x89, 0x8c, 0x80, 0xfb, 0xec, 0x9b, 0x2a, ++ 0xd7, 0x9b, 0x75, 0xf0, 0x7d, 0x50, 0x65, 0xf4, 0x46, 0x2d, 0xc0, 0x7d, ++ 0xf2, 0xb2, 0x81, 0xf6, 0x49, 0x1d, 0xf0, 0xaf, 0xbc, 0x2c, 0xbc, 0x27, ++ 0x33, 0x36, 0x05, 0xd2, 0xe2, 0x7c, 0x55, 0x43, 0xaf, 0xab, 0x0a, 0x43, ++ 0x34, 0xf4, 0xbc, 0x98, 0x45, 0x6a, 0xec, 0xca, 0x8b, 0xd8, 0x08, 0x4d, ++ 0xfe, 0xc6, 0xb9, 0x29, 0x9a, 0xfa, 0x37, 0xdd, 0x38, 0x2e, 0x80, 0xfe, ++ 0xb3, 0x7c, 0xe5, 0xc4, 0x47, 0xa6, 0x68, 0xfc, 0x57, 0xea, 0xd6, 0xb9, ++ 0x6c, 0x0a, 0xe9, 0xd1, 0x66, 0x6a, 0xbf, 0x43, 0xba, 0x8e, 0xe8, 0xec, ++ 0x5a, 0x4d, 0xfb, 0x3a, 0x36, 0xdf, 0x57, 0x0f, 0xef, 0xc1, 0x3b, 0xfe, ++ 0x48, 0x70, 0x66, 0xac, 0xd3, 0x88, 0xf7, 0xad, 0x2a, 0x1d, 0xf7, 0xd7, ++ 0x59, 0xec, 0xec, 0x16, 0xdf, 0xbb, 0xe8, 0x3b, 0x2c, 0x44, 0xb3, 0x0f, ++ 0x47, 0xa5, 0xd8, 0xff, 0x8b, 0x9f, 0x8b, 0x06, 0xd2, 0xcf, 0x4b, 0xfd, ++ 0xf4, 0x62, 0xfc, 0x77, 0xca, 0x60, 0xe7, 0x22, 0x20, 0x5a, 0x8c, 0x1b, ++ 0xae, 0x72, 0xfd, 0x82, 0x53, 0x2b, 0x77, 0x74, 0xd2, 0xfd, 0x93, 0x71, ++ 0x3c, 0xd4, 0x09, 0x7d, 0x4f, 0x5d, 0x3a, 0xd7, 0xf7, 0xd4, 0xb9, 0x3a, ++ 0x8d, 0x0d, 0x16, 0x82, 0xbf, 0x3e, 0x1e, 0x40, 0x52, 0xdf, 0xaa, 0x90, ++ 0x3e, 0x0f, 0xea, 0x9b, 0xe2, 0x23, 0x79, 0x7e, 0x1d, 0x7e, 0x3f, 0x60, ++ 0xf0, 0xe9, 0x59, 0x18, 0xef, 0xef, 0x0a, 0x96, 0x9f, 0x50, 0xcb, 0x70, ++ 0xbf, 0x04, 0x96, 0xd7, 0xc3, 0xba, 0x51, 0xce, 0xa8, 0x47, 0x7d, 0x0d, ++ 0xe9, 0x99, 0xe6, 0x7c, 0x4a, 0x7a, 0x26, 0x39, 0x8e, 0xe8, 0x5f, 0xd2, ++ 0xe9, 0x8a, 0x76, 0xad, 0xfe, 0xa8, 0x1e, 0xf5, 0x3a, 0x7e, 0xf8, 0x5c, ++ 0x9a, 0x6b, 0x23, 0x7a, 0xad, 0xde, 0xbd, 0xff, 0xb5, 0x11, 0x00, 0x9f, ++ 0x05, 0xc5, 0x11, 0x99, 0xb8, 0x8f, 0x6a, 0x3d, 0xf3, 0x0c, 0x65, 0x19, ++ 0x03, 0xe9, 0x4d, 0xf2, 0xf9, 0xcb, 0x55, 0x3a, 0xb2, 0x7b, 0xf7, 0xbd, ++ 0x79, 0x9c, 0xe8, 0xad, 0xaf, 0x4a, 0x4f, 0x74, 0xfd, 0x7d, 0x70, 0xa9, ++ 0x77, 0x70, 0xbd, 0x66, 0x20, 0x1d, 0x56, 0xc2, 0xba, 0x4c, 0x30, 0x7e, ++ 0xe5, 0x01, 0xc5, 0xee, 0x56, 0x78, 0x3d, 0x84, 0xcf, 0x08, 0xa4, 0xcf, ++ 0x00, 0xf8, 0xc4, 0x0f, 0x02, 0x37, 0x09, 0xaf, 0x7e, 0xf8, 0x05, 0x94, ++ 0xaf, 0xc0, 0x7f, 0xe4, 0xa0, 0x3f, 0x81, 0xe2, 0xf6, 0x26, 0x0d, 0x06, ++ 0x97, 0x00, 0x78, 0xca, 0x71, 0x02, 0xe0, 0xc5, 0xf2, 0xb4, 0xf0, 0xa8, ++ 0x74, 0xda, 0xde, 0x46, 0xfe, 0x53, 0x79, 0x42, 0x65, 0xee, 0x1f, 0xb0, ++ 0xfe, 0x15, 0xb8, 0x4e, 0x9c, 0x07, 0xac, 0x13, 0xe7, 0x31, 0xff, 0x0a, ++ 0xd7, 0x9b, 0x48, 0x7b, 0xc2, 0xa2, 0x2b, 0x7a, 0xca, 0xf7, 0xd3, 0x4d, ++ 0x31, 0xc0, 0x2b, 0x0b, 0xf7, 0x9d, 0x76, 0x9f, 0xf6, 0xd3, 0x51, 0x31, ++ 0xdf, 0x37, 0x0b, 0xaf, 0x44, 0x53, 0xbb, 0x1f, 0x8b, 0x9e, 0xbe, 0x8f, ++ 0x8e, 0xe4, 0xfc, 0x25, 0xdf, 0xf6, 0xed, 0xa3, 0x3b, 0x89, 0x6f, 0x3a, ++ 0x73, 0x43, 0xa3, 0xce, 0x02, 0xab, 0x80, 0x7f, 0xe7, 0x12, 0x5f, 0x10, ++ 0xfc, 0x75, 0x68, 0xb9, 0xd4, 0xc5, 0xf9, 0xa8, 0x53, 0x7b, 0xce, 0x8c, ++ 0xba, 0x23, 0x8f, 0xfc, 0x8e, 0xfa, 0x2c, 0xc9, 0x24, 0x57, 0xf4, 0x9f, ++ 0x43, 0x56, 0x6d, 0xf9, 0x9a, 0xd0, 0xe4, 0x18, 0x2c, 0x77, 0x0a, 0xbd, ++ 0x9d, 0xe4, 0xc7, 0x4e, 0x51, 0x4f, 0x8e, 0x53, 0x06, 0xe5, 0xb6, 0x61, ++ 0x48, 0xd7, 0x23, 0xa3, 0x51, 0x1f, 0xbb, 0xb1, 0x25, 0x25, 0xb1, 0xcb, ++ 0x4f, 0x5e, 0x71, 0x6e, 0x30, 0x44, 0xa3, 0xbe, 0x30, 0x71, 0xfd, 0x30, ++ 0x4a, 0xcb, 0xcc, 0xd6, 0x68, 0x3c, 0x47, 0xca, 0xd6, 0xab, 0xc5, 0x78, ++ 0x3e, 0x9e, 0xba, 0x2b, 0x26, 0x3a, 0x0f, 0xf5, 0xf3, 0x1b, 0x0c, 0x51, ++ 0x73, 0xa1, 0xeb, 0x53, 0x3f, 0xcf, 0x49, 0x64, 0xe3, 0x31, 0x5f, 0x44, ++ 0xe9, 0xe9, 0xad, 0x41, 0x8b, 0xfd, 0xf5, 0xdc, 0x32, 0xbd, 0x4b, 0x9c, ++ 0x27, 0x75, 0x77, 0x7c, 0x40, 0xe7, 0xda, 0x05, 0xdd, 0x9b, 0x61, 0x8b, ++ 0x71, 0xdf, 0x6d, 0x38, 0x18, 0x86, 0xae, 0x37, 0x35, 0x1b, 0xde, 0x9d, ++ 0x68, 0x05, 0x91, 0x64, 0x53, 0x84, 0x73, 0x73, 0x2e, 0xd9, 0x51, 0xb7, ++ 0xef, 0xb2, 0x22, 0xdc, 0xac, 0xdb, 0x27, 0xa0, 0x9e, 0xba, 0x1d, 0xef, ++ 0x1e, 0xc3, 0x7d, 0xf2, 0x43, 0xf5, 0x86, 0xa2, 0x18, 0xd4, 0x8b, 0xd5, ++ 0xfe, 0xfd, 0xf8, 0xe3, 0x78, 0xee, 0x3b, 0xd7, 0x1b, 0xa2, 0x51, 0xfe, ++ 0xfc, 0xfc, 0x4f, 0x70, 0x2e, 0x2a, 0x74, 0xae, 0x91, 0xdc, 0xf0, 0x99, ++ 0x99, 0xd1, 0x7d, 0xe9, 0xb3, 0x9d, 0x21, 0x6e, 0xb4, 0xdf, 0x7f, 0xa6, ++ 0x30, 0x07, 0xda, 0x77, 0x56, 0xaa, 0x47, 0x27, 0x58, 0x35, 0xe7, 0x6c, ++ 0xc7, 0x22, 0x9c, 0xc7, 0xee, 0x18, 0x67, 0x3b, 0x1f, 0xdf, 0xbd, 0x2b, ++ 0x16, 0xc7, 0xb7, 0xbb, 0xc8, 0x3f, 0xd3, 0xb9, 0x7e, 0x74, 0xf8, 0x60, ++ 0x7a, 0x14, 0x99, 0xae, 0x6a, 0xe7, 0x72, 0xdd, 0x2e, 0xa9, 0xc7, 0x15, ++ 0xfa, 0x5e, 0x94, 0xe7, 0x31, 0x8f, 0xf2, 0x3c, 0x1b, 0xc3, 0xe5, 0x79, ++ 0xcc, 0xa3, 0x3c, 0x8f, 0x29, 0xca, 0xf3, 0xf8, 0xfd, 0x90, 0xd0, 0xe3, ++ 0x8f, 0x6a, 0xee, 0xcd, 0xc4, 0xfb, 0xa8, 0x6b, 0x26, 0x4b, 0x6f, 0xa0, ++ 0x73, 0xd7, 0x92, 0x8e, 0xf2, 0xfa, 0x6d, 0x4a, 0xb0, 0x1d, 0xf9, 0xcf, ++ 0x6d, 0x8a, 0x3d, 0x06, 0xf5, 0x63, 0xec, 0x4f, 0x11, 0xfc, 0xbc, 0x0d, ++ 0xc0, 0xaf, 0x4c, 0xa7, 0xf5, 0x82, 0xcc, 0xe5, 0x47, 0xf7, 0xd3, 0xaf, ++ 0x98, 0x98, 0xbf, 0x9f, 0xd9, 0x0c, 0x16, 0xa1, 0xc9, 0xcf, 0x32, 0xc5, ++ 0x69, 0xea, 0x17, 0x59, 0x93, 0x34, 0xe5, 0x3f, 0x89, 0x1d, 0xab, 0x29, ++ 0xbf, 0xc6, 0x96, 0xa9, 0xc9, 0x5f, 0x97, 0x3e, 0x59, 0x53, 0xff, 0x7a, ++ 0xfb, 0x0c, 0x4d, 0xfe, 0xa7, 0x79, 0xd7, 0x68, 0xea, 0xcf, 0x73, 0xcc, ++ 0xd3, 0xe4, 0x17, 0xcc, 0x59, 0xa2, 0xa9, 0xbf, 0xb0, 0xb8, 0x4c, 0x53, ++ 0x7e, 0xd3, 0xe2, 0x95, 0x9a, 0xf2, 0x25, 0xce, 0xd5, 0x9a, 0xfc, 0xcd, ++ 0x55, 0x3f, 0xd7, 0xd4, 0xbf, 0xa5, 0x61, 0xbd, 0xa6, 0xdc, 0xc1, 0xac, ++ 0x7a, 0x3c, 0xf7, 0x3a, 0xf0, 0x9e, 0x05, 0x70, 0x7f, 0x19, 0xef, 0x59, ++ 0x90, 0xde, 0xf6, 0xd6, 0x68, 0x8b, 0x3f, 0x5e, 0xf3, 0x67, 0xe9, 0x1a, ++ 0x06, 0xd3, 0xd3, 0x7f, 0x2c, 0xe8, 0x37, 0x63, 0x92, 0xe3, 0x43, 0xa4, ++ 0x8f, 0x04, 0x1d, 0xa7, 0x43, 0x48, 0x1d, 0x28, 0x42, 0x5c, 0x10, 0xe7, ++ 0x4a, 0x3c, 0xf3, 0x2a, 0xfc, 0x9e, 0xdb, 0x19, 0x87, 0x74, 0x13, 0x58, ++ 0x2f, 0xb0, 0x3c, 0x3f, 0xe4, 0xd8, 0x65, 0x1b, 0xe0, 0xf0, 0xa6, 0x89, ++ 0x21, 0x37, 0xeb, 0x81, 0x3f, 0xe4, 0x4f, 0x3a, 0x96, 0x9d, 0x02, 0xf9, ++ 0x27, 0x0e, 0xcd, 0xe3, 0xf9, 0xa9, 0xc7, 0x9e, 0x4b, 0x86, 0xfc, 0x6f, ++ 0x26, 0xde, 0xc7, 0xf3, 0x57, 0x1f, 0xbb, 0x8c, 0xe5, 0xa3, 0x9e, 0x5f, ++ 0x74, 0xb3, 0x1e, 0xf8, 0x4e, 0xfe, 0x02, 0x46, 0x22, 0xc7, 0x73, 0x87, ++ 0xbe, 0x5e, 0xea, 0x82, 0x75, 0xe4, 0x4f, 0x4f, 0xde, 0x62, 0xe7, 0x7a, ++ 0x92, 0x41, 0xfd, 0x34, 0xfb, 0xf5, 0x2c, 0x00, 0x07, 0xf4, 0x6f, 0x44, ++ 0x38, 0x60, 0xea, 0x05, 0xfa, 0xc4, 0xf4, 0x18, 0xd0, 0x27, 0xa6, 0xaf, ++ 0x00, 0x7d, 0x56, 0x18, 0x18, 0x7b, 0x0d, 0xe8, 0x13, 0xd3, 0x13, 0x70, ++ 0xdf, 0xc4, 0xef, 0xaf, 0xc3, 0x7d, 0x13, 0xd3, 0x37, 0xe1, 0xbe, 0x89, ++ 0xe9, 0x1f, 0xe0, 0xbe, 0x89, 0x69, 0x27, 0xdc, 0x37, 0x31, 0x7d, 0xa7, ++ 0x69, 0x31, 0xa5, 0x7f, 0x6a, 0x72, 0x52, 0xbb, 0xf7, 0x9b, 0xaa, 0x28, ++ 0xfd, 0xa0, 0xa9, 0x81, 0xbe, 0x7f, 0xd8, 0xd4, 0x48, 0xe9, 0x5f, 0x9a, ++ 0x5c, 0xf4, 0xdd, 0x3c, 0x51, 0xea, 0x2f, 0xbc, 0xa4, 0x7f, 0x91, 0x76, ++ 0xa6, 0x7a, 0xb4, 0xef, 0xa1, 0x7e, 0xee, 0xb0, 0xe1, 0xbc, 0xbf, 0x1d, ++ 0x56, 0xda, 0x09, 0xa5, 0x5d, 0xb0, 0xb9, 0x81, 0x75, 0x85, 0xe0, 0x3e, ++ 0xed, 0xd2, 0x47, 0x9c, 0x35, 0xf9, 0xec, 0x7d, 0x43, 0xf3, 0x59, 0x3d, ++ 0x3b, 0xeb, 0x27, 0x87, 0x6d, 0x8d, 0x75, 0x44, 0x4d, 0x24, 0xbd, 0xc6, ++ 0x48, 0x2b, 0xd9, 0x7b, 0xc4, 0xf7, 0x99, 0xca, 0x82, 0x04, 0x34, 0xfd, ++ 0xcd, 0x9d, 0xe0, 0x1c, 0x81, 0xe5, 0x0b, 0xb3, 0xca, 0x37, 0x84, 0x03, ++ 0xff, 0x98, 0xfe, 0x6d, 0x83, 0x01, 0xe9, 0xe5, 0x3d, 0xe1, 0xa7, 0x1a, ++ 0xd8, 0xff, 0x85, 0x5c, 0x2e, 0x0f, 0x1b, 0x26, 0x39, 0x46, 0x4d, 0x84, ++ 0xb4, 0xc0, 0xc4, 0xfd, 0xf0, 0x0a, 0x4c, 0xdc, 0xcf, 0xae, 0x40, 0xdf, ++ 0xd5, 0x8c, 0xfc, 0xa8, 0xf9, 0x2b, 0x66, 0x43, 0x3f, 0x9a, 0xa3, 0xa1, ++ 0x46, 0xe2, 0x4f, 0xcd, 0x77, 0xe9, 0xdd, 0xa8, 0xa7, 0x54, 0xbe, 0x64, ++ 0x94, 0x9f, 0x16, 0xc5, 0x28, 0xdf, 0xfc, 0x55, 0x27, 0xf9, 0xe5, 0x15, ++ 0x58, 0xed, 0xb1, 0x74, 0xde, 0x88, 0x7c, 0xbf, 0xfd, 0x1c, 0xff, 0xfc, ++ 0xfc, 0x65, 0xa4, 0x3d, 0x5b, 0xfa, 0xc9, 0x14, 0x7e, 0xd9, 0x35, 0x0b, ++ 0xe5, 0x80, 0x69, 0x16, 0xa3, 0x2d, 0x28, 0xc0, 0xfe, 0x8e, 0x76, 0xeb, ++ 0xa3, 0xa1, 0xef, 0xcb, 0xf9, 0x30, 0x1c, 0x4f, 0xda, 0xc9, 0x77, 0x7c, ++ 0xc5, 0xbc, 0xba, 0x09, 0x3e, 0x7b, 0x78, 0x81, 0xa9, 0x33, 0x09, 0xf5, ++ 0x04, 0xd3, 0xd6, 0x9a, 0xec, 0xfe, 0xfe, 0x3f, 0xd2, 0xee, 0xad, 0x7c, ++ 0xd9, 0xa9, 0xe2, 0x79, 0x22, 0xfd, 0x7c, 0xe4, 0x38, 0x72, 0xbe, 0xa1, ++ 0x7a, 0xe8, 0x2f, 0xcb, 0xe7, 0xc7, 0x53, 0x60, 0xf5, 0x64, 0xa2, 0x5f, ++ 0x43, 0x73, 0x9d, 0x85, 0xfa, 0x8b, 0x81, 0xef, 0xc6, 0x2c, 0xaa, 0xe7, ++ 0x50, 0xa9, 0x9d, 0x27, 0x13, 0xf5, 0xc0, 0xd3, 0x6a, 0x2d, 0x76, 0xd4, ++ 0x6f, 0x4b, 0x7b, 0x7b, 0x8c, 0x58, 0x37, 0xd4, 0xa3, 0x75, 0x16, 0x7e, ++ 0xe9, 0x24, 0x7f, 0x83, 0x69, 0xc2, 0xdf, 0x00, 0xfb, 0x31, 0xf1, 0x72, ++ 0x17, 0xf6, 0x33, 0x2d, 0xca, 0x1b, 0xa7, 0xc7, 0xf5, 0x37, 0x18, 0xed, ++ 0xa8, 0x0f, 0x7d, 0x4c, 0x81, 0xf6, 0x59, 0x3e, 0xfb, 0x3f, 0xd6, 0x0f, ++ 0xf1, 0xdb, 0xbf, 0x38, 0x4f, 0xec, 0x37, 0xf5, 0x6b, 0x98, 0x2f, 0xca, ++ 0xed, 0x0e, 0x07, 0xc1, 0x77, 0x81, 0xbc, 0xbf, 0xd9, 0x44, 0x5e, 0x9c, ++ 0xcf, 0xcc, 0x34, 0x93, 0xf4, 0x57, 0xaa, 0xc8, 0x1f, 0x9b, 0xe0, 0x74, ++ 0x22, 0xde, 0x8b, 0x83, 0xac, 0x7f, 0x0d, 0xa1, 0x7d, 0x9e, 0x92, 0x80, ++ 0x7a, 0x8e, 0x79, 0x42, 0x6e, 0xff, 0x0e, 0x7a, 0x59, 0x8e, 0x74, 0xf6, ++ 0xdf, 0xa7, 0x17, 0x07, 0xc7, 0xf7, 0x48, 0x46, 0xfa, 0xb4, 0x40, 0xba, ++ 0x91, 0x78, 0x91, 0x78, 0x1e, 0x8a, 0x8e, 0x24, 0xde, 0xfd, 0xfc, 0xb5, ++ 0x08, 0xcf, 0xfd, 0xfe, 0x57, 0xa2, 0x9f, 0x40, 0xfa, 0x1a, 0x8a, 0xae, ++ 0x24, 0x3d, 0x15, 0x98, 0x38, 0xde, 0x11, 0xaf, 0xe8, 0x47, 0x23, 0xe9, ++ 0x48, 0xf9, 0xd2, 0xb3, 0x9d, 0xd6, 0x51, 0x6b, 0xa2, 0x73, 0x4e, 0xd2, ++ 0x51, 0x20, 0x1d, 0x0c, 0xa4, 0x23, 0x4e, 0x97, 0xcd, 0x3f, 0x33, 0x51, ++ 0x7f, 0x03, 0xe9, 0xc8, 0x87, 0x7f, 0x84, 0xc7, 0xbf, 0x4e, 0x47, 0x9d, ++ 0x2a, 0x9e, 0xbb, 0xff, 0x2c, 0xfd, 0xdc, 0xda, 0xcb, 0x66, 0x87, 0x43, ++ 0xd1, 0x2f, 0xae, 0x76, 0x5e, 0xc8, 0x45, 0x7f, 0xa0, 0x2b, 0xb6, 0xd7, ++ 0x30, 0x5f, 0xce, 0x66, 0xcc, 0x46, 0x92, 0x92, 0xe5, 0x2d, 0x43, 0x94, ++ 0x07, 0xd2, 0x97, 0xac, 0xff, 0x34, 0xd6, 0xcf, 0x1d, 0x58, 0xdf, 0xf9, ++ 0x65, 0xaf, 0x21, 0xdc, 0x8f, 0x2e, 0xa7, 0x89, 0x33, 0xf0, 0xf5, 0x21, ++ 0xfa, 0x7f, 0x43, 0xf8, 0xc5, 0xbf, 0x61, 0x96, 0xfe, 0x1e, 0x0e, 0x4b, ++ 0x26, 0xd0, 0xc1, 0x2c, 0xc1, 0x87, 0x6f, 0x2b, 0xe2, 0xf4, 0x35, 0x27, ++ 0x49, 0x25, 0x7b, 0xc6, 0xac, 0x8c, 0x15, 0x24, 0xdf, 0x33, 0x0b, 0x97, ++ 0x8f, 0x6d, 0xf0, 0x3f, 0xd2, 0xb7, 0x09, 0xfb, 0xfa, 0xb5, 0xa2, 0xdd, ++ 0xec, 0x6f, 0x8b, 0x5b, 0x70, 0x9c, 0xd9, 0x51, 0x5a, 0xf9, 0xfb, 0x5a, ++ 0x21, 0x77, 0xcf, 0x09, 0xb0, 0xb7, 0x5f, 0x9b, 0xf1, 0x13, 0x92, 0xc3, ++ 0xaf, 0x0d, 0x90, 0xb3, 0x7f, 0x3f, 0x51, 0xc8, 0xd1, 0x49, 0x2c, 0x89, ++ 0xdf, 0xaf, 0xb7, 0x90, 0xfc, 0x5b, 0x28, 0xf6, 0x63, 0xbc, 0xc0, 0x77, ++ 0x8a, 0x4d, 0x65, 0xf9, 0x00, 0xf7, 0x22, 0xe6, 0xd4, 0xe3, 0x21, 0xf0, ++ 0xca, 0x45, 0xa3, 0x03, 0xfb, 0xfb, 0x09, 0x73, 0x51, 0xfe, 0x1a, 0xe6, ++ 0xa6, 0xf4, 0x3a, 0xe6, 0x25, 0x39, 0xe0, 0x7a, 0x38, 0x30, 0x30, 0xff, ++ 0x53, 0xd8, 0x7a, 0x98, 0x3f, 0x1e, 0x72, 0x43, 0xc9, 0x2a, 0xe8, 0x6f, ++ 0x56, 0xf6, 0xac, 0x54, 0xfc, 0x5e, 0x6b, 0xea, 0x4d, 0x34, 0xea, 0xd0, ++ 0x3b, 0xd0, 0xf9, 0x21, 0xee, 0xe7, 0x7a, 0xd5, 0xf9, 0x31, 0xca, 0x99, ++ 0x17, 0x12, 0x9c, 0x63, 0xf0, 0x7e, 0x7c, 0xac, 0xd0, 0x46, 0x72, 0xd8, ++ 0x31, 0x53, 0x0a, 0xc9, 0x85, 0xb8, 0x9f, 0x0c, 0x7e, 0xfa, 0xca, 0xdf, ++ 0xc3, 0x39, 0x9a, 0x0a, 0xe7, 0xdc, 0x71, 0x38, 0x67, 0x31, 0x7d, 0x15, ++ 0xce, 0xd9, 0x54, 0x38, 0xef, 0x7e, 0x07, 0xe7, 0x2c, 0xe6, 0xaf, 0x4d, ++ 0x5f, 0xcf, 0xb0, 0xdd, 0x6c, 0x9b, 0xd6, 0xbf, 0x47, 0xb6, 0xbf, 0xce, ++ 0x3a, 0x8b, 0xe9, 0x87, 0x0d, 0x7d, 0x8e, 0x5d, 0x37, 0xe1, 0x85, 0x91, ++ 0xa8, 0xc7, 0x7a, 0x23, 0x62, 0x4c, 0x21, 0xe2, 0xed, 0x8d, 0x88, 0x49, ++ 0x85, 0xb8, 0xde, 0x37, 0x22, 0x62, 0x74, 0x3c, 0x0d, 0x32, 0x52, 0x3a, ++ 0xfe, 0xf9, 0xd4, 0xc1, 0xe4, 0x56, 0x49, 0xaf, 0xbe, 0xf1, 0x66, 0xd3, ++ 0x78, 0x81, 0xf0, 0x95, 0xf0, 0x0c, 0x84, 0xa3, 0x84, 0xef, 0xbf, 0x00, ++ 0x4f, 0xfd, 0xa4, 0xdc, 0x81, 0xf0, 0xbc, 0x80, 0x67, 0x30, 0xea, 0x4f, ++ 0x4d, 0xef, 0x86, 0xc5, 0x26, 0xa3, 0x9d, 0x51, 0xc4, 0xd3, 0x85, 0x70, ++ 0x3e, 0x58, 0xf7, 0xfc, 0xf8, 0x18, 0x5c, 0x47, 0xad, 0x89, 0xc3, 0x65, ++ 0x5a, 0xe3, 0x54, 0x4a, 0x0b, 0x1a, 0x27, 0x33, 0x7d, 0x36, 0xd9, 0x99, ++ 0x5c, 0x08, 0xdf, 0xcf, 0x71, 0x09, 0xa8, 0x70, 0x0e, 0xd0, 0xb3, 0x31, ++ 0xfd, 0x4c, 0xca, 0xff, 0x4c, 0xd0, 0x56, 0x7a, 0x8c, 0x33, 0x1a, 0xe7, ++ 0x71, 0x3e, 0xcb, 0x9b, 0x06, 0x12, 0x19, 0xfb, 0x74, 0x5b, 0x73, 0x18, ++ 0xfa, 0x67, 0x5e, 0x78, 0x46, 0xb5, 0xe3, 0xbd, 0xa6, 0x56, 0xb5, 0x6d, ++ 0xb1, 0xa3, 0x9e, 0xfc, 0x0d, 0x95, 0xc7, 0x05, 0x7d, 0x7b, 0x3c, 0x11, ++ 0xed, 0x9b, 0x6c, 0xc7, 0xe0, 0xfe, 0xd2, 0xb5, 0x26, 0x09, 0x3f, 0x17, ++ 0xc1, 0xb5, 0xed, 0x6a, 0x07, 0xed, 0x37, 0x86, 0xd6, 0xd9, 0x68, 0x9f, ++ 0x5c, 0x33, 0x32, 0x88, 0xfb, 0x19, 0x93, 0x79, 0x21, 0x6b, 0x68, 0x39, ++ 0x67, 0x62, 0x30, 0xe7, 0x33, 0x23, 0x83, 0x38, 0x7f, 0x94, 0xf8, 0x82, ++ 0x76, 0xfc, 0xdc, 0x85, 0x7e, 0x26, 0x02, 0x5f, 0x8b, 0xbf, 0x2f, 0x98, ++ 0xee, 0x35, 0x79, 0xa3, 0x1c, 0xe3, 0x71, 0x3d, 0xac, 0x90, 0x69, 0xee, ++ 0x05, 0x52, 0x7f, 0xd1, 0x17, 0xa5, 0xd2, 0xf9, 0x50, 0xc0, 0xd2, 0x1e, ++ 0xc2, 0xfb, 0x7b, 0xe1, 0x09, 0x03, 0xdd, 0xdf, 0xfb, 0x0a, 0x19, 0x2f, ++ 0x8f, 0xe5, 0xf6, 0xca, 0xbe, 0x13, 0x97, 0x55, 0xdc, 0xef, 0x45, 0xa1, ++ 0x0a, 0x1b, 0x96, 0xe4, 0x8b, 0x9b, 0x09, 0x8a, 0xd5, 0x31, 0x9b, 0x9f, ++ 0x3c, 0x6d, 0xb6, 0x05, 0x33, 0x9b, 0x1f, 0xdd, 0x86, 0xa4, 0x47, 0x6a, ++ 0xf2, 0xa1, 0xf6, 0x11, 0x9a, 0xfa, 0xe1, 0x79, 0xc9, 0x9a, 0xf2, 0x08, ++ 0xc7, 0x55, 0x9a, 0xf2, 0x61, 0x73, 0xb2, 0x34, 0xf9, 0xe1, 0xc5, 0x53, ++ 0x34, 0xf5, 0x63, 0x16, 0xcf, 0xd4, 0xe4, 0xe3, 0x9c, 0xd7, 0x6a, 0xea, ++ 0xc7, 0x57, 0xcd, 0xd7, 0xe4, 0x25, 0x3f, 0x8a, 0xe7, 0x9f, 0x58, 0x42, ++ 0xc3, 0x52, 0x4d, 0xfb, 0x51, 0x8d, 0xcb, 0x34, 0xf5, 0x93, 0x5c, 0xd5, ++ 0x9a, 0x72, 0x35, 0x38, 0xec, 0x49, 0x8a, 0x3b, 0x75, 0x39, 0x3a, 0xd3, ++ 0xa3, 0x91, 0x5f, 0xf1, 0xbf, 0x94, 0xcd, 0x6b, 0x34, 0xf5, 0x1e, 0x0d, ++ 0xe3, 0x71, 0x20, 0x73, 0x2c, 0x95, 0x73, 0x71, 0x1f, 0x8e, 0x6e, 0xbd, ++ 0x5d, 0x3b, 0x2f, 0xf5, 0x4d, 0x85, 0xe2, 0x3a, 0x6d, 0x9c, 0x0f, 0xba, ++ 0xe0, 0x7f, 0x88, 0xdf, 0xa2, 0x58, 0x2d, 0x5f, 0x9c, 0x65, 0xd5, 0xea, ++ 0x1b, 0xe2, 0x1b, 0xf4, 0x9a, 0x7c, 0xf5, 0x24, 0xe1, 0x8f, 0x34, 0x81, ++ 0x4d, 0x20, 0x3e, 0xf8, 0x7d, 0x78, 0x76, 0x5e, 0xa5, 0xc1, 0x73, 0x20, ++ 0x3c, 0x00, 0xef, 0x76, 0x2f, 0xd6, 0x87, 0x73, 0xd5, 0x05, 0xf9, 0xa2, ++ 0xdf, 0x97, 0xeb, 0xf1, 0xdc, 0x47, 0xbb, 0x82, 0xff, 0xfc, 0xd1, 0xae, ++ 0xe0, 0xbf, 0x5e, 0xb4, 0x2b, 0xf8, 0xe7, 0xd1, 0xae, 0xe0, 0x5f, 0x1f, ++ 0xed, 0x0a, 0xfe, 0xe5, 0x68, 0x57, 0xf0, 0x2f, 0xcf, 0x3e, 0xa1, 0xc5, ++ 0x73, 0x6e, 0xa7, 0x16, 0xcf, 0x93, 0x3e, 0xd0, 0xe2, 0x59, 0xd2, 0xdf, ++ 0x50, 0xf8, 0x98, 0xdc, 0xa5, 0xa5, 0x83, 0x40, 0x7c, 0x4c, 0xfd, 0x2c, ++ 0x80, 0x2e, 0x04, 0x1e, 0x16, 0xc3, 0xff, 0x06, 0xc3, 0x03, 0x5d, 0x11, ++ 0x80, 0xfe, 0x67, 0x35, 0x30, 0xd2, 0x9b, 0x7d, 0x1f, 0x5e, 0x1e, 0x9b, ++ 0x24, 0xce, 0x27, 0x81, 0x17, 0xc0, 0x03, 0xc5, 0xf5, 0xf5, 0x8d, 0x0c, ++ 0x25, 0x3c, 0x3c, 0x26, 0xe6, 0x5f, 0xe0, 0x1d, 0x47, 0x71, 0xb1, 0x45, ++ 0xa8, 0x37, 0x4b, 0xf2, 0xad, 0xe7, 0x31, 0x71, 0xee, 0xfe, 0x76, 0x98, ++ 0x73, 0xf7, 0x24, 0xd8, 0xdf, 0xbf, 0xb3, 0x65, 0xc5, 0x22, 0x3f, 0x9a, ++ 0xce, 0xb8, 0x5d, 0x73, 0x76, 0xad, 0xce, 0xee, 0x85, 0xee, 0x9f, 0x0a, ++ 0xc0, 0xff, 0x84, 0xb1, 0xce, 0x7d, 0x58, 0x7f, 0xf1, 0xb0, 0xcb, 0x89, ++ 0x46, 0xa4, 0x87, 0x5e, 0xe7, 0x18, 0xbc, 0x4f, 0x7e, 0x28, 0xf4, 0x24, ++ 0x81, 0x7e, 0x9c, 0x2e, 0x10, 0x07, 0x28, 0x0e, 0xe1, 0x76, 0x95, 0xe2, ++ 0x6f, 0x4e, 0xea, 0x5a, 0x15, 0xe4, 0xcb, 0xde, 0x04, 0xe7, 0x21, 0xe4, ++ 0x1b, 0xb7, 0x66, 0x34, 0x10, 0x9d, 0xc6, 0xb2, 0xe2, 0xfd, 0x95, 0x30, ++ 0xbf, 0xd2, 0xff, 0x0c, 0x22, 0x3b, 0x4e, 0xe9, 0x28, 0x1e, 0xaf, 0xcb, ++ 0x32, 0xba, 0x28, 0xce, 0x41, 0xf2, 0xbb, 0xd2, 0x78, 0xee, 0x47, 0xf4, ++ 0xf2, 0x24, 0x61, 0x17, 0xb6, 0x73, 0x7f, 0xa2, 0xa3, 0x93, 0xb8, 0x3c, ++ 0x1b, 0x6a, 0xb7, 0x92, 0xdf, 0x71, 0x59, 0x06, 0x8f, 0xe3, 0x80, 0x6b, ++ 0x57, 0x62, 0xe9, 0x78, 0x84, 0xcf, 0x9b, 0xe6, 0x31, 0x08, 0x9f, 0x36, ++ 0x6e, 0x37, 0xe9, 0xc2, 0x78, 0xe1, 0x28, 0x5f, 0xbc, 0x30, 0xca, 0x9b, ++ 0x28, 0xdf, 0x25, 0x08, 0xf9, 0xaa, 0xf9, 0xcf, 0x26, 0x13, 0xae, 0x63, ++ 0x4c, 0x3b, 0xd3, 0x9c, 0x93, 0x63, 0xdd, 0x26, 0x8d, 0xdf, 0xeb, 0xb8, ++ 0xdd, 0x56, 0x4d, 0x7e, 0xbc, 0x27, 0x56, 0x53, 0xff, 0xea, 0xc3, 0x36, ++ 0x4d, 0x79, 0xa6, 0x37, 0x5d, 0x53, 0x9e, 0x7d, 0xc2, 0xae, 0xc9, 0xe7, ++ 0x76, 0xe6, 0x69, 0xea, 0x4f, 0xfa, 0xc0, 0xa1, 0xc9, 0x4f, 0xee, 0x9a, ++ 0xa3, 0xa9, 0x3f, 0xf5, 0xb3, 0x62, 0x4d, 0x3e, 0x9e, 0xf5, 0x3e, 0x8c, ++ 0xf0, 0x1d, 0xa5, 0xf0, 0xfb, 0xfe, 0x37, 0x93, 0xb8, 0xff, 0x14, 0xec, ++ 0x55, 0xb2, 0xe3, 0x95, 0x6e, 0x8a, 0xe0, 0x71, 0xa0, 0x42, 0x0f, 0x20, ++ 0xe5, 0x69, 0xe9, 0x0f, 0xed, 0x14, 0xf4, 0x1d, 0x28, 0xa7, 0x8f, 0x32, ++ 0x72, 0x39, 0xb5, 0x39, 0x8e, 0xf1, 0x7b, 0x98, 0x49, 0xdc, 0xb7, 0x98, ++ 0x56, 0x5e, 0x77, 0x0a, 0x7f, 0x66, 0x29, 0xa7, 0x32, 0x97, 0xd6, 0x9f, ++ 0x59, 0xfa, 0x31, 0xf7, 0xcb, 0xf5, 0x42, 0x6e, 0x97, 0xf2, 0xb1, 0x9f, ++ 0x1f, 0xb3, 0xc3, 0xdf, 0x8f, 0xb9, 0x54, 0xc4, 0x6f, 0x07, 0x9e, 0x7f, ++ 0x86, 0x3c, 0xae, 0x1f, 0x09, 0x9c, 0xff, 0x28, 0x23, 0x5f, 0x6f, 0xf3, ++ 0xcf, 0x8d, 0x14, 0x37, 0x22, 0xe7, 0x15, 0x38, 0x1f, 0x67, 0x16, 0xa7, ++ 0xdb, 0x9d, 0xa6, 0xc1, 0xe3, 0x77, 0x86, 0xe5, 0x71, 0x3d, 0xc1, 0xf8, ++ 0xcc, 0xe2, 0x90, 0x3c, 0x48, 0x1f, 0x37, 0xd8, 0xdd, 0xa4, 0x47, 0x19, ++ 0x30, 0x9e, 0xbd, 0xcb, 0x85, 0xf7, 0xca, 0x5f, 0x1a, 0xed, 0x77, 0xda, ++ 0xbe, 0x7f, 0xbc, 0xd2, 0xab, 0xf9, 0x7a, 0x4a, 0x74, 0xba, 0x5b, 0xe7, ++ 0x65, 0x90, 0xbf, 0xd8, 0xe2, 0x67, 0xfd, 0xc6, 0x4f, 0x11, 0xe3, 0x06, ++ 0x4d, 0x51, 0x06, 0x5d, 0x5f, 0x69, 0x38, 0xf7, 0xe7, 0x62, 0xe1, 0x46, ++ 0x1b, 0xd2, 0xef, 0xd0, 0xe3, 0x71, 0x78, 0xc6, 0x1a, 0x59, 0x0b, 0xc5, ++ 0x19, 0x09, 0xbf, 0xff, 0x5b, 0xb6, 0x78, 0xee, 0x1d, 0x03, 0x45, 0x25, ++ 0xc6, 0x56, 0x03, 0x29, 0x2f, 0x98, 0xdb, 0x80, 0xf4, 0x30, 0x77, 0x26, ++ 0xc8, 0x53, 0x99, 0x8c, 0x1d, 0xda, 0xff, 0xec, 0x23, 0x16, 0x90, 0x67, ++ 0x1e, 0x6f, 0xd4, 0x93, 0x9e, 0xe7, 0xaa, 0xc3, 0x31, 0x25, 0xae, 0x54, ++ 0x5f, 0x1c, 0xc7, 0x28, 0xb8, 0x6f, 0x20, 0x7d, 0xa0, 0xcc, 0x82, 0xf7, ++ 0x94, 0x47, 0x27, 0x73, 0x7f, 0xe5, 0xeb, 0xf2, 0xf8, 0xfa, 0x8a, 0xd4, ++ 0x6f, 0xfb, 0xfd, 0xef, 0xc9, 0x7e, 0xc1, 0x98, 0x38, 0x27, 0x18, 0xf9, ++ 0xc3, 0x0c, 0x42, 0x6f, 0x44, 0x87, 0x72, 0x1d, 0x3f, 0x96, 0x3f, 0xbe, ++ 0xa4, 0xdb, 0x40, 0x38, 0xc9, 0xfb, 0x25, 0x13, 0xfe, 0x8e, 0xa9, 0x62, ++ 0x5e, 0x12, 0x7e, 0x72, 0x3f, 0x48, 0xf8, 0xc9, 0x78, 0x08, 0xdb, 0x6a, ++ 0x43, 0xf1, 0x93, 0x16, 0x8a, 0xab, 0x98, 0x83, 0x7e, 0x64, 0x12, 0x7f, ++ 0xbf, 0x9d, 0xcc, 0xf9, 0xd1, 0x2f, 0x05, 0x3c, 0xb0, 0x1e, 0xf2, 0xa3, ++ 0xa1, 0xea, 0x15, 0xa9, 0x19, 0xe1, 0xa8, 0x0f, 0xef, 0x63, 0xb6, 0x70, ++ 0xeb, 0x77, 0xe8, 0x7b, 0x7f, 0xc4, 0x38, 0x05, 0x82, 0xff, 0x50, 0xf1, ++ 0x55, 0x43, 0xf1, 0x87, 0x01, 0x7c, 0x61, 0x88, 0x78, 0xab, 0xa1, 0xe8, ++ 0x93, 0xfe, 0xfe, 0x89, 0xb8, 0x2b, 0x3f, 0xfe, 0xc0, 0xfd, 0x7a, 0x04, ++ 0x3e, 0xdc, 0xa9, 0x3a, 0xb2, 0xa3, 0x6f, 0x0a, 0xd5, 0xee, 0xe3, 0xa7, ++ 0x04, 0x7f, 0x98, 0x27, 0xf6, 0x13, 0x9c, 0xe3, 0x96, 0x4c, 0x2d, 0x9f, ++ 0x60, 0xa8, 0xbf, 0x6f, 0xde, 0xa0, 0x0a, 0x3e, 0xc1, 0xcf, 0x6f, 0x94, ++ 0x6b, 0xf0, 0xfb, 0xf2, 0x0d, 0x06, 0x3a, 0x4f, 0x19, 0x2b, 0x7e, 0x10, ++ 0xe3, 0x88, 0x3e, 0x69, 0x33, 0x90, 0x7f, 0x6b, 0x81, 0xc3, 0x36, 0xdb, ++ 0xce, 0xed, 0xf3, 0x24, 0xdf, 0x90, 0xdd, 0x0b, 0xa6, 0x56, 0xe6, 0xd2, ++ 0x9e, 0xdb, 0x20, 0x47, 0x3c, 0x89, 0xf7, 0x89, 0xe9, 0xcc, 0xbe, 0x11, ++ 0xed, 0x19, 0xe5, 0x9b, 0xb5, 0xe5, 0x2b, 0x2c, 0xb3, 0x3f, 0x47, 0xb9, ++ 0x61, 0x79, 0xc0, 0xbd, 0x74, 0x85, 0xb8, 0xaf, 0xae, 0x08, 0xb8, 0x97, ++ 0x6e, 0xcb, 0x13, 0xe7, 0xb1, 0x9d, 0xd9, 0x49, 0x1e, 0x13, 0x76, 0xfe, ++ 0x2a, 0x51, 0xa7, 0x9f, 0x8e, 0xdc, 0x29, 0xe1, 0x42, 0xef, 0x42, 0xfb, ++ 0x13, 0x52, 0xf2, 0x0b, 0x93, 0x70, 0xb1, 0xa1, 0xbd, 0x26, 0xdb, 0x97, ++ 0x07, 0xf8, 0x05, 0xa7, 0xe3, 0x39, 0xdd, 0xa2, 0x1f, 0xd4, 0x5f, 0xaf, ++ 0x1f, 0x7e, 0x43, 0xf8, 0x23, 0x9c, 0x47, 0x7f, 0x04, 0x1b, 0xee, 0xf7, ++ 0x3e, 0x8a, 0xb7, 0xea, 0x3b, 0x60, 0xe6, 0x76, 0x4a, 0x69, 0x0f, 0x12, ++ 0xf5, 0xcf, 0xbb, 0x2e, 0x53, 0x39, 0xd6, 0xc7, 0xde, 0x2e, 0x64, 0x76, ++ 0x4e, 0x40, 0x79, 0xa7, 0xdf, 0x7e, 0x14, 0x60, 0x87, 0xea, 0xb3, 0xe8, ++ 0xc2, 0xf2, 0xb0, 0xbf, 0xbd, 0x06, 0xea, 0x4f, 0xfa, 0x5b, 0x54, 0xff, ++ 0xcd, 0x3d, 0xc1, 0xea, 0x67, 0x4f, 0x76, 0x76, 0xa9, 0x1a, 0xff, 0x96, ++ 0xc0, 0xd4, 0xb9, 0xfe, 0x20, 0xf9, 0x5f, 0x6c, 0x8a, 0x70, 0xbe, 0x8a, ++ 0x7c, 0xfc, 0x9c, 0xde, 0x6e, 0x42, 0xfc, 0xdd, 0x65, 0x39, 0x16, 0x8d, ++ 0x71, 0xf2, 0x73, 0x85, 0xde, 0x26, 0x70, 0xbe, 0xfd, 0xf2, 0x6d, 0xbe, ++ 0xc2, 0xed, 0xb0, 0x2e, 0x1e, 0x37, 0xdb, 0x37, 0x47, 0x21, 0x3f, 0x00, ++ 0xe0, 0x83, 0x0c, 0xf7, 0x8d, 0xf4, 0x1b, 0x98, 0xc7, 0xbc, 0x51, 0x98, ++ 0x4a, 0x7b, 0x8c, 0x73, 0xf3, 0x64, 0x82, 0xb3, 0xb4, 0xc7, 0x94, 0x79, ++ 0x27, 0xd3, 0x3c, 0x17, 0x36, 0xaf, 0x30, 0x04, 0x43, 0x95, 0xae, 0x87, ++ 0xd7, 0x15, 0x05, 0xdb, 0x7c, 0x76, 0x9a, 0xae, 0x04, 0xee, 0xf7, 0x33, ++ 0x94, 0xbd, 0x66, 0xc1, 0x95, 0x4c, 0xea, 0xef, 0xc6, 0x2b, 0x53, 0xa9, ++ 0x9f, 0x33, 0x79, 0x49, 0x5c, 0xee, 0x6a, 0xb9, 0x77, 0x35, 0xd2, 0xd1, ++ 0x55, 0xbb, 0x99, 0x01, 0xd7, 0xd9, 0x15, 0xe0, 0xf7, 0x2e, 0xd3, 0x1b, ++ 0x27, 0xf3, 0xfd, 0xb0, 0x1a, 0x63, 0x31, 0x72, 0xfd, 0xfc, 0x89, 0xd6, ++ 0x2b, 0x44, 0xe7, 0x6b, 0x14, 0x26, 0xfd, 0x8b, 0x88, 0x4f, 0xcb, 0xfc, ++ 0xe5, 0x56, 0x91, 0x2f, 0xe2, 0xf9, 0xdb, 0x36, 0xf0, 0x7c, 0x97, 0x81, ++ 0xbf, 0x33, 0xb3, 0x4b, 0xe8, 0x1b, 0x70, 0x9d, 0x98, 0xe2, 0x7a, 0xf0, ++ 0x5e, 0xbc, 0x57, 0xe8, 0x23, 0x70, 0x1d, 0x98, 0xe2, 0x3a, 0xf0, 0x3b, ++ 0xf2, 0x25, 0xcc, 0x23, 0x5f, 0xc2, 0x3c, 0xf2, 0x25, 0xcc, 0x23, 0x5f, ++ 0xc2, 0x14, 0xf9, 0x12, 0x7e, 0x5f, 0xc6, 0x8a, 0x13, 0x33, 0x55, 0x6e, ++ 0x57, 0x2a, 0xf4, 0xdb, 0x37, 0x68, 0x57, 0x2a, 0xf4, 0x93, 0x7b, 0xd0, ++ 0xae, 0xe4, 0x9f, 0x47, 0xbb, 0x92, 0x7f, 0x7d, 0xb4, 0x2b, 0xf9, 0x97, ++ 0xa3, 0x5d, 0xc9, 0xbf, 0x1c, 0xed, 0x4a, 0xfe, 0x79, 0xb4, 0x2b, 0xf9, ++ 0xd7, 0x47, 0xbb, 0x92, 0x7f, 0x9e, 0xe5, 0x5d, 0xe3, 0xcb, 0x23, 0x1f, ++ 0x73, 0xcc, 0xd3, 0xe4, 0x17, 0x80, 0x9c, 0x5f, 0xe8, 0xb7, 0x6f, 0xd1, ++ 0xae, 0xe4, 0xdf, 0x3f, 0xda, 0x95, 0x34, 0xfd, 0x39, 0x57, 0x6b, 0xda, ++ 0xdf, 0xcc, 0x1a, 0x35, 0xed, 0xd1, 0xae, 0xe4, 0x5f, 0xff, 0xd6, 0x46, ++ 0x45, 0x63, 0x77, 0xba, 0x55, 0xbc, 0x07, 0x50, 0xde, 0x3e, 0x8c, 0xe8, ++ 0x63, 0xef, 0x84, 0xe2, 0xa4, 0xc9, 0x80, 0xdf, 0x8f, 0x43, 0xfe, 0xfe, ++ 0x33, 0x03, 0xde, 0x37, 0xd4, 0x8e, 0x95, 0x48, 0xb7, 0x6b, 0xea, 0x82, ++ 0xed, 0x1c, 0xcf, 0xad, 0x73, 0x38, 0xde, 0x75, 0x8c, 0xe3, 0xb9, 0x77, ++ 0x09, 0xe1, 0x79, 0x9d, 0x91, 0xe7, 0x8b, 0xb8, 0xff, 0xf1, 0x60, 0xf6, ++ 0x9b, 0x42, 0x03, 0xb7, 0xdf, 0x60, 0x8a, 0xf6, 0x1b, 0x4c, 0xd1, 0x7e, ++ 0x83, 0x29, 0xda, 0x6f, 0x0a, 0x47, 0x73, 0xfb, 0x0d, 0xa6, 0x68, 0xbf, ++ 0xc1, 0xef, 0x68, 0xbf, 0xc1, 0x14, 0xed, 0x37, 0x98, 0xa2, 0xfd, 0x06, ++ 0x53, 0xb4, 0xdf, 0x60, 0x8a, 0xf6, 0x1b, 0x4c, 0xd1, 0x7e, 0x83, 0xed, ++ 0xd0, 0x7e, 0x83, 0x29, 0xda, 0x6f, 0xf0, 0x3b, 0xda, 0x6f, 0x30, 0x45, ++ 0xfb, 0x0d, 0x7e, 0x3f, 0x89, 0x76, 0x24, 0xbf, 0x77, 0x33, 0x50, 0x4e, ++ 0x4f, 0xd5, 0xdc, 0x1f, 0x81, 0x0e, 0x35, 0xf7, 0x47, 0xab, 0x26, 0x8f, ++ 0x72, 0xba, 0x7f, 0x7d, 0x94, 0xd3, 0xfd, 0xcb, 0x51, 0x4e, 0xf7, 0x2f, ++ 0x47, 0x39, 0xdd, 0x3f, 0x8f, 0x72, 0xba, 0x7f, 0x7d, 0x94, 0xd3, 0xfd, ++ 0xf3, 0xcb, 0xf3, 0x6c, 0xb4, 0xbf, 0x50, 0x5e, 0xf7, 0x6f, 0x87, 0xf2, ++ 0xba, 0x7f, 0x7e, 0x7c, 0xab, 0xeb, 0x55, 0xd4, 0x1d, 0x5d, 0xbf, 0xed, ++ 0xe2, 0x2b, 0x98, 0x76, 0x85, 0x2a, 0x8f, 0x2b, 0xc0, 0x0a, 0x96, 0x4d, ++ 0xde, 0x57, 0x82, 0x76, 0xb6, 0x2e, 0xb3, 0x92, 0x18, 0x01, 0x9c, 0xd2, ++ 0xb0, 0xfe, 0xd9, 0x92, 0x42, 0xd8, 0xb3, 0x4e, 0xe1, 0xc7, 0x37, 0x81, ++ 0xf5, 0xea, 0x10, 0xdf, 0x64, 0x67, 0x07, 0xbc, 0x39, 0xbd, 0x8c, 0xfc, ++ 0x8e, 0xc7, 0x7f, 0x13, 0x47, 0xe5, 0xd2, 0xae, 0x4b, 0x7f, 0x80, 0xf7, ++ 0xcc, 0x03, 0x8c, 0xe4, 0xfe, 0x43, 0x22, 0x5e, 0x53, 0xb6, 0xb7, 0x33, ++ 0xab, 0x8a, 0xa9, 0xac, 0xef, 0xcb, 0x0f, 0x5e, 0x2f, 0x70, 0x7c, 0x59, ++ 0x8f, 0xf8, 0xa5, 0xdf, 0x3c, 0xe0, 0x62, 0x98, 0x89, 0x7e, 0x26, 0x99, ++ 0xeb, 0x2c, 0x59, 0xe8, 0x2f, 0xbf, 0x4b, 0xa7, 0x70, 0x7f, 0xd3, 0x3b, ++ 0xb9, 0xbf, 0x6f, 0x20, 0x5d, 0x3d, 0x28, 0xe4, 0xa0, 0x5d, 0xba, 0xfd, ++ 0xc7, 0x82, 0xd1, 0x7f, 0xa8, 0x4c, 0xb1, 0x63, 0x1c, 0x43, 0x9a, 0x9e, ++ 0x9d, 0x30, 0x64, 0x21, 0x9c, 0x1a, 0xb2, 0x50, 0x3e, 0xb8, 0x63, 0x72, ++ 0x84, 0xf0, 0x07, 0x6e, 0x98, 0x82, 0xfe, 0x47, 0x72, 0xde, 0x52, 0x0f, ++ 0x08, 0x7c, 0x82, 0xe2, 0xd7, 0xf2, 0x7b, 0x99, 0xb1, 0x02, 0xc6, 0x99, ++ 0xf6, 0x25, 0x33, 0x2e, 0x47, 0xfe, 0x6e, 0xe4, 0x72, 0x01, 0xb6, 0xc3, ++ 0xfb, 0xe2, 0x38, 0x97, 0xe2, 0x78, 0xd2, 0x8f, 0xbe, 0x37, 0x4f, 0xe6, ++ 0xe7, 0x9b, 0xd3, 0xb5, 0x7a, 0x4a, 0x05, 0x7c, 0x1f, 0xb7, 0xb7, 0x61, ++ 0x0a, 0xc6, 0xc5, 0xcd, 0x0d, 0xe6, 0xed, 0x7e, 0xf3, 0x44, 0x18, 0xc1, ++ 0xf1, 0x86, 0x16, 0xe5, 0x49, 0x8c, 0x3f, 0xcc, 0xdf, 0xcb, 0x1c, 0x18, ++ 0xef, 0xba, 0x55, 0xf0, 0xd3, 0x71, 0x7b, 0xad, 0xc6, 0x0a, 0x1a, 0xd7, ++ 0x4a, 0xf1, 0x74, 0xb2, 0xdf, 0xb2, 0x6d, 0x89, 0x14, 0xff, 0x57, 0xc6, ++ 0xba, 0x0a, 0x31, 0xbe, 0x82, 0xe5, 0x28, 0x0c, 0xed, 0xa3, 0x12, 0x6e, ++ 0xb0, 0xbe, 0x57, 0x70, 0x7d, 0x69, 0xb0, 0x55, 0x0c, 0x24, 0x7f, 0xf2, ++ 0xb8, 0x9c, 0x60, 0x11, 0x97, 0x23, 0xe3, 0x71, 0x82, 0x22, 0x8a, 0x17, ++ 0xe6, 0xe5, 0xfa, 0xe2, 0x72, 0xa6, 0xe5, 0x44, 0x14, 0xa1, 0x5f, 0x1c, ++ 0xeb, 0x60, 0x76, 0x0c, 0x03, 0xbe, 0x3e, 0xa7, 0x6c, 0xc3, 0x70, 0xe8, ++ 0xdf, 0xe9, 0x76, 0xd8, 0xd1, 0xaf, 0x68, 0xda, 0x97, 0x0d, 0xaf, 0x52, ++ 0x7e, 0x47, 0x31, 0xe5, 0x89, 0x0c, 0x26, 0xd2, 0x38, 0x74, 0xae, 0x8d, ++ 0x71, 0x29, 0xf4, 0xbe, 0xc6, 0x0d, 0xae, 0xed, 0xba, 0x28, 0x1b, 0xc6, ++ 0xeb, 0xae, 0x37, 0x44, 0x63, 0xfd, 0xbd, 0xcc, 0x8e, 0xe2, 0x0e, 0x1c, ++ 0x35, 0x14, 0x77, 0x2a, 0xe7, 0x97, 0xc1, 0x3a, 0x75, 0x66, 0x05, 0xf1, ++ 0xce, 0x8e, 0x0f, 0xf3, 0xa3, 0x23, 0xe0, 0x00, 0x37, 0x22, 0xde, 0x33, ++ 0xed, 0x06, 0x7a, 0x7f, 0x63, 0x9e, 0xde, 0x6a, 0x40, 0xbe, 0x11, 0x78, ++ 0x8e, 0x0f, 0xf4, 0x5b, 0x0c, 0x90, 0x13, 0x02, 0xfc, 0x4b, 0x9a, 0xd7, ++ 0x7d, 0x90, 0xa8, 0x26, 0xa3, 0x7f, 0x89, 0xce, 0xee, 0x45, 0xbe, 0x75, ++ 0x30, 0x84, 0xe4, 0x05, 0x29, 0xef, 0x94, 0x09, 0x7f, 0xb3, 0xcb, 0x2d, ++ 0xaf, 0x0e, 0xbf, 0x09, 0xca, 0xcb, 0xf6, 0x73, 0xf9, 0xc0, 0xd9, 0xae, ++ 0x10, 0xff, 0x93, 0xfe, 0x26, 0x75, 0x29, 0xee, 0x44, 0x1d, 0xca, 0x0b, ++ 0x23, 0xb6, 0x4f, 0x88, 0x54, 0xf9, 0xf9, 0x8f, 0x7c, 0xf1, 0x9c, 0xeb, ++ 0xb9, 0x45, 0xb8, 0x45, 0xcb, 0x36, 0xbc, 0x4a, 0x71, 0x11, 0x65, 0x1b, ++ 0x72, 0xc3, 0x79, 0x5c, 0x14, 0xb7, 0x43, 0x54, 0x08, 0x38, 0x55, 0x08, ++ 0xbf, 0x22, 0x96, 0x61, 0x8d, 0x46, 0x39, 0xf3, 0x14, 0xf0, 0x1d, 0xc7, ++ 0x18, 0xf2, 0x4b, 0x0c, 0xa7, 0xb8, 0xc2, 0x56, 0x2e, 0xcf, 0x49, 0xbd, ++ 0x8e, 0x94, 0x07, 0xe5, 0xfb, 0x31, 0x65, 0x6f, 0x65, 0xbf, 0x86, 0x78, ++ 0x2f, 0x7b, 0x4c, 0xbc, 0xcb, 0xb2, 0xb9, 0x8c, 0xe2, 0xaf, 0x02, 0xfd, ++ 0x7c, 0x6a, 0x84, 0xbc, 0xb7, 0xb2, 0xc5, 0x40, 0xfe, 0x43, 0x2b, 0x03, ++ 0xe4, 0xc1, 0x1a, 0xe1, 0x2f, 0x54, 0x13, 0x20, 0x0f, 0x9e, 0x9c, 0x2c, ++ 0xf4, 0x40, 0x52, 0x1e, 0x14, 0xf7, 0x17, 0xe9, 0xcf, 0x5b, 0xf6, 0xd6, ++ 0xf1, 0x85, 0x24, 0xaf, 0x34, 0x18, 0xc8, 0x2e, 0x57, 0xb2, 0x9e, 0xcb, ++ 0x2f, 0x6c, 0x3f, 0x73, 0x63, 0x3c, 0x43, 0xc9, 0xfa, 0x59, 0x3a, 0x7c, ++ 0x37, 0xa4, 0xe4, 0xa0, 0xc3, 0xae, 0x0c, 0x42, 0x27, 0x6f, 0x0b, 0x39, ++ 0x66, 0x6e, 0x97, 0x99, 0xe0, 0x3a, 0xff, 0x4a, 0x3c, 0xa5, 0x8b, 0xae, ++ 0xc4, 0x51, 0x7a, 0xd3, 0x15, 0xee, 0x47, 0x89, 0xb1, 0x2f, 0x48, 0x07, ++ 0x5d, 0x2f, 0x30, 0x92, 0xa3, 0xdf, 0x15, 0x72, 0xcb, 0x42, 0xf4, 0xab, ++ 0xc4, 0x78, 0x44, 0x57, 0x90, 0xf0, 0x9f, 0x64, 0x24, 0x37, 0x65, 0x32, ++ 0x6b, 0x11, 0xf2, 0x8f, 0xab, 0x1c, 0xca, 0x71, 0x14, 0xfb, 0xe6, 0x1a, ++ 0x9c, 0x1b, 0xd0, 0x6f, 0x73, 0xee, 0x76, 0x46, 0xf1, 0x47, 0xd7, 0xa3, ++ 0x7c, 0x03, 0xfd, 0x2f, 0x46, 0x79, 0x07, 0xf5, 0xee, 0x39, 0x49, 0x45, ++ 0x14, 0x87, 0x31, 0x47, 0xa1, 0x78, 0x96, 0xeb, 0x73, 0x56, 0x0b, 0xfa, ++ 0x06, 0x7a, 0x67, 0x48, 0xef, 0x2e, 0x41, 0xbf, 0xc5, 0x94, 0xef, 0x3f, ++ 0x17, 0x04, 0x9d, 0x3b, 0x5d, 0xdd, 0x7a, 0x84, 0xfb, 0xf5, 0x2e, 0xc5, ++ 0x88, 0xef, 0xf0, 0x39, 0xc5, 0x3d, 0x56, 0xd2, 0x71, 0x20, 0xbd, 0x97, ++ 0x86, 0x08, 0xfd, 0x93, 0x85, 0xeb, 0x97, 0xfa, 0xf5, 0x4f, 0x38, 0x59, ++ 0x7a, 0xd4, 0xc6, 0x74, 0x0b, 0xfa, 0xb7, 0x96, 0xa2, 0x6e, 0x70, 0x04, ++ 0xe3, 0x88, 0x07, 0x98, 0x87, 0x66, 0xf0, 0xf2, 0xd8, 0x29, 0xa6, 0x5b, ++ 0x5a, 0xf0, 0x52, 0xf3, 0xdf, 0xd4, 0x4b, 0x94, 0xe8, 0x74, 0x3c, 0xde, ++ 0x09, 0xe4, 0x2d, 0xe4, 0xab, 0xb7, 0xac, 0xcd, 0x34, 0x2e, 0xf3, 0xe3, ++ 0x2f, 0x9f, 0x4c, 0x9d, 0x39, 0x69, 0x6a, 0xae, 0x0f, 0xef, 0xcb, 0x02, ++ 0xe2, 0xf4, 0xd6, 0xdc, 0x35, 0x3a, 0xe6, 0xbb, 0xe2, 0x45, 0xcb, 0x01, ++ 0xce, 0xb8, 0x4f, 0x4a, 0xc3, 0xbb, 0x7e, 0x06, 0x14, 0xca, 0xf2, 0xa6, ++ 0x30, 0x47, 0x21, 0x88, 0x9e, 0x4b, 0x98, 0x5c, 0x27, 0xf3, 0xa2, 0x5f, ++ 0xe0, 0x52, 0x91, 0x5f, 0x3e, 0x25, 0xf3, 0xaf, 0x9b, 0x33, 0x08, 0x3e, ++ 0x94, 0xcf, 0x79, 0x31, 0xfa, 0x16, 0x17, 0xf1, 0x55, 0xce, 0xb7, 0x6e, ++ 0x46, 0xbe, 0xa5, 0x22, 0xbf, 0x72, 0x66, 0x4d, 0x21, 0x7e, 0xd5, 0x35, ++ 0x1b, 0xf1, 0x11, 0x92, 0xd1, 0x2b, 0xde, 0x21, 0xe0, 0xf1, 0x0e, 0x81, ++ 0x7a, 0x88, 0xe5, 0x53, 0x38, 0x1e, 0x02, 0xf5, 0x11, 0xe5, 0x19, 0x9c, ++ 0x9f, 0x33, 0xbd, 0x2d, 0xf1, 0x66, 0x8a, 0x0b, 0xb6, 0x91, 0x3e, 0x4f, ++ 0xce, 0xff, 0x94, 0x41, 0x1b, 0xa7, 0x29, 0xd3, 0x5b, 0xa6, 0x70, 0xbe, ++ 0xfc, 0x63, 0xc5, 0x37, 0xfc, 0xaf, 0x14, 0xe7, 0x0d, 0xb8, 0xbe, 0x07, ++ 0x75, 0x3c, 0x6e, 0x7e, 0x84, 0xda, 0xca, 0x84, 0x5e, 0x88, 0xf6, 0xbf, ++ 0xe4, 0x1f, 0x4c, 0xbc, 0x23, 0xe1, 0xc3, 0x3f, 0xc8, 0x69, 0x64, 0x47, ++ 0x57, 0xac, 0xfe, 0xf8, 0x77, 0x6e, 0x56, 0x78, 0x9c, 0xfa, 0x10, 0xfa, ++ 0x1b, 0x96, 0xde, 0xfb, 0xf0, 0x4e, 0xd4, 0xdf, 0x35, 0x19, 0x19, 0xc6, ++ 0xb9, 0x3e, 0x91, 0xc6, 0xe9, 0xe8, 0x89, 0xdb, 0x8d, 0x24, 0x87, 0x97, ++ 0x18, 0x3b, 0x5f, 0xc5, 0x77, 0xb2, 0x24, 0x1c, 0x3f, 0x6a, 0xfc, 0x0f, ++ 0x03, 0xe9, 0xff, 0x99, 0x77, 0x34, 0xbe, 0xff, 0xb5, 0xb4, 0xc1, 0x6c, ++ 0x47, 0xfe, 0xfc, 0xc9, 0xd4, 0xe2, 0x8a, 0x29, 0xc3, 0x11, 0x1f, 0x76, ++ 0xc2, 0xc7, 0x24, 0xd8, 0x66, 0xd8, 0xff, 0xc9, 0x84, 0xe2, 0x15, 0xf8, ++ 0xbd, 0x6e, 0xcb, 0xd1, 0xc7, 0x31, 0x6e, 0x7f, 0x55, 0x47, 0x12, 0xc5, ++ 0x91, 0x96, 0x1d, 0xce, 0xdc, 0x88, 0xef, 0x89, 0x7c, 0x32, 0xd5, 0x59, ++ 0x8b, 0xeb, 0x2d, 0xb3, 0x58, 0x8d, 0x78, 0x8e, 0xd7, 0xb7, 0x44, 0xd0, ++ 0xb9, 0x56, 0x1a, 0x23, 0xe2, 0x3a, 0x59, 0x2f, 0xd9, 0xa9, 0x24, 0xfc, ++ 0x5b, 0xa6, 0xf0, 0xf3, 0x74, 0x4a, 0x3e, 0xef, 0xbf, 0x47, 0xdc, 0x47, ++ 0x90, 0x61, 0xce, 0xd3, 0xd4, 0x13, 0x7e, 0xdc, 0x01, 0xfb, 0x44, 0xea, ++ 0x05, 0x03, 0xf5, 0x0b, 0x81, 0xef, 0x38, 0x0c, 0xb5, 0x7f, 0xa4, 0x1e, ++ 0x01, 0xf5, 0x06, 0x46, 0x3f, 0xbd, 0xa2, 0xd4, 0x4b, 0x18, 0xd2, 0x4f, ++ 0x2d, 0xc1, 0x73, 0xb4, 0xc4, 0xa8, 0x8d, 0x3f, 0x94, 0xe9, 0x41, 0xa9, ++ 0x77, 0x13, 0xf7, 0xc1, 0xe5, 0xfd, 0xe7, 0x58, 0xc6, 0xec, 0x18, 0x94, ++ 0x9b, 0xb7, 0x2a, 0x56, 0x3c, 0xc7, 0x2a, 0x2c, 0xb6, 0x9b, 0x26, 0x43, ++ 0xbe, 0xe2, 0x84, 0x01, 0x3d, 0x30, 0xd9, 0xdc, 0x48, 0x1b, 0x7f, 0xbf, ++ 0xe3, 0x2e, 0xfe, 0x7e, 0xc7, 0x32, 0xd8, 0xaf, 0xc8, 0x6f, 0x4a, 0x84, ++ 0x3f, 0x56, 0x45, 0xfb, 0x64, 0xda, 0x6f, 0x15, 0x6e, 0x48, 0xb3, 0x87, ++ 0xde, 0x97, 0x37, 0x6f, 0x3d, 0x9e, 0xf0, 0x02, 0xd2, 0x8f, 0xd7, 0x41, ++ 0x71, 0xf9, 0x15, 0x56, 0x87, 0x31, 0xd2, 0x6f, 0xdf, 0x97, 0xb7, 0x2a, ++ 0x9a, 0xb8, 0x7e, 0x99, 0xdf, 0x39, 0x45, 0xa5, 0x79, 0x97, 0x80, 0x98, ++ 0x8e, 0xf0, 0xbb, 0x65, 0x6d, 0x92, 0x11, 0xdf, 0xd0, 0x29, 0x01, 0xf1, ++ 0x02, 0xfd, 0xfb, 0x0e, 0x4e, 0xb1, 0x69, 0xe2, 0xaa, 0xa1, 0x1e, 0xf9, ++ 0x35, 0xcc, 0x4d, 0x66, 0xaf, 0xf1, 0xf7, 0x93, 0x60, 0xde, 0x49, 0x7c, ++ 0xbc, 0x2c, 0xbf, 0xfe, 0x97, 0xb5, 0x6a, 0xdf, 0x27, 0x80, 0xfa, 0x24, ++ 0x17, 0xfd, 0x76, 0x4a, 0x28, 0xe1, 0xaf, 0xcc, 0x0a, 0xeb, 0x4e, 0xc2, ++ 0xd4, 0x4a, 0xf3, 0x04, 0x38, 0x10, 0x9c, 0x7a, 0xef, 0x85, 0xfe, 0x6c, ++ 0x34, 0x0e, 0xe1, 0xa3, 0xdc, 0xeb, 0x36, 0xe0, 0xbd, 0xbb, 0x04, 0xfd, ++ 0x29, 0x20, 0xbf, 0xd4, 0xea, 0x36, 0xe0, 0x38, 0xcb, 0x5a, 0xf8, 0x7b, ++ 0x21, 0xce, 0x2d, 0x7c, 0x1c, 0xe7, 0xe6, 0x08, 0xe3, 0x78, 0x94, 0x9b, ++ 0xf4, 0x56, 0x63, 0x02, 0xc2, 0x0f, 0x2f, 0xcb, 0x51, 0x34, 0x3f, 0xe2, ++ 0x83, 0x15, 0x00, 0x17, 0x8c, 0xb7, 0x92, 0x71, 0x97, 0x81, 0xf0, 0x29, ++ 0x13, 0xf3, 0xad, 0x68, 0x8d, 0xd0, 0xca, 0x63, 0xad, 0x5b, 0x0d, 0x88, ++ 0x8f, 0x25, 0x43, 0xbc, 0x57, 0xd0, 0x2d, 0xe8, 0x76, 0x59, 0xcb, 0x0c, ++ 0x8a, 0x37, 0xaf, 0xd0, 0x3b, 0x28, 0x9e, 0xc1, 0x29, 0xe0, 0xfb, 0xc9, ++ 0x6a, 0xf3, 0xdd, 0x68, 0x17, 0x58, 0xd2, 0xf6, 0x90, 0x21, 0x09, 0xf2, ++ 0x7f, 0x14, 0xf4, 0xdb, 0x2d, 0xf6, 0xdd, 0xdc, 0x64, 0xef, 0x68, 0x7a, ++ 0x17, 0x68, 0xb5, 0xd9, 0x8e, 0xf3, 0x5c, 0x62, 0x6d, 0xa5, 0xf5, 0xf5, ++ 0xc3, 0xf7, 0x01, 0x80, 0x87, 0x82, 0xef, 0xcf, 0x14, 0x13, 0x7c, 0x81, ++ 0x2e, 0x5c, 0xe8, 0x9f, 0x57, 0xd1, 0xa6, 0xc5, 0xa7, 0x6f, 0x3e, 0x1c, ++ 0xbe, 0x15, 0x6d, 0x65, 0xb4, 0xdf, 0x2a, 0xf5, 0x4e, 0xa3, 0xd5, 0x7f, ++ 0x1e, 0xed, 0x47, 0x47, 0xa3, 0x1f, 0xca, 0x12, 0xd8, 0xdf, 0xf8, 0xde, ++ 0x11, 0xb3, 0x3a, 0x29, 0xbe, 0xe9, 0xec, 0x03, 0x37, 0x25, 0xd2, 0x3a, ++ 0x61, 0x9e, 0xe4, 0x07, 0x65, 0xb7, 0xcd, 0xc6, 0x77, 0x7e, 0x80, 0x4e, ++ 0x88, 0x8e, 0x25, 0xbd, 0xc8, 0xb8, 0x6c, 0x39, 0xde, 0x37, 0x53, 0x78, ++ 0x5c, 0xe6, 0x37, 0xdf, 0xbb, 0x2f, 0x1d, 0x24, 0xd7, 0x34, 0x03, 0x7e, ++ 0x51, 0xdf, 0x3d, 0xd4, 0xbe, 0x34, 0x62, 0x60, 0x17, 0x8c, 0x6b, 0xac, ++ 0xe0, 0xef, 0xaf, 0x05, 0xee, 0x53, 0xb9, 0x3f, 0xfb, 0xed, 0x07, 0x62, ++ 0x9f, 0xca, 0xfd, 0xfb, 0xb8, 0xa1, 0xd8, 0x1b, 0xab, 0xf8, 0xf8, 0x0c, ++ 0x9c, 0xb7, 0x0d, 0xcf, 0x0e, 0x02, 0xa7, 0x49, 0x53, 0xf9, 0x7c, 0x97, ++ 0x0a, 0xbc, 0x02, 0x5c, 0x5f, 0xf1, 0x8f, 0xe3, 0xb2, 0x4d, 0xe5, 0x78, ++ 0x2d, 0x49, 0xd6, 0xee, 0x77, 0xec, 0x0f, 0xfb, 0x0d, 0x93, 0xe5, 0x33, ++ 0xbd, 0xa3, 0x31, 0xee, 0x52, 0xd6, 0x97, 0xe3, 0x96, 0x44, 0xf2, 0x76, ++ 0x48, 0xf7, 0x48, 0x6f, 0x61, 0x62, 0x3c, 0xac, 0xbf, 0x86, 0xea, 0x6b, ++ 0xe3, 0x51, 0xca, 0xfb, 0xf9, 0xc5, 0xde, 0x0d, 0xd1, 0xc8, 0x2f, 0xf6, ++ 0x2b, 0x24, 0xf7, 0xae, 0xb9, 0xf7, 0x78, 0xc2, 0xbf, 0xa3, 0x3c, 0xbb, ++ 0x8f, 0xcb, 0xb3, 0xe7, 0x6a, 0x77, 0xd6, 0xc7, 0xa1, 0xdc, 0xa8, 0x77, ++ 0x27, 0xfa, 0xbf, 0x8b, 0x55, 0xe1, 0xe5, 0xfc, 0x61, 0x39, 0xc8, 0x3f, ++ 0xc8, 0x2f, 0x2a, 0xc5, 0x39, 0xbd, 0x2f, 0xcb, 0x99, 0x30, 0xd5, 0xcf, ++ 0x7f, 0xa2, 0xe2, 0xfe, 0x7d, 0x69, 0x4e, 0xce, 0x5f, 0xbc, 0xc8, 0x5f, ++ 0xfe, 0xb2, 0xef, 0xa5, 0xf7, 0xa6, 0xd8, 0x7c, 0xe7, 0xa7, 0x9c, 0xff, ++ 0xb2, 0xcd, 0x7f, 0x34, 0x94, 0x59, 0xfc, 0xe1, 0xc5, 0xd7, 0x77, 0x77, ++ 0x7a, 0x1f, 0xc5, 0xd9, 0x95, 0x5b, 0x8c, 0x36, 0xf4, 0x5f, 0x2e, 0x6f, ++ 0x29, 0x23, 0x7e, 0xcb, 0x62, 0xe1, 0x5e, 0xa1, 0xf8, 0xf0, 0x1d, 0x48, ++ 0x07, 0x65, 0x2d, 0x0a, 0xbd, 0x2f, 0x56, 0xde, 0x38, 0xd1, 0xad, 0xfe, ++ 0x5f, 0xe4, 0xcb, 0xe5, 0x5b, 0xe6, 0xd1, 0x9b, 0x48, 0x12, 0x4f, 0xf2, ++ 0xbd, 0x13, 0x79, 0x9e, 0xca, 0xf9, 0x3b, 0xc4, 0xfc, 0x97, 0x0a, 0x3a, ++ 0x9e, 0x35, 0x95, 0xef, 0xbf, 0xa5, 0x55, 0x49, 0xc6, 0x4a, 0xda, 0xf7, ++ 0x49, 0xc6, 0x72, 0xa4, 0x7f, 0x51, 0xbe, 0xa4, 0x42, 0xfb, 0xbd, 0x1f, ++ 0x4f, 0xfd, 0x76, 0xec, 0x8c, 0x8d, 0xb8, 0x3f, 0x30, 0x6e, 0x88, 0xee, ++ 0x27, 0x5b, 0x0c, 0x5c, 0xcf, 0xb7, 0x37, 0x94, 0xe4, 0xd5, 0x73, 0x6b, ++ 0x9e, 0xff, 0xc3, 0x22, 0xa8, 0xf7, 0xc5, 0x83, 0xdb, 0x13, 0x51, 0x3e, ++ 0x91, 0xf3, 0x58, 0x21, 0xf4, 0x79, 0xcb, 0x85, 0x5e, 0xae, 0x52, 0xc8, ++ 0xad, 0x80, 0xa7, 0xf9, 0x53, 0xfd, 0xf8, 0xec, 0x8a, 0x27, 0x38, 0x9e, ++ 0xca, 0x9f, 0x79, 0xeb, 0xaf, 0xf8, 0x2e, 0x57, 0x49, 0xb2, 0xe0, 0x67, ++ 0xf7, 0xf2, 0x78, 0xfe, 0x65, 0x9e, 0xfd, 0x84, 0xb7, 0x25, 0x9b, 0xb7, ++ 0x1a, 0x92, 0x10, 0x5f, 0xf8, 0x48, 0xad, 0x5f, 0xfb, 0xf2, 0x06, 0xb8, ++ 0xe8, 0x02, 0x3c, 0x97, 0x6e, 0xde, 0x6e, 0x40, 0x3e, 0xb0, 0x4c, 0xae, ++ 0x37, 0x80, 0xde, 0x4b, 0x84, 0xbf, 0xaf, 0x84, 0x2b, 0x9e, 0x3b, 0x8a, ++ 0x9f, 0xdd, 0x42, 0xd6, 0x47, 0xfe, 0xb7, 0x1f, 0xc6, 0x59, 0xbb, 0xda, ++ 0x1c, 0x86, 0xfa, 0x69, 0x39, 0xce, 0x3d, 0x53, 0xb9, 0xdc, 0x54, 0xde, ++ 0x10, 0x11, 0x89, 0xe3, 0x95, 0x37, 0x94, 0xfd, 0x0a, 0xef, 0x1d, 0x92, ++ 0xdf, 0x07, 0xee, 0xbb, 0xd3, 0x66, 0xbe, 0x1f, 0x96, 0x41, 0x7f, 0xb8, ++ 0x2f, 0x4f, 0xcf, 0xb0, 0x53, 0x5c, 0x33, 0xda, 0xb5, 0x06, 0x3b, 0x57, ++ 0xef, 0x9c, 0xca, 0xcf, 0xd5, 0x47, 0x0d, 0xfc, 0xfd, 0xc6, 0xf8, 0x10, ++ 0xcf, 0x1e, 0x84, 0x43, 0xfc, 0xaa, 0x60, 0x3b, 0xf2, 0x87, 0xd4, 0xd4, ++ 0x2e, 0xb2, 0x1b, 0x23, 0x3d, 0xe3, 0xbc, 0x8d, 0x3a, 0xfe, 0xde, 0x63, ++ 0x6a, 0x6d, 0xd7, 0x25, 0x9c, 0x07, 0x88, 0xd4, 0xe4, 0x9f, 0x82, 0x29, ++ 0xbe, 0x33, 0x85, 0x22, 0x76, 0x34, 0xe4, 0x9f, 0xd4, 0xf1, 0xf8, 0xab, ++ 0x64, 0x95, 0xa7, 0xbb, 0x05, 0x7c, 0xa0, 0xdc, 0x8b, 0xe5, 0x2c, 0xaa, ++ 0x8b, 0xde, 0x9d, 0xeb, 0x7f, 0x37, 0x29, 0x80, 0x5e, 0x8d, 0x6c, 0xc7, ++ 0x66, 0x7c, 0xef, 0xc6, 0x18, 0xc5, 0xec, 0xcd, 0x36, 0x1f, 0x7d, 0xca, ++ 0x7e, 0x24, 0x7d, 0x4a, 0xfa, 0x1d, 0x6a, 0x7d, 0xee, 0x1f, 0xb8, 0xbe, ++ 0xd3, 0x49, 0x42, 0x1f, 0x91, 0x6e, 0x4f, 0xc4, 0x38, 0x95, 0xd2, 0xfb, ++ 0xc6, 0xd8, 0x51, 0x3f, 0xf3, 0x7d, 0xeb, 0x34, 0x8a, 0xf7, 0x07, 0xfb, ++ 0xd7, 0x0b, 0xc4, 0x9a, 0x17, 0x39, 0xc8, 0x7a, 0x53, 0xf9, 0xbd, 0x65, ++ 0xe8, 0xf5, 0xb6, 0x15, 0x45, 0x0f, 0xb2, 0xde, 0xc0, 0x75, 0xca, 0x7d, ++ 0x22, 0x7d, 0xda, 0xfb, 0xed, 0x0b, 0xad, 0xdc, 0xbe, 0x70, 0x5a, 0x81, ++ 0xf3, 0x0b, 0xda, 0x9d, 0x5e, 0x6d, 0x26, 0xff, 0x2f, 0xb9, 0x2e, 0xa9, ++ 0xff, 0xfe, 0xa1, 0x71, 0x08, 0xaf, 0x4c, 0x8d, 0x14, 0x7a, 0x9d, 0xae, ++ 0x50, 0x94, 0x23, 0x4b, 0x82, 0xc5, 0xfe, 0xf7, 0xf2, 0x3c, 0x7e, 0x9f, ++ 0xe7, 0xf7, 0x5d, 0x9e, 0xfb, 0xf2, 0xbd, 0x36, 0xc9, 0x9f, 0xcf, 0x34, ++ 0x88, 0x73, 0x91, 0x75, 0xdd, 0x8b, 0xfb, 0x99, 0x35, 0xa6, 0xd0, 0xfb, ++ 0x24, 0x27, 0x5b, 0x4f, 0x87, 0xe2, 0x7b, 0x29, 0xa7, 0x67, 0xf0, 0xf9, ++ 0xc9, 0x76, 0x6b, 0x0d, 0x3c, 0xce, 0x98, 0x85, 0x1a, 0x6d, 0xf8, 0xfe, ++ 0x21, 0xdc, 0xaf, 0x4e, 0x36, 0xa2, 0xdd, 0xa7, 0x25, 0x86, 0xee, 0x91, ++ 0xb7, 0x34, 0xa6, 0x10, 0x5f, 0xb8, 0xc5, 0x15, 0xc1, 0xf5, 0x0f, 0x42, ++ 0xbe, 0xaf, 0x14, 0x7c, 0x30, 0x64, 0x6d, 0xd9, 0x46, 0x7c, 0xe7, 0x7b, ++ 0x79, 0x7b, 0x92, 0x55, 0x81, 0x71, 0x96, 0x5b, 0xec, 0x67, 0xdb, 0xa9, ++ 0xfd, 0x38, 0x3b, 0xca, 0x83, 0x21, 0x6d, 0xf3, 0x8c, 0xc9, 0x24, 0xf7, ++ 0xf2, 0x7b, 0x80, 0xb4, 0x13, 0xad, 0x55, 0x58, 0x31, 0xc5, 0x8d, 0x21, ++ 0x9f, 0xc4, 0xfd, 0xa5, 0x3b, 0x9a, 0x8a, 0xe7, 0xce, 0x8a, 0x76, 0x7e, ++ 0x0f, 0x98, 0xab, 0x63, 0x9b, 0xd1, 0x4e, 0x38, 0xaa, 0xb9, 0x78, 0x76, ++ 0x1c, 0xf2, 0x89, 0x87, 0x15, 0x8a, 0x33, 0x67, 0xdb, 0xb4, 0xef, 0x58, ++ 0xa5, 0x67, 0x17, 0x7f, 0x4c, 0xf7, 0xbf, 0x80, 0x77, 0xe0, 0xd6, 0x1a, ++ 0x3c, 0x8e, 0x18, 0xe4, 0xe3, 0x20, 0x6f, 0xa0, 0xbe, 0x69, 0xb9, 0xa5, ++ 0x98, 0xe4, 0xf6, 0x52, 0x41, 0x27, 0x27, 0xdb, 0xba, 0xe9, 0x3d, 0x7a, ++ 0x09, 0xd7, 0x01, 0xf1, 0x3f, 0x46, 0x1e, 0x07, 0xdc, 0x1b, 0xaa, 0x23, ++ 0x3d, 0xdc, 0x0f, 0x8d, 0x03, 0xaa, 0x10, 0x76, 0x25, 0x49, 0x37, 0xd2, ++ 0x2e, 0xf5, 0x08, 0xfe, 0x67, 0x32, 0xc2, 0x49, 0xa5, 0x73, 0xad, 0x48, ++ 0x2d, 0xa1, 0xf7, 0x94, 0x36, 0xb6, 0xcd, 0xa2, 0xb4, 0x62, 0x6b, 0xd1, ++ 0x83, 0xae, 0xf1, 0x18, 0x7f, 0x5c, 0x1c, 0x3d, 0x85, 0xe6, 0x6d, 0x20, ++ 0x3d, 0x59, 0x45, 0xdd, 0x2c, 0x1e, 0xaf, 0xfb, 0x64, 0x50, 0x04, 0xde, ++ 0x6f, 0x12, 0x0d, 0xae, 0x44, 0x7f, 0xb9, 0xb4, 0x62, 0xfb, 0x26, 0x8a, ++ 0xff, 0xf9, 0x6c, 0xbb, 0x99, 0xe2, 0x7f, 0x0a, 0xad, 0xf3, 0x0a, 0x23, ++ 0xa2, 0xe8, 0xbd, 0x63, 0x8a, 0xaf, 0x93, 0xf5, 0xc2, 0xf3, 0xf9, 0x79, ++ 0x51, 0x5d, 0x37, 0x4b, 0x13, 0xbf, 0xb3, 0x1c, 0xfa, 0xc4, 0x77, 0x36, ++ 0xbf, 0xf2, 0x84, 0x90, 0x1f, 0x9a, 0x8c, 0xcb, 0xa9, 0x8d, 0x71, 0x06, ++ 0xe7, 0xe7, 0xf2, 0xf8, 0x9c, 0xc9, 0x36, 0x1e, 0x97, 0x13, 0x47, 0xf5, ++ 0x6d, 0x83, 0xea, 0xc5, 0x65, 0x7a, 0xb6, 0x89, 0xc7, 0x79, 0xf8, 0xc5, ++ 0x1b, 0xdd, 0xb0, 0x04, 0xda, 0xd7, 0xd6, 0x3d, 0x17, 0x86, 0xfd, 0xd4, ++ 0x3c, 0xf0, 0xee, 0x44, 0xab, 0x8e, 0xf4, 0x50, 0xd1, 0xf9, 0xc3, 0xfd, ++ 0xe2, 0x8d, 0xda, 0x79, 0xbc, 0x51, 0x8c, 0xb8, 0x2f, 0xcd, 0x8d, 0x2c, ++ 0x5e, 0xb4, 0x04, 0xe1, 0xff, 0x7b, 0x95, 0xe0, 0x3f, 0xd4, 0x78, 0x55, ++ 0x87, 0x15, 0x8d, 0x1d, 0xef, 0x16, 0x77, 0x38, 0xc9, 0xad, 0x4e, 0x2f, ++ 0x33, 0xa2, 0x1d, 0xd9, 0x69, 0x65, 0x24, 0x17, 0x7f, 0xa6, 0xb2, 0x46, ++ 0x94, 0x03, 0xa4, 0xfc, 0x22, 0xbf, 0x5f, 0x95, 0xcf, 0xf9, 0xd5, 0x67, ++ 0xe1, 0xad, 0x89, 0x48, 0x1f, 0x2b, 0x77, 0x3d, 0x94, 0x88, 0xe7, 0xcb, ++ 0xe7, 0xa1, 0x3c, 0x5f, 0xb2, 0xeb, 0xa6, 0xd7, 0x91, 0x5f, 0x39, 0x77, ++ 0x04, 0x71, 0xf9, 0x5c, 0xcf, 0x48, 0x1e, 0x2e, 0x77, 0x71, 0xf9, 0x9a, ++ 0x55, 0x45, 0xca, 0xf7, 0x48, 0xcd, 0xa5, 0x40, 0x47, 0x39, 0xf9, 0x21, ++ 0xfc, 0xdd, 0xa3, 0x76, 0x6d, 0xbc, 0xb9, 0x7c, 0xe7, 0xf6, 0x73, 0x3d, ++ 0x7f, 0x9f, 0x07, 0xe3, 0x8d, 0x90, 0xde, 0x3f, 0xd2, 0x7b, 0x97, 0x23, ++ 0x7e, 0x3f, 0x02, 0xf9, 0x15, 0xef, 0xb1, 0xe1, 0xf9, 0x9c, 0x3e, 0x3f, ++ 0x6a, 0x55, 0x67, 0x93, 0xdf, 0x10, 0x6c, 0x14, 0x94, 0x43, 0x3e, 0x6a, ++ 0x7d, 0x2e, 0x14, 0xe3, 0xa1, 0xa5, 0xbc, 0x56, 0xa4, 0xfe, 0xc5, 0x81, ++ 0xef, 0xff, 0xac, 0x39, 0xc8, 0xe3, 0x82, 0xf1, 0x7d, 0x7a, 0x7a, 0x2b, ++ 0x54, 0xe8, 0x41, 0xea, 0x85, 0x1e, 0x64, 0xcd, 0x0b, 0x86, 0xd9, 0xf1, ++ 0x51, 0x24, 0x7f, 0xd1, 0x97, 0x5a, 0xbd, 0xd7, 0x38, 0x18, 0xfe, 0xaa, ++ 0x85, 0x7c, 0xd5, 0x9f, 0x3f, 0xb0, 0x9f, 0xee, 0x6d, 0xb5, 0x7b, 0xb9, ++ 0xfc, 0x50, 0xeb, 0xe9, 0x26, 0xf9, 0x41, 0xca, 0x23, 0x32, 0xee, 0xb0, ++ 0x66, 0x6f, 0x37, 0xc9, 0x13, 0xb2, 0x5d, 0xfd, 0x01, 0x0e, 0x97, 0xba, ++ 0x03, 0xfc, 0x7b, 0x59, 0xba, 0x4e, 0xea, 0x51, 0x1c, 0x4a, 0x2a, 0xde, ++ 0xa7, 0x15, 0xca, 0xaf, 0x9e, 0x92, 0x51, 0xba, 0x5e, 0x93, 0x1f, 0x57, ++ 0xba, 0x5e, 0x8f, 0xa9, 0xd0, 0xdb, 0xeb, 0x7b, 0x49, 0x1e, 0xbc, 0x3b, ++ 0xfd, 0x1d, 0xba, 0x87, 0xd7, 0xb5, 0x88, 0x7e, 0x21, 0x6f, 0xf0, 0x1b, ++ 0x6f, 0x09, 0x12, 0xd1, 0x70, 0xfe, 0x3d, 0xc5, 0x82, 0xed, 0x6d, 0x1a, ++ 0xff, 0xda, 0xba, 0x03, 0x11, 0xd4, 0xde, 0x5b, 0x17, 0xbc, 0x19, 0xcf, ++ 0x79, 0x47, 0xbd, 0x45, 0x8f, 0x69, 0x73, 0x9d, 0x85, 0xce, 0xfd, 0x6d, ++ 0x0d, 0xba, 0x74, 0xf4, 0x53, 0x77, 0x28, 0xc1, 0x76, 0x94, 0xe3, 0x3a, ++ 0x84, 0xff, 0xd6, 0xf0, 0x9a, 0xf7, 0xcd, 0xa8, 0x3f, 0x88, 0x63, 0xbd, ++ 0xc7, 0xf1, 0xbd, 0x5d, 0x6f, 0x82, 0xb3, 0x16, 0xf7, 0x43, 0x0c, 0xbe, ++ 0xee, 0xa2, 0xfa, 0xe2, 0x89, 0x7a, 0x8e, 0x7c, 0x9a, 0x8d, 0xfd, 0x17, ++ 0x8c, 0xea, 0xba, 0x8c, 0x6f, 0x6a, 0x18, 0xd6, 0x4f, 0x2a, 0x45, 0x3b, ++ 0xc5, 0xda, 0x7c, 0xb1, 0x8e, 0x8c, 0xae, 0x6c, 0xa4, 0xeb, 0xe1, 0xc7, ++ 0x38, 0x7f, 0x7e, 0xcc, 0xc0, 0x36, 0xd3, 0xbb, 0xcd, 0xfa, 0x62, 0x86, ++ 0xfa, 0x7b, 0xaf, 0xb0, 0x2f, 0xba, 0xbe, 0xd1, 0xd1, 0xfb, 0xb3, 0x1d, ++ 0x8a, 0xf7, 0xd7, 0xfe, 0xf2, 0xd5, 0x1e, 0xb1, 0x6f, 0x8b, 0x83, 0xb8, ++ 0x9d, 0xf1, 0xfe, 0x09, 0xce, 0x5f, 0xe2, 0x3c, 0x7e, 0xaa, 0x18, 0xc6, ++ 0x67, 0x92, 0x7f, 0xa3, 0x3a, 0x1a, 0xfb, 0xef, 0x11, 0x76, 0x48, 0x29, ++ 0xa7, 0xce, 0x14, 0xfc, 0x39, 0x41, 0xdc, 0xaf, 0x8c, 0x23, 0x62, 0x2d, ++ 0x48, 0xc7, 0xd2, 0xaf, 0x4f, 0x71, 0x38, 0x28, 0xde, 0xf3, 0xce, 0x8c, ++ 0x63, 0xe5, 0x78, 0x3e, 0xdf, 0xd3, 0x6b, 0xa2, 0x78, 0x81, 0x99, 0xbd, ++ 0xc1, 0x24, 0xb7, 0x26, 0x8c, 0x98, 0x43, 0xe7, 0x99, 0x7c, 0xb7, 0x5d, ++ 0xb1, 0xe9, 0x59, 0x09, 0xd4, 0x3f, 0x96, 0xa1, 0xf3, 0x62, 0x5c, 0xdc, ++ 0x3d, 0xcc, 0xc4, 0xfd, 0x02, 0x4c, 0x01, 0xf2, 0xad, 0xce, 0x4c, 0xfe, ++ 0xc9, 0x4a, 0xc7, 0xef, 0xbe, 0x41, 0xbe, 0x1e, 0xaf, 0x5e, 0x3a, 0x1e, ++ 0x8e, 0xfe, 0xb2, 0xff, 0xae, 0xd0, 0xfb, 0xa3, 0xa5, 0x7d, 0x67, 0x1f, ++ 0x7b, 0x9b, 0xe1, 0x7d, 0xd8, 0x9d, 0x49, 0xf1, 0xd0, 0x09, 0xce, 0x87, ++ 0x10, 0x85, 0x27, 0xfb, 0xe6, 0x74, 0x3b, 0x01, 0x75, 0xf7, 0x58, 0x3d, ++ 0x26, 0x3b, 0x3f, 0x2f, 0x98, 0xff, 0x3a, 0x3a, 0x7e, 0xfe, 0x4d, 0x58, ++ 0xa4, 0xce, 0x37, 0xbf, 0x9e, 0xde, 0xb3, 0xf4, 0xae, 0x63, 0x4f, 0xaf, ++ 0x89, 0xf4, 0xb6, 0x33, 0x3b, 0xc4, 0x3b, 0x87, 0x01, 0xf3, 0xe9, 0x89, ++ 0xb5, 0x91, 0x9f, 0x34, 0xd4, 0x23, 0x79, 0xb3, 0xc7, 0xa2, 0xa3, 0xf7, ++ 0xdd, 0x66, 0x76, 0x1c, 0xa7, 0xf7, 0x0a, 0x67, 0xca, 0xf7, 0x0c, 0x4d, ++ 0xda, 0xf7, 0x0c, 0x99, 0x2d, 0x21, 0x02, 0xf5, 0xca, 0xa4, 0x4b, 0x05, ++ 0xe1, 0x20, 0xba, 0x99, 0xe3, 0xaf, 0x20, 0x5c, 0x7b, 0x5f, 0xec, 0xc8, ++ 0xe7, 0xf2, 0x62, 0x87, 0xe0, 0x23, 0x81, 0xef, 0xdd, 0xcb, 0xb8, 0x15, ++ 0x79, 0xae, 0xbc, 0x6c, 0xd9, 0x75, 0x0b, 0xd7, 0x4b, 0xf1, 0x7d, 0xba, ++ 0x4a, 0xda, 0xf9, 0xaf, 0x24, 0x93, 0x3c, 0xd1, 0xd7, 0x91, 0xf2, 0x9d, ++ 0xef, 0x58, 0xbc, 0x8b, 0x72, 0x05, 0xc8, 0x0b, 0xa7, 0xae, 0x76, 0xbc, ++ 0x92, 0x3f, 0xdc, 0x77, 0xae, 0x2e, 0x14, 0x70, 0x92, 0xe7, 0xb3, 0x8c, ++ 0x5b, 0x58, 0x28, 0xe0, 0xb5, 0xd0, 0xa2, 0xe3, 0xf0, 0x09, 0xf8, 0xdd, ++ 0x15, 0x49, 0x37, 0x81, 0x74, 0xe1, 0xc3, 0x3b, 0x8f, 0xf7, 0x92, 0xf8, ++ 0x64, 0xb7, 0x77, 0xbe, 0x8a, 0xf1, 0x58, 0x80, 0xc7, 0xf1, 0xf7, 0x31, ++ 0xc2, 0xdf, 0xdb, 0x48, 0x8f, 0x27, 0xbf, 0x79, 0x73, 0x03, 0x3e, 0xbb, ++ 0x30, 0x42, 0x75, 0x74, 0x3b, 0x93, 0x7e, 0x14, 0xfc, 0xd1, 0xfb, 0xdd, ++ 0x3f, 0x18, 0x7f, 0x9d, 0x81, 0xf8, 0xf3, 0x9a, 0xc7, 0xa0, 0x1c, 0xf1, ++ 0x80, 0x8e, 0xe4, 0x08, 0xe9, 0xef, 0xe8, 0x14, 0xef, 0xb5, 0x4b, 0xbf, ++ 0x47, 0x96, 0xce, 0x88, 0x1f, 0x94, 0xaa, 0xc1, 0xa4, 0x2f, 0x74, 0x8a, ++ 0x77, 0xda, 0x81, 0x0f, 0xbc, 0x8a, 0x7c, 0x40, 0xee, 0xff, 0x51, 0x73, ++ 0xba, 0xc6, 0xe3, 0x39, 0x7a, 0x12, 0xae, 0xe8, 0x38, 0xbf, 0x2e, 0x9d, ++ 0x87, 0xbe, 0x87, 0x4f, 0xe3, 0xfe, 0x86, 0x23, 0x59, 0x67, 0x9c, 0xf0, ++ 0xcf, 0xc9, 0x45, 0xf9, 0x4d, 0xf5, 0xbd, 0x4f, 0x4d, 0x74, 0xdf, 0xac, ++ 0xb8, 0x1f, 0xae, 0x44, 0xff, 0xcb, 0x85, 0x16, 0xf2, 0x73, 0xef, 0x71, ++ 0x07, 0xbc, 0x4f, 0x2d, 0xde, 0x31, 0xef, 0x61, 0x82, 0x3f, 0x2c, 0x96, ++ 0xef, 0x98, 0xc3, 0x7e, 0x86, 0x76, 0x6d, 0x4b, 0x78, 0x79, 0xff, 0x3b, ++ 0xe6, 0xa3, 0x19, 0xdd, 0xa3, 0xda, 0x32, 0x59, 0x1a, 0xca, 0x5f, 0x6d, ++ 0xe2, 0x77, 0x7f, 0x86, 0x7c, 0xc7, 0x7c, 0x65, 0x24, 0xe9, 0x4d, 0x1f, ++ 0x79, 0xc4, 0x3d, 0x16, 0xcf, 0x03, 0xf9, 0x7e, 0xf5, 0xf4, 0x04, 0xa7, ++ 0x79, 0xda, 0xf0, 0x81, 0xef, 0x57, 0x3f, 0xa8, 0x14, 0x2f, 0xc1, 0xdf, ++ 0x81, 0x71, 0x8d, 0xe7, 0xf3, 0xed, 0x5a, 0x12, 0xfc, 0xcc, 0x2e, 0x0e, ++ 0x6e, 0x2f, 0xea, 0x7b, 0x4e, 0x36, 0x86, 0xd2, 0xbb, 0xdd, 0x92, 0x4e, ++ 0xa5, 0x9e, 0x7b, 0x94, 0xab, 0xfb, 0x61, 0x84, 0x93, 0x8c, 0xab, 0xfd, ++ 0x58, 0xd0, 0x9b, 0x84, 0xbf, 0x8c, 0x2b, 0x8c, 0x0a, 0xc0, 0x83, 0xa4, ++ 0xbb, 0xfe, 0xdf, 0x8b, 0x59, 0xc7, 0xe9, 0xaf, 0xdf, 0x9f, 0xb6, 0x9e, ++ 0x91, 0x3e, 0x65, 0x24, 0x4c, 0x25, 0x84, 0xfc, 0x23, 0xed, 0x36, 0x84, ++ 0xeb, 0x3d, 0x89, 0xce, 0x24, 0x9c, 0x7f, 0xf3, 0x6a, 0x80, 0x33, 0xe9, ++ 0xd1, 0xb9, 0x9f, 0xe7, 0x49, 0xf1, 0x7b, 0x16, 0x81, 0xfb, 0x29, 0x63, ++ 0x9a, 0x4e, 0xda, 0x89, 0x29, 0x5e, 0xa0, 0x54, 0x9c, 0x6b, 0xa5, 0x32, ++ 0x3e, 0xa0, 0x51, 0x1b, 0x1f, 0x10, 0xf8, 0xbe, 0x69, 0xf0, 0xc8, 0xe2, ++ 0x09, 0xd3, 0x60, 0x9d, 0x17, 0x94, 0x77, 0x27, 0xe2, 0xc7, 0x37, 0xff, ++ 0xb7, 0x3a, 0xa8, 0xdf, 0xc9, 0xa4, 0x69, 0x9c, 0x8f, 0xa7, 0xc6, 0x3a, ++ 0x27, 0x4e, 0xa3, 0xf3, 0x6d, 0xa6, 0x46, 0x8e, 0x7c, 0x33, 0xf3, 0xd3, ++ 0x04, 0xfa, 0x7d, 0x99, 0x6f, 0x8f, 0x8f, 0xc4, 0x73, 0xef, 0xa6, 0x84, ++ 0xe2, 0xc9, 0xd8, 0xaf, 0x39, 0x95, 0xdb, 0x0d, 0x3e, 0x8e, 0xeb, 0xa2, ++ 0xf8, 0x8e, 0x8f, 0x97, 0xfc, 0x2d, 0x81, 0xf4, 0xce, 0xeb, 0xf8, 0xbb, ++ 0xac, 0x3f, 0x74, 0x9e, 0x03, 0xe3, 0x99, 0x39, 0x1d, 0xdc, 0xb6, 0x9c, ++ 0xfb, 0x23, 0xc6, 0xb3, 0x06, 0xa2, 0xdf, 0x58, 0x5f, 0x9c, 0xac, 0x19, ++ 0xe7, 0xf1, 0x3f, 0x2d, 0x9e, 0xd9, 0x17, 0x6f, 0xbc, 0x9b, 0x7e, 0x57, ++ 0xe4, 0xe5, 0x26, 0x4f, 0xca, 0x99, 0xd1, 0x03, 0xf1, 0x91, 0x1f, 0x74, ++ 0xec, 0x39, 0x1b, 0xdc, 0x68, 0x1a, 0x8e, 0x1c, 0x2a, 0xa5, 0xf8, 0xde, ++ 0xf0, 0x63, 0xb7, 0x25, 0x41, 0xbe, 0xf1, 0xc8, 0x4b, 0x3c, 0x1f, 0x7f, ++ 0xec, 0x72, 0x12, 0xe0, 0xe6, 0xf6, 0x23, 0x1d, 0x3c, 0x3f, 0xee, 0xd8, ++ 0x65, 0x8c, 0x07, 0x5e, 0x77, 0xe4, 0x48, 0x29, 0xc5, 0xff, 0xa2, 0xdd, ++ 0x60, 0x04, 0x63, 0x77, 0x1c, 0x79, 0xb9, 0xd4, 0x05, 0xf8, 0xa8, 0x9e, ++ 0xe0, 0x6c, 0x42, 0x7c, 0x2d, 0xba, 0xd2, 0xf0, 0x2a, 0x1e, 0xc3, 0xef, ++ 0xad, 0x9f, 0xbf, 0x3c, 0x89, 0xe2, 0x59, 0xe7, 0x25, 0xa4, 0xf3, 0x78, ++ 0xd6, 0xb5, 0x58, 0xbe, 0x30, 0x7a, 0xd9, 0x86, 0x70, 0xc5, 0x17, 0xcf, ++ 0xba, 0x6d, 0x1a, 0xb4, 0x03, 0x7a, 0xe8, 0xb9, 0xc4, 0xe9, 0xbf, 0xe7, ++ 0x12, 0xa7, 0xf7, 0x20, 0xe4, 0x03, 0xc3, 0xff, 0xf5, 0x54, 0xc6, 0xf5, ++ 0x4a, 0xfe, 0x3b, 0x14, 0x9f, 0x94, 0xfb, 0xef, 0xc7, 0x8a, 0x4b, 0x96, ++ 0xfb, 0x98, 0xed, 0xb2, 0x6f, 0x36, 0x20, 0x31, 0xba, 0xfe, 0xe5, 0x78, ++ 0xe1, 0x47, 0x68, 0xdf, 0x04, 0xc4, 0x0b, 0xf7, 0x18, 0x7a, 0x1f, 0x27, ++ 0x7b, 0xd2, 0x25, 0x66, 0xc3, 0x38, 0xc4, 0xa3, 0xa1, 0xef, 0xdb, 0xf0, ++ 0x9c, 0x68, 0xce, 0xe5, 0xf1, 0x8c, 0x4a, 0x6f, 0xa7, 0x0d, 0xfd, 0x30, ++ 0xf2, 0x73, 0x78, 0xbe, 0xf9, 0x52, 0xa7, 0x0d, 0xf9, 0x3b, 0xe6, 0x51, ++ 0xaf, 0xd5, 0x13, 0xc1, 0xe3, 0x1c, 0x65, 0x3c, 0x6c, 0xf3, 0x25, 0x6f, ++ 0x1c, 0xee, 0x93, 0x7c, 0x8c, 0x5b, 0x84, 0xfa, 0x85, 0xbd, 0xbd, 0xa5, ++ 0xc8, 0x6f, 0xf2, 0xd1, 0x8f, 0x37, 0x09, 0xfb, 0x7f, 0xed, 0xb8, 0x18, ++ 0x8f, 0x61, 0x7f, 0x3b, 0x2e, 0xf1, 0x78, 0xc3, 0x1e, 0x73, 0xa7, 0xcd, ++ 0x2a, 0xc6, 0xc1, 0x7e, 0x60, 0xdc, 0x24, 0xe4, 0x8b, 0xf9, 0x6b, 0x4d, ++ 0xe4, 0x6f, 0xd4, 0x7c, 0xa9, 0x61, 0x35, 0xf5, 0x53, 0x62, 0xe9, 0x1f, ++ 0x57, 0x09, 0x18, 0xd7, 0xf4, 0xdd, 0xe3, 0xce, 0x52, 0xfc, 0xc6, 0x4d, ++ 0xed, 0xe3, 0x71, 0x9d, 0x38, 0xae, 0x4d, 0x33, 0xae, 0x97, 0xe2, 0x81, ++ 0xa1, 0x3f, 0x8a, 0x3b, 0xed, 0x89, 0xb0, 0xc7, 0xe2, 0x7d, 0x5f, 0xe6, ++ 0x0b, 0xb1, 0x1c, 0xf2, 0x0f, 0x89, 0xdf, 0xa7, 0xc8, 0xb7, 0x79, 0x55, ++ 0xe4, 0xff, 0x32, 0x3e, 0x2a, 0xc6, 0x28, 0xde, 0xe1, 0x16, 0xf7, 0x15, ++ 0xa8, 0x47, 0xf1, 0x98, 0x3b, 0xfa, 0xf8, 0x3a, 0x2f, 0x36, 0x79, 0xab, ++ 0x71, 0x3f, 0x15, 0x0a, 0x7e, 0x5d, 0x68, 0xe4, 0xe7, 0x25, 0xd3, 0x05, ++ 0xdb, 0xd1, 0x0f, 0xbb, 0x48, 0xfd, 0xf6, 0xb5, 0x78, 0xbc, 0x97, 0xbc, ++ 0xc0, 0xef, 0x25, 0x85, 0x41, 0xc5, 0xdb, 0x70, 0x3f, 0xd6, 0xeb, 0x39, ++ 0xbf, 0x61, 0x51, 0xf2, 0x77, 0xd2, 0x3a, 0x57, 0xfe, 0x06, 0xea, 0xbd, ++ 0x13, 0x1d, 0x4f, 0xbf, 0x2b, 0x36, 0x32, 0xf6, 0x10, 0x4b, 0xc5, 0x7b, ++ 0xf1, 0xaa, 0x39, 0x19, 0x78, 0x5e, 0x80, 0xbc, 0xfd, 0x11, 0xe2, 0xfb, ++ 0x1d, 0xd6, 0xaa, 0xf0, 0xdf, 0xdf, 0xe2, 0xed, 0x17, 0xcc, 0x09, 0x21, ++ 0xff, 0x93, 0x9e, 0x23, 0x63, 0x72, 0x71, 0xff, 0xcc, 0x0f, 0xb2, 0x1d, ++ 0x64, 0xb0, 0x6f, 0x4f, 0x4d, 0xbb, 0x44, 0xfb, 0x74, 0x7e, 0xb8, 0x2d, ++ 0x17, 0x6f, 0x3a, 0xa7, 0x8e, 0x5c, 0xe6, 0xf9, 0x18, 0xdb, 0x41, 0xb4, ++ 0xeb, 0x9a, 0xd8, 0xa5, 0xd2, 0x42, 0xba, 0xa7, 0x71, 0x3b, 0xed, 0x4d, ++ 0x3e, 0x3b, 0xed, 0xa7, 0xb8, 0x2f, 0xeb, 0xe6, 0x5c, 0x30, 0x72, 0xb9, ++ 0xac, 0x97, 0xde, 0x67, 0x3e, 0x37, 0x8d, 0x9f, 0x5f, 0x20, 0xb7, 0x93, ++ 0xdc, 0xd1, 0x7b, 0x8d, 0x78, 0x6f, 0x33, 0xc3, 0x96, 0x8b, 0xe5, 0x89, ++ 0x86, 0xde, 0x30, 0x84, 0x5b, 0xcf, 0xb7, 0x7a, 0xfe, 0x5e, 0x2d, 0xeb, ++ 0x0d, 0xbb, 0xd1, 0xcf, 0x2e, 0xfb, 0x78, 0x07, 0x7f, 0xc7, 0x36, 0x90, ++ 0xae, 0xf7, 0x15, 0xf0, 0x73, 0x60, 0x55, 0xaa, 0x85, 0xde, 0x39, 0xab, ++ 0x8f, 0x35, 0x99, 0x28, 0xed, 0xb8, 0x34, 0x9b, 0x7e, 0x07, 0x46, 0x5f, ++ 0x9c, 0x8a, 0xf7, 0x02, 0x87, 0x71, 0x70, 0x7d, 0xe3, 0x13, 0x05, 0x5c, ++ 0xde, 0x4c, 0xda, 0x68, 0xf4, 0xd9, 0xdd, 0xe1, 0xfc, 0x70, 0x04, 0x33, ++ 0x99, 0x77, 0xb1, 0x3c, 0xc6, 0xb6, 0xff, 0x5b, 0x70, 0xff, 0xbd, 0x0b, ++ 0x8f, 0x18, 0xe3, 0x68, 0x71, 0x0f, 0x73, 0x59, 0x9f, 0x28, 0x4c, 0xd5, ++ 0xd4, 0x77, 0x60, 0xfd, 0xfe, 0x72, 0xc6, 0x9f, 0x67, 0x93, 0xed, 0x47, ++ 0xbe, 0xac, 0x7f, 0x02, 0xed, 0xf8, 0x34, 0x1e, 0xe2, 0xb9, 0x92, 0xfb, ++ 0x4d, 0x04, 0x9e, 0x17, 0xa5, 0xd3, 0x23, 0x35, 0xfe, 0x56, 0x8f, 0x45, ++ 0x99, 0xc9, 0xdf, 0x2a, 0x55, 0x15, 0x7a, 0x3c, 0xa8, 0x6b, 0x25, 0x7d, ++ 0x20, 0xb7, 0xdb, 0xc6, 0xff, 0xa7, 0x99, 0xe2, 0xe7, 0x76, 0x98, 0x39, ++ 0x1d, 0xa6, 0xea, 0x78, 0xba, 0x43, 0x27, 0xe2, 0x7c, 0x85, 0x9e, 0x4f, ++ 0xde, 0x5f, 0x7e, 0x31, 0xdd, 0x39, 0x7e, 0x7a, 0x2e, 0xf5, 0xe3, 0xa5, ++ 0x7e, 0xd4, 0xfd, 0x99, 0x28, 0x4f, 0xc4, 0x31, 0x0f, 0x8d, 0x2f, 0xe5, ++ 0x32, 0x59, 0x0f, 0xe4, 0x2f, 0x33, 0x31, 0x19, 0xf1, 0x3b, 0x6f, 0xf9, ++ 0xaa, 0x6e, 0x50, 0x78, 0xbe, 0x52, 0x30, 0xc3, 0x51, 0x90, 0x8b, 0x74, ++ 0xed, 0x62, 0x9f, 0xf8, 0x9d, 0x13, 0x17, 0x43, 0xc2, 0x1a, 0xfd, 0xf1, ++ 0x57, 0xaf, 0x6a, 0xf5, 0x9d, 0xaf, 0x14, 0xcc, 0xa4, 0x76, 0xb2, 0x7d, ++ 0x5d, 0xe3, 0x2c, 0xf6, 0x09, 0xc5, 0x21, 0x7a, 0x89, 0x7e, 0xea, 0x52, ++ 0x75, 0x74, 0x5f, 0xad, 0x57, 0xd9, 0x2b, 0xf4, 0x7b, 0x03, 0xac, 0x93, ++ 0xec, 0x98, 0xb2, 0xdd, 0xfb, 0xc0, 0x27, 0x3f, 0xa1, 0xf7, 0x1a, 0x1c, ++ 0x94, 0x7e, 0x00, 0xfc, 0xf2, 0x13, 0xf2, 0xf3, 0x5b, 0x4c, 0xe9, 0x5f, ++ 0x9a, 0x9c, 0xf4, 0xfd, 0x64, 0x53, 0x15, 0xa5, 0x5d, 0x4d, 0x0d, 0xf4, ++ 0xfd, 0x54, 0x53, 0x23, 0xa5, 0x8b, 0x6e, 0x0e, 0xcd, 0x41, 0xfa, 0x5f, ++ 0x75, 0x78, 0x3d, 0xfb, 0xc4, 0xef, 0x7c, 0xac, 0xf3, 0x18, 0x9c, 0xfe, ++ 0x7e, 0x35, 0xef, 0xcf, 0x18, 0x9c, 0x8e, 0x2a, 0x05, 0x1d, 0xbd, 0x9f, ++ 0x34, 0x78, 0x79, 0x53, 0x01, 0x97, 0x8b, 0xde, 0x2f, 0xe0, 0xf8, 0xec, ++ 0x59, 0xce, 0xe5, 0x4b, 0xa0, 0xcb, 0x16, 0x6b, 0xe4, 0xd0, 0xf2, 0x42, ++ 0x4f, 0x28, 0xf7, 0x47, 0x78, 0x69, 0x26, 0xa7, 0xf3, 0x9e, 0x38, 0x9e, ++ 0x77, 0x16, 0xf0, 0x77, 0x42, 0x1d, 0x3a, 0xd6, 0x8e, 0xed, 0x5f, 0x9a, ++ 0xc9, 0xdf, 0x61, 0x7f, 0x3f, 0x59, 0x47, 0xef, 0x39, 0x38, 0x22, 0x79, ++ 0xbf, 0xef, 0xa7, 0xe9, 0x48, 0x4e, 0xbb, 0x76, 0xf6, 0x8c, 0x52, 0x84, ++ 0x93, 0x23, 0x1a, 0xbe, 0x67, 0xf9, 0xf2, 0xef, 0x5f, 0xc5, 0xcb, 0x1d, ++ 0x23, 0xf8, 0x77, 0x39, 0x5f, 0x59, 0x3e, 0x7e, 0x7a, 0xbf, 0xfe, 0x20, ++ 0x8d, 0xdf, 0x8b, 0xb9, 0xdd, 0x1d, 0xe8, 0x9d, 0xfa, 0xef, 0xc7, 0x6f, ++ 0x21, 0x9f, 0x5f, 0x60, 0x7d, 0xe9, 0x47, 0x1f, 0x08, 0x8f, 0xa3, 0x62, ++ 0xdf, 0xd2, 0xbe, 0x40, 0xb9, 0x1d, 0xf7, 0x41, 0x92, 0xdf, 0xbe, 0xa8, ++ 0xb7, 0xd1, 0xbe, 0x90, 0x74, 0x28, 0xe9, 0xaf, 0x74, 0x3a, 0x87, 0x73, ++ 0x6a, 0x90, 0xa0, 0x73, 0x38, 0xbb, 0x08, 0x7e, 0x78, 0x86, 0xe1, 0xbd, ++ 0x38, 0xc6, 0x4c, 0x72, 0xac, 0x03, 0xed, 0x16, 0xb0, 0x9e, 0x1d, 0x22, ++ 0xce, 0x7d, 0xc0, 0x7e, 0x10, 0x76, 0x00, 0xb9, 0x1f, 0xe4, 0x3e, 0x90, ++ 0xf4, 0x1e, 0x0f, 0xfb, 0x8c, 0xdb, 0x39, 0xf8, 0x3a, 0xa6, 0xa9, 0x83, ++ 0xeb, 0xe7, 0x37, 0x15, 0xf0, 0x7b, 0x6a, 0x67, 0x74, 0xe8, 0xcf, 0x08, ++ 0xaf, 0x1d, 0x06, 0x2b, 0x9e, 0x37, 0xd3, 0x54, 0x6e, 0x6f, 0xe8, 0xe9, ++ 0x58, 0x98, 0x83, 0xfe, 0xe0, 0x45, 0x9b, 0x2c, 0x0d, 0x83, 0xf1, 0xaf, ++ 0x97, 0x45, 0xfb, 0x7f, 0x19, 0x0e, 0x92, 0x1f, 0x0c, 0x01, 0x87, 0x01, ++ 0xeb, 0x37, 0x0a, 0x7d, 0xfd, 0x3f, 0xb9, 0x7e, 0xe2, 0x6f, 0xc8, 0xb7, ++ 0x97, 0x73, 0x7f, 0xcc, 0x40, 0x7a, 0xdd, 0x5b, 0x20, 0xf9, 0x15, 0xa7, ++ 0xdb, 0x57, 0x0a, 0x1c, 0xbb, 0x90, 0x7e, 0x7a, 0x14, 0xb3, 0x1e, 0xef, ++ 0x27, 0x3d, 0xe6, 0xc1, 0xfd, 0xc7, 0x5f, 0x9a, 0xc9, 0xf7, 0x85, 0xa4, ++ 0x9f, 0xd2, 0xe9, 0x4c, 0xbc, 0x3f, 0x03, 0xeb, 0x4c, 0x19, 0xc8, 0xef, ++ 0xe4, 0x7a, 0xfa, 0xd7, 0xb9, 0x82, 0x11, 0xdf, 0x4b, 0x15, 0x71, 0xc6, ++ 0x81, 0xf8, 0x95, 0xeb, 0xf2, 0xe3, 0x7b, 0x1d, 0x05, 0x7e, 0x7a, 0x27, ++ 0xc6, 0x40, 0x5e, 0x81, 0x7e, 0x46, 0xd6, 0x5a, 0xe8, 0x7e, 0x2a, 0xe9, ++ 0xf7, 0xe2, 0xf0, 0x6f, 0x2a, 0xf1, 0xfc, 0x9a, 0x53, 0x60, 0xe3, 0xf6, ++ 0x17, 0x9d, 0x2a, 0xde, 0x81, 0xe5, 0xe7, 0x49, 0xff, 0x77, 0x45, 0xa5, ++ 0x78, 0x2b, 0xbf, 0x73, 0x86, 0xa1, 0xdc, 0xd2, 0x7b, 0x84, 0xdb, 0xe1, ++ 0xbc, 0x70, 0x4f, 0x42, 0x3b, 0x16, 0xea, 0x9e, 0xfd, 0xe3, 0xad, 0xbf, ++ 0x16, 0xfc, 0xa2, 0x6f, 0x71, 0xae, 0x0e, 0xf5, 0x03, 0x17, 0xbf, 0xb6, ++ 0xb8, 0xf0, 0xdc, 0xba, 0x38, 0xa2, 0xf7, 0x24, 0xca, 0x25, 0x17, 0xdb, ++ 0xf9, 0x3b, 0xe7, 0xd0, 0xe3, 0x5c, 0x05, 0xfd, 0x45, 0x30, 0xee, 0xc7, ++ 0x86, 0xbf, 0xd7, 0xc2, 0xed, 0x1f, 0xea, 0xc3, 0x5f, 0x9d, 0x44, 0x79, ++ 0xa8, 0xf2, 0x61, 0x95, 0xe4, 0x97, 0x8b, 0x78, 0x5d, 0x86, 0x76, 0xab, ++ 0x1e, 0xe0, 0xbf, 0x6f, 0x27, 0xfd, 0x06, 0x6b, 0x45, 0xbb, 0xe6, 0xf6, ++ 0xcb, 0x8b, 0xe8, 0x77, 0xcd, 0x80, 0x3e, 0x51, 0xfe, 0xf9, 0xc4, 0x5c, ++ 0x9f, 0x8c, 0x72, 0xf1, 0xac, 0x87, 0x1f, 0x38, 0x81, 0xef, 0xae, 0x57, ++ 0x1e, 0x54, 0x50, 0xcd, 0xcc, 0x8e, 0xa3, 0xbe, 0x1d, 0xf2, 0x67, 0x77, ++ 0xab, 0xfc, 0xf7, 0x55, 0x45, 0xbc, 0xc9, 0x6c, 0xe1, 0xd7, 0x5f, 0xbd, ++ 0x93, 0xfb, 0xf5, 0xd7, 0x62, 0x9c, 0x09, 0xca, 0x2f, 0x07, 0xb6, 0x3f, ++ 0x88, 0xbf, 0x3b, 0x59, 0xb7, 0xdb, 0xc0, 0xcc, 0xf0, 0x7d, 0x36, 0xbe, ++ 0x8f, 0x06, 0xe3, 0xac, 0xf0, 0x84, 0xc2, 0x05, 0x12, 0xfa, 0x6d, 0xd3, ++ 0xc6, 0xa5, 0xfe, 0x84, 0xb9, 0x36, 0xa2, 0x1e, 0xb9, 0x6a, 0x9b, 0xf6, ++ 0x7b, 0xf5, 0x0e, 0x6d, 0xbe, 0x36, 0xc0, 0x5f, 0xf1, 0x52, 0x81, 0xf0, ++ 0x4b, 0x1c, 0xcb, 0x32, 0xc9, 0x2f, 0xb1, 0x8d, 0xeb, 0x89, 0x25, 0xdf, ++ 0x1e, 0x28, 0xef, 0xba, 0x38, 0x7f, 0x5c, 0x23, 0xfd, 0x74, 0xbf, 0xa4, ++ 0x77, 0xbd, 0xd5, 0x23, 0x5f, 0x25, 0x9e, 0xb2, 0xf0, 0xfc, 0x3c, 0x91, ++ 0xef, 0x86, 0xfc, 0x85, 0xaf, 0x38, 0xfc, 0x25, 0xdc, 0xea, 0x05, 0xcf, ++ 0xbf, 0x10, 0xc7, 0x72, 0x3c, 0xb0, 0xbe, 0xfa, 0x23, 0x66, 0x2b, 0xde, ++ 0xff, 0xeb, 0x5f, 0xe0, 0xfa, 0x81, 0x8b, 0x9e, 0x70, 0x82, 0xf3, 0xaa, ++ 0xe0, 0x2e, 0xb2, 0x27, 0xb0, 0x17, 0x55, 0x2b, 0xca, 0x61, 0x77, 0x1d, ++ 0x56, 0x49, 0x9f, 0x50, 0xd7, 0x61, 0xfe, 0x35, 0xfe, 0x1e, 0x6d, 0xfd, ++ 0x41, 0x85, 0xde, 0xa9, 0xad, 0x3b, 0x1c, 0xe4, 0xe6, 0xf0, 0xb9, 0x54, ++ 0x89, 0xe5, 0x2b, 0x0e, 0x9b, 0xad, 0x36, 0x2c, 0x7f, 0x31, 0x88, 0xa1, ++ 0xde, 0xf9, 0x22, 0xe0, 0x0d, 0xfd, 0x61, 0x2f, 0x26, 0x74, 0x11, 0xfe, ++ 0x11, 0xaf, 0xa8, 0x8f, 0x80, 0xbf, 0xb9, 0xf8, 0xbb, 0x15, 0x12, 0xff, ++ 0xea, 0xc3, 0xdc, 0x8e, 0x5c, 0xb9, 0x47, 0xe0, 0xa7, 0xfd, 0x36, 0x3d, ++ 0xe1, 0xd5, 0xad, 0xb0, 0x98, 0xa4, 0x81, 0x78, 0x92, 0x78, 0xfe, 0x9d, ++ 0xee, 0xe9, 0x7e, 0x3c, 0x61, 0xbb, 0x59, 0x0f, 0xbf, 0xf7, 0x9a, 0xc0, ++ 0x3b, 0xc3, 0x38, 0x9b, 0xe3, 0xed, 0xe5, 0xf4, 0x7b, 0x18, 0x12, 0xdf, ++ 0xc6, 0x23, 0x9f, 0x24, 0xa2, 0xdc, 0x2b, 0xf1, 0xac, 0x02, 0x9e, 0x7f, ++ 0x21, 0xdb, 0xdb, 0xc4, 0x3b, 0x78, 0xdf, 0x81, 0xe7, 0x2a, 0xc4, 0xb3, ++ 0xe5, 0x9f, 0xc7, 0xf3, 0xeb, 0x05, 0x4c, 0xc6, 0xfb, 0x9d, 0x7d, 0x14, ++ 0xe5, 0xde, 0x50, 0x23, 0xd9, 0xcf, 0xa5, 0x3e, 0x43, 0xea, 0x2f, 0x86, ++ 0xd7, 0xbc, 0xff, 0x6a, 0x14, 0x0c, 0x3c, 0x3a, 0xf6, 0x39, 0x92, 0x73, ++ 0x4b, 0x23, 0xcf, 0xd5, 0xad, 0x66, 0xa4, 0x3f, 0x9b, 0x34, 0x1d, 0xf5, ++ 0x9f, 0xd7, 0xbc, 0x85, 0x3f, 0xe7, 0xcb, 0xde, 0xb9, 0xf6, 0xe9, 0x4c, ++ 0xa4, 0x8f, 0x66, 0x43, 0x17, 0xfd, 0x5e, 0x8c, 0x2b, 0x82, 0xbf, 0x27, ++ 0xdf, 0x93, 0x34, 0x6f, 0xdb, 0xf3, 0x30, 0x5e, 0x61, 0xe4, 0x37, 0x89, ++ 0xfb, 0x71, 0xdf, 0xbc, 0x1c, 0x44, 0x66, 0x93, 0x59, 0x82, 0xaf, 0xe2, ++ 0x9f, 0xc9, 0xff, 0x3d, 0xc0, 0x0e, 0x33, 0xe9, 0xd9, 0xea, 0x3a, 0x82, ++ 0xb8, 0x5e, 0xed, 0x80, 0xd6, 0x6e, 0xd6, 0x13, 0xc7, 0x7f, 0x9f, 0xaf, ++ 0xc8, 0xd8, 0x5b, 0xba, 0x1a, 0xe5, 0x72, 0xe8, 0x0f, 0xc7, 0x91, 0xf7, ++ 0xc1, 0x9a, 0x0e, 0xf1, 0xbb, 0x2f, 0xe2, 0xfe, 0x56, 0x23, 0xf5, 0x0c, ++ 0x7b, 0x03, 0xde, 0x85, 0xb2, 0xbe, 0x45, 0xf5, 0x4a, 0xa6, 0x27, 0xd3, ++ 0x3c, 0x52, 0x62, 0xa6, 0xd9, 0x90, 0x0f, 0x35, 0x2f, 0x61, 0xce, 0xe0, ++ 0x94, 0xef, 0xe2, 0xf7, 0x5c, 0x7f, 0x23, 0x7f, 0x27, 0x6f, 0x48, 0x39, ++ 0x70, 0x08, 0xbe, 0x2f, 0xe5, 0x3f, 0xe6, 0xd2, 0xea, 0x39, 0x24, 0xff, ++ 0x59, 0x21, 0x7e, 0x57, 0xb2, 0x7f, 0x7f, 0x88, 0x7c, 0xd5, 0x7a, 0x57, ++ 0x98, 0x49, 0x25, 0xba, 0xa3, 0x78, 0xf1, 0xda, 0xc7, 0xf8, 0xef, 0x2a, ++ 0x7e, 0x8a, 0x74, 0x17, 0xe6, 0xa3, 0xa7, 0x7a, 0x11, 0x97, 0xf6, 0xea, ++ 0xbf, 0xbd, 0xae, 0xc7, 0xdf, 0x67, 0xea, 0xd9, 0xc1, 0xfd, 0x22, 0x80, ++ 0x43, 0x3e, 0x88, 0xfe, 0xf9, 0xe7, 0x3d, 0x3c, 0x0e, 0xae, 0x3a, 0xa7, ++ 0x7b, 0xa2, 0xd7, 0x86, 0xbf, 0xcf, 0xc1, 0xf9, 0xd0, 0xca, 0xbd, 0x8a, ++ 0xdb, 0x96, 0x34, 0x08, 0x1d, 0x31, 0xf7, 0x46, 0xfe, 0x9e, 0x7d, 0x00, ++ 0x3d, 0xed, 0xfd, 0xee, 0xf7, 0x0e, 0x6f, 0x9f, 0x2e, 0xe2, 0xdd, 0xc6, ++ 0xb2, 0xf1, 0xff, 0x00, 0x78, 0x6e, 0xc7, 0xf8, 0xa3, 0x5c, 0x1f, 0xbf, ++ 0x08, 0x8c, 0x9b, 0xec, 0x3f, 0xbf, 0x02, 0x7e, 0xbf, 0xe3, 0x7f, 0x5a, ++ 0x1c, 0x77, 0x5f, 0x06, 0xac, 0xe7, 0x3b, 0xec, 0x8c, 0x3f, 0x89, 0xd5, ++ 0xbe, 0xdf, 0x72, 0x8d, 0x4d, 0xfb, 0xfb, 0x4c, 0xd7, 0xa5, 0x6b, 0x7f, ++ 0x9f, 0xa9, 0xcf, 0x22, 0xe0, 0x23, 0xe4, 0x41, 0x29, 0xa7, 0xee, 0x9e, ++ 0xce, 0xe5, 0x99, 0xc0, 0x54, 0xc2, 0xf7, 0x7a, 0xbb, 0x76, 0x1c, 0x79, ++ 0x2f, 0xfe, 0x69, 0x9e, 0x76, 0xbc, 0x79, 0x0e, 0xed, 0x78, 0x3f, 0x14, ++ 0x2f, 0x3f, 0x56, 0x3c, 0xeb, 0xf7, 0xc1, 0xef, 0x35, 0x31, 0xee, 0x09, ++ 0x31, 0xee, 0xeb, 0x62, 0xdc, 0x7f, 0x15, 0x4e, 0x32, 0x1d, 0x6a, 0xbc, ++ 0xff, 0x9f, 0xfe, 0xbf, 0x49, 0xff, 0x0f, 0x42, 0x61, 0x39, 0x64, 0x00, ++ 0x80, 0x00, 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0b, 0xb5, 0x5b, 0x0b, 0x7c, 0x94, 0xd5, 0x95, 0xbf, 0xdf, 0x7c, ++ 0xf3, 0xcc, 0x73, 0x08, 0x21, 0x09, 0x04, 0xc2, 0x24, 0x24, 0x21, 0x60, ++ 0x88, 0x03, 0x24, 0x54, 0x2b, 0x96, 0xc9, 0xd3, 0x00, 0xd6, 0x06, 0x5c, ++ 0x2d, 0x68, 0x84, 0x01, 0x52, 0xc8, 0x3b, 0x80, 0xb5, 0xd2, 0x16, 0x7f, ++ 0x19, 0x04, 0x11, 0x10, 0x5b, 0xa8, 0xd1, 0xa2, 0x22, 0x4e, 0x82, 0xe1, ++ 0xa1, 0x61, 0x9d, 0x08, 0xc1, 0x44, 0x43, 0x1d, 0x14, 0xb2, 0x88, 0xd6, ++ 0x8d, 0x74, 0x8b, 0xfd, 0xfd, 0x56, 0xdc, 0xf8, 0x28, 0xf2, 0x32, 0x13, ++ 0xa3, 0x74, 0xe5, 0x57, 0x2d, 0x7b, 0xfe, 0xe7, 0x7e, 0x1f, 0x99, 0x0c, ++ 0xa1, 0xda, 0xee, 0x6e, 0xf2, 0xd3, 0x93, 0x73, 0x5f, 0xdf, 0xb9, 0xe7, ++ 0x7d, 0xcf, 0xbd, 0xd4, 0x14, 0xe7, 0x18, 0xbe, 0x9a, 0x22, 0x44, 0x6e, ++ 0xcc, 0x59, 0x73, 0x4f, 0x84, 0x10, 0xae, 0x95, 0x3d, 0x45, 0x89, 0xd9, ++ 0x42, 0xf4, 0xbd, 0xa9, 0x8a, 0x26, 0x87, 0x10, 0xc2, 0xed, 0x3d, 0x56, ++ 0x1f, 0x2b, 0x44, 0x6d, 0xc7, 0x70, 0xb1, 0x29, 0x99, 0xf0, 0x92, 0xbe, ++ 0xb7, 0x0c, 0xc0, 0xdb, 0xc6, 0xd9, 0x37, 0x51, 0xff, 0xc6, 0xf6, 0x3f, ++ 0xbc, 0x83, 0xfe, 0xde, 0x03, 0xaa, 0xc3, 0x42, 0xfd, 0xaf, 0xb7, 0x7f, ++ 0x1c, 0x85, 0x75, 0x2e, 0x7c, 0x15, 0x2e, 0xc4, 0x70, 0xcc, 0xfb, 0x38, ++ 0x4a, 0x10, 0x5e, 0x7d, 0x49, 0x61, 0x7c, 0x13, 0xf5, 0x3b, 0x08, 0x9f, ++ 0xd9, 0xaa, 0x0a, 0x7f, 0x26, 0xad, 0x67, 0xf4, 0x99, 0xd1, 0x7f, 0x21, ++ 0x55, 0xc7, 0xbd, 0x66, 0x41, 0xb0, 0xa4, 0xa5, 0xd5, 0xdc, 0x43, 0xb0, ++ 0x6a, 0x4f, 0x2b, 0xf7, 0xbf, 0xe9, 0x33, 0x0d, 0xee, 0xdf, 0xd3, 0x38, ++ 0xa8, 0xdf, 0x8e, 0xf1, 0x04, 0xab, 0x8c, 0xde, 0x28, 0x3b, 0xc1, 0x73, ++ 0xed, 0xfa, 0x7a, 0x7e, 0x1e, 0x5f, 0x9d, 0xaa, 0xb8, 0xbc, 0x68, 0xdf, ++ 0xf3, 0x87, 0xb8, 0xa5, 0x18, 0xd7, 0xf2, 0x6e, 0xdc, 0x12, 0x82, 0x97, ++ 0xf1, 0x33, 0xe3, 0x6a, 0xf8, 0xd9, 0xc1, 0x17, 0x32, 0xdd, 0x34, 0xaf, ++ 0xa6, 0x83, 0xd6, 0x89, 0x18, 0x58, 0xa7, 0xa6, 0xc3, 0xa4, 0xe1, 0x92, ++ 0xee, 0xea, 0xd4, 0xd6, 0xa2, 0x18, 0xe2, 0x97, 0x68, 0x51, 0x44, 0x1a, ++ 0x81, 0x0b, 0x62, 0x8b, 0x58, 0x45, 0xfc, 0xac, 0x6a, 0x6f, 0xae, 0x16, ++ 0xd4, 0x5e, 0x95, 0x71, 0xb7, 0x49, 0x10, 0x5f, 0x02, 0x3e, 0xb5, 0x18, ++ 0xdf, 0xa7, 0x1f, 0x83, 0x88, 0xa3, 0x79, 0x76, 0xfa, 0x8b, 0xf8, 0x77, ++ 0xc1, 0xf7, 0x45, 0xd4, 0x12, 0x5a, 0xf7, 0x35, 0xdf, 0xd1, 0xdb, 0x5c, ++ 0x04, 0x03, 0x9d, 0x6f, 0x44, 0xe1, 0xbb, 0x81, 0x03, 0x34, 0x3e, 0x73, ++ 0x80, 0x9e, 0xe9, 0x2e, 0xe2, 0x5f, 0x0e, 0xa0, 0x59, 0x88, 0x11, 0x34, ++ 0xef, 0xc0, 0x1b, 0x51, 0x0e, 0xea, 0xdf, 0xe8, 0x7b, 0x43, 0xf2, 0xdb, ++ 0xe8, 0xe7, 0x7d, 0xbf, 0xae, 0xe1, 0x01, 0x82, 0xcc, 0xe7, 0x76, 0x95, ++ 0xf7, 0x5d, 0xf1, 0x95, 0xca, 0xfc, 0xd7, 0xd7, 0xbb, 0xc5, 0xa5, 0xf2, ++ 0x3a, 0x33, 0xdb, 0xd3, 0x22, 0xb1, 0xaf, 0x13, 0x3e, 0xf9, 0xbd, 0x39, ++ 0x2e, 0x87, 0x6c, 0x4f, 0x5d, 0x54, 0x06, 0xfa, 0x8f, 0x27, 0xcc, 0xcf, ++ 0x51, 0x93, 0x99, 0x6e, 0x17, 0xf0, 0xc0, 0xc4, 0xd9, 0xcd, 0x9b, 0x88, ++ 0x94, 0x2a, 0x1f, 0xad, 0x9b, 0x79, 0x35, 0xdf, 0x96, 0x68, 0xeb, 0x76, ++ 0x99, 0xc4, 0x3c, 0x1f, 0xe4, 0x96, 0xba, 0xbf, 0x6b, 0x14, 0xe9, 0xc7, ++ 0xf1, 0xe2, 0xe1, 0x93, 0xa9, 0xe7, 0xca, 0xb8, 0xbb, 0x5d, 0x06, 0x1e, ++ 0x57, 0x64, 0x76, 0xa7, 0x2e, 0xa7, 0x71, 0x27, 0x22, 0x1c, 0x91, 0x76, ++ 0x5a, 0xef, 0xc1, 0xe2, 0x71, 0x91, 0x90, 0xeb, 0xeb, 0x80, 0x68, 0x2f, ++ 0xde, 0x69, 0x76, 0x13, 0xac, 0x3c, 0x20, 0xbf, 0x77, 0xc2, 0xde, 0x1d, ++ 0x05, 0x7d, 0x3b, 0x71, 0x60, 0xaa, 0xea, 0x51, 0x06, 0xd6, 0xbb, 0x43, ++ 0xfb, 0xae, 0x10, 0x1e, 0x86, 0x03, 0x72, 0xf3, 0xb0, 0x9c, 0xca, 0xbd, ++ 0x8d, 0x11, 0x58, 0x67, 0x40, 0x7e, 0xb2, 0x7d, 0x8e, 0xcb, 0xce, 0xe3, ++ 0x8f, 0x7b, 0xdf, 0xbd, 0xf3, 0x6e, 0xda, 0xdf, 0x89, 0x8c, 0x70, 0x27, ++ 0xe4, 0xd2, 0x65, 0x16, 0xe5, 0x3e, 0xd6, 0x13, 0xfa, 0x08, 0xbe, 0xd7, ++ 0x99, 0xd8, 0x08, 0x3e, 0xe8, 0xdf, 0x9b, 0x03, 0x79, 0xd0, 0xbc, 0x40, ++ 0x86, 0x81, 0xe5, 0xda, 0xdb, 0x6e, 0xd2, 0xc6, 0xdd, 0xdd, 0x2c, 0x06, ++ 0x8d, 0x33, 0xb1, 0xdc, 0x2e, 0x3c, 0x37, 0x98, 0x1e, 0xbb, 0xf7, 0xc3, ++ 0x5f, 0xdd, 0x4d, 0xe3, 0xab, 0x9f, 0x51, 0x85, 0x85, 0x9a, 0xab, 0x4d, ++ 0xcb, 0xe3, 0xb0, 0xff, 0x4f, 0xb7, 0x0f, 0xa6, 0xaf, 0x5c, 0xe3, 0x73, ++ 0xb5, 0xc9, 0x1f, 0x17, 0x17, 0xa4, 0xaf, 0xd5, 0x1d, 0x57, 0xec, 0x25, ++ 0x82, 0xf5, 0xbb, 0x43, 0xb7, 0x0f, 0x07, 0xcb, 0x53, 0x97, 0xe3, 0x89, ++ 0x0c, 0x55, 0xd2, 0x95, 0x60, 0xf1, 0x0a, 0x22, 0xb9, 0xba, 0xb5, 0x99, ++ 0xf5, 0x9a, 0xcc, 0xcd, 0x63, 0x9b, 0xc2, 0x50, 0xd8, 0x09, 0x26, 0x86, ++ 0x77, 0x27, 0x2b, 0xb4, 0xff, 0xc4, 0xfb, 0xad, 0xce, 0xb5, 0x44, 0xff, ++ 0x73, 0x8a, 0xd6, 0x6f, 0x20, 0x18, 0x43, 0xb8, 0x41, 0xe2, 0x66, 0x82, ++ 0x56, 0x82, 0xcf, 0x98, 0x64, 0x3b, 0xcc, 0x16, 0xf3, 0xc7, 0x90, 0x38, ++ 0x15, 0xc2, 0x4d, 0xc5, 0xe3, 0x72, 0x0c, 0x29, 0xb4, 0x8e, 0xda, 0x3a, ++ 0x19, 0x72, 0x7d, 0x71, 0x86, 0xeb, 0x51, 0x17, 0xed, 0xff, 0x97, 0x33, ++ 0x4a, 0x26, 0xcd, 0x20, 0x78, 0x42, 0xf4, 0x2d, 0x15, 0xf4, 0xcd, 0x9a, ++ 0x8b, 0x11, 0x1e, 0x11, 0x2d, 0x44, 0xa1, 0xfa, 0xfe, 0x13, 0xf8, 0x6e, ++ 0xff, 0x01, 0x93, 0x80, 0xff, 0xa8, 0xb1, 0x76, 0x54, 0x7e, 0x42, 0x7a, ++ 0xda, 0xef, 0x24, 0x43, 0x21, 0xba, 0xfb, 0xb7, 0x9b, 0xbc, 0x1e, 0xd6, ++ 0x3f, 0x57, 0x84, 0x32, 0x4d, 0x88, 0xa5, 0x37, 0x48, 0xbb, 0xf9, 0xd4, ++ 0xe1, 0x9e, 0xa6, 0x8e, 0xa3, 0xf1, 0x6b, 0x0c, 0xbc, 0xbf, 0xea, 0x16, ++ 0xd5, 0x6b, 0xa3, 0x71, 0xbd, 0xf5, 0xc4, 0x02, 0x62, 0xf9, 0x67, 0xad, ++ 0xc9, 0x3f, 0x82, 0xbe, 0x56, 0x1f, 0x53, 0xed, 0x56, 0xda, 0x77, 0xbe, ++ 0x2f, 0xf9, 0xd7, 0xd3, 0x81, 0xb7, 0x98, 0x9c, 0x16, 0x9a, 0x5f, 0xeb, ++ 0xa3, 0x46, 0xc2, 0x6b, 0xf7, 0x28, 0x5e, 0x87, 0x5c, 0x5f, 0xc0, 0x2e, ++ 0x6b, 0x6e, 0x60, 0x5d, 0x17, 0xa7, 0x6d, 0xb5, 0x29, 0x22, 0x8b, 0xe0, ++ 0x9a, 0x3e, 0x33, 0xc6, 0x9d, 0x3e, 0xa4, 0x88, 0xc7, 0x68, 0xdc, 0x23, ++ 0x61, 0x51, 0x4d, 0xa0, 0xbb, 0x26, 0x73, 0xd6, 0x59, 0x25, 0x8a, 0xa0, ++ 0xba, 0x79, 0x7d, 0x22, 0xad, 0xb7, 0x6c, 0x9b, 0xe9, 0xa3, 0x1e, 0xab, ++ 0x9c, 0x7b, 0x99, 0xfe, 0xab, 0xeb, 0xdc, 0xca, 0x7a, 0x5b, 0xe1, 0x1d, ++ 0xdc, 0x5e, 0xb5, 0x67, 0x30, 0x5e, 0x23, 0x8c, 0x03, 0x38, 0xad, 0xdf, ++ 0x8c, 0x3f, 0x6e, 0x14, 0xa2, 0xcd, 0x15, 0x19, 0x7b, 0xfa, 0x3a, 0xfa, ++ 0x7b, 0x82, 0x98, 0x70, 0x59, 0x05, 0x9f, 0xa6, 0xc7, 0xc3, 0x1e, 0x8e, ++ 0x43, 0xae, 0xc4, 0x47, 0xd1, 0x40, 0xcc, 0x1e, 0x29, 0xc4, 0xbd, 0x93, ++ 0x9c, 0xf1, 0xb0, 0xfb, 0x8d, 0x46, 0xc7, 0x2c, 0xf0, 0x21, 0xd0, 0x69, ++ 0xb2, 0x83, 0x5f, 0x75, 0x87, 0xf6, 0x57, 0x80, 0x6e, 0x6f, 0x75, 0x98, ++ 0xd3, 0x40, 0x5b, 0xad, 0x5d, 0xf5, 0x2a, 0xf3, 0x35, 0xf0, 0x25, 0xf1, ++ 0xfd, 0x7a, 0x82, 0x09, 0x82, 0xf7, 0x1f, 0x10, 0x92, 0xbf, 0x81, 0x76, ++ 0xa9, 0xe7, 0x75, 0x26, 0xc5, 0x6b, 0xc5, 0x7c, 0xe2, 0x21, 0xaf, 0x67, ++ 0x55, 0xbc, 0x6b, 0xa8, 0x2b, 0xe0, 0xe9, 0x8f, 0x62, 0xff, 0x24, 0x44, ++ 0x31, 0xec, 0x62, 0xe5, 0xfc, 0x1c, 0x03, 0xfc, 0x1c, 0xcc, 0x58, 0x10, ++ 0x29, 0xbf, 0xd6, 0xed, 0x41, 0xb1, 0x19, 0x95, 0x68, 0x40, 0x69, 0xff, ++ 0x3f, 0x30, 0xf6, 0xa8, 0xc3, 0x82, 0xfc, 0xc4, 0x7f, 0xb9, 0x52, 0x98, ++ 0xfe, 0x02, 0xb3, 0x70, 0xfb, 0xa8, 0xfd, 0xde, 0x48, 0x67, 0x34, 0xf4, ++ 0x7e, 0xac, 0x35, 0x2a, 0x0b, 0x74, 0x8d, 0xb5, 0x26, 0x79, 0xc1, 0xf7, ++ 0xb1, 0xc6, 0xbe, 0x35, 0xf8, 0xfe, 0x23, 0xa3, 0x14, 0xc7, 0x83, 0xb4, ++ 0xf4, 0xe1, 0xac, 0x57, 0x26, 0x2b, 0xc0, 0x6b, 0x23, 0x9c, 0xd0, 0x13, ++ 0x25, 0x61, 0x91, 0x11, 0xfc, 0x78, 0x64, 0xd4, 0x22, 0x23, 0xf4, 0x7d, ++ 0xac, 0xdd, 0x97, 0x51, 0x92, 0x39, 0x80, 0x17, 0xa0, 0x1f, 0xf6, 0x20, ++ 0xbc, 0xfc, 0xbd, 0xa2, 0x08, 0xb7, 0x11, 0xdf, 0x79, 0x6e, 0xa4, 0xe2, ++ 0x37, 0xd0, 0xfa, 0x01, 0x1b, 0xd1, 0x07, 0x3b, 0x31, 0xda, 0x4d, 0xa0, ++ 0x2f, 0x60, 0x92, 0xb8, 0x10, 0x6b, 0x06, 0xd1, 0x47, 0x1e, 0x89, 0xf1, ++ 0xff, 0x77, 0xfa, 0xec, 0x44, 0x5f, 0xc4, 0x00, 0x7d, 0x24, 0xef, 0x68, ++ 0xcc, 0xff, 0x22, 0x9b, 0xf8, 0x43, 0x30, 0x69, 0x8e, 0x10, 0xdd, 0xec, ++ 0x17, 0x96, 0xb3, 0x5f, 0xd0, 0xf9, 0x79, 0x81, 0xf4, 0xbd, 0x80, 0x64, ++ 0x95, 0xa6, 0x48, 0xbd, 0xa9, 0xde, 0x7e, 0xb8, 0x08, 0xfd, 0x35, 0xa2, ++ 0x7b, 0x3d, 0xe6, 0x15, 0x45, 0xc9, 0x7d, 0x14, 0x61, 0x3f, 0xc0, 0xc3, ++ 0x24, 0x54, 0x73, 0xa5, 0xbc, 0x72, 0x35, 0x78, 0x5f, 0xae, 0x8c, 0x2f, ++ 0xba, 0xff, 0xec, 0xc8, 0x75, 0x19, 0x73, 0x09, 0x6e, 0xcb, 0x2d, 0x31, ++ 0x03, 0x16, 0xaa, 0x99, 0xf1, 0x3d, 0x43, 0xf8, 0xfb, 0x95, 0x8a, 0x95, ++ 0xf5, 0xe4, 0x0b, 0xb2, 0x3f, 0xf8, 0xe3, 0x7b, 0x96, 0x2b, 0xf6, 0xd4, ++ 0x8c, 0x01, 0xfd, 0xd6, 0xed, 0xaa, 0x4e, 0x36, 0x5d, 0xb1, 0x9f, 0xaa, ++ 0xdf, 0xef, 0x34, 0x8b, 0x14, 0x7c, 0xce, 0xd5, 0x9d, 0x41, 0xfd, 0xe5, ++ 0x42, 0xda, 0xf5, 0xc2, 0x55, 0x36, 0x7b, 0x6a, 0xb0, 0x1d, 0xc1, 0xce, ++ 0x88, 0x1f, 0xe5, 0xf6, 0x8a, 0x5b, 0x05, 0xd9, 0x9b, 0x7b, 0x55, 0x9c, ++ 0x3d, 0x75, 0x2a, 0xb5, 0xab, 0x17, 0xcc, 0x02, 0xba, 0xa7, 0xd9, 0x57, ++ 0x2c, 0xfd, 0x5e, 0x4e, 0x19, 0xc2, 0xbe, 0x7c, 0x21, 0x76, 0xd9, 0x3e, ++ 0x18, 0xf7, 0xdb, 0xa4, 0x9e, 0xfb, 0x23, 0x15, 0xef, 0x5a, 0xa2, 0x3f, ++ 0x35, 0x77, 0xb0, 0xdd, 0x25, 0x69, 0x76, 0xd0, 0xe8, 0x56, 0x78, 0x7f, ++ 0x8d, 0x5f, 0x1b, 0x19, 0xf7, 0x94, 0x2a, 0x5e, 0xf0, 0xfc, 0x0e, 0x6a, ++ 0x5c, 0x15, 0xa3, 0x6d, 0x0e, 0xe3, 0xca, 0x73, 0xbd, 0x88, 0x8f, 0x77, ++ 0x10, 0x5a, 0x8a, 0xf6, 0x86, 0x58, 0xb6, 0x53, 0xee, 0x24, 0xff, 0xf5, ++ 0x2f, 0xda, 0x3e, 0xef, 0x30, 0xfa, 0x0f, 0xc3, 0x7f, 0x1c, 0x35, 0xf9, ++ 0x92, 0xed, 0xd4, 0x75, 0xb4, 0xc6, 0xea, 0xc4, 0xfa, 0xf3, 0x05, 0x25, ++ 0x3a, 0xe4, 0xd7, 0x4a, 0x45, 0x37, 0xc3, 0x93, 0xe1, 0xb5, 0x6d, 0x7e, ++ 0x5e, 0xdc, 0x33, 0x06, 0xfa, 0xf5, 0x9e, 0xdb, 0xe2, 0x44, 0x1e, 0xd6, ++ 0xb8, 0xae, 0x29, 0x12, 0x7e, 0x3c, 0x4b, 0xac, 0xb3, 0x9f, 0xce, 0x40, ++ 0x52, 0x21, 0xf6, 0x5c, 0x9e, 0x7a, 0xed, 0x7c, 0x86, 0x14, 0x47, 0x9c, ++ 0xd6, 0xe5, 0x82, 0x40, 0x4c, 0x79, 0x0a, 0xe4, 0xad, 0xcb, 0x75, 0x5b, ++ 0xae, 0x2b, 0x2f, 0x37, 0xe7, 0xda, 0xf3, 0xab, 0xfe, 0xd8, 0x76, 0xdb, ++ 0xf7, 0xe0, 0xbf, 0xee, 0x6b, 0x36, 0xc7, 0x4b, 0x35, 0xe9, 0xce, 0x98, ++ 0x36, 0x20, 0x37, 0x5d, 0xae, 0x75, 0xc2, 0xc3, 0x74, 0xeb, 0xf2, 0xba, ++ 0x22, 0x3f, 0xa2, 0x7d, 0x34, 0xf8, 0xa1, 0x5e, 0x98, 0xc3, 0x7e, 0xe6, ++ 0x59, 0x55, 0x70, 0x5e, 0xa1, 0xc9, 0xcf, 0x4a, 0xbf, 0x43, 0xc9, 0x4f, ++ 0xe7, 0xef, 0x0c, 0x4d, 0x0e, 0xcb, 0x3a, 0xa4, 0x3f, 0x0a, 0x95, 0xab, ++ 0xce, 0xef, 0x1f, 0xd3, 0x82, 0xf8, 0x3e, 0xc5, 0xd1, 0xed, 0x2c, 0x0f, ++ 0x61, 0x61, 0xff, 0x17, 0x2a, 0xf7, 0x6f, 0x93, 0x0b, 0x65, 0x98, 0xa5, ++ 0xe8, 0xca, 0x8f, 0xb5, 0x08, 0xc8, 0x33, 0xd1, 0x20, 0xfd, 0x63, 0xe2, ++ 0x52, 0xd2, 0x13, 0xa2, 0xfb, 0x6e, 0xe1, 0x3e, 0xd4, 0x43, 0xf0, 0xce, ++ 0xf0, 0xb7, 0x4d, 0xac, 0x87, 0x9a, 0x7c, 0xee, 0x81, 0x7c, 0x68, 0xe8, ++ 0x7b, 0xc2, 0xfb, 0xc3, 0x8c, 0xe4, 0xff, 0x3b, 0xf9, 0x74, 0xe4, 0x96, ++ 0xdc, 0x1f, 0x6c, 0x87, 0xa1, 0x76, 0x77, 0x2d, 0x3b, 0xab, 0x76, 0x38, ++ 0xff, 0x5d, 0x8f, 0x7b, 0xe4, 0x69, 0xc8, 0xbe, 0x42, 0xec, 0x33, 0xc4, ++ 0xfe, 0x74, 0x79, 0xb9, 0x57, 0x45, 0xb1, 0x9d, 0x5d, 0x91, 0xa3, 0xda, ++ 0x22, 0xed, 0x55, 0x93, 0x57, 0x04, 0xfd, 0x0e, 0x69, 0x6f, 0xf8, 0x83, ++ 0xbe, 0x57, 0xd3, 0xae, 0x78, 0xfd, 0xc9, 0xdf, 0xc1, 0xfe, 0x14, 0x22, ++ 0x9c, 0xe4, 0xf6, 0x58, 0x88, 0xdd, 0xe9, 0xf2, 0xb9, 0x96, 0xdf, 0xd1, ++ 0xfd, 0xd4, 0x29, 0xe1, 0x3f, 0x6a, 0xa7, 0xfd, 0x9f, 0x4c, 0x91, 0x79, ++ 0x80, 0xe7, 0x67, 0x16, 0x6f, 0x33, 0xf0, 0x74, 0x43, 0x39, 0xfc, 0xde, ++ 0xc9, 0x89, 0x12, 0xee, 0xd7, 0xfc, 0x5b, 0x28, 0x3c, 0x45, 0x79, 0x8e, ++ 0x42, 0x71, 0x6c, 0x53, 0xc6, 0x89, 0x11, 0x88, 0xd7, 0x27, 0xcd, 0xfa, ++ 0x3a, 0x36, 0x6f, 0x33, 0xd1, 0x7f, 0x6a, 0x4d, 0xf7, 0x98, 0x15, 0x34, ++ 0xff, 0x54, 0xae, 0x84, 0x27, 0x91, 0x17, 0x06, 0xe1, 0xae, 0x30, 0xb1, ++ 0x10, 0x7e, 0xfd, 0xd4, 0x48, 0x8b, 0x07, 0x7c, 0x3a, 0xa5, 0x4c, 0xc8, ++ 0x43, 0x7c, 0x38, 0xa5, 0xdc, 0x7f, 0x9b, 0xc4, 0xe3, 0xcd, 0x0e, 0xe0, ++ 0xf3, 0xe3, 0xf3, 0xec, 0x84, 0x9f, 0x34, 0xc9, 0xf1, 0x7a, 0x5c, 0xd1, ++ 0xfd, 0xff, 0xa9, 0xf9, 0xdf, 0x2b, 0xe0, 0x71, 0x8a, 0x38, 0x02, 0x7e, ++ 0x38, 0x14, 0x51, 0xc2, 0xdf, 0x51, 0x94, 0x98, 0x62, 0xa2, 0xe7, 0xd4, ++ 0x7d, 0x69, 0x53, 0xd6, 0x8a, 0x81, 0xfd, 0x37, 0xe5, 0x1a, 0x78, 0x9e, ++ 0x57, 0xf3, 0xdf, 0x44, 0x07, 0xf3, 0xbd, 0xef, 0xe7, 0x8a, 0xb7, 0x89, ++ 0x9a, 0x16, 0x22, 0xa4, 0x10, 0xfd, 0xc9, 0x79, 0xbf, 0x2d, 0x4e, 0xa1, ++ 0xf6, 0x0f, 0x7e, 0x31, 0x6e, 0x32, 0xe4, 0xeb, 0x5a, 0x39, 0xf8, 0xfb, ++ 0x88, 0xd7, 0xc9, 0xd7, 0x03, 0xdf, 0xca, 0xeb, 0xfc, 0xe0, 0xab, 0x3e, ++ 0xd3, 0xa2, 0xa0, 0xb8, 0x74, 0x25, 0x4e, 0x16, 0x7c, 0x2e, 0xdb, 0xcb, ++ 0x72, 0x0c, 0xb0, 0x97, 0x72, 0x4d, 0x86, 0xae, 0x98, 0x09, 0xd1, 0x90, ++ 0x4f, 0xbf, 0x77, 0x5c, 0x34, 0xe2, 0x8e, 0x1e, 0x87, 0xfa, 0x8f, 0xed, ++ 0x8f, 0x70, 0x07, 0xc9, 0xed, 0x2c, 0xc5, 0x29, 0x31, 0x3e, 0x08, 0x9f, ++ 0xf0, 0x68, 0x52, 0x70, 0x1c, 0x3b, 0xbc, 0xeb, 0x91, 0x74, 0xac, 0x53, ++ 0x6e, 0xf6, 0x64, 0x39, 0xa9, 0xfd, 0x4c, 0xe3, 0xd3, 0x49, 0xc8, 0x37, ++ 0xca, 0x77, 0x3d, 0x9c, 0xce, 0x79, 0xf0, 0xae, 0x8d, 0xe9, 0x38, 0xcf, ++ 0x94, 0x37, 0x3d, 0x92, 0xee, 0x62, 0x3c, 0xdc, 0xcd, 0xe7, 0x29, 0xa3, ++ 0xdc, 0xf7, 0xf9, 0x7d, 0x37, 0xee, 0xdc, 0x14, 0x94, 0x77, 0x57, 0xe5, ++ 0xab, 0x4c, 0x7f, 0xa9, 0xf5, 0x70, 0x21, 0xe2, 0xed, 0xac, 0xeb, 0x3e, ++ 0x7b, 0xc8, 0x4e, 0xe3, 0xd2, 0x7e, 0xa1, 0xd8, 0xa1, 0x5e, 0xf7, 0x88, ++ 0xee, 0x87, 0x10, 0x1f, 0x17, 0x20, 0x3f, 0xc6, 0xf9, 0xad, 0xc1, 0xca, ++ 0xfe, 0x9c, 0xd6, 0x73, 0x41, 0xfe, 0xcd, 0x13, 0x7e, 0xf8, 0x1c, 0xec, ++ 0xf8, 0x78, 0xc6, 0xc7, 0xa6, 0x32, 0x1a, 0x77, 0x29, 0xd7, 0xc8, 0xfc, ++ 0x59, 0x20, 0xbc, 0x9b, 0xe3, 0xa9, 0x5f, 0x6c, 0x50, 0xec, 0xcd, 0x22, ++ 0x78, 0xfc, 0x98, 0x46, 0x8c, 0x5f, 0xb4, 0x4e, 0x31, 0x27, 0xc0, 0x0f, ++ 0x2c, 0x1f, 0x36, 0x59, 0x75, 0x60, 0xde, 0x30, 0xa6, 0x63, 0xf1, 0x86, ++ 0xc9, 0x5d, 0x68, 0x5f, 0xb0, 0x5a, 0xb6, 0xcf, 0xb2, 0x78, 0x0f, 0x9c, ++ 0xc0, 0x3a, 0xbf, 0x35, 0x3b, 0x9b, 0x1d, 0xec, 0x6f, 0x52, 0x4a, 0x26, ++ 0x0d, 0xd0, 0x7f, 0x29, 0xd7, 0xcc, 0xf3, 0x16, 0x6e, 0x56, 0x38, 0xff, ++ 0xd7, 0xbf, 0x93, 0xf6, 0x44, 0x5c, 0x63, 0xf0, 0x3e, 0x2f, 0x69, 0xf2, ++ 0x17, 0x5f, 0x5b, 0x14, 0xc8, 0xe5, 0x47, 0x9a, 0x5c, 0x6e, 0x5d, 0xfd, ++ 0xee, 0x91, 0x04, 0x5a, 0xd7, 0x1e, 0xeb, 0xbe, 0x0c, 0xbf, 0xf1, 0xce, ++ 0xe3, 0xa7, 0x53, 0xfd, 0xd4, 0x5e, 0x10, 0x73, 0x36, 0x13, 0x7a, 0x9e, ++ 0x66, 0x76, 0x3f, 0x55, 0x81, 0x7d, 0x37, 0x59, 0x9c, 0xd8, 0x47, 0x76, ++ 0x56, 0xa2, 0x1a, 0x4f, 0xe3, 0xa7, 0xfc, 0x34, 0xf7, 0x31, 0xc0, 0x85, ++ 0xab, 0x17, 0x3d, 0x55, 0x01, 0x7f, 0xbb, 0xcd, 0xca, 0xe7, 0x36, 0x9d, ++ 0xbe, 0x95, 0x8a, 0xd3, 0x00, 0x7f, 0xfc, 0x46, 0xe3, 0x8f, 0x17, 0x83, ++ 0x6f, 0x67, 0x1e, 0xb7, 0x72, 0xde, 0xbe, 0xb2, 0x71, 0x7c, 0xbc, 0x18, ++ 0xc2, 0x4e, 0x75, 0xb8, 0x9b, 0xe4, 0xef, 0xa0, 0x83, 0xce, 0xde, 0x7a, ++ 0x2b, 0xc3, 0x17, 0xea, 0xed, 0xc2, 0x41, 0xfa, 0xb0, 0xaf, 0x3e, 0x81, ++ 0xf1, 0x17, 0xeb, 0x1d, 0x0c, 0xc5, 0x3c, 0xa9, 0x5f, 0x2b, 0xb5, 0xf3, ++ 0xf1, 0xb5, 0xd6, 0x9b, 0xfa, 0x55, 0xb8, 0x70, 0x50, 0x3e, 0x9b, 0xbd, ++ 0xc1, 0x26, 0x1c, 0xe4, 0xa7, 0x92, 0xe2, 0x5c, 0xa3, 0xf2, 0x68, 0x9f, ++ 0x69, 0x13, 0x6b, 0x9a, 0x36, 0x6a, 0xfb, 0x4a, 0xa3, 0xf9, 0x93, 0x3d, ++ 0xc9, 0xf9, 0xe0, 0x43, 0xf6, 0xc6, 0x15, 0x5d, 0x48, 0x79, 0xcd, 0x79, ++ 0xf2, 0x3c, 0xf6, 0xd6, 0x89, 0x0d, 0x49, 0x70, 0xca, 0xcb, 0x56, 0x7f, ++ 0xb8, 0xa3, 0x82, 0xfa, 0xe7, 0xe4, 0x95, 0x8c, 0xcb, 0xa3, 0x76, 0xeb, ++ 0xf6, 0xcf, 0xb9, 0xae, 0xf0, 0x46, 0xc7, 0xc3, 0x0b, 0xc0, 0xef, 0xf2, ++ 0x26, 0x8b, 0xdc, 0x9f, 0xb6, 0xef, 0x33, 0x8f, 0xa7, 0xc7, 0x3f, 0x45, ++ 0xeb, 0x7b, 0xde, 0x34, 0xf1, 0x79, 0xbf, 0x6e, 0xfb, 0x87, 0x3b, 0x36, ++ 0x12, 0x5c, 0xb2, 0x79, 0x85, 0x39, 0x58, 0xdf, 0xbf, 0xeb, 0x7e, 0x93, ++ 0x35, 0x7a, 0xbe, 0xcd, 0xae, 0xae, 0xc5, 0x87, 0x7f, 0xdc, 0xae, 0x1e, ++ 0x49, 0x62, 0xfb, 0x69, 0x22, 0xbb, 0xca, 0xfc, 0xe7, 0xed, 0xaa, 0x6e, ++ 0xf5, 0x1a, 0xe6, 0xdf, 0xfd, 0x79, 0x25, 0xb3, 0xc0, 0xf7, 0x33, 0x26, ++ 0x4f, 0x12, 0xec, 0xe9, 0xcc, 0x84, 0x9b, 0x59, 0xcf, 0x3d, 0x87, 0x14, ++ 0xe6, 0xbf, 0xee, 0xc7, 0xf5, 0xf9, 0xc5, 0xda, 0x7e, 0xab, 0x0c, 0xbe, ++ 0xcd, 0xd3, 0x93, 0x07, 0xfc, 0xf8, 0x45, 0x91, 0xcd, 0xfc, 0x3d, 0xdc, ++ 0xf1, 0x69, 0x3a, 0xf2, 0xde, 0x8b, 0xed, 0xf3, 0xff, 0xee, 0xbe, 0x0f, ++ 0xd2, 0xbe, 0xfd, 0xb4, 0xef, 0x76, 0xe2, 0xaf, 0x7f, 0xfc, 0xd5, 0xfd, ++ 0xd3, 0xcc, 0xee, 0x71, 0x4e, 0xda, 0xdf, 0x34, 0x83, 0xcc, 0x77, 0xaf, ++ 0xca, 0x5b, 0xf3, 0x0c, 0x5a, 0xbd, 0xa0, 0xdb, 0x5c, 0x12, 0x29, 0x79, ++ 0xae, 0xa0, 0x2e, 0xa3, 0xc5, 0x4f, 0x8a, 0x63, 0x9e, 0x68, 0xa2, 0xa7, ++ 0xba, 0x53, 0xf1, 0x87, 0x65, 0x21, 0x9e, 0xdd, 0x72, 0xd6, 0x88, 0xf3, ++ 0x1e, 0x9d, 0x1b, 0x3f, 0x0a, 0xce, 0x23, 0xe8, 0xe7, 0xa3, 0xa0, 0xb8, ++ 0x7d, 0x2d, 0x7a, 0xbf, 0x0d, 0xd6, 0x62, 0x9d, 0xb4, 0x01, 0xbf, 0xfb, ++ 0xbd, 0x3f, 0x19, 0x84, 0x3f, 0x28, 0x4e, 0xdf, 0xd8, 0x13, 0x26, 0xfc, ++ 0x41, 0xdf, 0xbd, 0x72, 0x3e, 0xa1, 0x36, 0x33, 0xc9, 0xa9, 0xb7, 0x63, ++ 0x24, 0xfb, 0x05, 0xc8, 0xcd, 0x88, 0x7a, 0x5c, 0xc7, 0x84, 0x26, 0xe0, ++ 0x67, 0xcd, 0x52, 0x8e, 0xbd, 0x07, 0x29, 0x6f, 0x92, 0x75, 0x1c, 0xa1, ++ 0x4e, 0x1b, 0xd8, 0xe7, 0xd9, 0x8e, 0xf3, 0x59, 0xf0, 0xb3, 0xa1, 0xfb, ++ 0xad, 0x7d, 0xe5, 0x3c, 0xeb, 0x47, 0x75, 0xfb, 0xc3, 0x9f, 0x2b, 0xbc, ++ 0xff, 0x99, 0x67, 0x8d, 0x59, 0xdf, 0xbe, 0xff, 0xc3, 0xbb, 0xce, 0x67, ++ 0x41, 0x7e, 0x67, 0x4d, 0x3d, 0xd3, 0x70, 0xde, 0xea, 0x35, 0xf7, 0x64, ++ 0x41, 0x0e, 0xb5, 0xaf, 0x4a, 0x7f, 0xfe, 0x8f, 0xf2, 0x41, 0x6f, 0xaf, ++ 0xd8, 0x40, 0x1b, 0x21, 0x3b, 0xaf, 0x55, 0xac, 0xac, 0x27, 0x85, 0xea, ++ 0x05, 0xae, 0x1b, 0xf4, 0x1e, 0x93, 0x75, 0x83, 0xda, 0x8e, 0x9d, 0xec, ++ 0x4f, 0xfb, 0x3b, 0x65, 0xfd, 0xa6, 0xce, 0xd0, 0x5d, 0x14, 0x8f, 0x7a, ++ 0xc7, 0xf2, 0x0f, 0xbb, 0xe0, 0xcf, 0xfa, 0x13, 0xe4, 0x39, 0x8a, 0xd6, ++ 0x77, 0x81, 0x6f, 0xd3, 0xc7, 0x69, 0x71, 0xd0, 0xd8, 0x97, 0x34, 0x87, ++ 0xfc, 0xda, 0x4b, 0x57, 0xf4, 0x41, 0x9e, 0xff, 0xce, 0xc0, 0x7e, 0xc7, ++ 0x63, 0x1d, 0x5f, 0x35, 0xfc, 0x80, 0xc8, 0x0a, 0x17, 0xc8, 0x2b, 0xce, ++ 0xc1, 0x9e, 0xa9, 0x7d, 0xc1, 0xaa, 0xe4, 0xf5, 0xd0, 0xf3, 0x33, 0xde, ++ 0x11, 0x53, 0xe0, 0x1f, 0xdf, 0xca, 0xfa, 0x6b, 0x2d, 0xd7, 0xfb, 0x5e, ++ 0x0b, 0xb7, 0xab, 0x9c, 0xf7, 0x50, 0x6b, 0x90, 0xfc, 0xae, 0xec, 0xc3, ++ 0xab, 0x0a, 0xd7, 0xa0, 0x7a, 0x40, 0xb8, 0x70, 0x05, 0x8d, 0xab, 0x33, ++ 0x3b, 0x7e, 0xc4, 0xf9, 0xf1, 0x71, 0x55, 0x20, 0xaf, 0xab, 0x9b, 0x28, ++ 0xed, 0x49, 0xbc, 0x22, 0xed, 0xa9, 0x66, 0xdd, 0x61, 0x73, 0x42, 0xd0, ++ 0x7a, 0x3b, 0x60, 0x4f, 0x4c, 0xb7, 0xcc, 0x17, 0x67, 0xbd, 0xf6, 0x57, ++ 0xb6, 0xcb, 0xd5, 0x33, 0x5c, 0x9d, 0xb0, 0xcb, 0x70, 0xf8, 0x42, 0xac, ++ 0x97, 0x10, 0xed, 0x55, 0x14, 0x6d, 0x1c, 0xc9, 0xbf, 0x56, 0xa3, 0x21, ++ 0xa2, 0x53, 0x3b, 0xf7, 0x17, 0xab, 0xdc, 0x5f, 0xd7, 0xae, 0x8a, 0x91, ++ 0x98, 0x93, 0x10, 0xe9, 0x4d, 0xa3, 0x7d, 0x14, 0x8b, 0x2d, 0x46, 0xe4, ++ 0xd3, 0xb3, 0x84, 0x6f, 0x3a, 0xea, 0x36, 0xc2, 0xd8, 0xf3, 0xab, 0x9b, ++ 0xa8, 0x7f, 0xf6, 0x6b, 0xea, 0xd4, 0x4d, 0x82, 0xcf, 0x4f, 0x0b, 0x4b, ++ 0xf8, 0x5c, 0xe9, 0x4e, 0x5d, 0x89, 0xfc, 0xc8, 0xa0, 0x68, 0x7c, 0xf5, ++ 0x65, 0xcf, 0x09, 0x8e, 0x67, 0x79, 0x32, 0x4e, 0x4d, 0x57, 0x15, 0x8e, ++ 0x63, 0x7d, 0x23, 0xc3, 0x39, 0x4f, 0x99, 0x39, 0xaf, 0xa6, 0x14, 0xf4, ++ 0xea, 0xe3, 0xb2, 0x86, 0xc9, 0x71, 0xb4, 0x0e, 0xe7, 0x59, 0xc2, 0xdb, ++ 0x97, 0x35, 0x07, 0xf6, 0xe9, 0xef, 0xcb, 0x9a, 0x1b, 0x39, 0x30, 0xee, ++ 0xce, 0xd7, 0xc2, 0x97, 0x73, 0x5c, 0x14, 0xbe, 0xec, 0x3b, 0x83, 0xbe, ++ 0x13, 0x96, 0x2f, 0xeb, 0xa3, 0x5f, 0x50, 0x1c, 0x81, 0x9e, 0xd4, 0x5d, ++ 0x94, 0xf5, 0x8e, 0x42, 0xf5, 0xeb, 0x27, 0x90, 0x9f, 0xaf, 0x3c, 0x44, ++ 0xfa, 0x82, 0xfc, 0xd0, 0x90, 0xfc, 0x9e, 0x01, 0x7e, 0x9c, 0xf8, 0x0c, ++ 0xb9, 0x9e, 0x27, 0xb9, 0xba, 0x10, 0x7f, 0xdc, 0xc2, 0xe5, 0x82, 0xfd, ++ 0x4c, 0x1a, 0xe1, 0x85, 0xfd, 0xd4, 0xed, 0x53, 0x84, 0x11, 0x75, 0xa2, ++ 0x0e, 0x4b, 0x13, 0xea, 0x48, 0xb5, 0xa6, 0x9e, 0x38, 0xe8, 0xf3, 0xc6, ++ 0xf6, 0x3f, 0x9a, 0xa1, 0xcf, 0x75, 0x6d, 0xef, 0x9a, 0x1d, 0x93, 0x30, ++ 0x5f, 0xd6, 0x9d, 0xc8, 0x20, 0xd9, 0x8f, 0xd7, 0x69, 0xf1, 0xab, 0xa6, ++ 0x7d, 0xfc, 0x7b, 0xa8, 0xf3, 0xd5, 0x1c, 0x93, 0x51, 0xb4, 0xc6, 0xf8, ++ 0x2e, 0x9f, 0xdf, 0xab, 0x0e, 0xb4, 0xf2, 0x39, 0xbd, 0x5a, 0xf8, 0xf9, ++ 0x9c, 0x5e, 0xdd, 0x32, 0x58, 0x5f, 0xfa, 0x13, 0x1c, 0x5c, 0x17, 0x09, ++ 0xb5, 0x8f, 0xb0, 0x7c, 0xc7, 0x20, 0xbb, 0x98, 0xb9, 0x4d, 0xda, 0xc5, ++ 0x9d, 0xaa, 0x58, 0x0e, 0x3f, 0x27, 0xb4, 0x3a, 0xed, 0xcc, 0x84, 0x78, ++ 0xce, 0x47, 0x06, 0xe6, 0xc9, 0x7c, 0xd7, 0xa5, 0x9e, 0x7f, 0x08, 0xf9, ++ 0x4b, 0x20, 0x45, 0x71, 0x2a, 0xb4, 0x54, 0x20, 0xcc, 0xb3, 0x0e, 0x79, ++ 0x91, 0x27, 0x5d, 0xe6, 0x33, 0x81, 0xdf, 0xbd, 0x90, 0xbd, 0x94, 0xfd, ++ 0x8a, 0x37, 0xfb, 0x76, 0xda, 0x57, 0x40, 0xcb, 0x77, 0x67, 0x6e, 0xd8, ++ 0x6a, 0x54, 0x83, 0xe8, 0x99, 0xd9, 0x29, 0xeb, 0x92, 0x81, 0x30, 0x51, ++ 0x7e, 0x90, 0xe5, 0xed, 0x1e, 0x0d, 0x39, 0x08, 0x57, 0x49, 0x44, 0x7e, ++ 0x0e, 0xdb, 0x55, 0x16, 0xfc, 0x6a, 0xc0, 0x20, 0xeb, 0xa8, 0xa1, 0xfb, ++ 0xa8, 0xd7, 0xea, 0x45, 0xc7, 0x51, 0x4f, 0xca, 0x1c, 0xa0, 0x7b, 0x76, ++ 0x62, 0xa2, 0xf4, 0x63, 0xc2, 0xcb, 0xfa, 0xd3, 0x65, 0x90, 0xdf, 0x77, ++ 0x19, 0xa8, 0x7f, 0xca, 0xc0, 0xfc, 0xc5, 0xf9, 0x72, 0xfe, 0xc0, 0x79, ++ 0x48, 0xd6, 0xc1, 0xae, 0xe5, 0x57, 0x76, 0x91, 0x7c, 0xca, 0x48, 0x3e, ++ 0x7b, 0x48, 0xce, 0x80, 0xcf, 0x53, 0x3c, 0x2e, 0x23, 0x3f, 0xd3, 0x42, ++ 0xf1, 0x18, 0xf8, 0xbf, 0x52, 0x3c, 0x06, 0xf4, 0xd5, 0x67, 0x70, 0xfb, ++ 0x4b, 0xf5, 0x4e, 0xc6, 0x0f, 0xd4, 0xdf, 0xc0, 0xf8, 0xc1, 0x7a, 0x17, ++ 0xe3, 0xed, 0xf5, 0xc5, 0x0c, 0x5f, 0xa9, 0x2f, 0xe1, 0xf6, 0xe3, 0x20, ++ 0xf5, 0xfb, 0xf8, 0xdf, 0xd3, 0x8d, 0xd0, 0x87, 0x2e, 0xd8, 0xd8, 0xa8, ++ 0x01, 0xfc, 0x64, 0x4c, 0x08, 0x3e, 0x6a, 0xf0, 0xf8, 0x93, 0x31, 0xca, ++ 0x60, 0x7c, 0x94, 0xc2, 0xe3, 0xb3, 0xf3, 0x9f, 0x6e, 0xf4, 0x64, 0xa2, ++ 0x6e, 0x6a, 0xd7, 0xec, 0xdb, 0x11, 0x89, 0xfc, 0xeb, 0x8c, 0x4d, 0xd6, ++ 0xa1, 0xce, 0xd8, 0x64, 0x1d, 0xaa, 0x75, 0x94, 0xfb, 0xa6, 0x7c, 0xea, ++ 0x2f, 0x9b, 0xb9, 0x76, 0x97, 0x3c, 0x87, 0xba, 0xd2, 0x31, 0xae, 0x20, ++ 0x66, 0x3e, 0x9f, 0x5f, 0xfb, 0xe9, 0xfc, 0x0a, 0x7f, 0xb4, 0x22, 0xdf, ++ 0x9d, 0x07, 0xb9, 0x1c, 0x3b, 0x96, 0x9f, 0xba, 0x95, 0xfd, 0xa4, 0x8d, ++ 0xeb, 0xa0, 0x27, 0xef, 0xba, 0x2e, 0x9a, 0xeb, 0x80, 0x6f, 0xd2, 0x79, ++ 0x9c, 0x3e, 0x9d, 0x9b, 0x31, 0x75, 0x5d, 0x36, 0xe1, 0xb9, 0x11, 0x0a, ++ 0xeb, 0x2f, 0xf9, 0x8b, 0xeb, 0x4b, 0xf4, 0x73, 0x25, 0xad, 0x93, 0xdf, ++ 0x29, 0xef, 0x51, 0x0a, 0xd5, 0xea, 0x32, 0xac, 0xbf, 0x72, 0xa4, 0x6d, ++ 0x2a, 0xfc, 0xef, 0x17, 0x2e, 0xf7, 0xad, 0xa0, 0x43, 0xe7, 0x77, 0xd1, ++ 0xa8, 0x65, 0xa9, 0xc8, 0x87, 0xba, 0x4c, 0x8e, 0xf7, 0x50, 0xc7, 0xf5, ++ 0xfc, 0xde, 0x24, 0x70, 0x9e, 0xd2, 0xeb, 0x7d, 0xfa, 0xb8, 0x0e, 0x57, ++ 0xee, 0x5d, 0x98, 0x37, 0x33, 0x63, 0xdc, 0xba, 0x29, 0xf0, 0x3b, 0x64, ++ 0x64, 0xf0, 0x73, 0x2e, 0xb3, 0x68, 0x01, 0x5d, 0x2e, 0x43, 0xb8, 0xb2, ++ 0x96, 0xfd, 0x96, 0xc3, 0x08, 0x3f, 0x70, 0x97, 0xa6, 0xc7, 0x79, 0x0e, ++ 0x99, 0x17, 0xfb, 0xcd, 0x0e, 0x63, 0x0c, 0xea, 0x37, 0x61, 0xb9, 0xb1, ++ 0x1e, 0x9a, 0xd7, 0xa5, 0xc9, 0xf9, 0x98, 0x26, 0xe7, 0xe3, 0x9a, 0x9c, ++ 0xdf, 0x46, 0x9d, 0x8c, 0xe0, 0x3b, 0xd4, 0x0e, 0xd8, 0x4d, 0xed, 0x80, ++ 0x93, 0x74, 0xfe, 0x1a, 0xfb, 0x98, 0x6f, 0x4f, 0xe4, 0x95, 0x94, 0xb1, ++ 0xfe, 0x8a, 0xbe, 0x24, 0xe0, 0x7a, 0x5d, 0x70, 0x16, 0xec, 0x4b, 0xfa, ++ 0x9b, 0x24, 0xe8, 0xf5, 0x66, 0x4d, 0x7f, 0x13, 0x34, 0x7f, 0xd3, 0x95, ++ 0x5b, 0x52, 0x25, 0xe7, 0xf9, 0x78, 0x9d, 0x2a, 0xad, 0xde, 0x76, 0x5e, ++ 0xbb, 0x07, 0xd1, 0xf7, 0xab, 0xcf, 0x1b, 0x98, 0x2f, 0x18, 0xce, 0xbd, ++ 0x5e, 0x78, 0xac, 0xf0, 0xf3, 0x2f, 0xcb, 0x73, 0xa7, 0x18, 0x4d, 0xf9, ++ 0x08, 0xe1, 0x73, 0x5f, 0x8e, 0x67, 0x3f, 0xa4, 0x5a, 0x6f, 0xcf, 0xfc, ++ 0x84, 0xec, 0x7c, 0xee, 0x54, 0x79, 0x0e, 0x10, 0xfb, 0x2d, 0x72, 0x5c, ++ 0x82, 0x23, 0x07, 0x76, 0xb2, 0x56, 0xab, 0xb7, 0xf6, 0x7a, 0x0d, 0x1e, ++ 0x13, 0xea, 0xd3, 0x31, 0xdd, 0xe9, 0x31, 0x88, 0xbf, 0x9a, 0x7d, 0xe9, ++ 0xf8, 0xc1, 0xbf, 0xa9, 0xec, 0xaf, 0x6b, 0xa6, 0x10, 0x4e, 0xf0, 0x55, ++ 0x45, 0xee, 0xaf, 0x66, 0x6e, 0x77, 0xfa, 0x30, 0xcc, 0x57, 0x6c, 0x06, ++ 0xae, 0x6f, 0x37, 0xc9, 0xfe, 0x13, 0x9a, 0xfd, 0xd5, 0xa4, 0x68, 0xeb, ++ 0x69, 0xfb, 0x11, 0x56, 0x5f, 0x12, 0xe4, 0x11, 0x38, 0xf4, 0x72, 0xd2, ++ 0x62, 0xc2, 0x37, 0x45, 0xf8, 0x97, 0x4a, 0xbf, 0xef, 0x4f, 0x67, 0x7f, ++ 0x2d, 0xfc, 0xe9, 0x73, 0xe1, 0x17, 0x15, 0xdf, 0x07, 0xc2, 0x49, 0x79, ++ 0x65, 0xc1, 0xd4, 0xc5, 0xc6, 0x91, 0xe0, 0x87, 0x6f, 0x07, 0xf0, 0xea, ++ 0x82, 0x9c, 0xc5, 0xc6, 0x1b, 0xd1, 0xdf, 0xfa, 0x81, 0x3d, 0xb8, 0x7f, ++ 0x84, 0x2f, 0x49, 0xb1, 0x03, 0xcf, 0x96, 0xfd, 0x23, 0x5a, 0x77, 0x0c, ++ 0x73, 0x06, 0xe1, 0xa6, 0x97, 0x3e, 0x40, 0xbf, 0xd9, 0x90, 0xb3, 0xb8, ++ 0x80, 0xf0, 0xd9, 0x16, 0xef, 0xb1, 0x7a, 0xe8, 0xcd, 0x8b, 0x52, 0xbf, ++ 0x6c, 0xfb, 0xda, 0x4e, 0x83, 0x6f, 0x55, 0x1d, 0x32, 0x6f, 0xcf, 0xdb, ++ 0xd7, 0x76, 0xe1, 0x25, 0xc4, 0xe5, 0xb6, 0x48, 0x27, 0xdc, 0xfb, 0xde, ++ 0xfc, 0x64, 0xe6, 0xf7, 0xda, 0x8e, 0xdd, 0x9b, 0xa1, 0x6f, 0xbd, 0xad, ++ 0xf2, 0x3e, 0x60, 0x53, 0xcb, 0x1f, 0x77, 0xfc, 0x92, 0xc7, 0x59, 0x70, ++ 0x4d, 0x42, 0xeb, 0xfa, 0xb2, 0x05, 0x7d, 0x67, 0xc5, 0x91, 0xff, 0x58, ++ 0x04, 0xba, 0x66, 0x87, 0xfb, 0xbe, 0x04, 0xfe, 0xe0, 0x91, 0x19, 0x4c, ++ 0xe7, 0xec, 0xe1, 0xd2, 0xae, 0x1f, 0x3e, 0x92, 0xb7, 0x18, 0x76, 0xda, ++ 0xdb, 0xb6, 0xef, 0x67, 0xb0, 0xbf, 0xd9, 0xd1, 0x94, 0xd0, 0x82, 0x9e, ++ 0x17, 0x6c, 0x5c, 0x87, 0xa8, 0xdc, 0x3f, 0xa1, 0x00, 0x76, 0xda, 0x1b, ++ 0xd9, 0xbd, 0x00, 0xeb, 0xd7, 0x3e, 0x6f, 0x71, 0x42, 0x4f, 0x2b, 0xf7, ++ 0xc7, 0xe7, 0xa1, 0x3e, 0x70, 0x30, 0x5f, 0xd6, 0xc3, 0x2b, 0x26, 0x6e, ++ 0x49, 0x42, 0x9c, 0x35, 0xbc, 0xb2, 0x77, 0xd7, 0x2f, 0x71, 0xbf, 0xfa, ++ 0xbc, 0x8d, 0xef, 0x85, 0xea, 0x62, 0x64, 0x9e, 0x57, 0xa9, 0x36, 0x4e, ++ 0x5b, 0xc1, 0xf2, 0xdb, 0xb9, 0xeb, 0x69, 0xd0, 0xbd, 0xd7, 0xc6, 0xf7, ++ 0xb3, 0x15, 0xa8, 0x55, 0x11, 0x5e, 0xb1, 0x2b, 0x8d, 0xeb, 0xf8, 0xaf, ++ 0x7e, 0xf3, 0xf1, 0x02, 0xc8, 0xa1, 0x50, 0xdd, 0xbe, 0x0b, 0xed, 0x5f, ++ 0x3e, 0x67, 0x33, 0x80, 0x0f, 0x27, 0xcc, 0xae, 0xe8, 0x9b, 0x61, 0x87, ++ 0x27, 0x4c, 0x7c, 0xde, 0xac, 0xd0, 0xf0, 0x8a, 0x93, 0xc3, 0x25, 0x3d, ++ 0xe1, 0x3d, 0x45, 0x2c, 0xbf, 0xd8, 0x2d, 0x49, 0x88, 0xb3, 0x95, 0xc3, ++ 0x7f, 0x7e, 0x1b, 0xe8, 0x9e, 0xad, 0x6e, 0xd9, 0x81, 0xf3, 0x8e, 0xd8, ++ 0x6d, 0xe1, 0xbb, 0x89, 0xb3, 0x7b, 0x89, 0x6f, 0x34, 0xef, 0x6c, 0xb3, ++ 0x69, 0x0a, 0xa4, 0xdc, 0xbb, 0x37, 0xd2, 0x08, 0x7d, 0x39, 0xaf, 0x6c, ++ 0x59, 0xf0, 0x14, 0xd6, 0x6f, 0x96, 0xe3, 0xce, 0xdb, 0xb6, 0x30, 0x3f, ++ 0x3d, 0xcd, 0xe3, 0x05, 0xbe, 0x47, 0xe3, 0x04, 0xfc, 0xd6, 0x79, 0x65, ++ 0xeb, 0xa0, 0xf6, 0xb3, 0xcd, 0xbb, 0xb3, 0x70, 0x1e, 0x3d, 0xf7, 0xfc, ++ 0x6c, 0x3e, 0x97, 0xea, 0xfa, 0xab, 0xdb, 0x4b, 0xe5, 0x73, 0x96, 0x41, ++ 0x71, 0x91, 0x3d, 0x01, 0xf9, 0xa3, 0x4a, 0xed, 0x6f, 0x61, 0xf7, 0x88, ++ 0x08, 0x8a, 0xb7, 0x15, 0x1a, 0x7a, 0xee, 0xe0, 0x93, 0xbd, 0x4f, 0x89, ++ 0x81, 0xf9, 0xe7, 0x5a, 0x4c, 0x7e, 0x33, 0xf1, 0xa8, 0xc2, 0x22, 0xd6, ++ 0x59, 0x63, 0x06, 0xec, 0xa1, 0x32, 0xf1, 0x96, 0x62, 0xec, 0xaf, 0xd2, ++ 0xd0, 0x98, 0x8e, 0xbc, 0xa5, 0x62, 0x6a, 0xcf, 0x02, 0xd8, 0xc5, 0x59, ++ 0x9b, 0xb0, 0x26, 0xd0, 0xb8, 0xb7, 0xb4, 0xb8, 0x55, 0x79, 0x60, 0xcd, ++ 0x1c, 0xe4, 0xbf, 0xd7, 0xa2, 0xe7, 0xb2, 0xe6, 0x8f, 0x2e, 0x26, 0xc8, ++ 0xf8, 0x75, 0xb1, 0xdd, 0xe6, 0x0d, 0xbe, 0x97, 0x0c, 0x85, 0xef, 0xd7, ++ 0x0b, 0xfb, 0xdb, 0x69, 0x03, 0xf8, 0x3d, 0xcb, 0x2d, 0x9c, 0xc3, 0xeb, ++ 0xeb, 0xbd, 0x65, 0xf6, 0x55, 0xe3, 0x9c, 0x56, 0x1b, 0x23, 0xfd, 0xc7, ++ 0x07, 0x34, 0xbe, 0x85, 0xfc, 0xd8, 0x37, 0x5a, 0xbc, 0x5b, 0xb8, 0x6a, ++ 0xf0, 0xf8, 0xfe, 0xfc, 0x18, 0xfe, 0x7e, 0xad, 0xb9, 0x27, 0x1d, 0xf1, ++ 0x4f, 0x5f, 0x3f, 0x90, 0xaf, 0xfb, 0xb5, 0x9e, 0x74, 0xf8, 0xab, 0xd0, ++ 0x79, 0xb3, 0x91, 0x8e, 0xc0, 0x8f, 0xbc, 0xa0, 0xb0, 0x1f, 0xa9, 0x3c, ++ 0xa0, 0x7c, 0xa8, 0x12, 0x9f, 0x2a, 0xad, 0x1e, 0xaf, 0x0a, 0xbe, 0x08, ++ 0xb3, 0xbe, 0x4f, 0xe3, 0x65, 0x45, 0xce, 0x4b, 0x98, 0xa6, 0xf1, 0x9d, ++ 0xe6, 0x6e, 0x28, 0x48, 0xe6, 0xef, 0x56, 0xb6, 0xd8, 0x5c, 0x36, 0x9a, ++ 0x57, 0x15, 0xd6, 0x13, 0x85, 0xbc, 0xa8, 0x3a, 0xb2, 0x27, 0x0a, 0xf9, ++ 0x4e, 0xef, 0x2b, 0xaa, 0x68, 0xd2, 0xc4, 0x15, 0x1b, 0xa7, 0xc9, 0x27, ++ 0x45, 0x13, 0x59, 0x50, 0xbd, 0xb1, 0xc2, 0x67, 0x72, 0xd9, 0xb2, 0x86, ++ 0x90, 0x33, 0xf2, 0x27, 0x1a, 0xb7, 0x0c, 0x7f, 0xd3, 0xf7, 0x9f, 0x29, ++ 0x48, 0xe1, 0xfd, 0x94, 0xb7, 0x87, 0xf3, 0xf7, 0x84, 0xbd, 0x67, 0x1a, ++ 0xf4, 0xb4, 0x7c, 0xfb, 0xe0, 0x79, 0xd8, 0x97, 0x3d, 0xc8, 0xfe, 0x7a, ++ 0xdb, 0x77, 0xc6, 0x05, 0x9f, 0xcb, 0x53, 0x34, 0xba, 0x03, 0xca, 0x87, ++ 0x6c, 0x27, 0x81, 0x6f, 0x3e, 0x4a, 0x82, 0xdc, 0x2b, 0x0d, 0x62, 0x1d, ++ 0xee, 0x2f, 0xcf, 0xd1, 0x1c, 0xdc, 0x6b, 0x12, 0x2e, 0xac, 0x12, 0xe7, ++ 0x7b, 0xcf, 0xca, 0xbf, 0x44, 0x84, 0x41, 0x5f, 0xce, 0x5d, 0xac, 0x66, ++ 0xbb, 0xed, 0x55, 0x7a, 0xd8, 0xaf, 0xbd, 0x53, 0x30, 0x87, 0xfd, 0x52, ++ 0xaf, 0xa9, 0x87, 0xfd, 0xda, 0x1b, 0x47, 0xee, 0x64, 0xff, 0xd0, 0x3b, ++ 0xac, 0x67, 0x01, 0xfc, 0xd4, 0x3b, 0x05, 0xcb, 0x64, 0xff, 0xc8, 0x9e, ++ 0x05, 0x0e, 0xea, 0xdf, 0xa7, 0xe3, 0x63, 0x04, 0xc7, 0xfd, 0xf7, 0x8f, ++ 0xd4, 0xb0, 0xff, 0x98, 0xad, 0xca, 0x77, 0x15, 0x62, 0xa7, 0xc9, 0x2e, ++ 0xeb, 0x41, 0x1b, 0x4e, 0xd6, 0xf3, 0xf9, 0xc2, 0xe4, 0x08, 0x3e, 0x7f, ++ 0x9f, 0x2a, 0xd0, 0xea, 0x3d, 0x03, 0xf2, 0xe1, 0x73, 0x97, 0x6e, 0x37, ++ 0xbd, 0xc2, 0xb1, 0xef, 0x00, 0xec, 0xb0, 0x3c, 0x82, 0xeb, 0x3a, 0x94, ++ 0x47, 0xb5, 0xbc, 0x84, 0x7c, 0x6f, 0x7e, 0x9c, 0x13, 0xef, 0x35, 0xca, ++ 0x31, 0x4f, 0xea, 0x81, 0x39, 0xf8, 0xbe, 0x31, 0x36, 0xe6, 0xd2, 0x52, ++ 0xc8, 0xe7, 0xf6, 0xd1, 0xee, 0xa2, 0x82, 0x1c, 0xdc, 0x6f, 0xf6, 0xf0, ++ 0x39, 0x82, 0xb4, 0x9a, 0xe3, 0x4d, 0xed, 0xef, 0x2c, 0x7c, 0x9e, 0x0c, ++ 0x98, 0xfa, 0x76, 0xc1, 0x4f, 0xa5, 0x8f, 0x76, 0xcf, 0x2a, 0x20, 0x3a, ++ 0xaa, 0xcd, 0xdd, 0xeb, 0xb3, 0x89, 0xa4, 0x0b, 0xa6, 0x9e, 0x2e, 0x94, ++ 0xc8, 0x67, 0xa9, 0xd2, 0x1f, 0x89, 0xdd, 0x52, 0xaf, 0x7a, 0x33, 0x77, ++ 0xca, 0x7b, 0x1a, 0xed, 0xbe, 0xf2, 0x2e, 0x8d, 0xff, 0x82, 0x0e, 0x31, ++ 0x8d, 0xd0, 0x0b, 0x45, 0xca, 0xf7, 0x8d, 0xf6, 0xfd, 0x6f, 0xc3, 0xaf, ++ 0xf4, 0x76, 0x8f, 0x63, 0x7f, 0x1c, 0x6a, 0x37, 0x67, 0xdb, 0x1f, 0x8b, ++ 0x82, 0x7f, 0xf8, 0x13, 0xc5, 0x71, 0x4f, 0xd0, 0x79, 0xff, 0x4f, 0x8b, ++ 0x76, 0xf3, 0x3d, 0xeb, 0x3c, 0xbc, 0x07, 0x21, 0xb8, 0x78, 0xdd, 0x60, ++ 0x7d, 0xe8, 0xff, 0xfa, 0x76, 0x3e, 0xf7, 0x89, 0xcd, 0x41, 0xed, 0xd0, ++ 0xc3, 0x86, 0xc1, 0x78, 0xa8, 0x1e, 0x41, 0x1f, 0xfd, 0x83, 0xfc, 0x8e, ++ 0x87, 0xf9, 0xbe, 0x4d, 0xb3, 0xab, 0xaa, 0xbc, 0xee, 0x5a, 0xf0, 0xe1, ++ 0x0a, 0x3e, 0x97, 0x70, 0x35, 0x08, 0x7f, 0x3d, 0x04, 0x0f, 0x19, 0x2f, ++ 0x4a, 0x64, 0x9e, 0xb0, 0x0d, 0xf1, 0x9f, 0xf8, 0x51, 0x3d, 0xc6, 0x7f, ++ 0x92, 0xcf, 0xe9, 0xfb, 0x4c, 0x02, 0x7e, 0x7c, 0x2d, 0xc5, 0x2f, 0xc6, ++ 0xdb, 0xc2, 0xbd, 0x38, 0xaf, 0x18, 0xf6, 0x51, 0x7c, 0x8a, 0x95, 0xf1, ++ 0x09, 0x71, 0xa1, 0x2a, 0xaa, 0x9b, 0xeb, 0x53, 0xbd, 0x6d, 0x16, 0xbe, ++ 0xef, 0x7d, 0xb0, 0xe3, 0xd3, 0x24, 0xec, 0x9f, 0xf4, 0x90, 0xeb, 0x30, ++ 0x55, 0x1d, 0x2f, 0xc7, 0xe1, 0xfc, 0xbe, 0x57, 0x3b, 0x2f, 0x50, 0x1c, ++ 0x8c, 0xe3, 0xf7, 0x31, 0x6d, 0x1d, 0x71, 0x38, 0x77, 0xe8, 0xed, 0xd5, ++ 0x06, 0x5f, 0x3a, 0xe8, 0xa2, 0x8c, 0x88, 0xf3, 0x75, 0xbd, 0xbd, 0x46, ++ 0xf5, 0xa7, 0x83, 0xfe, 0x2a, 0xa5, 0x3b, 0x0b, 0xfd, 0x7b, 0x41, 0x37, ++ 0x8f, 0x27, 0x5c, 0x05, 0x2e, 0x78, 0x1f, 0xd5, 0x8a, 0xb4, 0x77, 0xd1, ++ 0xa1, 0xb2, 0x3f, 0x0f, 0x95, 0xdb, 0x93, 0x9a, 0xbe, 0x92, 0x5f, 0xc8, ++ 0xe2, 0xf7, 0x1d, 0xaf, 0xc8, 0xfa, 0x80, 0xee, 0x07, 0x2a, 0x34, 0x7f, ++ 0xf2, 0x3a, 0xda, 0x33, 0xa5, 0xdd, 0xdb, 0xf5, 0x7b, 0x25, 0x9a, 0x5a, ++ 0x01, 0x7b, 0x1f, 0xc2, 0x3f, 0x24, 0x14, 0xe8, 0x79, 0xf1, 0x72, 0xae, ++ 0xdf, 0x3c, 0x5e, 0xe0, 0x90, 0xb8, 0x36, 0x9f, 0xd7, 0x95, 0xf5, 0x25, ++ 0xee, 0xaf, 0x7d, 0xf5, 0x7c, 0x56, 0x4a, 0x26, 0xe6, 0x69, 0xe3, 0x82, ++ 0xfd, 0xd0, 0xb8, 0x01, 0xbf, 0x02, 0xfb, 0x4f, 0x60, 0xfb, 0x7f, 0xd0, ++ 0x14, 0x47, 0xfb, 0xaa, 0xdc, 0xa1, 0x38, 0xd7, 0xc2, 0x4f, 0x95, 0xae, ++ 0x29, 0xa2, 0xe1, 0x62, 0x99, 0x71, 0x45, 0x11, 0xd7, 0xcd, 0x84, 0x87, ++ 0xcf, 0x6d, 0xa1, 0x74, 0x85, 0xea, 0xd1, 0xe4, 0x02, 0xc9, 0xa7, 0x4a, ++ 0xc3, 0xb0, 0xc2, 0xd8, 0xa0, 0xf5, 0xce, 0x91, 0x4f, 0x4f, 0x98, 0xc2, ++ 0x7e, 0xc6, 0x0f, 0xbf, 0xf3, 0x93, 0xd8, 0x47, 0x8b, 0x50, 0xa7, 0xf8, ++ 0x71, 0xa9, 0x7c, 0x37, 0x70, 0x25, 0xde, 0x04, 0xdb, 0x39, 0xf6, 0xb3, ++ 0x5d, 0xfa, 0x71, 0x98, 0xcd, 0x65, 0xc3, 0xd5, 0x7a, 0xbc, 0x6c, 0x79, ++ 0xe3, 0xfa, 0xf8, 0x21, 0xe8, 0x08, 0xa5, 0xb3, 0xc2, 0xdd, 0x58, 0x14, ++ 0xe7, 0xb8, 0xba, 0x5d, 0xa7, 0xf7, 0x9c, 0x4d, 0xa7, 0x2f, 0xcf, 0x34, ++ 0x22, 0x98, 0x0f, 0xf3, 0xd6, 0x14, 0x8d, 0x20, 0xb8, 0xcc, 0xfa, 0xcf, ++ 0xf2, 0x41, 0xee, 0xf7, 0x5c, 0x87, 0xc5, 0x8f, 0xb8, 0x5a, 0x51, 0xba, ++ 0x62, 0x7d, 0xf4, 0x10, 0x7a, 0x73, 0x55, 0x3c, 0xd8, 0x1e, 0x14, 0xbf, ++ 0x52, 0x20, 0x5f, 0x2f, 0xdf, 0x6f, 0x5c, 0x8b, 0xfe, 0x50, 0x58, 0xad, ++ 0xf8, 0x4f, 0xa2, 0x5e, 0x24, 0xc8, 0xae, 0x9a, 0xd9, 0xbe, 0xc8, 0x5e, ++ 0x82, 0xe2, 0xc2, 0x8d, 0x05, 0x21, 0x75, 0x87, 0xf2, 0x45, 0x63, 0x91, ++ 0x57, 0x0b, 0xf7, 0xa2, 0xb1, 0x88, 0x33, 0x64, 0x57, 0x0b, 0x9c, 0x43, ++ 0x9c, 0x2f, 0xc9, 0x41, 0x8e, 0x32, 0xf0, 0x9b, 0x11, 0x0f, 0xc3, 0x50, ++ 0x7a, 0xfe, 0x5c, 0x20, 0xdf, 0x25, 0xdd, 0x58, 0x20, 0xed, 0x7c, 0xf5, ++ 0x0c, 0x57, 0x00, 0x7e, 0xf3, 0x66, 0xd5, 0xc0, 0x79, 0x78, 0xe8, 0x7a, ++ 0x5f, 0x15, 0xc8, 0x7c, 0xa2, 0x3b, 0x2e, 0xf2, 0x3e, 0xfd, 0x3d, 0x07, ++ 0x84, 0x7d, 0xb3, 0x2a, 0xf9, 0x96, 0x68, 0xe8, 0x7f, 0x07, 0xf6, 0x96, ++ 0x18, 0x17, 0xe9, 0xc0, 0x7d, 0x50, 0x61, 0x7e, 0xb8, 0x1c, 0x77, 0xc8, ++ 0x66, 0x47, 0xfd, 0x26, 0x70, 0xe8, 0x12, 0xd7, 0x77, 0x03, 0x0f, 0x45, ++ 0xcc, 0x93, 0xf7, 0x06, 0x11, 0x62, 0x24, 0xf5, 0x77, 0x25, 0x4c, 0x6a, ++ 0x0a, 0x8e, 0x23, 0xbf, 0x29, 0x94, 0xfb, 0x0d, 0xcf, 0x96, 0x79, 0x4b, ++ 0x5d, 0x86, 0xe9, 0xef, 0xd7, 0x87, 0x32, 0x23, 0xaf, 0xd4, 0x87, 0x38, ++ 0x6f, 0xc8, 0x0c, 0xe7, 0xfb, 0x92, 0xde, 0xf6, 0x2f, 0x38, 0x6e, 0x05, ++ 0x3a, 0x73, 0xec, 0xb8, 0xd7, 0xe8, 0xed, 0xa6, 0xd3, 0x21, 0xd9, 0x53, ++ 0xdd, 0x37, 0xff, 0x1d, 0x87, 0xf8, 0xda, 0xdb, 0xf9, 0x67, 0x7e, 0x87, ++ 0xd6, 0xfb, 0xf5, 0xa7, 0xfc, 0x3e, 0x6d, 0xa3, 0xf6, 0x3e, 0xf0, 0xf5, ++ 0x76, 0xed, 0x7d, 0x57, 0xb7, 0x23, 0x12, 0xed, 0x81, 0xe2, 0x8f, 0x8b, ++ 0x30, 0x6e, 0x93, 0x06, 0x07, 0xea, 0x04, 0xb2, 0x5e, 0xac, 0x43, 0xfd, ++ 0xfc, 0xab, 0xd7, 0x03, 0x82, 0xce, 0xc1, 0xa3, 0x0b, 0x87, 0x3e, 0x07, ++ 0xc7, 0xb8, 0x23, 0x82, 0xeb, 0x04, 0x8e, 0xf8, 0xa1, 0xea, 0x2a, 0xc1, ++ 0x75, 0x82, 0xd4, 0x34, 0x59, 0x27, 0x00, 0x44, 0x9d, 0x20, 0xd5, 0x24, ++ 0xeb, 0x04, 0xc0, 0x51, 0x27, 0x00, 0x44, 0x9d, 0x00, 0xed, 0xa8, 0x13, ++ 0x00, 0x47, 0x9d, 0x00, 0x38, 0xea, 0x04, 0xc0, 0x51, 0x27, 0x00, 0x44, ++ 0x9d, 0x00, 0xed, 0x5f, 0xce, 0x93, 0xef, 0x65, 0x02, 0xa4, 0xc4, 0xb2, ++ 0x7e, 0x19, 0xc1, 0xfe, 0xfd, 0xde, 0x66, 0xd5, 0x8b, 0xfc, 0xfc, 0xde, ++ 0x43, 0xf2, 0x1e, 0xea, 0xde, 0x46, 0x85, 0xdf, 0x69, 0x5d, 0xa0, 0xef, ++ 0x23, 0xce, 0x5d, 0xf5, 0x5e, 0xe7, 0x80, 0xf6, 0x5e, 0xc7, 0xb7, 0x95, ++ 0xef, 0xf5, 0xea, 0xda, 0x54, 0x27, 0x44, 0x55, 0x67, 0xea, 0x3b, 0x8a, ++ 0xba, 0x4e, 0x5d, 0xab, 0xe2, 0x5c, 0x03, 0xff, 0x52, 0x3f, 0x8f, 0xbf, ++ 0xbf, 0xb1, 0x33, 0xe7, 0xbd, 0x52, 0xb4, 0x37, 0x9b, 0x9c, 0x06, 0x07, ++ 0xe4, 0x74, 0x31, 0x0e, 0xf5, 0xaa, 0xca, 0xce, 0x66, 0xae, 0x3f, 0x15, ++ 0xc4, 0x1f, 0x32, 0xb3, 0x7c, 0x5b, 0x14, 0x81, 0x7a, 0xe9, 0x9d, 0x16, ++ 0x79, 0xce, 0xad, 0x51, 0xa9, 0x75, 0x0a, 0xdf, 0x87, 0x72, 0x1e, 0x5c, ++ 0x63, 0xe9, 0xe6, 0xf3, 0x47, 0xd5, 0x1e, 0xc5, 0x5e, 0x16, 0x7c, 0x9f, ++ 0x7b, 0xc3, 0xe7, 0xec, 0x07, 0xd6, 0xda, 0xa2, 0x9a, 0x40, 0x67, 0x8d, ++ 0xcf, 0x66, 0x2f, 0x1b, 0xe2, 0xfd, 0x07, 0xdf, 0x0b, 0x3b, 0xc4, 0x95, ++ 0xfb, 0xe6, 0xa5, 0x72, 0x88, 0xa8, 0x89, 0x28, 0xe2, 0xfb, 0xe6, 0xa5, ++ 0xb8, 0x67, 0x26, 0x28, 0xd4, 0xaf, 0x8d, 0x7c, 0x7f, 0x4c, 0x07, 0xd3, ++ 0xe1, 0xd0, 0x47, 0xbc, 0xab, 0xca, 0x80, 0x5b, 0xb7, 0x4b, 0xbb, 0x0f, ++ 0x79, 0x4f, 0x55, 0xd9, 0xd9, 0xba, 0x3e, 0x51, 0x5c, 0x7d, 0x0f, 0x8d, ++ 0xca, 0x00, 0xe4, 0x1f, 0x7a, 0xff, 0xec, 0x2e, 0x8c, 0x8c, 0x3d, 0x1d, ++ 0x0e, 0x47, 0x21, 0x26, 0x23, 0x6f, 0x2a, 0x7e, 0xbc, 0x6c, 0x5f, 0x1b, ++ 0x7d, 0xaf, 0x7f, 0x8b, 0x85, 0xf3, 0x8e, 0x15, 0xf9, 0xee, 0x65, 0xd0, ++ 0xa3, 0xa3, 0x26, 0x17, 0xd7, 0x49, 0x8e, 0x1e, 0xb2, 0xf1, 0xf9, 0xe8, ++ 0x93, 0xad, 0xe3, 0x07, 0xd5, 0x49, 0xbe, 0x70, 0xb9, 0xab, 0x0b, 0xf9, ++ 0x7e, 0x7e, 0x34, 0xd7, 0x2d, 0x56, 0x9a, 0x14, 0x8e, 0xcb, 0xf9, 0xc5, ++ 0xe3, 0xe2, 0xf9, 0xdd, 0xc0, 0x31, 0x13, 0xc7, 0x9f, 0x0e, 0x57, 0x49, ++ 0x2d, 0xc6, 0xad, 0x9c, 0xe4, 0xe0, 0xfa, 0x54, 0xa1, 0x45, 0xdc, 0xc7, ++ 0xeb, 0x68, 0xef, 0xb4, 0x08, 0xb2, 0x3d, 0x15, 0xae, 0x55, 0xbc, 0x06, ++ 0xc2, 0x17, 0x09, 0xa7, 0x19, 0xf6, 0xb3, 0x90, 0xd8, 0xc6, 0xfa, 0x62, ++ 0x8a, 0xd8, 0x80, 0xf7, 0x54, 0x0b, 0x85, 0x7c, 0xdf, 0xa0, 0xeb, 0xcd, ++ 0xca, 0xad, 0x0a, 0xe7, 0x05, 0x5c, 0x28, 0x88, 0xc3, 0xbd, 0xa4, 0xe4, ++ 0xef, 0xc2, 0xce, 0x7f, 0xbb, 0x84, 0xf7, 0x0b, 0x4b, 0x2c, 0x32, 0x7f, ++ 0x4d, 0x34, 0xc8, 0xfb, 0xec, 0xc4, 0x4d, 0xf2, 0x7d, 0xcb, 0x4f, 0x84, ++ 0xdb, 0x8c, 0x78, 0xbb, 0x8c, 0xe2, 0x22, 0x20, 0xc5, 0xc9, 0xdf, 0xf5, ++ 0x50, 0xbb, 0x3b, 0x7c, 0x74, 0x92, 0xcc, 0xcf, 0x1d, 0xf1, 0x58, 0x7f, ++ 0xd1, 0x71, 0x13, 0xbf, 0xf7, 0x2d, 0x8c, 0xff, 0x61, 0xba, 0x9b, 0xe3, ++ 0x75, 0x01, 0xbf, 0x63, 0x50, 0xfc, 0x77, 0xab, 0x97, 0xaf, 0xbb, 0xb6, ++ 0xfd, 0x84, 0xbe, 0x63, 0x38, 0x6a, 0x92, 0xfe, 0x85, 0xf8, 0xc8, 0xe7, ++ 0xa2, 0x2e, 0xe8, 0x25, 0xd7, 0x67, 0xdc, 0x0c, 0x8f, 0xd7, 0x97, 0x33, ++ 0x9c, 0x34, 0x43, 0xfa, 0xc7, 0x2b, 0xef, 0x12, 0x49, 0x46, 0x76, 0xd0, ++ 0x1f, 0xde, 0xf7, 0x01, 0xce, 0x8b, 0x89, 0xf1, 0x91, 0x4e, 0xf8, 0x3b, ++ 0xdd, 0xee, 0xaf, 0x7a, 0x9f, 0x18, 0x26, 0xa1, 0xfe, 0x3e, 0x71, 0x0c, ++ 0x41, 0x11, 0xf4, 0x3e, 0x71, 0xb3, 0xcb, 0xc1, 0xfe, 0x2e, 0xd1, 0x70, ++ 0x62, 0xaa, 0x03, 0xfc, 0xf8, 0x4b, 0x84, 0x13, 0xfc, 0xd0, 0xdf, 0x29, ++ 0xae, 0x9e, 0x51, 0xb2, 0x13, 0x72, 0x72, 0x45, 0x09, 0x0f, 0xbe, 0x8b, ++ 0x7b, 0x94, 0x2d, 0xc4, 0xd7, 0x22, 0x6c, 0x44, 0x41, 0x9d, 0xdb, 0xe7, ++ 0x52, 0x51, 0xb7, 0x3e, 0xa4, 0xd8, 0xf9, 0x5d, 0xf4, 0x55, 0x7e, 0x72, ++ 0xeb, 0x43, 0x78, 0xc7, 0x53, 0x97, 0xaa, 0xd8, 0x15, 0x07, 0xea, 0xe1, ++ 0x5b, 0x0a, 0xe3, 0x88, 0xee, 0xa2, 0x94, 0x64, 0xa6, 0xbb, 0xae, 0x5d, ++ 0xd6, 0x4b, 0x99, 0x43, 0x71, 0xa8, 0xa7, 0x6b, 0xf6, 0xe0, 0x72, 0xb7, ++ 0x15, 0x8e, 0x18, 0x68, 0x9f, 0xad, 0xd9, 0x45, 0x2f, 0x8d, 0x97, 0x7a, ++ 0x72, 0x93, 0x17, 0xfa, 0xf6, 0x1d, 0xea, 0xa8, 0xcf, 0x61, 0xbc, 0x47, ++ 0xd8, 0x9c, 0xcd, 0xda, 0x79, 0x0d, 0x72, 0x9f, 0x7d, 0xdd, 0x18, 0xae, ++ 0xa7, 0xea, 0x7a, 0xd3, 0xdf, 0x12, 0xdf, 0x04, 0xbd, 0x79, 0xb3, 0x50, ++ 0xc6, 0x99, 0xd2, 0xd2, 0x77, 0x4d, 0xc8, 0x03, 0xba, 0x72, 0xdd, 0x47, ++ 0xb0, 0xff, 0x05, 0x65, 0x9f, 0x3f, 0x14, 0xc7, 0xfb, 0x1b, 0xba, 0x8e, ++ 0x45, 0x7e, 0x94, 0xef, 0x25, 0x43, 0xeb, 0x58, 0xba, 0x5f, 0xde, 0xa5, ++ 0xd5, 0xc1, 0xe1, 0x3f, 0x8d, 0x5a, 0x9d, 0xd5, 0xa8, 0xd5, 0x59, 0x8d, ++ 0x5a, 0x9d, 0xd5, 0xa8, 0xd5, 0x59, 0x8d, 0x5a, 0x9d, 0xd5, 0xa8, 0xd5, ++ 0x59, 0x8d, 0x5a, 0x9d, 0xd5, 0xa8, 0xd5, 0x59, 0x8d, 0x5a, 0x9d, 0xd5, ++ 0xc8, 0xf5, 0xbb, 0xe5, 0x0c, 0xdf, 0xa9, 0x5f, 0xc5, 0xb0, 0xbb, 0xde, ++ 0xc3, 0xfd, 0x41, 0xfe, 0xff, 0xfd, 0x6b, 0xf8, 0xff, 0xd0, 0x3a, 0xe8, ++ 0xc7, 0x18, 0x17, 0x5a, 0x07, 0x15, 0x56, 0x47, 0x34, 0xc7, 0x51, 0xb2, ++ 0x6f, 0x59, 0x7f, 0x0e, 0xa9, 0x7b, 0x16, 0x0f, 0x5f, 0xbc, 0x81, 0xf8, ++ 0x97, 0xdf, 0x60, 0x76, 0xa2, 0x49, 0xaf, 0x83, 0xe2, 0xfd, 0xf2, 0xbd, ++ 0x11, 0xec, 0x0f, 0x2e, 0x14, 0x0e, 0x59, 0xff, 0xd4, 0xf9, 0x16, 0xc1, ++ 0xf5, 0xd2, 0x7e, 0x61, 0x9b, 0x02, 0xfe, 0xe7, 0x65, 0x8c, 0x33, 0x1a, ++ 0xa8, 0xff, 0x2f, 0x9a, 0x1c, 0xf4, 0xfa, 0x23, 0xec, 0x03, 0xfb, 0x83, ++ 0x7d, 0x00, 0xc2, 0x3e, 0x8c, 0x69, 0x03, 0xf6, 0xf1, 0x8c, 0x99, 0x4c, ++ 0x38, 0x5b, 0xc6, 0x7b, 0x0f, 0xc7, 0x7b, 0x1b, 0xcb, 0x75, 0xfd, 0x1a, ++ 0xf2, 0x1f, 0x84, 0x2f, 0x11, 0xf6, 0x41, 0xfe, 0xe3, 0x42, 0x88, 0xff, ++ 0xa0, 0x83, 0xc7, 0x5d, 0xa0, 0x63, 0x69, 0xa7, 0x7c, 0xd7, 0xa4, 0xbf, ++ 0xdf, 0xcc, 0x23, 0xf0, 0xd5, 0x94, 0x21, 0xfc, 0x89, 0x4f, 0xfa, 0x93, ++ 0x31, 0x61, 0xbe, 0xbd, 0xf8, 0xce, 0x98, 0xda, 0x30, 0x7e, 0x1f, 0x7c, ++ 0x54, 0x7b, 0x8f, 0x75, 0x74, 0xa3, 0x7c, 0x17, 0x57, 0x26, 0x4a, 0xf8, ++ 0xbb, 0x43, 0xf8, 0x95, 0x28, 0xc8, 0x63, 0xc9, 0xf0, 0xbe, 0x0f, 0x9e, ++ 0xa6, 0xf1, 0x4b, 0x1e, 0x89, 0xe0, 0xbc, 0x65, 0xfd, 0xc8, 0xa5, 0xd3, ++ 0xfe, 0x37, 0x7e, 0xe5, 0xf3, 0x42, 0xc9, 0x8f, 0xdf, 0xd6, 0xfb, 0x2b, ++ 0x3f, 0x21, 0x5a, 0x0a, 0xc2, 0xa4, 0xfe, 0x15, 0x98, 0x45, 0x06, 0xee, ++ 0x6b, 0x84, 0x21, 0x8c, 0xed, 0xa0, 0x50, 0xdd, 0xac, 0xe0, 0x7e, 0x74, ++ 0xe5, 0x3d, 0x62, 0x32, 0xe4, 0x5c, 0x60, 0x29, 0xd9, 0x0e, 0x3a, 0xe3, ++ 0xb5, 0xfb, 0x6d, 0x11, 0xab, 0xd5, 0x5b, 0x8d, 0xdd, 0x15, 0xbb, 0x09, ++ 0x3f, 0x11, 0x97, 0xe8, 0xc4, 0xbd, 0xd6, 0xe8, 0x84, 0x83, 0x02, 0xef, ++ 0x9f, 0x0a, 0xeb, 0x8a, 0x33, 0xe1, 0x17, 0xfd, 0x63, 0xdc, 0x13, 0x8a, ++ 0x72, 0xf0, 0x7e, 0x79, 0x8b, 0x82, 0xf9, 0xe1, 0x99, 0x72, 0xff, 0xb7, ++ 0x17, 0x87, 0x37, 0x41, 0xaf, 0x02, 0x87, 0xc6, 0xe7, 0x40, 0xde, 0x73, ++ 0x2d, 0x8e, 0x36, 0xd4, 0x01, 0x9c, 0x45, 0x09, 0x4b, 0x70, 0xce, 0x9f, ++ 0x1b, 0xed, 0xc8, 0x41, 0x1d, 0xc0, 0xd9, 0x35, 0x4a, 0xe2, 0xf1, 0x8e, ++ 0x36, 0xc5, 0x89, 0x54, 0x36, 0x61, 0x49, 0x01, 0xbf, 0x3f, 0xb3, 0x6e, ++ 0xf9, 0xc4, 0x8a, 0x77, 0x6b, 0x8a, 0x88, 0xa6, 0x7d, 0x59, 0x86, 0xb9, ++ 0x73, 0xf0, 0x9d, 0x9a, 0xe2, 0xcf, 0xe4, 0xb9, 0x59, 0xf4, 0x71, 0x1c, ++ 0xbb, 0xb1, 0x48, 0x9e, 0xbf, 0x46, 0xbc, 0x2e, 0xfc, 0xb8, 0xb7, 0xea, ++ 0x9b, 0x19, 0xc9, 0xf7, 0x67, 0x22, 0xd3, 0x91, 0x83, 0x7e, 0xca, 0x2b, ++ 0xbf, 0x5f, 0x44, 0xfa, 0x77, 0xe4, 0x07, 0xae, 0x9b, 0x00, 0x13, 0x35, ++ 0x3a, 0xe3, 0x71, 0x8b, 0xa8, 0x42, 0xaa, 0xdd, 0x36, 0xc0, 0xe3, 0xda, ++ 0x7d, 0x5e, 0x97, 0xc1, 0x5d, 0x0a, 0x58, 0x14, 0xe5, 0x31, 0x72, 0xbb, ++ 0xc1, 0x9b, 0x0d, 0xf8, 0x96, 0xc1, 0xf7, 0x53, 0xb4, 0x93, 0x3e, 0x17, ++ 0x61, 0x9d, 0xa2, 0xc7, 0x26, 0x4f, 0xcc, 0x20, 0x3c, 0xd1, 0xe2, 0x63, ++ 0x3f, 0xd9, 0xe1, 0x72, 0xdd, 0x02, 0xfa, 0x5e, 0x9c, 0xe1, 0x2a, 0x06, ++ 0x0c, 0xad, 0x9f, 0x43, 0xb6, 0x38, 0xe7, 0x13, 0x3d, 0xb7, 0xa2, 0x3f, ++ 0xf4, 0x1d, 0x96, 0x2e, 0xcf, 0x25, 0x45, 0x52, 0xef, 0xcb, 0x8a, 0xa4, ++ 0xff, 0x98, 0xbe, 0x56, 0xde, 0xc7, 0x86, 0xca, 0xbd, 0xac, 0xc8, 0xa0, ++ 0xf9, 0xb7, 0xbf, 0x4f, 0x37, 0xd1, 0x5b, 0x8a, 0xef, 0xe9, 0xf4, 0x8b, ++ 0x2d, 0x8b, 0xb2, 0x41, 0x0f, 0xd1, 0x7b, 0x0f, 0xf6, 0x41, 0xf4, 0x2e, ++ 0x00, 0x14, 0x11, 0x31, 0x5c, 0xef, 0xb8, 0xb6, 0x9e, 0x79, 0xf8, 0x7b, ++ 0x65, 0x45, 0x52, 0xbf, 0xc8, 0x9f, 0x55, 0x7d, 0x22, 0xfd, 0x19, 0xc3, ++ 0x74, 0xa3, 0x77, 0x18, 0xf2, 0xc7, 0x51, 0x0f, 0x78, 0x87, 0x81, 0xde, ++ 0x51, 0x8d, 0x7d, 0x36, 0xfc, 0x3b, 0x8c, 0x67, 0x3d, 0x7d, 0x36, 0xc4, ++ 0xf7, 0x67, 0x57, 0xf7, 0xd9, 0xd0, 0xfe, 0xac, 0x4b, 0xbe, 0x93, 0x0e, ++ 0x5d, 0xbf, 0xb1, 0x48, 0xbe, 0x9f, 0x48, 0x9f, 0xde, 0xc7, 0xf3, 0xc7, ++ 0xd2, 0xb7, 0xba, 0x39, 0x4f, 0xef, 0x1b, 0x86, 0x3c, 0x2a, 0xbd, 0xfc, ++ 0x93, 0xf5, 0xf2, 0xde, 0x25, 0x83, 0xe3, 0xcb, 0x58, 0x2d, 0xbe, 0x8c, ++ 0x7d, 0x20, 0xa5, 0xbd, 0x87, 0xf4, 0x6d, 0xec, 0x93, 0xd1, 0x7c, 0xbf, ++ 0x2d, 0x0a, 0x62, 0xb9, 0xbf, 0xd2, 0x2a, 0xed, 0xb4, 0xf2, 0x81, 0xb2, ++ 0x83, 0x6d, 0x04, 0xc7, 0x6f, 0x23, 0x7a, 0x83, 0xf2, 0xaf, 0x09, 0x5e, ++ 0xa2, 0x7b, 0x50, 0x5e, 0x64, 0xec, 0x97, 0xef, 0x2d, 0x09, 0x07, 0x9f, ++ 0xf6, 0x98, 0x18, 0x87, 0xce, 0x22, 0xbf, 0xaa, 0x11, 0xf2, 0xbd, 0xe5, ++ 0x28, 0xcd, 0x6f, 0x20, 0x6f, 0x2b, 0x25, 0xbf, 0x50, 0x53, 0x7e, 0xe4, ++ 0x12, 0xbf, 0x03, 0xc0, 0x7c, 0xac, 0x8f, 0x3b, 0x5b, 0xe8, 0x5f, 0xbb, ++ 0x49, 0xe2, 0x14, 0xae, 0x71, 0x1e, 0x5d, 0x36, 0x6f, 0x4d, 0x17, 0x9f, ++ 0x0f, 0xb7, 0x5d, 0x69, 0xd7, 0xce, 0x9b, 0xad, 0xeb, 0x71, 0x7e, 0xa6, ++ 0xfc, 0x6d, 0x50, 0x7b, 0x65, 0xd9, 0xe1, 0x2e, 0xc4, 0x9b, 0xaa, 0x3d, ++ 0x83, 0xdb, 0x6b, 0x96, 0x7f, 0xce, 0xe7, 0x58, 0xca, 0xdf, 0x06, 0xb5, ++ 0xdf, 0xf3, 0xd3, 0x0f, 0xf9, 0x9d, 0x4d, 0x5d, 0xfb, 0xe0, 0x76, 0x92, ++ 0xef, 0x53, 0x90, 0xbf, 0x2e, 0xdf, 0xa3, 0x26, 0xdf, 0x04, 0x9c, 0xf7, ++ 0x8e, 0xd6, 0x84, 0x39, 0xe5, 0xbf, 0x1f, 0xf0, 0xad, 0x80, 0xbd, 0x37, ++ 0x55, 0x47, 0xf0, 0xfb, 0xd9, 0x9d, 0xbf, 0xc9, 0x63, 0xbd, 0xd1, 0xe5, ++ 0x4d, 0xf3, 0x9b, 0xbe, 0x9b, 0x7e, 0xac, 0xe5, 0xf1, 0x9e, 0x3c, 0x91, ++ 0x01, 0x7b, 0xf8, 0x36, 0xd8, 0x0b, 0xff, 0x94, 0x36, 0xc8, 0x3f, 0x79, ++ 0xb8, 0xce, 0x37, 0x2b, 0x92, 0xfd, 0x4e, 0x9d, 0x76, 0xbe, 0xaa, 0x2d, ++ 0xb3, 0x73, 0x9c, 0x4f, 0xac, 0xb5, 0xb2, 0xff, 0x2a, 0x54, 0xc3, 0x9c, ++ 0xc0, 0x6b, 0x8d, 0xd2, 0xcf, 0x88, 0x62, 0x55, 0xf3, 0x53, 0x3e, 0xb6, ++ 0xff, 0x13, 0xb7, 0x0d, 0xe3, 0x7a, 0x1e, 0x6f, 0x00, 0x78, 0xcc, 0x24, ++ 0x7e, 0x77, 0x1c, 0xb7, 0x56, 0xe2, 0x7d, 0x23, 0x2c, 0xec, 0x1f, 0x0a, ++ 0x0d, 0x25, 0xd5, 0xbb, 0x09, 0x1e, 0x31, 0x2c, 0x67, 0x3f, 0x90, 0x80, ++ 0x17, 0x97, 0x24, 0xf7, 0x67, 0xe0, 0x1f, 0x54, 0xd8, 0xaf, 0xbc, 0x7f, ++ 0xa8, 0x33, 0xfb, 0x14, 0x79, 0xbf, 0xef, 0xc8, 0xc1, 0x79, 0x57, 0xbf, ++ 0x6f, 0x6a, 0xd8, 0xe8, 0x6d, 0x3d, 0x80, 0xf3, 0xb2, 0xe2, 0x7d, 0x72, ++ 0x29, 0xea, 0x8a, 0x77, 0x44, 0xf0, 0xfd, 0x41, 0x00, 0xf5, 0x46, 0xda, ++ 0x4f, 0xc3, 0x30, 0xe9, 0x47, 0x1b, 0xe6, 0xa7, 0x73, 0x1c, 0x08, 0x88, ++ 0x92, 0xd2, 0x15, 0xc8, 0x43, 0xe6, 0x85, 0x71, 0xfd, 0xb1, 0x61, 0x98, ++ 0xe3, 0x51, 0xdc, 0x27, 0x36, 0x54, 0x4c, 0xe4, 0x3c, 0xfa, 0xe0, 0xdf, ++ 0x64, 0xdc, 0xed, 0x9b, 0x63, 0x75, 0x22, 0x8f, 0x6a, 0x98, 0xec, 0x58, ++ 0x83, 0xf7, 0x2a, 0x0d, 0x0f, 0x38, 0xb8, 0xff, 0x55, 0x45, 0xae, 0xe7, ++ 0x79, 0x54, 0xf2, 0xa7, 0x61, 0x8e, 0xdc, 0x7f, 0x43, 0x45, 0x0c, 0x9f, ++ 0x7b, 0x74, 0x39, 0x34, 0x34, 0xba, 0x46, 0xe2, 0x7e, 0x6a, 0xc6, 0x18, ++ 0xf7, 0x7f, 0x42, 0x6e, 0xa3, 0xb4, 0xfb, 0xb9, 0x86, 0x64, 0x6a, 0x27, ++ 0xf8, 0x84, 0x52, 0x32, 0xff, 0x27, 0x58, 0x67, 0x92, 0xa4, 0x77, 0xd2, ++ 0x0c, 0x07, 0xcb, 0xed, 0xe8, 0xfc, 0x89, 0x8f, 0xee, 0x72, 0x70, 0x38, ++ 0xf1, 0xe3, 0x9e, 0xa8, 0x6e, 0x56, 0xe4, 0xa0, 0x73, 0xf1, 0xff, 0x00, ++ 0x87, 0x51, 0xd9, 0xf6, 0x10, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++}; ++ ++void bnx2x_init_e1h_firmware(struct bnx2x *bp) ++{ ++ INIT_OPS(bp) = (struct raw_op *)init_ops_e1h; ++ INIT_DATA(bp) = (u32 *)init_data_e1h; ++ INIT_OPS_OFFSETS(bp) = (u16 *)init_ops_offsets_e1h; ++ INIT_TSEM_INT_TABLE_DATA(bp) = tsem_int_table_data_e1h; ++ INIT_TSEM_PRAM_DATA(bp) = tsem_pram_data_e1h; ++ INIT_USEM_INT_TABLE_DATA(bp) = usem_int_table_data_e1h; ++ INIT_USEM_PRAM_DATA(bp) = usem_pram_data_e1h; ++ INIT_XSEM_INT_TABLE_DATA(bp) = xsem_int_table_data_e1h; ++ INIT_XSEM_PRAM_DATA(bp) = xsem_pram_data_e1h; ++ INIT_CSEM_INT_TABLE_DATA(bp) = csem_int_table_data_e1h; ++ INIT_CSEM_PRAM_DATA(bp) = csem_pram_data_e1h; ++} ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_link.c linux-2.6.22-800/drivers/net/bnx2x/bnx2x_link.c +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_link.c 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_link.c 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,7881 @@ ++/* Copyright 2008-2009 Broadcom Corporation ++ * ++ * Unless you and Broadcom execute a separate written software license ++ * agreement governing use of this software, this software is licensed to you ++ * under the terms of the GNU General Public License version 2, available ++ * at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (the "GPL"). ++ * ++ * Notwithstanding the above, under no circumstances may you combine this ++ * software in any way with any other Broadcom software provided under a ++ * license other than the GPL, without Broadcom's express prior written ++ * consent. ++ * ++ * Written by Yaniv Rosner ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#ifdef __LINUX_MUTEX_H /* BNX2X_UPSTREAM */ ++#include ++#endif ++#include ++ ++#include "bnx2x.h" ++ ++ ++#define E2_PHASE0 1 ++#define CHIP_IS_E2_NOT_PHASE0(_chip_id) (CHIP_IS_E2(bp) && \ ++ !(E2_PHASE0)) ++/********************************************************/ ++#define ETH_HLEN 14 ++#define ETH_OVREHEAD (ETH_HLEN + 8)/* 8 for CRC + VLAN*/ ++#define ETH_MIN_PACKET_SIZE 60 ++#define ETH_MAX_PACKET_SIZE 1500 ++#define ETH_MAX_JUMBO_PACKET_SIZE 9600 ++#define MDIO_ACCESS_TIMEOUT 1000 ++#define BMAC_CONTROL_RX_ENABLE 2 ++ ++struct bnx2x_image_header { ++ u32 magic; ++ #define FILE_MAGIC 0x669955aa ++ u32 version; ++ #define FORMAT_VERSION_2 0x2 ++ u32 type; ++ #define IMAGE_HDR_TYPE_BCM8073 0x33373038 ++ #define IMAGE_HDR_TYPE_BCM8726 0x36323738 ++ #define IMAGE_HDR_TYPE_BCM8727 0x37323738 ++ #define IMAGE_HDR_TYPE_BCM8481 0x31383438 ++ #define IMAGE_HDR_TYPE_SFX7101 0x68706673 ++ u32 image_info; ++ u32 byte_cnt; ++}; ++/***********************************************************/ ++/* Shortcut definitions */ ++/***********************************************************/ ++ ++#define NIG_LATCH_BC_ENABLE_MI_INT 0 ++ ++#define NIG_STATUS_EMAC0_MI_INT \ ++ NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_EMAC0_MISC_MI_INT ++#define NIG_STATUS_XGXS0_LINK10G \ ++ NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK10G ++#define NIG_STATUS_XGXS0_LINK_STATUS \ ++ NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS ++#define NIG_STATUS_XGXS0_LINK_STATUS_SIZE \ ++ NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS_SIZE ++#define NIG_STATUS_SERDES0_LINK_STATUS \ ++ NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_SERDES0_LINK_STATUS ++#define NIG_MASK_MI_INT \ ++ NIG_MASK_INTERRUPT_PORT0_REG_MASK_EMAC0_MISC_MI_INT ++#define NIG_MASK_XGXS0_LINK10G \ ++ NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK10G ++#define NIG_MASK_XGXS0_LINK_STATUS \ ++ NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK_STATUS ++#define NIG_MASK_SERDES0_LINK_STATUS \ ++ NIG_MASK_INTERRUPT_PORT0_REG_MASK_SERDES0_LINK_STATUS ++ ++#define MDIO_AN_CL73_OR_37_COMPLETE \ ++ (MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_AUTONEG_COMPLETE | \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_CL37_AUTONEG_COMPLETE) ++ ++#define XGXS_RESET_BITS \ ++ (MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_RSTB_HW | \ ++ MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_IDDQ | \ ++ MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN | \ ++ MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN_SD | \ ++ MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_TXD_FIFO_RSTB) ++ ++#define SERDES_RESET_BITS \ ++ (MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_RSTB_HW | \ ++ MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_IDDQ | \ ++ MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN | \ ++ MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN_SD) ++ ++#define AUTONEG_CL37 SHARED_HW_CFG_AN_ENABLE_CL37 ++#define AUTONEG_CL73 SHARED_HW_CFG_AN_ENABLE_CL73 ++#define AUTONEG_BAM SHARED_HW_CFG_AN_ENABLE_BAM ++#define AUTONEG_PARALLEL \ ++ SHARED_HW_CFG_AN_ENABLE_PARALLEL_DETECTION ++#define AUTONEG_SGMII_FIBER_AUTODET \ ++ SHARED_HW_CFG_AN_EN_SGMII_FIBER_AUTO_DETECT ++#define AUTONEG_REMOTE_PHY SHARED_HW_CFG_AN_ENABLE_REMOTE_PHY ++ ++#define GP_STATUS_PAUSE_RSOLUTION_TXSIDE \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_TXSIDE ++#define GP_STATUS_PAUSE_RSOLUTION_RXSIDE \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_RXSIDE ++#define GP_STATUS_SPEED_MASK \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_MASK ++#define GP_STATUS_10M MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10M ++#define GP_STATUS_100M MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_100M ++#define GP_STATUS_1G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G ++#define GP_STATUS_2_5G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_2_5G ++#define GP_STATUS_5G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_5G ++#define GP_STATUS_6G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_6G ++#define GP_STATUS_10G_HIG \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_HIG ++#define GP_STATUS_10G_CX4 \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_CX4 ++#define GP_STATUS_12G_HIG \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12G_HIG ++#define GP_STATUS_12_5G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12_5G ++#define GP_STATUS_13G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_13G ++#define GP_STATUS_15G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_15G ++#define GP_STATUS_16G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_16G ++#define GP_STATUS_1G_KX MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G_KX ++#define GP_STATUS_10G_KX4 \ ++ MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_KX4 ++ ++#define LINK_10THD LINK_STATUS_SPEED_AND_DUPLEX_10THD ++#define LINK_10TFD LINK_STATUS_SPEED_AND_DUPLEX_10TFD ++#define LINK_100TXHD LINK_STATUS_SPEED_AND_DUPLEX_100TXHD ++#define LINK_100T4 LINK_STATUS_SPEED_AND_DUPLEX_100T4 ++#define LINK_100TXFD LINK_STATUS_SPEED_AND_DUPLEX_100TXFD ++#define LINK_1000THD LINK_STATUS_SPEED_AND_DUPLEX_1000THD ++#define LINK_1000TFD LINK_STATUS_SPEED_AND_DUPLEX_1000TFD ++#define LINK_1000XFD LINK_STATUS_SPEED_AND_DUPLEX_1000XFD ++#define LINK_2500THD LINK_STATUS_SPEED_AND_DUPLEX_2500THD ++#define LINK_2500TFD LINK_STATUS_SPEED_AND_DUPLEX_2500TFD ++#define LINK_2500XFD LINK_STATUS_SPEED_AND_DUPLEX_2500XFD ++#define LINK_10GTFD LINK_STATUS_SPEED_AND_DUPLEX_10GTFD ++#define LINK_10GXFD LINK_STATUS_SPEED_AND_DUPLEX_10GXFD ++#define LINK_12GTFD LINK_STATUS_SPEED_AND_DUPLEX_12GTFD ++#define LINK_12GXFD LINK_STATUS_SPEED_AND_DUPLEX_12GXFD ++#define LINK_12_5GTFD LINK_STATUS_SPEED_AND_DUPLEX_12_5GTFD ++#define LINK_12_5GXFD LINK_STATUS_SPEED_AND_DUPLEX_12_5GXFD ++#define LINK_13GTFD LINK_STATUS_SPEED_AND_DUPLEX_13GTFD ++#define LINK_13GXFD LINK_STATUS_SPEED_AND_DUPLEX_13GXFD ++#define LINK_15GTFD LINK_STATUS_SPEED_AND_DUPLEX_15GTFD ++#define LINK_15GXFD LINK_STATUS_SPEED_AND_DUPLEX_15GXFD ++#define LINK_16GTFD LINK_STATUS_SPEED_AND_DUPLEX_16GTFD ++#define LINK_16GXFD LINK_STATUS_SPEED_AND_DUPLEX_16GXFD ++ ++#define PHY_XGXS_FLAG 0x1 ++#define PHY_SGMII_FLAG 0x2 ++#define PHY_SERDES_FLAG 0x4 ++ ++/* */ ++#define SFP_EEPROM_CON_TYPE_ADDR 0x2 ++ #define SFP_EEPROM_CON_TYPE_VAL_LC 0x7 ++ #define SFP_EEPROM_CON_TYPE_VAL_COPPER 0x21 ++ ++ ++#define SFP_EEPROM_COMP_CODE_ADDR 0x3 ++ #define SFP_EEPROM_COMP_CODE_SR_MASK (1<<4) ++ #define SFP_EEPROM_COMP_CODE_LR_MASK (1<<5) ++ #define SFP_EEPROM_COMP_CODE_LRM_MASK (1<<6) ++ ++#define SFP_EEPROM_FC_TX_TECH_ADDR 0x8 ++ #define SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_PASSIVE 0x4 ++ #define SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE 0x8 ++ ++#define SFP_EEPROM_OPTIONS_ADDR 0x40 ++ #define SFP_EEPROM_OPTIONS_LINEAR_RX_OUT_MASK 0x1 ++#define SFP_EEPROM_OPTIONS_SIZE 2 ++ ++#define EDC_MODE_LINEAR 0x0022 ++#define EDC_MODE_LIMITING 0x0044 ++#define EDC_MODE_PASSIVE_DAC 0x0055 ++ ++ ++/**********************************************************/ ++/* 8073 Download definitions */ ++/**********************************************************/ ++/* spi Parameters.*/ ++#define SPI_CTRL_1_L 0xC000 ++#define SPI_CTRL_1_H 0xC002 ++#define SPI_CTRL_2_L 0xC400 ++#define SPI_CTRL_2_H 0xC402 ++#define SPI_TXFIFO 0xD000 ++#define SPI_RXFIFO 0xD400 ++ ++/* Input Command Messages.*/ ++#define WR_CPU_CTRL_REGS 0x11 /* Write CPU/SPI Control Regs, followed ++ by Count And CPU/SPI Controller Reg add/data pairs.*/ ++#define RD_CPU_CTRL_REGS 0xEE /* Read CPU/SPI Control Regs, followed ++by Count and CPU/SPI Controller Register Add.*/ ++#define WR_CPU_CTRL_FIFO 0x66 /* Write CPU/SPI Control Regs ++Continously, followed by Count and CPU/SPI Controller Reg addr and data's.*/ ++/* Output Command Messages.*/ ++#define DONE 0x4321 ++ ++/* SPI Controller Commands (known As messages).*/ ++#define MSGTYPE_HWR 0x40 ++#define MSGTYPE_HRD 0x80 ++#define WRSR_OPCODE 0x01 ++#define WR_OPCODE 0x02 ++#define RD_OPCODE 0x03 ++#define WRDI_OPCODE 0x04 ++#define RDSR_OPCODE 0x05 ++#define WREN_OPCODE 0x06 ++#define WR_BLOCK_SIZE 0x40 /* Maximum 64 Bytes Writes.*/ ++ ++#define BUF_SIZE_BCM 0x4000 /* Code Size is 16k bytes.*/ ++#define UPGRADE_TIMEOUT_BCM 1000 ++/**********************************************************/ ++/* INTERFACE */ ++/**********************************************************/ ++#define CL45_WR_OVER_CL22(_bp, _port, _phy_addr, _bank, _addr, _val) \ ++ bnx2x_cl45_write(_bp, _port, 0, _phy_addr, \ ++ DEFAULT_PHY_DEV_ADDR, \ ++ (_bank + (_addr & 0xf)), \ ++ _val) ++ ++#define CL45_RD_OVER_CL22(_bp, _port, _phy_addr, _bank, _addr, _val) \ ++ bnx2x_cl45_read(_bp, _port, 0, _phy_addr, \ ++ DEFAULT_PHY_DEV_ADDR, \ ++ (_bank + (_addr & 0xf)), \ ++ _val) ++ ++static void bnx2x_set_serdes_access(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 emac_base = (params->port) ? GRCBASE_EMAC1 : GRCBASE_EMAC0; ++ ++ /* Set Clause 22 */ ++ REG_WR(bp, NIG_REG_SERDES0_CTRL_MD_ST + params->port*0x10, 1); ++ REG_WR(bp, emac_base + EMAC_REG_EMAC_MDIO_COMM, 0x245f8000); ++ udelay(500); ++ REG_WR(bp, emac_base + EMAC_REG_EMAC_MDIO_COMM, 0x245d000f); ++ udelay(500); ++ /* Set Clause 45 */ ++ REG_WR(bp, NIG_REG_SERDES0_CTRL_MD_ST + params->port*0x10, 0); ++} ++static void bnx2x_set_phy_mdio(struct link_params *params, u8 phy_flags) ++{ ++ struct bnx2x *bp = params->bp; ++ ++ if (phy_flags & PHY_XGXS_FLAG) { ++ REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_ST + ++ params->port*0x18, 0); ++ REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_DEVAD + params->port*0x18, ++ DEFAULT_PHY_DEV_ADDR); ++ } else { ++ bnx2x_set_serdes_access(params); ++ ++ REG_WR(bp, NIG_REG_SERDES0_CTRL_MD_DEVAD + ++ params->port*0x10, ++ DEFAULT_PHY_DEV_ADDR); ++ } ++} ++ ++static u32 bnx2x_bits_en(struct bnx2x *bp, u32 reg, u32 bits) ++{ ++ u32 val = REG_RD(bp, reg); ++ ++ val |= bits; ++ REG_WR(bp, reg, val); ++ return val; ++} ++ ++static u32 bnx2x_bits_dis(struct bnx2x *bp, u32 reg, u32 bits) ++{ ++ u32 val = REG_RD(bp, reg); ++ ++ val &= ~bits; ++ REG_WR(bp, reg, val); ++ return val; ++} ++ ++static void bnx2x_emac_init(struct link_params *params, ++ struct link_vars *vars) ++{ ++ /* reset and unreset the emac core */ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0; ++ u32 val; ++ u16 timeout; ++ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, ++ (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port)); ++ udelay(5); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, ++ (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port)); ++ ++ /* init emac - use read-modify-write */ ++ /* self clear reset */ ++ val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE); ++ EMAC_WR(bp, EMAC_REG_EMAC_MODE, (val | EMAC_MODE_RESET)); ++ ++ timeout = 200; ++ do { ++ val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE); ++ DP(NETIF_MSG_LINK, "EMAC reset reg is %u\n", val); ++ if (!timeout) { ++ DP(NETIF_MSG_LINK, "EMAC timeout!\n"); ++ return; ++ } ++ timeout--; ++ } while (val & EMAC_MODE_RESET); ++ ++ /* Set mac address */ ++ val = ((params->mac_addr[0] << 8) | ++ params->mac_addr[1]); ++ EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH, val); ++ ++ val = ((params->mac_addr[2] << 24) | ++ (params->mac_addr[3] << 16) | ++ (params->mac_addr[4] << 8) | ++ params->mac_addr[5]); ++ EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH + 4, val); ++} ++ ++static u8 bnx2x_emac_enable(struct link_params *params, ++ struct link_vars *vars, u8 lb) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0; ++ u32 val; ++ ++ DP(NETIF_MSG_LINK, "enabling EMAC\n"); ++ ++ /* enable emac and not bmac */ ++ REG_WR(bp, NIG_REG_EGRESS_EMAC0_PORT + port*4, 1); ++ ++ /* for paladium */ ++ if (CHIP_REV_IS_EMUL(bp)) { ++ /* Use lane 1 (of lanes 0-3) */ ++ REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 + port*4, 1); ++ REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + ++ port*4, 1); ++ } ++ /* for fpga */ ++ else ++ if (CHIP_REV_IS_FPGA(bp)) { ++ /* Use lane 1 (of lanes 0-3) */ ++ DP(NETIF_MSG_LINK, "bnx2x_emac_enable: Setting FPGA\n"); ++ ++ REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 + port*4, 1); ++ REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, ++ 0); ++ } else ++ /* ASIC */ ++ if (vars->phy_flags & PHY_XGXS_FLAG) { ++ u32 ser_lane = ((params->lane_config & ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >> ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT); ++ ++ DP(NETIF_MSG_LINK, "XGXS\n"); ++ /* select the master lanes (out of 0-3) */ ++ REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 + ++ port*4, ser_lane); ++ /* select XGXS */ ++ REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + ++ port*4, 1); ++ ++ } else { /* SerDes */ ++ DP(NETIF_MSG_LINK, "SerDes\n"); ++ /* select SerDes */ ++ REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + ++ port*4, 0); ++ } ++ ++ bnx2x_bits_en(bp, emac_base + EMAC_REG_EMAC_RX_MODE, ++ EMAC_RX_MODE_RESET); ++ bnx2x_bits_en(bp, emac_base + EMAC_REG_EMAC_TX_MODE, ++ EMAC_TX_MODE_RESET); ++ ++ if (CHIP_REV_IS_SLOW(bp)) { ++ /* config GMII mode */ ++ val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE); ++ EMAC_WR(bp, EMAC_REG_EMAC_MODE, ++ (val | EMAC_MODE_PORT_GMII)); ++ } else { /* ASIC */ ++ /* pause enable/disable */ ++ bnx2x_bits_dis(bp, emac_base + EMAC_REG_EMAC_RX_MODE, ++ EMAC_RX_MODE_FLOW_EN); ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) ++ bnx2x_bits_en(bp, emac_base + ++ EMAC_REG_EMAC_RX_MODE, ++ EMAC_RX_MODE_FLOW_EN); ++ ++ bnx2x_bits_dis(bp, emac_base + EMAC_REG_EMAC_TX_MODE, ++ (EMAC_TX_MODE_EXT_PAUSE_EN | ++ EMAC_TX_MODE_FLOW_EN)); ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) ++ bnx2x_bits_en(bp, emac_base + ++ EMAC_REG_EMAC_TX_MODE, ++ (EMAC_TX_MODE_EXT_PAUSE_EN | ++ EMAC_TX_MODE_FLOW_EN)); ++ } ++ ++ /* KEEP_VLAN_TAG, promiscuous */ ++ val = REG_RD(bp, emac_base + EMAC_REG_EMAC_RX_MODE); ++ val |= EMAC_RX_MODE_KEEP_VLAN_TAG | EMAC_RX_MODE_PROMISCUOUS; ++ EMAC_WR(bp, EMAC_REG_EMAC_RX_MODE, val); ++ ++ /* Set Loopback */ ++ val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE); ++ if (lb) ++ val |= 0x810; ++ else ++ val &= ~0x810; ++ EMAC_WR(bp, EMAC_REG_EMAC_MODE, val); ++ ++ /* enable emac */ ++ REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 1); ++ ++ /* enable emac for jumbo packets */ ++ EMAC_WR(bp, EMAC_REG_EMAC_RX_MTU_SIZE, ++ (EMAC_RX_MTU_SIZE_JUMBO_ENA | ++ (ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD))); ++ ++ /* strip CRC */ ++ REG_WR(bp, NIG_REG_NIG_INGRESS_EMAC0_NO_CRC + port*4, 0x1); ++ ++ /* disable the NIG in/out to the bmac */ ++ REG_WR(bp, NIG_REG_BMAC0_IN_EN + port*4, 0x0); ++ REG_WR(bp, NIG_REG_BMAC0_PAUSE_OUT_EN + port*4, 0x0); ++ REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0x0); ++ ++ /* enable the NIG in/out to the emac */ ++ REG_WR(bp, NIG_REG_EMAC0_IN_EN + port*4, 0x1); ++ val = 0; ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) ++ val = 1; ++ ++ REG_WR(bp, NIG_REG_EMAC0_PAUSE_OUT_EN + port*4, val); ++ REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0x1); ++ ++ if (CHIP_REV_IS_EMUL(bp)) { ++ /* take the BigMac out of reset */ ++ REG_WR(bp, ++ GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, ++ (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port)); ++ ++ /* enable access for bmac registers */ ++ REG_WR(bp, NIG_REG_BMAC0_REGS_OUT_EN + port*4, 0x1); ++ } ++ ++ vars->mac_type = MAC_TYPE_EMAC; ++ return 0; ++} ++ ++ ++static u8 bnx2x_bmac1_enable(struct link_params *params, struct link_vars *vars, ++ u8 is_lb) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u32 bmac_addr = port ? NIG_REG_INGRESS_BMAC1_MEM : ++ NIG_REG_INGRESS_BMAC0_MEM; ++ u32 wb_data[2]; ++ u32 val; ++ ++ DP(NETIF_MSG_LINK, "Enabling BigMAC1\n"); ++ ++ /* XGXS control */ ++ wb_data[0] = 0x3c; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + ++ BIGMAC_REGISTER_BMAC_XGXS_CONTROL, ++ wb_data, 2); ++ ++ /* tx MAC SA */ ++ wb_data[0] = ((params->mac_addr[2] << 24) | ++ (params->mac_addr[3] << 16) | ++ (params->mac_addr[4] << 8) | ++ params->mac_addr[5]); ++ wb_data[1] = ((params->mac_addr[0] << 8) | ++ params->mac_addr[1]); ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_SOURCE_ADDR, ++ wb_data, 2); ++ ++ /* tx control */ ++ val = 0xc0; ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) ++ val |= 0x800000; ++ wb_data[0] = val; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_CONTROL, ++ wb_data, 2); ++ ++ /* mac control */ ++ val = 0x3; ++ if (is_lb) { ++ val |= 0x4; ++ DP(NETIF_MSG_LINK, "enable bmac loopback\n"); ++ } ++ wb_data[0] = val; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL, ++ wb_data, 2); ++ ++ /* set rx mtu */ ++ wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_MAX_SIZE, ++ wb_data, 2); ++ ++ /* rx control set to don't strip crc */ ++ val = 0x14; ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) ++ val |= 0x20; ++ wb_data[0] = val; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_CONTROL, ++ wb_data, 2); ++ ++ /* set tx mtu */ ++ wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_MAX_SIZE, ++ wb_data, 2); ++ ++ /* set cnt max size */ ++ wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_CNT_MAX_SIZE, ++ wb_data, 2); ++ ++ /* configure safc */ ++ wb_data[0] = 0x1000200; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_LLFC_MSG_FLDS, ++ wb_data, 2); ++ /* fix for emulation */ ++ if (CHIP_REV_IS_EMUL(bp)) { ++ wb_data[0] = 0xf000; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, ++ bmac_addr + BIGMAC_REGISTER_TX_PAUSE_THRESHOLD, ++ wb_data, 2); ++ } ++ ++ ++ return 0; ++} ++ ++static u8 bnx2x_bmac2_enable(struct link_params *params, struct link_vars *vars, ++ u8 is_lb) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u32 bmac_addr = port ? NIG_REG_INGRESS_BMAC1_MEM : ++ NIG_REG_INGRESS_BMAC0_MEM; ++ u32 wb_data[2]; ++ u32 val; ++ ++ DP(NETIF_MSG_LINK, "Enabling BigMAC2\n"); ++ ++ wb_data[0] = 0; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_BMAC_CONTROL, ++ wb_data, 2); ++ udelay(30); ++ ++ /* XGXS control: Reset phy HW, MDIO registers, PHY PLL and BMAC */ ++ wb_data[0] = 0x3c; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + ++ BIGMAC2_REGISTER_BMAC_XGXS_CONTROL, ++ wb_data, 2); ++ ++ udelay(30); ++ ++ /* tx MAC SA */ ++ wb_data[0] = ((params->mac_addr[2] << 24) | ++ (params->mac_addr[3] << 16) | ++ (params->mac_addr[4] << 8) | ++ params->mac_addr[5]); ++ wb_data[1] = ((params->mac_addr[0] << 8) | ++ params->mac_addr[1]); ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_TX_SOURCE_ADDR, ++ wb_data, 2); ++ ++ udelay(30); ++ ++ /* Tx control */ ++ val = 0xc0; ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) ++ val |= 0x800000; ++ wb_data[0] = val; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_TX_CONTROL, ++ wb_data, 2); ++ ++ /* Configure SAFC */ ++ wb_data[0] = 0x1000200; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_RX_LLFC_MSG_FLDS, ++ wb_data, 2); ++ udelay(30); ++ ++ /* set rx mtu */ ++ wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_RX_MAX_SIZE, ++ wb_data, 2); ++ udelay(30); ++ ++ /* set tx mtu */ ++ wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_TX_MAX_SIZE, ++ wb_data, 2); ++ udelay(30); ++ ++ /* Set rx control: Strip CRC and enable BigMAC to relay ++ control packets to the system as well*/ ++ val = 0x54; ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) ++ val |= 0x20; ++ wb_data[0] = val; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_RX_CONTROL, ++ wb_data, 2); ++ udelay(30); ++ ++ if (params->feature_config_flags & FEATURE_CONFIG_PFC_ENABLED) { ++ wb_data[0] = 0xb; /* Enable RFC RX & TX and set 8 COS */ ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_PFC_CONTROL, ++ wb_data, 2); ++ } ++ ++ /* mac control */ ++ val = 0x3; /* Enable RX and TX */ ++ if (is_lb) { ++ val |= 0x4; /* Local loopback */ ++ DP(NETIF_MSG_LINK, "enable bmac loopback\n"); ++ } ++ /* When PFC enabled, Pass pause frames towards the NIG. */ ++ if (params->feature_config_flags & FEATURE_CONFIG_PFC_ENABLED) ++ val |= (1<<6); ++ ++ wb_data[0] = val; ++ wb_data[1] = 0; ++ REG_WR_DMAE(bp, bmac_addr + BIGMAC2_REGISTER_BMAC_CONTROL, ++ wb_data, 2); ++ ++ return 0; ++} ++ ++static u8 bnx2x_bmac_enable(struct link_params *params, struct link_vars *vars, ++ u8 is_lb) ++{ ++ u8 rc, port = params->port; ++ struct bnx2x *bp = params->bp; ++ u32 val; ++ /* reset and unreset the BigMac */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, ++ (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port)); ++ msleep(1); ++ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, ++ (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port)); ++ ++ /* enable access for bmac registers */ ++ REG_WR(bp, NIG_REG_BMAC0_REGS_OUT_EN + port*4, 0x1); ++ ++ /* Enable BMAC according to BMAC type*/ ++ if (CHIP_IS_E2_NOT_PHASE0(params->chip_id)) ++ rc = bnx2x_bmac2_enable(params, vars, is_lb); ++ else ++ rc = bnx2x_bmac1_enable(params, vars, is_lb); ++ ++ REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 0x1); ++ REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 + port*4, 0x0); ++ REG_WR(bp, NIG_REG_EGRESS_EMAC0_PORT + port*4, 0x0); ++ val = 0; ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) ++ val = 1; ++ REG_WR(bp, NIG_REG_BMAC0_PAUSE_OUT_EN + port*4, val); ++ REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0x0); ++ REG_WR(bp, NIG_REG_EMAC0_IN_EN + port*4, 0x0); ++ REG_WR(bp, NIG_REG_EMAC0_PAUSE_OUT_EN + port*4, 0x0); ++ REG_WR(bp, NIG_REG_BMAC0_IN_EN + port*4, 0x1); ++ REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0x1); ++ ++ vars->mac_type = MAC_TYPE_BMAC; ++ return rc; ++} ++ ++static void bnx2x_phy_deassert(struct link_params *params, u8 phy_flags) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 val; ++ ++ if (phy_flags & PHY_XGXS_FLAG) { ++ DP(NETIF_MSG_LINK, "bnx2x_phy_deassert:XGXS\n"); ++ val = XGXS_RESET_BITS; ++ ++ } else { /* SerDes */ ++ DP(NETIF_MSG_LINK, "bnx2x_phy_deassert:SerDes\n"); ++ val = SERDES_RESET_BITS; ++ } ++ ++ val = val << (params->port*16); ++ ++ /* reset and unreset the SerDes/XGXS */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_CLEAR, ++ val); ++ udelay(500); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_SET, ++ val); ++ bnx2x_set_phy_mdio(params, phy_flags); ++} ++ ++void bnx2x_link_status_update(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 link_10g; ++ u8 port = params->port; ++ ++ if (params->switch_cfg == SWITCH_CFG_1G) ++ vars->phy_flags = PHY_SERDES_FLAG; ++ else ++ vars->phy_flags = PHY_XGXS_FLAG; ++ vars->link_status = REG_RD(bp, params->shmem_base + ++ offsetof(struct shmem_region, ++ port_mb[port].link_status)); ++ ++ vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP); ++ ++ if (vars->link_up) { ++ DP(NETIF_MSG_LINK, "phy link up\n"); ++ ++ vars->phy_link_up = 1; ++ vars->duplex = DUPLEX_FULL; ++ switch (vars->link_status & ++ LINK_STATUS_SPEED_AND_DUPLEX_MASK) { ++ case LINK_10THD: ++ vars->duplex = DUPLEX_HALF; ++ /* fall thru */ ++ case LINK_10TFD: ++ vars->line_speed = SPEED_10; ++ break; ++ ++ case LINK_100TXHD: ++ vars->duplex = DUPLEX_HALF; ++ /* fall thru */ ++ case LINK_100T4: ++ case LINK_100TXFD: ++ vars->line_speed = SPEED_100; ++ break; ++ ++ case LINK_1000THD: ++ vars->duplex = DUPLEX_HALF; ++ /* fall thru */ ++ case LINK_1000TFD: ++ vars->line_speed = SPEED_1000; ++ break; ++ ++ case LINK_2500THD: ++ vars->duplex = DUPLEX_HALF; ++ /* fall thru */ ++ case LINK_2500TFD: ++ vars->line_speed = SPEED_2500; ++ break; ++ ++ case LINK_10GTFD: ++ vars->line_speed = SPEED_10000; ++ break; ++ ++ case LINK_12GTFD: ++ vars->line_speed = SPEED_12000; ++ break; ++ ++ case LINK_12_5GTFD: ++ vars->line_speed = SPEED_12500; ++ break; ++ ++ case LINK_13GTFD: ++ vars->line_speed = SPEED_13000; ++ break; ++ ++ case LINK_15GTFD: ++ vars->line_speed = SPEED_15000; ++ break; ++ ++ case LINK_16GTFD: ++ vars->line_speed = SPEED_16000; ++ break; ++ ++ default: ++ break; ++ } ++ ++ if (vars->link_status & LINK_STATUS_TX_FLOW_CONTROL_ENABLED) ++ vars->flow_ctrl |= BNX2X_FLOW_CTRL_TX; ++ else ++ vars->flow_ctrl &= ~BNX2X_FLOW_CTRL_TX; ++ ++ if (vars->link_status & LINK_STATUS_RX_FLOW_CONTROL_ENABLED) ++ vars->flow_ctrl |= BNX2X_FLOW_CTRL_RX; ++ else ++ vars->flow_ctrl &= ~BNX2X_FLOW_CTRL_RX; ++ ++ if (vars->phy_flags & PHY_XGXS_FLAG) { ++ if (vars->line_speed && ++ ((vars->line_speed == SPEED_10) || ++ (vars->line_speed == SPEED_100))) { ++ vars->phy_flags |= PHY_SGMII_FLAG; ++ } else { ++ vars->phy_flags &= ~PHY_SGMII_FLAG; ++ } ++ } ++ ++ /* anything 10 and over uses the bmac */ ++ link_10g = ((vars->line_speed == SPEED_10000) || ++ (vars->line_speed == SPEED_12000) || ++ (vars->line_speed == SPEED_12500) || ++ (vars->line_speed == SPEED_13000) || ++ (vars->line_speed == SPEED_15000) || ++ (vars->line_speed == SPEED_16000)); ++ if (link_10g) ++ vars->mac_type = MAC_TYPE_BMAC; ++ else ++ vars->mac_type = MAC_TYPE_EMAC; ++ ++ } else { /* link down */ ++ DP(NETIF_MSG_LINK, "phy link down\n"); ++ ++ vars->phy_link_up = 0; ++ ++ vars->line_speed = 0; ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ ++ /* indicate no mac active */ ++ vars->mac_type = MAC_TYPE_NONE; ++ } ++ ++ DP(NETIF_MSG_LINK, "link_status 0x%x phy_link_up %x\n", ++ vars->link_status, vars->phy_link_up); ++ DP(NETIF_MSG_LINK, "line_speed %x duplex %x flow_ctrl 0x%x\n", ++ vars->line_speed, vars->duplex, vars->flow_ctrl); ++} ++ ++static void bnx2x_update_mng(struct link_params *params, u32 link_status) ++{ ++ struct bnx2x *bp = params->bp; ++ ++ REG_WR(bp, params->shmem_base + ++ offsetof(struct shmem_region, ++ port_mb[params->port].link_status), ++ link_status); ++} ++ ++static void bnx2x_bmac_rx_disable(struct bnx2x *bp, u32 chip_id, u8 port) ++{ ++ u32 bmac_addr = port ? NIG_REG_INGRESS_BMAC1_MEM : ++ NIG_REG_INGRESS_BMAC0_MEM; ++ u32 wb_data[2]; ++ u32 nig_bmac_enable = REG_RD(bp, NIG_REG_BMAC0_REGS_OUT_EN + ++ port*4); ++ ++ /* Only if the bmac is out of reset */ ++ if (REG_RD(bp, MISC_REG_RESET_REG_2) & ++ (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port) && ++ nig_bmac_enable) { ++ ++ if (CHIP_IS_E2_NOT_PHASE0(chip_id)) { ++ /* Clear Rx Enable bit in BMAC_CONTROL register */ ++ REG_RD_DMAE(bp, bmac_addr + ++ BIGMAC2_REGISTER_BMAC_CONTROL, ++ wb_data, 2); ++ wb_data[0] &= ~BMAC_CONTROL_RX_ENABLE; ++ REG_WR_DMAE(bp, bmac_addr + ++ BIGMAC2_REGISTER_BMAC_CONTROL, ++ wb_data, 2); ++ } else { ++ /* Clear Rx Enable bit in BMAC_CONTROL register */ ++ REG_RD_DMAE(bp, bmac_addr + ++ BIGMAC_REGISTER_BMAC_CONTROL, ++ wb_data, 2); ++ wb_data[0] &= ~BMAC_CONTROL_RX_ENABLE; ++ REG_WR_DMAE(bp, bmac_addr + ++ BIGMAC_REGISTER_BMAC_CONTROL, ++ wb_data, 2); ++ } ++ msleep(1); ++ } ++} ++ ++static u8 bnx2x_pbf_update(struct link_params *params, u32 flow_ctrl, ++ u32 line_speed) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u32 init_crd, crd; ++ u32 count = 1000; ++ ++ /* disable port */ ++ REG_WR(bp, PBF_REG_DISABLE_NEW_TASK_PROC_P0 + port*4, 0x1); ++ ++ /* wait for init credit */ ++ init_crd = REG_RD(bp, PBF_REG_P0_INIT_CRD + port*4); ++ crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8); ++ DP(NETIF_MSG_LINK, "init_crd 0x%x crd 0x%x\n", init_crd, crd); ++ ++ while ((init_crd != crd) && count) { ++ msleep(5); ++ ++ crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8); ++ count--; ++ } ++ crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8); ++ if (init_crd != crd) { ++ DP(NETIF_MSG_LINK, "BUG! init_crd 0x%x != crd 0x%x\n", ++ init_crd, crd); ++ return -EINVAL; ++ } ++ ++ if (flow_ctrl & BNX2X_FLOW_CTRL_RX || ++ line_speed == SPEED_10 || ++ line_speed == SPEED_100 || ++ line_speed == SPEED_1000 || ++ line_speed == SPEED_2500) { ++ REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, 1); ++ /* update threshold */ ++ REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, 0); ++ /* update init credit */ ++ init_crd = 778; /* (800-18-4) */ ++ ++ } else { ++ u32 thresh = (ETH_MAX_JUMBO_PACKET_SIZE + ++ ETH_OVREHEAD)/16; ++ REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, 0); ++ /* update threshold */ ++ REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, thresh); ++ /* update init credit */ ++ switch (line_speed) { ++ case SPEED_10000: ++ init_crd = thresh + 553 - 22; ++ break; ++ ++ case SPEED_12000: ++ init_crd = thresh + 664 - 22; ++ break; ++ ++ case SPEED_13000: ++ init_crd = thresh + 742 - 22; ++ break; ++ ++ case SPEED_16000: ++ init_crd = thresh + 778 - 22; ++ break; ++ default: ++ DP(NETIF_MSG_LINK, "Invalid line_speed 0x%x\n", ++ line_speed); ++ return -EINVAL; ++ } ++ } ++ REG_WR(bp, PBF_REG_P0_INIT_CRD + port*4, init_crd); ++ DP(NETIF_MSG_LINK, "PBF updated to speed %d credit %d\n", ++ line_speed, init_crd); ++ ++ /* probe the credit changes */ ++ REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0x1); ++ msleep(5); ++ REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0x0); ++ ++ /* enable port */ ++ REG_WR(bp, PBF_REG_DISABLE_NEW_TASK_PROC_P0 + port*4, 0x0); ++ return 0; ++} ++ ++static u32 bnx2x_get_emac_base(struct bnx2x *bp, u32 ext_phy_type, u8 port) ++{ ++ u32 emac_base; ++ ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ /* All MDC/MDIO is directed through single EMAC */ ++ if (REG_RD(bp, NIG_REG_PORT_SWAP)) ++ emac_base = GRCBASE_EMAC0; ++ else ++ emac_base = GRCBASE_EMAC1; ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ emac_base = (port) ? GRCBASE_EMAC0 : GRCBASE_EMAC1; ++ break; ++ default: ++ emac_base = (port) ? GRCBASE_EMAC1 : GRCBASE_EMAC0; ++ break; ++ } ++ return emac_base; ++ ++} ++ ++u8 bnx2x_cl45_write(struct bnx2x *bp, u8 port, u32 ext_phy_type, ++ u8 phy_addr, u8 devad, u16 reg, u16 val) ++{ ++ u32 tmp, saved_mode; ++ u8 i, rc = 0; ++ u32 mdio_ctrl = bnx2x_get_emac_base(bp, ext_phy_type, port); ++ ++ /* set clause 45 mode, slow down the MDIO clock to 2.5MHz ++ * (a value of 49==0x31) and make sure that the AUTO poll is off ++ */ ++ ++ saved_mode = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE); ++ tmp = saved_mode & ~(EMAC_MDIO_MODE_AUTO_POLL | ++ EMAC_MDIO_MODE_CLOCK_CNT); ++ tmp |= (EMAC_MDIO_MODE_CLAUSE_45 | ++ (49 << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT)); ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, tmp); ++ REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE); ++ udelay(40); ++ ++ /* address */ ++ ++ tmp = ((phy_addr << 21) | (devad << 16) | reg | ++ EMAC_MDIO_COMM_COMMAND_ADDRESS | ++ EMAC_MDIO_COMM_START_BUSY); ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp); ++ ++ for (i = 0; i < 50; i++) { ++ udelay(10); ++ ++ tmp = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM); ++ if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) { ++ udelay(5); ++ break; ++ } ++ } ++ if (tmp & EMAC_MDIO_COMM_START_BUSY) { ++ DP(NETIF_MSG_LINK, "write phy register failed\n"); ++ rc = -EFAULT; ++ } else { ++ /* data */ ++ tmp = ((phy_addr << 21) | (devad << 16) | val | ++ EMAC_MDIO_COMM_COMMAND_WRITE_45 | ++ EMAC_MDIO_COMM_START_BUSY); ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp); ++ ++ for (i = 0; i < 50; i++) { ++ udelay(10); ++ ++ tmp = REG_RD(bp, mdio_ctrl + ++ EMAC_REG_EMAC_MDIO_COMM); ++ if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) { ++ udelay(5); ++ break; ++ } ++ } ++ if (tmp & EMAC_MDIO_COMM_START_BUSY) { ++ DP(NETIF_MSG_LINK, "write phy register failed\n"); ++ rc = -EFAULT; ++ } ++ } ++ ++ /* Restore the saved mode */ ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, saved_mode); ++ ++ return rc; ++} ++ ++u8 bnx2x_cl45_read(struct bnx2x *bp, u8 port, u32 ext_phy_type, ++ u8 phy_addr, u8 devad, u16 reg, u16 *ret_val) ++{ ++ u32 val, saved_mode; ++ u16 i; ++ u8 rc = 0; ++ ++ u32 mdio_ctrl = bnx2x_get_emac_base(bp, ext_phy_type, port); ++ /* set clause 45 mode, slow down the MDIO clock to 2.5MHz ++ * (a value of 49==0x31) and make sure that the AUTO poll is off ++ */ ++ ++ saved_mode = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE); ++ val = saved_mode & ((EMAC_MDIO_MODE_AUTO_POLL | ++ EMAC_MDIO_MODE_CLOCK_CNT)); ++ val |= (EMAC_MDIO_MODE_CLAUSE_45 | ++ (49L << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT)); ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, val); ++ REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE); ++ udelay(40); ++ ++ /* address */ ++ val = ((phy_addr << 21) | (devad << 16) | reg | ++ EMAC_MDIO_COMM_COMMAND_ADDRESS | ++ EMAC_MDIO_COMM_START_BUSY); ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val); ++ ++ for (i = 0; i < 50; i++) { ++ udelay(10); ++ ++ val = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM); ++ if (!(val & EMAC_MDIO_COMM_START_BUSY)) { ++ udelay(5); ++ break; ++ } ++ } ++ if (val & EMAC_MDIO_COMM_START_BUSY) { ++ DP(NETIF_MSG_LINK, "read phy register failed\n"); ++ ++ *ret_val = 0; ++ rc = -EFAULT; ++ ++ } else { ++ /* data */ ++ val = ((phy_addr << 21) | (devad << 16) | ++ EMAC_MDIO_COMM_COMMAND_READ_45 | ++ EMAC_MDIO_COMM_START_BUSY); ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val); ++ ++ for (i = 0; i < 50; i++) { ++ udelay(10); ++ ++ val = REG_RD(bp, mdio_ctrl + ++ EMAC_REG_EMAC_MDIO_COMM); ++ if (!(val & EMAC_MDIO_COMM_START_BUSY)) { ++ *ret_val = (u16)(val & EMAC_MDIO_COMM_DATA); ++ break; ++ } ++ } ++ if (val & EMAC_MDIO_COMM_START_BUSY) { ++ DP(NETIF_MSG_LINK, "read phy register failed\n"); ++ ++ *ret_val = 0; ++ rc = -EFAULT; ++ } ++ } ++ ++ /* Restore the saved mode */ ++ REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, saved_mode); ++ ++ return rc; ++} ++ ++static void bnx2x_set_aer_mmd(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 ser_lane; ++ u16 offset; ++ ++ ser_lane = ((params->lane_config & ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >> ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT); ++ ++ offset = (vars->phy_flags & PHY_XGXS_FLAG) ? ++ (params->phy_addr + ser_lane) : 0; ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_AER_BLOCK, ++ MDIO_AER_BLOCK_AER_REG, 0x3800 + offset); ++} ++ ++static void bnx2x_set_master_ln(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 new_master_ln, ser_lane; ++ ser_lane = ((params->lane_config & ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >> ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT); ++ ++ /* set the master_ln for AN */ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_XGXS_BLOCK2, ++ MDIO_XGXS_BLOCK2_TEST_MODE_LANE, ++ &new_master_ln); ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_XGXS_BLOCK2 , ++ MDIO_XGXS_BLOCK2_TEST_MODE_LANE, ++ (new_master_ln | ser_lane)); ++} ++ ++static u8 bnx2x_reset_unicore(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 mii_control; ++ u16 i; ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, &mii_control); ++ ++ /* reset the unicore */ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ (mii_control | ++ MDIO_COMBO_IEEO_MII_CONTROL_RESET)); ++ if (params->switch_cfg == SWITCH_CFG_1G) ++ bnx2x_set_serdes_access(params); ++ ++ /* wait for the reset to self clear */ ++ for (i = 0; i < MDIO_ACCESS_TIMEOUT; i++) { ++ udelay(5); ++ ++ /* the reset erased the previous bank value */ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ &mii_control); ++ ++ if (!(mii_control & MDIO_COMBO_IEEO_MII_CONTROL_RESET)) { ++ udelay(5); ++ return 0; ++ } ++ } ++ ++ DP(NETIF_MSG_LINK, "BUG! XGXS is still in reset!\n"); ++ return -EINVAL; ++ ++} ++ ++static void bnx2x_set_swap_lanes(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ /* Each two bits represents a lane number: ++ No swap is 0123 => 0x1b no need to enable the swap */ ++ u16 ser_lane, rx_lane_swap, tx_lane_swap; ++ ++ ser_lane = ((params->lane_config & ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >> ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT); ++ rx_lane_swap = ((params->lane_config & ++ PORT_HW_CFG_LANE_SWAP_CFG_RX_MASK) >> ++ PORT_HW_CFG_LANE_SWAP_CFG_RX_SHIFT); ++ tx_lane_swap = ((params->lane_config & ++ PORT_HW_CFG_LANE_SWAP_CFG_TX_MASK) >> ++ PORT_HW_CFG_LANE_SWAP_CFG_TX_SHIFT); ++ ++ if (rx_lane_swap != 0x1b) { ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_XGXS_BLOCK2, ++ MDIO_XGXS_BLOCK2_RX_LN_SWAP, ++ (rx_lane_swap | ++ MDIO_XGXS_BLOCK2_RX_LN_SWAP_ENABLE | ++ MDIO_XGXS_BLOCK2_RX_LN_SWAP_FORCE_ENABLE)); ++ } else { ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_XGXS_BLOCK2, ++ MDIO_XGXS_BLOCK2_RX_LN_SWAP, 0); ++ } ++ ++ if (tx_lane_swap != 0x1b) { ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_XGXS_BLOCK2, ++ MDIO_XGXS_BLOCK2_TX_LN_SWAP, ++ (tx_lane_swap | ++ MDIO_XGXS_BLOCK2_TX_LN_SWAP_ENABLE)); ++ } else { ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_XGXS_BLOCK2, ++ MDIO_XGXS_BLOCK2_TX_LN_SWAP, 0); ++ } ++} ++ ++static void bnx2x_set_parallel_detection(struct link_params *params, ++ u8 phy_flags) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 control2; ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL2, ++ &control2); ++ ++ ++ control2 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN; ++ ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL2, ++ control2); ++ ++ if (phy_flags & PHY_XGXS_FLAG) { ++ DP(NETIF_MSG_LINK, "XGXS\n"); ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_10G_PARALLEL_DETECT, ++ MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK, ++ MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK_CNT); ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_10G_PARALLEL_DETECT, ++ MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL, ++ &control2); ++ ++ ++ control2 |= ++ MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL_PARDET10G_EN; ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_10G_PARALLEL_DETECT, ++ MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL, ++ control2); ++ ++ /* Disable parallel detection of HiG */ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_XGXS_BLOCK2, ++ MDIO_XGXS_BLOCK2_UNICORE_MODE_10G, ++ MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_CX4_XGXS | ++ MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_HIGIG_XGXS); ++ } ++} ++ ++static void bnx2x_set_autoneg(struct link_params *params, ++ struct link_vars *vars, ++ u8 enable_cl73) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 reg_val; ++ ++ /* CL37 Autoneg */ ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ®_val); ++ ++ /* CL37 Autoneg Enabled */ ++ if (vars->line_speed == SPEED_AUTO_NEG) ++ reg_val |= MDIO_COMBO_IEEO_MII_CONTROL_AN_EN; ++ else /* CL37 Autoneg Disabled */ ++ reg_val &= ~(MDIO_COMBO_IEEO_MII_CONTROL_AN_EN | ++ MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN); ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, reg_val); ++ ++ /* Enable/Disable Autodetection */ ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, ®_val); ++ reg_val &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_SIGNAL_DETECT_EN; ++ if (vars->line_speed == SPEED_AUTO_NEG) ++ reg_val |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET; ++ else ++ reg_val &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET; ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, reg_val); ++ ++ /* Enable TetonII and BAM autoneg */ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_BAM_NEXT_PAGE, ++ MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL, ++ ®_val); ++ if (vars->line_speed == SPEED_AUTO_NEG) { ++ /* Enable BAM aneg Mode and TetonII aneg Mode */ ++ reg_val |= (MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE | ++ MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN); ++ } else { ++ /* TetonII and BAM Autoneg Disabled */ ++ reg_val &= ~(MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE | ++ MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN); ++ } ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_BAM_NEXT_PAGE, ++ MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL, ++ reg_val); ++ ++ if (enable_cl73) { ++ ++ /* Enable BAM Station Manager*/ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_USERB0, ++ 0x10, ++ ®_val); ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_USERB0, ++ 0x10, ++ reg_val | 0x2); ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_USERB0, ++ MDIO_CL73_USERB0_CL73_BAM_CTRL1, ++ MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_EN | ++ MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_STATION_MNGR_EN | ++ MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_NP_AFTER_BP_EN); ++ ++ /* Merge CL73 and CL37 aneg resolution */ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_USERB0, ++ MDIO_CL73_USERB0_CL73_BAM_CTRL3, ++ ®_val); ++ ++ ++ /* Set the CL73 AN speed */ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_IEEEB1, ++ MDIO_CL73_IEEEB1_AN_ADV2, ++ ®_val); ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_IEEEB1, ++ MDIO_CL73_IEEEB1_AN_ADV2, ++ reg_val | MDIO_CL73_IEEEB1_AN_ADV2_ADVR_10G_KX4); ++ ++ /* CL73 Autoneg Enabled */ ++ reg_val = MDIO_CL73_IEEEB0_CL73_AN_CONTROL_AN_EN; ++ ++ } else /* CL73 Autoneg Disabled */ ++ reg_val = 0; ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_IEEEB0, ++ MDIO_CL73_IEEEB0_CL73_AN_CONTROL, reg_val); ++} ++ ++/* program SerDes, forced speed */ ++static void bnx2x_program_serdes(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 reg_val; ++ ++ /* program duplex, disable autoneg */ ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ®_val); ++ reg_val &= ~(MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX | ++ MDIO_COMBO_IEEO_MII_CONTROL_AN_EN); ++ if (params->req_duplex == DUPLEX_FULL) ++ reg_val |= MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX; ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, reg_val); ++ ++ /* program speed ++ - needed only if the speed is greater than 1G (2.5G or 10G) */ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_MISC1, ®_val); ++ /* clearing the speed value before setting the right speed */ ++ DP(NETIF_MSG_LINK, "MDIO_REG_BANK_SERDES_DIGITAL = 0x%x\n", reg_val); ++ ++ reg_val &= ~(MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK | ++ MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL); ++ ++ if (!((vars->line_speed == SPEED_1000) || ++ (vars->line_speed == SPEED_100) || ++ (vars->line_speed == SPEED_10))) { ++ ++ reg_val |= (MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_156_25M | ++ MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL); ++ if (vars->line_speed == SPEED_10000) ++ reg_val |= ++ MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_CX4; ++ if (vars->line_speed == SPEED_13000) ++ reg_val |= ++ MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_13G; ++ } ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_MISC1, reg_val); ++ ++} ++ ++static void bnx2x_set_brcm_cl37_advertisment(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 val = 0; ++ ++ /* configure the 48 bits for BAM AN */ ++ ++ /* set extended capabilities */ ++ if (params->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G) ++ val |= MDIO_OVER_1G_UP1_2_5G; ++ if (params->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) ++ val |= MDIO_OVER_1G_UP1_10G; ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_OVER_1G, ++ MDIO_OVER_1G_UP1, val); ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_OVER_1G, ++ MDIO_OVER_1G_UP3, 0); ++} ++ ++static void bnx2x_calc_ieee_aneg_adv(struct link_params *params, u16 *ieee_fc) ++{ ++ *ieee_fc = MDIO_COMBO_IEEE0_AUTO_NEG_ADV_FULL_DUPLEX; ++ /* resolve pause mode and advertisement ++ * Please refer to Table 28B-3 of the 802.3ab-1999 spec */ ++ ++ switch (params->req_flow_ctrl) { ++ case BNX2X_FLOW_CTRL_AUTO: ++ if (params->req_fc_auto_adv == BNX2X_FLOW_CTRL_BOTH) { ++ *ieee_fc |= ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH; ++ } else { ++ *ieee_fc |= ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC; ++ } ++ break; ++ case BNX2X_FLOW_CTRL_TX: ++ *ieee_fc |= ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC; ++ break; ++ ++ case BNX2X_FLOW_CTRL_RX: ++ case BNX2X_FLOW_CTRL_BOTH: ++ *ieee_fc |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH; ++ break; ++ ++ case BNX2X_FLOW_CTRL_NONE: ++ default: ++ *ieee_fc |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE; ++ break; ++ } ++} ++ ++static void bnx2x_set_ieee_aneg_advertisment(struct link_params *params, ++ u16 ieee_fc) ++{ ++ struct bnx2x *bp = params->bp; ++ /* for AN, we are always publishing full duplex */ ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV, ieee_fc); ++} ++ ++static void bnx2x_restart_autoneg(struct link_params *params, u8 enable_cl73) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 mii_control; ++ ++ DP(NETIF_MSG_LINK, "bnx2x_restart_autoneg\n"); ++ /* Enable and restart BAM/CL37 aneg */ ++ ++ if (enable_cl73) { ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_IEEEB0, ++ MDIO_CL73_IEEEB0_CL73_AN_CONTROL, ++ &mii_control); ++ ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_CL73_IEEEB0, ++ MDIO_CL73_IEEEB0_CL73_AN_CONTROL, ++ (mii_control | ++ MDIO_CL73_IEEEB0_CL73_AN_CONTROL_AN_EN | ++ MDIO_CL73_IEEEB0_CL73_AN_CONTROL_RESTART_AN)); ++ } else { ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ &mii_control); ++ DP(NETIF_MSG_LINK, ++ "bnx2x_restart_autoneg mii_control before = 0x%x\n", ++ mii_control); ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ (mii_control | ++ MDIO_COMBO_IEEO_MII_CONTROL_AN_EN | ++ MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN)); ++ } ++} ++ ++static void bnx2x_initialize_sgmii_process(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 control1; ++ ++ /* in SGMII mode, the unicore is always slave */ ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, ++ &control1); ++ control1 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_INVERT_SIGNAL_DETECT; ++ /* set sgmii mode (and not fiber) */ ++ control1 &= ~(MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_FIBER_MODE | ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET | ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_MSTR_MODE); ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_SERDES_DIGITAL, ++ MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, ++ control1); ++ ++ /* if forced speed */ ++ if (!(vars->line_speed == SPEED_AUTO_NEG)) { ++ /* set speed, disable autoneg */ ++ u16 mii_control; ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ &mii_control); ++ mii_control &= ~(MDIO_COMBO_IEEO_MII_CONTROL_AN_EN | ++ MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_MASK| ++ MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX); ++ ++ switch (vars->line_speed) { ++ case SPEED_100: ++ mii_control |= ++ MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_100; ++ break; ++ case SPEED_1000: ++ mii_control |= ++ MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_1000; ++ break; ++ case SPEED_10: ++ /* there is nothing to set for 10M */ ++ break; ++ default: ++ /* invalid speed for SGMII */ ++ DP(NETIF_MSG_LINK, "Invalid line_speed 0x%x\n", ++ vars->line_speed); ++ break; ++ } ++ ++ /* setting the full duplex */ ++ if (params->req_duplex == DUPLEX_FULL) ++ mii_control |= ++ MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX; ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ mii_control); ++ ++ } else { /* AN mode */ ++ /* enable and restart AN */ ++ bnx2x_restart_autoneg(params, 0); ++ } ++} ++ ++ ++/* ++ * link management ++ */ ++ ++static void bnx2x_pause_resolve(struct link_vars *vars, u32 pause_result) ++{ /* LD LP */ ++ switch (pause_result) { /* ASYM P ASYM P */ ++ case 0xb: /* 1 0 1 1 */ ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_TX; ++ break; ++ ++ case 0xe: /* 1 1 1 0 */ ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_RX; ++ break; ++ ++ case 0x5: /* 0 1 0 1 */ ++ case 0x7: /* 0 1 1 1 */ ++ case 0xd: /* 1 1 0 1 */ ++ case 0xf: /* 1 1 1 1 */ ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_BOTH; ++ break; ++ ++ default: ++ break; ++ } ++} ++ ++static u8 bnx2x_ext_phy_resove_fc(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 ext_phy_addr; ++ u16 ld_pause; /* local */ ++ u16 lp_pause; /* link partner */ ++ u16 an_complete; /* AN complete */ ++ u16 pause_result; ++ u8 ret = 0; ++ u32 ext_phy_type; ++ u8 port = params->port; ++ ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ /* read twice */ ++ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_STATUS, &an_complete); ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_STATUS, &an_complete); ++ ++ if (an_complete & MDIO_AN_REG_STATUS_AN_COMPLETE) { ++ ret = 1; ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV_PAUSE, &ld_pause); ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_LP_AUTO_NEG, &lp_pause); ++ pause_result = (ld_pause & ++ MDIO_AN_REG_ADV_PAUSE_MASK) >> 8; ++ pause_result |= (lp_pause & ++ MDIO_AN_REG_ADV_PAUSE_MASK) >> 10; ++ DP(NETIF_MSG_LINK, "Ext PHY pause result 0x%x \n", ++ pause_result); ++ bnx2x_pause_resolve(vars, pause_result); ++ if (vars->flow_ctrl == BNX2X_FLOW_CTRL_NONE && ++ ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LD, &ld_pause); ++ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LP, &lp_pause); ++ pause_result = (ld_pause & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) >> 5; ++ pause_result |= (lp_pause & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) >> 7; ++ ++ bnx2x_pause_resolve(vars, pause_result); ++ DP(NETIF_MSG_LINK, "Ext PHY CL37 pause result 0x%x \n", ++ pause_result); ++ } ++ } ++ return ret; ++} ++ ++ ++static void bnx2x_flow_ctrl_resolve(struct link_params *params, ++ struct link_vars *vars, ++ u32 gp_status) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 ld_pause; /* local driver */ ++ u16 lp_pause; /* link partner */ ++ u16 pause_result; ++ ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ ++ /* resolve from gp_status in case of AN complete and not sgmii */ ++ if ((params->req_flow_ctrl == BNX2X_FLOW_CTRL_AUTO) && ++ (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) && ++ (!(vars->phy_flags & PHY_SGMII_FLAG)) && ++ (XGXS_EXT_PHY_TYPE(params->ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT)) { ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV, ++ &ld_pause); ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1, ++ &lp_pause); ++ pause_result = (ld_pause & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK)>>5; ++ pause_result |= (lp_pause & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK)>>7; ++ DP(NETIF_MSG_LINK, "pause_result 0x%x\n", pause_result); ++ bnx2x_pause_resolve(vars, pause_result); ++ } else if ((params->req_flow_ctrl == BNX2X_FLOW_CTRL_AUTO) && ++ (bnx2x_ext_phy_resove_fc(params, vars))) { ++ return; ++ } else { ++ if (params->req_flow_ctrl == BNX2X_FLOW_CTRL_AUTO) ++ vars->flow_ctrl = params->req_fc_auto_adv; ++ else ++ vars->flow_ctrl = params->req_flow_ctrl; ++ } ++ DP(NETIF_MSG_LINK, "flow_ctrl 0x%x\n", vars->flow_ctrl); ++} ++ ++ ++static u8 bnx2x_link_settings_status(struct link_params *params, ++ struct link_vars *vars, ++ u32 gp_status) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 new_line_speed; ++ u8 rc = 0; ++ vars->link_status = 0; ++ ++ if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS) { ++ DP(NETIF_MSG_LINK, "phy link up gp_status=0x%x\n", ++ gp_status); ++ ++ vars->phy_link_up = 1; ++ vars->link_status |= LINK_STATUS_LINK_UP; ++ ++ if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_DUPLEX_STATUS) ++ vars->duplex = DUPLEX_FULL; ++ else ++ vars->duplex = DUPLEX_HALF; ++ ++ bnx2x_flow_ctrl_resolve(params, vars, gp_status); ++ ++ switch (gp_status & GP_STATUS_SPEED_MASK) { ++ case GP_STATUS_10M: ++ new_line_speed = SPEED_10; ++ if (vars->duplex == DUPLEX_FULL) ++ vars->link_status |= LINK_10TFD; ++ else ++ vars->link_status |= LINK_10THD; ++ break; ++ ++ case GP_STATUS_100M: ++ new_line_speed = SPEED_100; ++ if (vars->duplex == DUPLEX_FULL) ++ vars->link_status |= LINK_100TXFD; ++ else ++ vars->link_status |= LINK_100TXHD; ++ break; ++ ++ case GP_STATUS_1G: ++ case GP_STATUS_1G_KX: ++ new_line_speed = SPEED_1000; ++ if (vars->duplex == DUPLEX_FULL) ++ vars->link_status |= LINK_1000TFD; ++ else ++ vars->link_status |= LINK_1000THD; ++ break; ++ ++ case GP_STATUS_2_5G: ++ new_line_speed = SPEED_2500; ++ if (vars->duplex == DUPLEX_FULL) ++ vars->link_status |= LINK_2500TFD; ++ else ++ vars->link_status |= LINK_2500THD; ++ break; ++ ++ case GP_STATUS_5G: ++ case GP_STATUS_6G: ++ DP(NETIF_MSG_LINK, ++ "link speed unsupported gp_status 0x%x\n", ++ gp_status); ++ return -EINVAL; ++ ++ case GP_STATUS_10G_KX4: ++ case GP_STATUS_10G_HIG: ++ case GP_STATUS_10G_CX4: ++ new_line_speed = SPEED_10000; ++ vars->link_status |= LINK_10GTFD; ++ break; ++ ++ case GP_STATUS_12G_HIG: ++ new_line_speed = SPEED_12000; ++ vars->link_status |= LINK_12GTFD; ++ break; ++ ++ case GP_STATUS_12_5G: ++ new_line_speed = SPEED_12500; ++ vars->link_status |= LINK_12_5GTFD; ++ break; ++ ++ case GP_STATUS_13G: ++ new_line_speed = SPEED_13000; ++ vars->link_status |= LINK_13GTFD; ++ break; ++ ++ case GP_STATUS_15G: ++ new_line_speed = SPEED_15000; ++ vars->link_status |= LINK_15GTFD; ++ break; ++ ++ case GP_STATUS_16G: ++ new_line_speed = SPEED_16000; ++ vars->link_status |= LINK_16GTFD; ++ break; ++ ++ default: ++ DP(NETIF_MSG_LINK, ++ "link speed unsupported gp_status 0x%x\n", ++ gp_status); ++ return -EINVAL; ++ } ++ ++ /* Upon link speed change set the NIG into drain mode. ++ Comes to deals with possible FIFO glitch due to clk change ++ when speed is decreased without link down indicator */ ++ if (new_line_speed != vars->line_speed) { ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE ++ + params->port*4, 0); ++ msleep(1); ++ } ++ vars->line_speed = new_line_speed; ++ vars->link_status |= LINK_STATUS_SERDES_LINK; ++ ++ if ((params->req_line_speed == SPEED_AUTO_NEG) && ++ ((XGXS_EXT_PHY_TYPE(params->ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) || ++ (XGXS_EXT_PHY_TYPE(params->ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) || ++ (XGXS_EXT_PHY_TYPE(params->ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726))) { ++ vars->autoneg = AUTO_NEG_ENABLED; ++ ++ if (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) { ++ vars->autoneg |= AUTO_NEG_COMPLETE; ++ vars->link_status |= ++ LINK_STATUS_AUTO_NEGOTIATE_COMPLETE; ++ } ++ ++ vars->autoneg |= AUTO_NEG_PARALLEL_DETECTION_USED; ++ vars->link_status |= ++ LINK_STATUS_PARALLEL_DETECTION_USED; ++ ++ } ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) ++ vars->link_status |= ++ LINK_STATUS_TX_FLOW_CONTROL_ENABLED; ++ ++ if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) ++ vars->link_status |= ++ LINK_STATUS_RX_FLOW_CONTROL_ENABLED; ++ ++ } else { /* link_down */ ++ DP(NETIF_MSG_LINK, "phy link down\n"); ++ ++ vars->phy_link_up = 0; ++ ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ vars->autoneg = AUTO_NEG_DISABLED; ++ vars->mac_type = MAC_TYPE_NONE; ++ } ++ ++ DP(NETIF_MSG_LINK, "gp_status 0x%x phy_link_up %x line_speed %x \n", ++ gp_status, vars->phy_link_up, vars->line_speed); ++ DP(NETIF_MSG_LINK, "duplex %x flow_ctrl 0x%x" ++ " autoneg 0x%x\n", ++ vars->duplex, ++ vars->flow_ctrl, vars->autoneg); ++ DP(NETIF_MSG_LINK, "link_status 0x%x\n", vars->link_status); ++ ++ return rc; ++} ++ ++static void bnx2x_set_gmii_tx_driver(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 lp_up2; ++ u16 tx_driver; ++ u16 bank; ++ ++ /* read precomp */ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_OVER_1G, ++ MDIO_OVER_1G_LP_UP2, &lp_up2); ++ ++ /* bits [10:7] at lp_up2, positioned at [15:12] */ ++ lp_up2 = (((lp_up2 & MDIO_OVER_1G_LP_UP2_PREEMPHASIS_MASK) >> ++ MDIO_OVER_1G_LP_UP2_PREEMPHASIS_SHIFT) << ++ MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT); ++ ++ if (lp_up2 == 0) ++ return; ++ ++ for (bank = MDIO_REG_BANK_TX0; bank <= MDIO_REG_BANK_TX3; ++ bank += (MDIO_REG_BANK_TX1 - MDIO_REG_BANK_TX0)) { ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ bank, ++ MDIO_TX0_TX_DRIVER, &tx_driver); ++ ++ /* replace tx_driver bits [15:12] */ ++ if (lp_up2 != ++ (tx_driver & MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK)) { ++ tx_driver &= ~MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK; ++ tx_driver |= lp_up2; ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ bank, ++ MDIO_TX0_TX_DRIVER, tx_driver); ++ } ++ } ++} ++ ++static u8 bnx2x_emac_program(struct link_params *params, ++ u32 line_speed, u32 duplex) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u16 mode = 0; ++ ++ DP(NETIF_MSG_LINK, "setting link speed & duplex\n"); ++ bnx2x_bits_dis(bp, GRCBASE_EMAC0 + port*0x400 + ++ EMAC_REG_EMAC_MODE, ++ (EMAC_MODE_25G_MODE | ++ EMAC_MODE_PORT_MII_10M | ++ EMAC_MODE_HALF_DUPLEX)); ++ switch (line_speed) { ++ case SPEED_10: ++ mode |= EMAC_MODE_PORT_MII_10M; ++ break; ++ ++ case SPEED_100: ++ mode |= EMAC_MODE_PORT_MII; ++ break; ++ ++ case SPEED_1000: ++ mode |= EMAC_MODE_PORT_GMII; ++ break; ++ ++ case SPEED_2500: ++ mode |= (EMAC_MODE_25G_MODE | EMAC_MODE_PORT_GMII); ++ break; ++ ++ default: ++ /* 10G not valid for EMAC */ ++ DP(NETIF_MSG_LINK, "Invalid line_speed 0x%x\n", line_speed); ++ return -EINVAL; ++ } ++ ++ if (duplex == DUPLEX_HALF) ++ mode |= EMAC_MODE_HALF_DUPLEX; ++ bnx2x_bits_en(bp, ++ GRCBASE_EMAC0 + port*0x400 + EMAC_REG_EMAC_MODE, ++ mode); ++ ++ bnx2x_set_led(bp, params->port, LED_MODE_OPER, ++ line_speed, params->hw_led_mode, params->chip_id); ++ return 0; ++} ++ ++/*****************************************************************************/ ++/* External Phy section */ ++/*****************************************************************************/ ++void bnx2x_ext_phy_hw_reset(struct bnx2x *bp, u8 port) ++{ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, port); ++ msleep(1); ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, port); ++} ++ ++static void bnx2x_ext_phy_reset(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 ext_phy_type; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ ++ DP(NETIF_MSG_LINK, "Port %x: bnx2x_ext_phy_reset\n", params->port); ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ /* The PHY reset is controled by GPIO 1 ++ * Give it 1ms of reset pulse ++ */ ++ if (vars->phy_flags & PHY_XGXS_FLAG) { ++ ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ DP(NETIF_MSG_LINK, "XGXS Direct\n"); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ DP(NETIF_MSG_LINK, "XGXS 8705/8706\n"); ++ ++ /* Restore normal power mode*/ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ ++ /* HW reset */ ++ bnx2x_ext_phy_hw_reset(bp, params->port); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, 0xa040); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ ++ /* Restore normal power mode*/ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ 1<<15); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ DP(NETIF_MSG_LINK, "XGXS 8072\n"); ++ ++ /* Unset Low Power Mode and SW reset */ ++ /* Restore normal power mode*/ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ 1<<15); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ DP(NETIF_MSG_LINK, "XGXS 8073\n"); ++ ++ /* Restore normal power mode*/ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ DP(NETIF_MSG_LINK, "XGXS SFX7101\n"); ++ ++ /* Restore normal power mode*/ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ ++ /* HW reset */ ++ bnx2x_ext_phy_hw_reset(bp, params->port); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481: ++ /* Restore normal power mode*/ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, ++ params->port); ++ ++ /* HW reset */ ++ bnx2x_ext_phy_hw_reset(bp, params->port); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ 1<<15); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE: ++ DP(NETIF_MSG_LINK, "XGXS PHY Failure detected\n"); ++ break; ++ ++ default: ++ DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n", ++ params->ext_phy_config); ++ break; ++ } ++ ++ } else { /* SerDes */ ++ ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config); ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT: ++ DP(NETIF_MSG_LINK, "SerDes Direct\n"); ++ break; ++ ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482: ++ DP(NETIF_MSG_LINK, "SerDes 5482\n"); ++ bnx2x_ext_phy_hw_reset(bp, params->port); ++ break; ++ ++ default: ++ DP(NETIF_MSG_LINK, "BAD SerDes ext_phy_config 0x%x\n", ++ params->ext_phy_config); ++ break; ++ } ++ } ++} ++ ++static void bnx2x_save_spirom_version(struct bnx2x *bp, u8 port, ++ u32 shmem_base, u32 spirom_ver) ++{ ++ DP(NETIF_MSG_LINK, "FW version 0x%x:0x%x\n", ++ (u16)(spirom_ver>>16), (u16)spirom_ver); ++ REG_WR(bp, shmem_base + ++ offsetof(struct shmem_region, ++ port_mb[port].ext_phy_fw_version), ++ spirom_ver); ++} ++ ++static void bnx2x_save_bcm_spirom_ver(struct bnx2x *bp, u8 port, ++ u32 ext_phy_type, u8 ext_phy_addr, ++ u32 shmem_base) ++{ ++ u16 fw_ver1, fw_ver2; ++ ++ bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER1, &fw_ver1); ++ bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER2, &fw_ver2); ++ bnx2x_save_spirom_version(bp, port, shmem_base, ++ (u32)(fw_ver1<<16 | fw_ver2)); ++} ++ ++ ++static void bnx2x_save_8481_spirom_version(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, u32 shmem_base) ++{ ++ u16 val, fw_ver1, fw_ver2, cnt; ++ /* For the 32 bits registers in 8481, access via MDIO2ARM interface.*/ ++ /* (1) set register 0xc200_0014(SPI_BRIDGE_CTRL_2) to 0x03000000 */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ 0xA819, 0x0014); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA81A, ++ 0xc200); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA81B, ++ 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA81C, ++ 0x0300); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA817, ++ 0x0009); ++ ++ for (cnt = 0; cnt < 100; cnt++) { ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA818, ++ &val); ++ if (val & 1) ++ break; ++ udelay(5); ++ } ++ if (cnt == 100) { ++ DP(NETIF_MSG_LINK, "Unable to read 8481 phy fw version(1)\n"); ++ bnx2x_save_spirom_version(bp, port, ++ shmem_base, 0); ++ return; ++ } ++ ++ ++ /* 2) read register 0xc200_0000 (SPI_FW_STATUS) */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ 0xA819, 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ 0xA81A, 0xc200); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ 0xA817, 0x000A); ++ for (cnt = 0; cnt < 100; cnt++) { ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA818, ++ &val); ++ if (val & 1) ++ break; ++ udelay(5); ++ } ++ if (cnt == 100) { ++ DP(NETIF_MSG_LINK, "Unable to read 8481 phy fw version(2)\n"); ++ bnx2x_save_spirom_version(bp, port, ++ shmem_base, 0); ++ return; ++ } ++ ++ /* lower 16 bits of the register SPI_FW_STATUS */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA81B, ++ &fw_ver1); ++ /* upper 16 bits of register SPI_FW_STATUS */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0xA81C, ++ &fw_ver2); ++ ++ bnx2x_save_spirom_version(bp, port, ++ shmem_base, (fw_ver2<<16) | fw_ver1); ++} ++ ++static void bnx2x_bcm8072_external_rom_boot(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ /* Need to wait 200ms after reset */ ++ msleep(200); ++ /* Boot port from external ROM ++ * Set ser_boot_ctl bit in the MISC_CTRL1 register ++ */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, 0x0001); ++ ++ /* Reset internal microprocessor */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP); ++ /* set micro reset = 0 */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET); ++ /* Reset internal microprocessor */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP); ++ /* wait for 100ms for code download via SPI port */ ++ msleep(100); ++ ++ /* Clear ser_boot_ctl bit */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, 0x0000); ++ /* Wait 100ms */ ++ msleep(100); ++ ++ bnx2x_save_bcm_spirom_ver(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ params->shmem_base); ++} ++ ++static u8 bnx2x_8073_is_snr_needed(struct link_params *params) ++{ ++ /* This is only required for 8073A1, version 102 only */ ++ ++ struct bnx2x *bp = params->bp; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u16 val; ++ ++ /* Read 8073 HW revision*/ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_CHIP_REV, &val); ++ ++ if (val != 1) { ++ /* No need to workaround in 8073 A1 */ ++ return 0; ++ } ++ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER2, &val); ++ ++ /* SNR should be applied only for version 0x102 */ ++ if (val != 0x102) ++ return 0; ++ ++ return 1; ++} ++ ++static u8 bnx2x_bcm8073_xaui_wa(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u16 val, cnt, cnt1 ; ++ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_CHIP_REV, &val); ++ ++ if (val > 0) { ++ /* No need to workaround in 8073 A1 */ ++ return 0; ++ } ++ /* XAUI workaround in 8073 A0: */ ++ ++ /* After loading the boot ROM and restarting Autoneg, ++ poll Dev1, Reg $C820: */ ++ ++ for (cnt = 0; cnt < 1000; cnt++) { ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_SPEED_LINK_STATUS, ++ &val); ++ /* If bit [14] = 0 or bit [13] = 0, continue on with ++ system initialization (XAUI work-around not required, ++ as these bits indicate 2.5G or 1G link up). */ ++ if (!(val & (1<<14)) || !(val & (1<<13))) { ++ DP(NETIF_MSG_LINK, "XAUI work-around not required\n"); ++ return 0; ++ } else if (!(val & (1<<15))) { ++ DP(NETIF_MSG_LINK, "clc bit 15 went off\n"); ++ /* If bit 15 is 0, then poll Dev1, Reg $C841 until ++ it's MSB (bit 15) goes to 1 (indicating that the ++ XAUI workaround has completed), ++ then continue on with system initialization.*/ ++ for (cnt1 = 0; cnt1 < 1000; cnt1++) { ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_XAUI_WA, &val); ++ if (val & (1<<15)) { ++ DP(NETIF_MSG_LINK, ++ "XAUI workaround has completed\n"); ++ return 0; ++ } ++ msleep(3); ++ } ++ break; ++ } ++ msleep(3); ++ } ++ DP(NETIF_MSG_LINK, "Warning: XAUI work-around timeout !!!\n"); ++ return -EINVAL; ++} ++ ++static void bnx2x_bcm8073_bcm8727_external_rom_boot(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, ++ u32 ext_phy_type, ++ u32 shmem_base) ++{ ++ /* Boot port from external ROM */ ++ /* EDC grst */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ 0x0001); ++ ++ /* ucode reboot and rst */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ 0x008c); ++ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, 0x0001); ++ ++ /* Reset internal microprocessor */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET); ++ ++ /* Release srst bit */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP); ++ ++ /* wait for 100ms for code download via SPI port */ ++ msleep(100); ++ ++ /* Clear ser_boot_ctl bit */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, 0x0000); ++ ++ bnx2x_save_bcm_spirom_ver(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ shmem_base); ++} ++ ++static void bnx2x_bcm8073_external_rom_boot(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, ++ u32 shmem_base) ++{ ++ bnx2x_bcm8073_bcm8727_external_rom_boot(bp, port, ext_phy_addr, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ shmem_base); ++} ++ ++static void bnx2x_bcm8727_external_rom_boot(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, ++ u32 shmem_base) ++{ ++ bnx2x_bcm8073_bcm8727_external_rom_boot(bp, port, ext_phy_addr, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ shmem_base); ++ ++} ++ ++static void bnx2x_bcm8726_external_rom_boot(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ /* Need to wait 100ms after reset */ ++ msleep(100); ++ ++ /* Set serial boot control for external load */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, 0x0001); ++ ++ /* Micro controller re-boot */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP); ++ ++ /* Set soft reset */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET); ++ ++ /* Set PLL register value to be same like in P13 ver */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PLL_CTRL, ++ 0x73A0); ++ ++ /* Clear soft reset. ++ Will automatically reset micro-controller re-boot */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, ++ MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP); ++ ++ /* wait for 150ms for microcode load */ ++ msleep(150); ++ ++ /* Disable serial boot control, tristates pins SS_N, SCK, MOSI, MISO */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, 0x0000); ++ ++ msleep(200); ++ bnx2x_save_bcm_spirom_ver(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ params->shmem_base); ++} ++ ++static void bnx2x_sfp_set_transmitter(struct bnx2x *bp, u8 port, ++ u32 ext_phy_type, u8 ext_phy_addr, ++ u8 tx_en) ++{ ++ u16 val; ++ ++ DP(NETIF_MSG_LINK, "Setting transmitter tx_en=%x for port %x\n", ++ tx_en, port); ++ /* Disable/Enable transmitter ( TX laser of the SFP+ module.)*/ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ &val); ++ ++ if (tx_en) ++ val &= ~(1<<15); ++ else ++ val |= (1<<15); ++ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ val); ++} ++ ++static u8 bnx2x_8726_read_sfp_module_eeprom(struct link_params *params, ++ u16 addr, u8 byte_cnt, u8 *o_buf) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 val = 0; ++ u16 i; ++ u8 port = params->port; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ if (byte_cnt > 16) { ++ DP(NETIF_MSG_LINK, "Reading from eeprom is" ++ " is limited to 0xf\n"); ++ return -EINVAL; ++ } ++ /* Set the read command byte count */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_BYTE_CNT, ++ (byte_cnt | 0xa000)); ++ ++ /* Set the read command address */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_MEM_ADDR, ++ addr); ++ ++ /* Activate read command */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, ++ 0x2c0f); ++ ++ /* Wait up to 500us for command complete status */ ++ for (i = 0; i < 100; i++) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, &val); ++ if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) == ++ MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) ++ break; ++ udelay(5); ++ } ++ ++ if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) != ++ MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) { ++ DP(NETIF_MSG_LINK, ++ "Got bad status 0x%x when reading from SFP+ EEPROM\n", ++ (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK)); ++ return -EINVAL; ++ } ++ ++ /* Read the buffer */ ++ for (i = 0; i < byte_cnt; i++) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8726_TWO_WIRE_DATA_BUF + i, &val); ++ o_buf[i] = (u8)(val & MDIO_PMA_REG_8726_TWO_WIRE_DATA_MASK); ++ } ++ ++ for (i = 0; i < 100; i++) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, &val); ++ if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) == ++ MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_IDLE) ++ return 0;; ++ msleep(1); ++ } ++ return -EINVAL; ++} ++ ++static u8 bnx2x_8727_read_sfp_module_eeprom(struct link_params *params, ++ u16 addr, u8 byte_cnt, u8 *o_buf) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 val, i; ++ u8 port = params->port; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ if (byte_cnt > 16) { ++ DP(NETIF_MSG_LINK, "Reading from eeprom is" ++ " is limited to 0xf\n"); ++ return -EINVAL; ++ } ++ ++ /* Need to read from 1.8000 to clear it */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, ++ &val); ++ ++ /* Set the read command byte count */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_BYTE_CNT, ++ ((byte_cnt < 2) ? 2 : byte_cnt)); ++ ++ /* Set the read command address */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_MEM_ADDR, ++ addr); ++ /* Set the destination address */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ 0x8004, ++ MDIO_PMA_REG_8727_TWO_WIRE_DATA_BUF); ++ ++ /* Activate read command */ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, ++ 0x8002); ++ /* Wait appropriate time for two-wire command to finish before ++ polling the status register */ ++ msleep(1); ++ ++ /* Wait up to 500us for command complete status */ ++ for (i = 0; i < 100; i++) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, &val); ++ if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) == ++ MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) ++ break; ++ udelay(5); ++ } ++ ++ if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) != ++ MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) { ++ DP(NETIF_MSG_LINK, ++ "Got bad status 0x%x when reading from SFP+ EEPROM\n", ++ (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK)); ++ return -EINVAL; ++ } ++ ++ /* Read the buffer */ ++ for (i = 0; i < byte_cnt; i++) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_TWO_WIRE_DATA_BUF + i, &val); ++ o_buf[i] = (u8)(val & MDIO_PMA_REG_8727_TWO_WIRE_DATA_MASK); ++ } ++ ++ for (i = 0; i < 100; i++) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_SFP_TWO_WIRE_CTRL, &val); ++ if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) == ++ MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_IDLE) ++ return 0;; ++ msleep(1); ++ } ++ ++ return -EINVAL; ++} ++ ++u8 bnx2x_read_sfp_module_eeprom(struct link_params *params, u16 addr, ++ u8 byte_cnt, u8 *o_buf) ++{ ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ if (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726) ++ return bnx2x_8726_read_sfp_module_eeprom(params, addr, ++ byte_cnt, o_buf); ++ else if (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727) ++ return bnx2x_8727_read_sfp_module_eeprom(params, addr, ++ byte_cnt, o_buf); ++ return -EINVAL; ++} ++ ++static u8 bnx2x_get_edc_mode(struct link_params *params, ++ u16 *edc_mode) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 val, check_limiting_mode = 0; ++ *edc_mode = EDC_MODE_LIMITING; ++ ++ /* First check for copper cable */ ++ if (bnx2x_read_sfp_module_eeprom(params, ++ SFP_EEPROM_CON_TYPE_ADDR, ++ 1, ++ &val) != 0) { ++ DP(NETIF_MSG_LINK, "Failed to read from SFP+ module EEPROM\n"); ++ return -EINVAL; ++ } ++ ++ switch (val) { ++ case SFP_EEPROM_CON_TYPE_VAL_COPPER: ++ { ++ u8 copper_module_type; ++ ++ /* Check if its active cable( includes SFP+ module) ++ of passive cable*/ ++ if (bnx2x_read_sfp_module_eeprom(params, ++ SFP_EEPROM_FC_TX_TECH_ADDR, ++ 1, ++ &copper_module_type) != ++ 0) { ++ DP(NETIF_MSG_LINK, ++ "Failed to read copper-cable-type" ++ " from SFP+ EEPROM\n"); ++ return -EINVAL; ++ } ++ ++ if (copper_module_type & ++ SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE) { ++ DP(NETIF_MSG_LINK, "Active Copper cable detected\n"); ++ check_limiting_mode = 1; ++ } else if (copper_module_type & ++ SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_PASSIVE) { ++ DP(NETIF_MSG_LINK, "Passive Copper" ++ " cable detected\n"); ++ *edc_mode = ++ EDC_MODE_PASSIVE_DAC; ++ } else { ++ DP(NETIF_MSG_LINK, "Unknown copper-cable-" ++ "type 0x%x !!!\n", copper_module_type); ++ return -EINVAL; ++ } ++ break; ++ } ++ case SFP_EEPROM_CON_TYPE_VAL_LC: ++ DP(NETIF_MSG_LINK, "Optic module detected\n"); ++ check_limiting_mode = 1; ++ break; ++ default: ++ DP(NETIF_MSG_LINK, "Unable to determine module type 0x%x !!!\n", ++ val); ++ return -EINVAL; ++ } ++ ++ if (check_limiting_mode) { ++ u8 options[SFP_EEPROM_OPTIONS_SIZE]; ++ if (bnx2x_read_sfp_module_eeprom(params, ++ SFP_EEPROM_OPTIONS_ADDR, ++ SFP_EEPROM_OPTIONS_SIZE, ++ options) != 0) { ++ DP(NETIF_MSG_LINK, "Failed to read Option" ++ " field from module EEPROM\n"); ++ return -EINVAL; ++ } ++ if ((options[0] & SFP_EEPROM_OPTIONS_LINEAR_RX_OUT_MASK)) ++ *edc_mode = EDC_MODE_LINEAR; ++ else ++ *edc_mode = EDC_MODE_LIMITING; ++ } ++ DP(NETIF_MSG_LINK, "EDC mode is set to 0x%x\n", *edc_mode); ++ return 0; ++} ++ ++/* This function read the relevant field from the module ( SFP+ ), ++ and verify it is compliant with this board */ ++static u8 bnx2x_verify_sfp_module(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 val; ++ u32 fw_resp; ++ char vendor_name[SFP_EEPROM_VENDOR_NAME_SIZE+1]; ++ char vendor_pn[SFP_EEPROM_PART_NO_SIZE+1]; ++ ++ val = REG_RD(bp, params->shmem_base + ++ offsetof(struct shmem_region, dev_info. ++ port_feature_config[params->port].config)); ++ if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) == ++ PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_NO_ENFORCEMENT) { ++ DP(NETIF_MSG_LINK, "NOT enforcing module verification\n"); ++ return 0; ++ } ++ ++ /* Ask the FW to validate the module */ ++ if (!(params->feature_config_flags & ++ FEATURE_CONFIG_BC_SUPPORTS_OPT_MDL_VRFY)) { ++ DP(NETIF_MSG_LINK, "FW does not support OPT MDL " ++ "verification\n"); ++ return -EINVAL; ++ } ++ ++ fw_resp = bnx2x_fw_command(bp, DRV_MSG_CODE_VRFY_OPT_MDL); ++ if (fw_resp == FW_MSG_CODE_VRFY_OPT_MDL_SUCCESS) { ++ DP(NETIF_MSG_LINK, "Approved module\n"); ++ return 0; ++ } ++ ++ /* format the warning message */ ++ if (bnx2x_read_sfp_module_eeprom(params, ++ SFP_EEPROM_VENDOR_NAME_ADDR, ++ SFP_EEPROM_VENDOR_NAME_SIZE, ++ (u8 *)vendor_name)) ++ vendor_name[0] = '\0'; ++ else ++ vendor_name[SFP_EEPROM_VENDOR_NAME_SIZE] = '\0'; ++ if (bnx2x_read_sfp_module_eeprom(params, ++ SFP_EEPROM_PART_NO_ADDR, ++ SFP_EEPROM_PART_NO_SIZE, ++ (u8 *)vendor_pn)) ++ vendor_pn[0] = '\0'; ++ else ++ vendor_pn[SFP_EEPROM_PART_NO_SIZE] = '\0'; ++ ++ printk(KERN_INFO PFX "Warning: " ++ "Unqualified SFP+ module " ++ "detected on %s, Port %d from %s part number %s\n" ++ , bp->dev->name, params->port, ++ vendor_name, vendor_pn); ++ return -EINVAL; ++} ++ ++static u8 bnx2x_bcm8726_set_limiting_mode(struct link_params *params, ++ u16 edc_mode) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u16 cur_limiting_mode; ++ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER2, ++ &cur_limiting_mode); ++ DP(NETIF_MSG_LINK, "Current Limiting mode is 0x%x\n", ++ cur_limiting_mode); ++ ++ if (edc_mode == EDC_MODE_LIMITING) { ++ DP(NETIF_MSG_LINK, ++ "Setting LIMITING MODE\n"); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER2, ++ EDC_MODE_LIMITING); ++ } else { /* LRM mode ( default )*/ ++ ++ DP(NETIF_MSG_LINK, "Setting LRM MODE\n"); ++ ++ /* Changing to LRM mode takes quite few seconds. ++ So do it only if current mode is limiting ++ ( default is LRM )*/ ++ if (cur_limiting_mode != EDC_MODE_LIMITING) ++ return 0; ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LRM_MODE, ++ 0); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER2, ++ 0x128); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL0, ++ 0x4008); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LRM_MODE, ++ 0xaaaa); ++ } ++ return 0; ++} ++ ++static u8 bnx2x_bcm8727_set_limiting_mode(struct link_params *params, ++ u16 edc_mode) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u16 phy_identifier; ++ u16 rom_ver2_val; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ &phy_identifier); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ (phy_identifier & ~(1<<9))); ++ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER2, ++ &rom_ver2_val); ++ /* Keep the MSB 8-bits, and set the LSB 8-bits with the edc_mode */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER2, ++ (rom_ver2_val & 0xff00) | (edc_mode & 0x00ff)); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ (phy_identifier | (1<<9))); ++ ++ return 0; ++} ++ ++ ++static u8 bnx2x_wait_for_sfp_module_initialized(struct link_params *params) ++{ ++ u8 val; ++ struct bnx2x *bp = params->bp; ++ u16 timeout; ++ /* Initialization time after hot-plug may take up to 300ms for some ++ phys type ( e.g. JDSU ) */ ++ for (timeout = 0; timeout < 60; timeout++) { ++ if (bnx2x_read_sfp_module_eeprom(params, 1, 1, &val) ++ == 0) { ++ DP(NETIF_MSG_LINK, "SFP+ module initialization " ++ "took %d ms\n", timeout * 5); ++ return 0; ++ } ++ msleep(5); ++ } ++ return -EINVAL; ++} ++ ++static void bnx2x_8727_power_module(struct bnx2x *bp, ++ struct link_params *params, ++ u8 ext_phy_addr, u8 is_power_up) { ++ /* Make sure GPIOs are not using for LED mode */ ++ u16 val; ++ u8 port = params->port; ++ /* ++ * In the GPIO register, bit 4 is use to detemine if the GPIOs are ++ * operating as INPUT or as OUTPUT. Bit 1 is for input, and 0 for ++ * output ++ * Bits 0-1 determine the gpios value for OUTPUT in case bit 4 val is 0 ++ * Bits 8-9 determine the gpios value for INPUT in case bit 4 val is 1 ++ * where the 1st bit is the over-current(only input), and 2nd bit is ++ * for power( only output ) ++ */ ++ ++ /* ++ * In case of NOC feature is disabled and power is up, set GPIO control ++ * as input to enable listening of over-current indication ++ */ ++ ++ if (!(params->feature_config_flags & ++ FEATURE_CONFIG_BCM8727_NOC) && is_power_up) ++ val = (1<<4); ++ else ++ /* ++ * Set GPIO control to OUTPUT, and set the power bit ++ * to according to the is_power_up ++ */ ++ val = ((!(is_power_up)) << 1); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_GPIO_CTRL, ++ val); ++} ++ ++static u8 bnx2x_sfp_module_detection(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 edc_mode; ++ u8 rc = 0; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ u32 val = REG_RD(bp, params->shmem_base + ++ offsetof(struct shmem_region, dev_info. ++ port_feature_config[params->port].config)); ++ ++ DP(NETIF_MSG_LINK, "SFP+ module plugged in/out detected on port %d\n", ++ params->port); ++ ++ if (bnx2x_get_edc_mode(params, &edc_mode) != 0) { ++ DP(NETIF_MSG_LINK, "Failed to get valid module type\n"); ++ return -EINVAL; ++ } else if (bnx2x_verify_sfp_module(params) != ++ 0) { ++ /* check SFP+ module compatibility */ ++ DP(NETIF_MSG_LINK, "Module verification failed!!\n"); ++ rc = -EINVAL; ++ /* Turn on fault module-detected led */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0, ++ MISC_REGISTERS_GPIO_HIGH, ++ params->port); ++ if ((ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727) && ++ ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) == ++ PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_POWER_DOWN)) { ++ /* Shutdown SFP+ module */ ++ DP(NETIF_MSG_LINK, "Shutdown SFP+ module!!\n"); ++ bnx2x_8727_power_module(bp, params, ++ ext_phy_addr, 0); ++ return rc; ++ } ++ } else { ++ /* Turn off fault module-detected led */ ++ DP(NETIF_MSG_LINK, "Turn off fault module-detected led\n"); ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0, ++ MISC_REGISTERS_GPIO_LOW, ++ params->port); ++ } ++ ++ /* power up the SFP module */ ++ if (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727) ++ bnx2x_8727_power_module(bp, params, ext_phy_addr, 1); ++ ++ /* Check and set limiting mode / LRM mode on 8726. ++ On 8727 it is done automatically */ ++ if (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726) ++ bnx2x_bcm8726_set_limiting_mode(params, edc_mode); ++ else ++ bnx2x_bcm8727_set_limiting_mode(params, edc_mode); ++ /* ++ * Enable transmit for this module if the module is approved, or ++ * if unapproved modules should also enable the Tx laser ++ */ ++ if (rc == 0 || ++ (val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) != ++ PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_DISABLE_TX_LASER) ++ bnx2x_sfp_set_transmitter(bp, params->port, ++ ext_phy_type, ext_phy_addr, 1); ++ else ++ bnx2x_sfp_set_transmitter(bp, params->port, ++ ext_phy_type, ext_phy_addr, 0); ++ ++ return rc; ++} ++ ++void bnx2x_handle_module_detect_int(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 gpio_val; ++ u8 port = params->port; ++ ++ /* Set valid module led off */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0, ++ MISC_REGISTERS_GPIO_HIGH, ++ params->port); ++ ++ /* Get current gpio val refelecting module plugged in / out*/ ++ gpio_val = bnx2x_get_gpio(bp, MISC_REGISTERS_GPIO_3, port); ++ ++ /* Call the handling function in case module is detected */ ++ if (gpio_val == 0) { ++ ++ bnx2x_set_gpio_int(bp, MISC_REGISTERS_GPIO_3, ++ MISC_REGISTERS_GPIO_INT_OUTPUT_CLR, ++ port); ++ ++ if (bnx2x_wait_for_sfp_module_initialized(params) == ++ 0) ++ bnx2x_sfp_module_detection(params); ++ else ++ DP(NETIF_MSG_LINK, "SFP+ module is not initialized\n"); ++ } else { ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ ++ u32 ext_phy_type = ++ XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ u32 val = REG_RD(bp, params->shmem_base + ++ offsetof(struct shmem_region, dev_info. ++ port_feature_config[params->port]. ++ config)); ++ ++ bnx2x_set_gpio_int(bp, MISC_REGISTERS_GPIO_3, ++ MISC_REGISTERS_GPIO_INT_OUTPUT_SET, ++ port); ++ /* Module was plugged out. */ ++ /* Disable transmit for this module */ ++ if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) == ++ PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_DISABLE_TX_LASER) ++ bnx2x_sfp_set_transmitter(bp, params->port, ++ ext_phy_type, ext_phy_addr, 0); ++ } ++} ++ ++static void bnx2x_bcm807x_force_10G(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ /* Force KR or KX */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ 0x2040); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_10G_CTRL2, ++ 0x000b); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_BCM_CTRL, ++ 0x0000); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, ++ 0x0000); ++} ++ ++static void bnx2x_bcm8073_set_xaui_low_power_mode(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u16 val; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_CHIP_REV, &val); ++ ++ if (val == 0) { ++ /* Mustn't set low power mode in 8073 A0 */ ++ return; ++ } ++ ++ /* Disable PLL sequencer (use read-modify-write to clear bit 13) */ ++ bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, ++ MDIO_XS_PLL_SEQUENCER, &val); ++ val &= ~(1<<13); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, MDIO_XS_PLL_SEQUENCER, val); ++ ++ /* PLL controls */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x805E, 0x1077); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x805D, 0x0000); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x805C, 0x030B); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x805B, 0x1240); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x805A, 0x2490); ++ ++ /* Tx Controls */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x80A7, 0x0C74); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x80A6, 0x9041); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x80A5, 0x4640); ++ ++ /* Rx Controls */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x80FE, 0x01C4); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x80FD, 0x9249); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, 0x80FC, 0x2015); ++ ++ /* Enable PLL sequencer (use read-modify-write to set bit 13) */ ++ bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, ++ MDIO_XS_PLL_SEQUENCER, &val); ++ val |= (1<<13); ++ bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, ++ MDIO_XS_DEVAD, MDIO_XS_PLL_SEQUENCER, val); ++} ++ ++static void bnx2x_8073_set_pause_cl37(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 cl37_val; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LD, &cl37_val); ++ ++ cl37_val &= ~MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH; ++ /* Please refer to Table 28B-3 of 802.3ab-1999 spec. */ ++ ++ if ((vars->ieee_fc & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC) == ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC) { ++ cl37_val |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC; ++ } ++ if ((vars->ieee_fc & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) == ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) { ++ cl37_val |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC; ++ } ++ if ((vars->ieee_fc & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) == ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) { ++ cl37_val |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH; ++ } ++ DP(NETIF_MSG_LINK, ++ "Ext phy AN advertize cl37 0x%x\n", cl37_val); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LD, cl37_val); ++ msleep(500); ++} ++ ++static void bnx2x_ext_phy_set_pause(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 val; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ /* read modify write pause advertizing */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV_PAUSE, &val); ++ ++ val &= ~MDIO_AN_REG_ADV_PAUSE_BOTH; ++ ++ /* Please refer to Table 28B-3 of 802.3ab-1999 spec. */ ++ ++ if ((vars->ieee_fc & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) == ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) { ++ val |= MDIO_AN_REG_ADV_PAUSE_ASYMMETRIC; ++ } ++ if ((vars->ieee_fc & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) == ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) { ++ val |= ++ MDIO_AN_REG_ADV_PAUSE_PAUSE; ++ } ++ DP(NETIF_MSG_LINK, ++ "Ext phy AN advertize 0x%x\n", val); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV_PAUSE, val); ++} ++static void bnx2x_set_preemphasis(struct link_params *params) ++{ ++ u16 bank, i = 0; ++ struct bnx2x *bp = params->bp; ++ ++ for (bank = MDIO_REG_BANK_RX0, i = 0; bank <= MDIO_REG_BANK_RX3; ++ bank += (MDIO_REG_BANK_RX1-MDIO_REG_BANK_RX0), i++) { ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ bank, ++ MDIO_RX0_RX_EQ_BOOST, ++ params->xgxs_config_rx[i]); ++ } ++ ++ for (bank = MDIO_REG_BANK_TX0, i = 0; bank <= MDIO_REG_BANK_TX3; ++ bank += (MDIO_REG_BANK_TX1 - MDIO_REG_BANK_TX0), i++) { ++ CL45_WR_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ bank, ++ MDIO_TX0_TX_DRIVER, ++ params->xgxs_config_tx[i]); ++ } ++} ++ ++static void bnx2x_init_internal_phy(struct link_params *params, ++ struct link_vars *vars, ++ u8 enable_cl73) ++{ ++ struct bnx2x *bp = params->bp; ++ ++ if (!(vars->phy_flags & PHY_SGMII_FLAG)) { ++ if ((XGXS_EXT_PHY_TYPE(params->ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) && ++ (params->feature_config_flags & ++ FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) ++ bnx2x_set_preemphasis(params); ++ ++ /* forced speed requested? */ ++ if (vars->line_speed != SPEED_AUTO_NEG) { ++ DP(NETIF_MSG_LINK, "not SGMII, no AN\n"); ++ ++ /* disable autoneg */ ++ bnx2x_set_autoneg(params, vars, 0); ++ ++ /* program speed and duplex */ ++ bnx2x_program_serdes(params, vars); ++ ++ } else { /* AN_mode */ ++ DP(NETIF_MSG_LINK, "not SGMII, AN\n"); ++ ++ /* AN enabled */ ++ bnx2x_set_brcm_cl37_advertisment(params); ++ ++ /* program duplex & pause advertisement (for aneg) */ ++ bnx2x_set_ieee_aneg_advertisment(params, ++ vars->ieee_fc); ++ ++ /* enable autoneg */ ++ bnx2x_set_autoneg(params, vars, enable_cl73); ++ ++ /* enable and restart AN */ ++ bnx2x_restart_autoneg(params, enable_cl73); ++ } ++ ++ } else { /* SGMII mode */ ++ DP(NETIF_MSG_LINK, "SGMII\n"); ++ ++ bnx2x_initialize_sgmii_process(params, vars); ++ } ++} ++ ++static u8 bnx2x_ext_phy_init(struct link_params *params, struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 ext_phy_type; ++ u8 ext_phy_addr; ++ u16 cnt; ++ u16 ctrl = 0; ++ u16 val = 0; ++ u8 rc = 0; ++ ++ if (vars->phy_flags & PHY_XGXS_FLAG) { ++ ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ /* Make sure that the soft reset is off (expect for the 8072: ++ * due to the lock, it will be done inside the specific ++ * handling) ++ */ ++ if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073)) { ++ /* Wait for soft reset to get cleared upto 1 sec */ ++ for (cnt = 0; cnt < 1000; cnt++) { ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, &ctrl); ++ if (!(ctrl & (1<<15))) ++ break; ++ msleep(1); ++ } ++ DP(NETIF_MSG_LINK, "control reg 0x%x (after %d ms)\n", ++ ctrl, cnt); ++ } ++ ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ DP(NETIF_MSG_LINK, "XGXS 8705\n"); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL, ++ 0x8288); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ 0x7fbf); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CMU_PLL_BYPASS, ++ 0x0100); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_WIS_DEVAD, ++ MDIO_WIS_REG_LASI_CNTL, 0x1); ++ ++ /* BCM8705 doesn't have microcode, hence the 0 */ ++ bnx2x_save_spirom_version(bp, params->port, ++ params->shmem_base, 0); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ /* Wait until fw is loaded */ ++ for (cnt = 0; cnt < 100; cnt++) { ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER1, &val); ++ if (val) ++ break; ++ msleep(10); ++ } ++ DP(NETIF_MSG_LINK, "XGXS 8706 is initialized " ++ "after %d ms\n", cnt); ++ if ((params->feature_config_flags & ++ FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) { ++ u8 i; ++ u16 reg; ++ for (i = 0; i < 4; i++) { ++ reg = MDIO_XS_8706_REG_BANK_RX0 + ++ i*(MDIO_XS_8706_REG_BANK_RX1 - ++ MDIO_XS_8706_REG_BANK_RX0); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_XS_DEVAD, ++ reg, &val); ++ /* Clear first 3 bits of the control */ ++ val &= ~0x7; ++ /* Set control bits according to ++ configuation */ ++ val |= (params->xgxs_config_rx[i] & ++ 0x7); ++ DP(NETIF_MSG_LINK, "Setting RX" ++ "Equalizer to BCM8706 reg 0x%x" ++ " <-- val 0x%x\n", reg, val); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_XS_DEVAD, ++ reg, val); ++ } ++ } ++ /* Force speed */ ++ /* First enable LASI */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, ++ 0x0400); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, 0x0004); ++ ++ if (params->req_line_speed == SPEED_10000) { ++ DP(NETIF_MSG_LINK, "XGXS 8706 force 10Gbps\n"); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_DIGITAL_CTRL, ++ 0x400); ++ } else { ++ /* Force 1Gbps using autoneg with 1G ++ advertisment */ ++ ++ /* Allow CL37 through CL73 */ ++ DP(NETIF_MSG_LINK, "XGXS 8706 AutoNeg\n"); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_CL73, ++ 0x040c); ++ ++ /* Enable Full-Duplex advertisment on CL37 */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LP, ++ 0x0020); ++ /* Enable CL37 AN */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_AN, ++ 0x1000); ++ /* 1G support */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV, (1<<5)); ++ ++ /* Enable clause 73 AN */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, ++ 0x1200); ++ ++ } ++ bnx2x_save_bcm_spirom_ver(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ params->shmem_base); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ DP(NETIF_MSG_LINK, "Initializing BCM8726\n"); ++ bnx2x_bcm8726_external_rom_boot(params); ++ ++ /* Need to call module detected on initialization since ++ the module detection triggered by actual module ++ insertion might occur before driver is loaded, and when ++ driver is loaded, it reset all registers, including the ++ transmitter */ ++ bnx2x_sfp_module_detection(params); ++ ++ /* Set Flow control */ ++ bnx2x_ext_phy_set_pause(params, vars); ++ if (params->req_line_speed == SPEED_1000) { ++ DP(NETIF_MSG_LINK, "Setting 1G force\n"); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, 0x40); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_10G_CTRL2, 0xD); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, 0x5); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, ++ 0x400); ++ } else if ((params->req_line_speed == ++ SPEED_AUTO_NEG) && ++ ((params->speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_1G))) { ++ DP(NETIF_MSG_LINK, "Setting 1G clause37 \n"); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV, 0x20); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_CL73, 0x040c); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LD, 0x0020); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_AN, 0x1000); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, 0x1200); ++ ++ /* Enable RX-ALARM control to receive ++ interrupt for 1G speed change */ ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, 0x4); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, ++ 0x400); ++ ++ } else { /* Default 10G. Set only LASI control */ ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, 1); ++ } ++ ++ /* Set TX PreEmphasis if needed */ ++ if ((params->feature_config_flags & ++ FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) { ++ DP(NETIF_MSG_LINK, "Setting TX_CTRL1 0x%x," ++ "TX_CTRL2 0x%x\n", ++ params->xgxs_config_tx[0], ++ params->xgxs_config_tx[1]); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8726_TX_CTRL1, ++ params->xgxs_config_tx[0]); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8726_TX_CTRL2, ++ params->xgxs_config_tx[1]); ++ } ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ { ++ u16 tmp1; ++ u16 rx_alarm_ctrl_val; ++ u16 lasi_ctrl_val; ++ if (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) { ++ rx_alarm_ctrl_val = 0x400; ++ lasi_ctrl_val = 0x0004; ++ } else { ++ rx_alarm_ctrl_val = (1<<2); ++ lasi_ctrl_val = 0x0004; ++ } ++ ++ /* enable LASI */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, ++ rx_alarm_ctrl_val); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, ++ lasi_ctrl_val); ++ ++ bnx2x_8073_set_pause_cl37(params, vars); ++ ++ if (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) ++ bnx2x_bcm8072_external_rom_boot(params); ++ else ++ /* In case of 8073 with long xaui lines, ++ don't set the 8073 xaui low power*/ ++ bnx2x_bcm8073_set_xaui_low_power_mode(params); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, ++ &tmp1); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &tmp1); ++ ++ DP(NETIF_MSG_LINK, "Before rom RX_ALARM(port1):" ++ "0x%x\n", tmp1); ++ ++ /* If this is forced speed, set to KR or KX ++ * (all other are not supported) ++ */ ++ if (params->loopback_mode == LOOPBACK_EXT) { ++ bnx2x_bcm807x_force_10G(params); ++ DP(NETIF_MSG_LINK, ++ "Forced speed 10G on 807X\n"); ++ break; ++ } else { ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_BCM_CTRL, ++ 0x0002); ++ } ++ if (params->req_line_speed != SPEED_AUTO_NEG) { ++ if (params->req_line_speed == SPEED_10000) { ++ val = (1<<7); ++ } else if (params->req_line_speed == ++ SPEED_2500) { ++ val = (1<<5); ++ /* Note that 2.5G works only ++ when used with 1G advertisment */ ++ } else ++ val = (1<<5); ++ } else { ++ ++ val = 0; ++ if (params->speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) ++ val |= (1<<7); ++ ++ /* Note that 2.5G works only when ++ used with 1G advertisment */ ++ if (params->speed_cap_mask & ++ (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G | ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G)) ++ val |= (1<<5); ++ DP(NETIF_MSG_LINK, ++ "807x autoneg val = 0x%x\n", val); ++ } ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV, val); ++ if (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) { ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8073_2_5G, &tmp1); ++ ++ if (((params->speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G) && ++ (params->req_line_speed == ++ SPEED_AUTO_NEG)) || ++ (params->req_line_speed == ++ SPEED_2500)) { ++ u16 phy_ver; ++ /* Allow 2.5G for A1 and above */ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_CHIP_REV, &phy_ver); ++ DP(NETIF_MSG_LINK, "Add 2.5G\n"); ++ if (phy_ver > 0) ++ tmp1 |= 1; ++ else ++ tmp1 &= 0xfffe; ++ } else { ++ DP(NETIF_MSG_LINK, "Disable 2.5G\n"); ++ tmp1 &= 0xfffe; ++ } ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8073_2_5G, tmp1); ++ } ++ ++ /* Add support for CL37 (passive mode) II */ ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LD, ++ &tmp1); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_FC_LD, (tmp1 | ++ ((params->req_duplex == DUPLEX_FULL) ? ++ 0x20 : 0x40))); ++ ++ /* Add support for CL37 (passive mode) III */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_AN, 0x1000); ++ ++ if (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) { ++ /* The SNR will improve about 2db by changing ++ BW and FEE main tap. Rest commands are executed ++ after link is up*/ ++ /*Change FFE main cursor to 5 in EDC register*/ ++ if (bnx2x_8073_is_snr_needed(params)) ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_EDC_FFE_MAIN, ++ 0xFB0C); ++ ++ /* Enable FEC (Forware Error Correction) ++ Request in the AN */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV2, &tmp1); ++ ++ tmp1 |= (1<<15); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_ADV2, tmp1); ++ ++ } ++ ++ bnx2x_ext_phy_set_pause(params, vars); ++ ++ /* Restart autoneg */ ++ msleep(500); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, 0x1200); ++ DP(NETIF_MSG_LINK, "807x Autoneg Restart: " ++ "Advertise 1G=%x, 10G=%x\n", ++ ((val & (1<<5)) > 0), ++ ((val & (1<<7)) > 0)); ++ break; ++ } ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ { ++ u16 tmp1; ++ u16 rx_alarm_ctrl_val; ++ u16 lasi_ctrl_val; ++ ++ /* Enable PMD link, MOD_ABS_FLT, and 1G link alarm */ ++ ++ u16 mod_abs; ++ rx_alarm_ctrl_val = (1<<2) | (1<<5) ; ++ lasi_ctrl_val = 0x0004; ++ ++ DP(NETIF_MSG_LINK, "Initializing BCM8727\n"); ++ /* enable LASI */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, ++ rx_alarm_ctrl_val); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, ++ lasi_ctrl_val); ++ ++ /* Initially configure MOD_ABS to interrupt when ++ module is presence( bit 8) */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, &mod_abs); ++ /* Set EDC off by setting OPTXLOS signal input to low ++ (bit 9). ++ When the EDC is off it locks onto a reference clock and ++ avoids becoming 'lost'.*/ ++ mod_abs &= ~((1<<8) | (1<<9)); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, mod_abs); ++ ++ /* Make MOD_ABS give interrupt on change */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_PCS_OPT_CTRL, ++ &val); ++ val |= (1<<12); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_PCS_OPT_CTRL, ++ val); ++ ++ /* Set 8727 GPIOs to input to allow reading from the ++ 8727 GPIO0 status which reflect SFP+ module ++ over-current */ ++ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_PCS_OPT_CTRL, ++ &val); ++ val &= 0xff8f; /* Reset bits 4-6 */ ++ bnx2x_cl45_write(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_PCS_OPT_CTRL, ++ val); ++ ++ bnx2x_8727_power_module(bp, params, ext_phy_addr, 1); ++ bnx2x_bcm8073_set_xaui_low_power_mode(params); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, ++ &tmp1); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &tmp1); ++ ++ /* Set option 1G speed */ ++ if (params->req_line_speed == SPEED_1000) { ++ ++ DP(NETIF_MSG_LINK, "Setting 1G force\n"); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, 0x40); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_10G_CTRL2, 0xD); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_10G_CTRL2, &tmp1); ++ DP(NETIF_MSG_LINK, "1.7 = 0x%x \n", tmp1); ++ ++ } else if ((params->req_line_speed == ++ SPEED_AUTO_NEG) && ++ ((params->speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_1G))) { ++ ++ DP(NETIF_MSG_LINK, "Setting 1G clause37 \n"); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_PMA_REG_8727_MISC_CTRL, 0); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_AN_REG_CL37_AN, 0x1300); ++ } else { ++ /* Since the 8727 has only single reset pin, ++ need to set the 10G registers although it is ++ default */ ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, 0x0020); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_AN_DEVAD, ++ 0x7, 0x0100); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, 0x2040); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_10G_CTRL2, 0x0008); ++ } ++ ++ /* Set 2-wire transfer rate to 400Khz since 100Khz ++ is not operational */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_TWO_WIRE_SLAVE_ADDR, ++ 0xa101); ++ ++ /* Set TX PreEmphasis if needed */ ++ if ((params->feature_config_flags & ++ FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) { ++ DP(NETIF_MSG_LINK, "Setting TX_CTRL1 0x%x," ++ "TX_CTRL2 0x%x\n", ++ params->xgxs_config_tx[0], ++ params->xgxs_config_tx[1]); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_TX_CTRL1, ++ params->xgxs_config_tx[0]); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_TX_CTRL2, ++ params->xgxs_config_tx[1]); ++ } ++ ++ break; ++ } ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ { ++ u16 fw_ver1, fw_ver2; ++ DP(NETIF_MSG_LINK, ++ "Setting the SFX7101 LASI indication\n"); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, 0x1); ++ DP(NETIF_MSG_LINK, ++ "Setting the SFX7101 LED to blink on traffic\n"); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7107_LED_CNTL, (1<<3)); ++ ++ bnx2x_ext_phy_set_pause(params, vars); ++ /* Restart autoneg */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, &val); ++ val |= 0x200; ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, val); ++ ++ /* Save spirom version */ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7101_VER1, &fw_ver1); ++ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7101_VER2, &fw_ver2); ++ ++ bnx2x_save_spirom_version(params->bp, params->port, ++ params->shmem_base, ++ (u32)(fw_ver1<<16 | fw_ver2)); ++ break; ++ } ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481: ++ DP(NETIF_MSG_LINK, ++ "Setting the BCM8481 LASI control\n"); ++ /* This phy uses the NIG latch mechanism since link ++ indication arrives through its LED4 and not via ++ its LASI signal, so we get steady signal ++ instead of clear on read */ ++ bnx2x_bits_en(bp, NIG_REG_LATCH_BC_0 + params->port*4, ++ 1 << NIG_LATCH_BC_ENABLE_MI_INT); ++ ++ /* Enable LED4 when link speed is 10/100/1000 */ ++ /* Bit 15 enables write to the shadow reg */ ++ /* Bits 10..14 sets the shadow reg to LED selector 2 */ ++ /* Bits 4..7 Set the LED2 selector itself to LED4 */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_LEGACY_SHADOW, ++ (1<<15) | (0xe << 10) | (0xc << 4)); ++ /* Enable continous signal to go active on link */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8481_LINK_SIGNAL, &val); ++ val &= ~(1<<11); ++ val |= (2<<9); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8481_LINK_SIGNAL, val); ++ /* Unmask LED4 for 10G link */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8481_SIGNAL_MASK, &val); ++ val |= (1<<7); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8481_SIGNAL_MASK, val); ++ ++ if (params->req_line_speed == SPEED_AUTO_NEG) { ++ ++ u16 autoneg_val, an_1000_val, an_10_100_val; ++ /* set 1000 speed advertisement */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_1000T_CTRL, ++ &an_1000_val); ++ ++ if (params->speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_1G) { ++ an_1000_val |= (1<<8); ++ if (params->req_duplex == DUPLEX_FULL) ++ an_1000_val |= (1<<9); ++ DP(NETIF_MSG_LINK, "Advertising 1G\n"); ++ } else ++ an_1000_val &= ~((1<<8) | (1<<9)); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_1000T_CTRL, ++ an_1000_val); ++ ++ /* set 100 speed advertisement */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_LEGACY_AN_ADV, ++ &an_10_100_val); ++ ++ if (params->speed_cap_mask & ++ (PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL | ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF)) { ++ an_10_100_val |= (1<<7); ++ if (params->req_duplex == DUPLEX_FULL) ++ an_10_100_val |= (1<<8); ++ DP(NETIF_MSG_LINK, ++ "Advertising 100M\n"); ++ } else ++ an_10_100_val &= ~((1<<7) | (1<<8)); ++ ++ /* set 10 speed advertisement */ ++ if (params->speed_cap_mask & ++ (PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL | ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF)) { ++ an_10_100_val |= (1<<5); ++ if (params->req_duplex == DUPLEX_FULL) ++ an_10_100_val |= (1<<6); ++ DP(NETIF_MSG_LINK, "Advertising 10M\n"); ++ } ++ else ++ an_10_100_val &= ~((1<<5) | (1<<6)); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_LEGACY_AN_ADV, ++ an_10_100_val); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_LEGACY_MII_CTRL, ++ &autoneg_val); ++ ++ /* Disable forced speed */ ++ autoneg_val &= ~(1<<6|1<<13); ++ ++ /* Enable autoneg and restart autoneg ++ for legacy speeds */ ++ autoneg_val |= (1<<9|1<<12); ++ ++ if (params->req_duplex == DUPLEX_FULL) ++ autoneg_val |= (1<<8); ++ else ++ autoneg_val &= ~(1<<8); ++ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_LEGACY_MII_CTRL, ++ autoneg_val); ++ ++ if (params->speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) { ++ DP(NETIF_MSG_LINK, "Advertising 10G\n"); ++ /* Restart autoneg for 10G*/ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, &val); ++ val |= 0x200; ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, val); ++ } ++ } else { ++ /* Force speed */ ++ u16 autoneg_ctrl, pma_ctrl; ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_LEGACY_MII_CTRL, ++ &autoneg_ctrl); ++ ++ /* Disable autoneg */ ++ autoneg_ctrl &= ~(1<<12); ++ ++ /* Set 1000 force */ ++ switch (params->req_line_speed) { ++ case SPEED_10000: ++ DP(NETIF_MSG_LINK, ++ "Unable to set 10G force !\n"); ++ break; ++ case SPEED_1000: ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ &pma_ctrl); ++ autoneg_ctrl &= ~(1<<13); ++ autoneg_ctrl |= (1<<6); ++ pma_ctrl &= ~(1<<13); ++ pma_ctrl |= (1<<6); ++ DP(NETIF_MSG_LINK, ++ "Setting 1000M force\n"); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ pma_ctrl); ++ break; ++ case SPEED_100: ++ autoneg_ctrl |= (1<<13); ++ autoneg_ctrl &= ~(1<<6); ++ DP(NETIF_MSG_LINK, ++ "Setting 100M force\n"); ++ break; ++ case SPEED_10: ++ autoneg_ctrl &= ~(1<<13); ++ autoneg_ctrl &= ~(1<<6); ++ DP(NETIF_MSG_LINK, ++ "Setting 10M force\n"); ++ break; ++ } ++ ++ /* Duplex mode */ ++ if (params->req_duplex == DUPLEX_FULL) { ++ autoneg_ctrl |= (1<<8); ++ DP(NETIF_MSG_LINK, ++ "Setting full duplex\n"); ++ } else ++ autoneg_ctrl &= ~(1<<8); ++ ++ /* Update autoneg ctrl and pma ctrl */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_LEGACY_MII_CTRL, ++ autoneg_ctrl); ++ } ++ ++ /* Save spirom version */ ++ bnx2x_save_8481_spirom_version(bp, params->port, ++ ext_phy_addr, ++ params->shmem_base); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE: ++ DP(NETIF_MSG_LINK, ++ "XGXS PHY Failure detected 0x%x\n", ++ params->ext_phy_config); ++ rc = -EINVAL; ++ break; ++ default: ++ DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n", ++ params->ext_phy_config); ++ rc = -EINVAL; ++ break; ++ } ++ ++ } else { /* SerDes */ ++ ++ ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config); ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT: ++ DP(NETIF_MSG_LINK, "SerDes Direct\n"); ++ break; ++ ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482: ++ DP(NETIF_MSG_LINK, "SerDes 5482\n"); ++ break; ++ ++ default: ++ DP(NETIF_MSG_LINK, "BAD SerDes ext_phy_config 0x%x\n", ++ params->ext_phy_config); ++ break; ++ } ++ } ++ return rc; ++} ++ ++static void bnx2x_8727_handle_mod_abs(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 mod_abs, rx_alarm_status; ++ u8 ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ u32 val = REG_RD(bp, params->shmem_base + ++ offsetof(struct shmem_region, dev_info. ++ port_feature_config[params->port]. ++ config)); ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, &mod_abs); ++ if (mod_abs & (1<<8)) { ++ ++ /* Module is absent */ ++ DP(NETIF_MSG_LINK, "MOD_ABS indication " ++ "show module is absent\n"); ++ ++ /* 1. Set mod_abs to detect next module ++ presence event ++ 2. Set EDC off by setting OPTXLOS signal input to low ++ (bit 9). ++ When the EDC is off it locks onto a reference clock and ++ avoids becoming 'lost'.*/ ++ mod_abs &= ~((1<<8)|(1<<9)); ++ bnx2x_cl45_write(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, mod_abs); ++ ++ /* Clear RX alarm since it stays up as long as ++ the mod_abs wasn't changed */ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &rx_alarm_status); ++ ++ } else { ++ /* Module is present */ ++ DP(NETIF_MSG_LINK, "MOD_ABS indication " ++ "show module is present\n"); ++ /* First thing, disable transmitter, ++ and if the module is ok, the ++ module_detection will enable it*/ ++ ++ /* 1. Set mod_abs to detect next module ++ absent event ( bit 8) ++ 2. Restore the default polarity of the OPRXLOS signal and ++ this signal will then correctly indicate the presence or ++ absence of the Rx signal. (bit 9) */ ++ mod_abs |= ((1<<8)|(1<<9)); ++ bnx2x_cl45_write(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, mod_abs); ++ ++ /* Clear RX alarm since it stays up as long as ++ the mod_abs wasn't changed. This is need to be done ++ before calling the module detection, otherwise it will clear ++ the link update alarm */ ++ bnx2x_cl45_read(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &rx_alarm_status); ++ ++ ++ if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) == ++ PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_DISABLE_TX_LASER) ++ bnx2x_sfp_set_transmitter(bp, params->port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, 0); ++ ++ if (bnx2x_wait_for_sfp_module_initialized(params) ++ == 0) ++ bnx2x_sfp_module_detection(params); ++ else ++ DP(NETIF_MSG_LINK, "SFP+ module is not initialized\n"); ++ } ++ ++ DP(NETIF_MSG_LINK, "8727 RX_ALARM_STATUS 0x%x\n", ++ rx_alarm_status); ++ /* No need to check link status in case of ++ module plugged in/out */ ++} ++ ++ ++static u8 bnx2x_ext_phy_is_link_up(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 ext_phy_type; ++ u8 ext_phy_addr; ++ u16 val1 = 0, val2; ++ u16 rx_sd, pcs_status; ++ u8 ext_phy_link_up = 0; ++ u8 port = params->port; ++ ++ if (vars->phy_flags & PHY_XGXS_FLAG) { ++ ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ DP(NETIF_MSG_LINK, "XGXS Direct\n"); ++ ext_phy_link_up = 1; ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ DP(NETIF_MSG_LINK, "XGXS 8705\n"); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_WIS_DEVAD, ++ MDIO_WIS_REG_LASI_STATUS, &val1); ++ DP(NETIF_MSG_LINK, "8705 LASI status 0x%x\n", val1); ++ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_WIS_DEVAD, ++ MDIO_WIS_REG_LASI_STATUS, &val1); ++ DP(NETIF_MSG_LINK, "8705 LASI status 0x%x\n", val1); ++ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_SD, &rx_sd); ++ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ 1, ++ 0xc809, &val1); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ 1, ++ 0xc809, &val1); ++ ++ DP(NETIF_MSG_LINK, "8705 1.c809 val=0x%x\n", val1); ++ ext_phy_link_up = ((rx_sd & 0x1) && (val1 & (1<<9)) ++ && ((val1 & (1<<8)) == 0)); ++ if (ext_phy_link_up) ++ vars->line_speed = SPEED_10000; ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ DP(NETIF_MSG_LINK, "XGXS 8706/8726\n"); ++ /* Clear RX Alarm*/ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_ALARM, ++ &val2); ++ /* clear LASI indication*/ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, MDIO_PMA_REG_LASI_STATUS, ++ &val1); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, MDIO_PMA_REG_LASI_STATUS, ++ &val2); ++ DP(NETIF_MSG_LINK, "8706/8726 LASI status 0x%x-->" ++ "0x%x\n", val1, val2); ++ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_SD, ++ &rx_sd); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, ++ &pcs_status); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, MDIO_AN_REG_LINK_STATUS, ++ &val2); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, MDIO_AN_REG_LINK_STATUS, ++ &val2); ++ ++ DP(NETIF_MSG_LINK, "8706/8726 rx_sd 0x%x" ++ " pcs_status 0x%x 1Gbps link_status 0x%x\n", ++ rx_sd, pcs_status, val2); ++ /* link is up if both bit 0 of pmd_rx_sd and ++ * bit 0 of pcs_status are set, or if the autoneg bit ++ 1 is set ++ */ ++ ext_phy_link_up = ((rx_sd & pcs_status & 0x1) || ++ (val2 & (1<<1))); ++ if (ext_phy_link_up) { ++ if (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726) { ++ /* If transmitter is disabled, ++ ignore false link up indication */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ &val1); ++ if (val1 & (1<<15)) { ++ DP(NETIF_MSG_LINK, "Tx is " ++ "disabled\n"); ++ ext_phy_link_up = 0; ++ break; ++ } ++ } ++ if (val2 & (1<<1)) ++ vars->line_speed = SPEED_1000; ++ else ++ vars->line_speed = SPEED_10000; ++ } ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ { ++ u16 link_status = 0; ++ u16 rx_alarm_status; ++ /* Check the LASI */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &rx_alarm_status); ++ ++ DP(NETIF_MSG_LINK, "8727 RX_ALARM_STATUS 0x%x\n", ++ rx_alarm_status); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_STATUS, &val1); ++ ++ DP(NETIF_MSG_LINK, ++ "8727 LASI status 0x%x\n", ++ val1); ++ ++ /* Clear MSG-OUT */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, ++ &val1); ++ ++ /* ++ * If a module is present and there is need to check ++ * for over current ++ */ ++ if (!(params->feature_config_flags & ++ FEATURE_CONFIG_BCM8727_NOC) && ++ !(rx_alarm_status & (1<<5))) { ++ /* Check over-current using 8727 GPIO0 input*/ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8727_GPIO_CTRL, ++ &val1); ++ ++ if ((val1 & (1<<8)) == 0) { ++ DP(NETIF_MSG_LINK, "8727 Power fault has" ++ " been detected on port %d\n", ++ params->port); ++ printk(KERN_ERR PFX "Error: Power" ++ " fault on %s Port %d has" ++ " been detected and the" ++ " power to that SFP+ module" ++ " has been removed to prevent" ++ " failure of the card. Please" ++ " remove the SFP+ module and" ++ " restart the system to clear" ++ " this error.\n" ++ , bp->dev->name, params->port); ++ /* ++ * Disable all RX_ALARMs except for ++ * mod_abs ++ */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, ++ (1<<5)); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ &val1); ++ /* Wait for module_absent_event */ ++ val1 |= (1<<8); ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ val1); ++ /* Clear RX alarm */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, ++ &rx_alarm_status); ++ break; ++ } ++ } /* Over current check */ ++ ++ /* When module absent bit is set, check module */ ++ if (rx_alarm_status & (1<<5)) { ++ bnx2x_8727_handle_mod_abs(params); ++ /* Enable all mod_abs and link detection bits */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, ++ ((1<<5) | (1<<2))); ++ } ++ ++ /* If transmitter is disabled, ++ ignore false link up indication */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PHY_IDENTIFIER, ++ &val1); ++ if (val1 & (1<<15)) { ++ DP(NETIF_MSG_LINK, "Tx is disabled\n"); ++ ext_phy_link_up = 0; ++ break; ++ } ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_SPEED_LINK_STATUS, ++ &link_status); ++ ++ /* Bits 0..2 --> speed detected, ++ bits 13..15--> link is down */ ++ if ((link_status & (1<<2)) && ++ (!(link_status & (1<<15)))) { ++ ext_phy_link_up = 1; ++ vars->line_speed = SPEED_10000; ++ } else if ((link_status & (1<<0)) && ++ (!(link_status & (1<<13)))) { ++ ext_phy_link_up = 1; ++ vars->line_speed = SPEED_1000; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " up in 1G\n", params->port); ++ } else { ++ ext_phy_link_up = 0; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " is down\n", params->port); ++ } ++ break; ++ } ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ { ++ u16 link_status = 0; ++ u16 an1000_status = 0; ++ ++ if (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) { ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_LASI_STATUS, &val1); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_LASI_STATUS, &val2); ++ DP(NETIF_MSG_LINK, ++ "870x LASI status 0x%x->0x%x\n", ++ val1, val2); ++ } else { ++ /* In 8073, port1 is directed through emac0 and ++ * port0 is directed through emac1 ++ */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_STATUS, &val1); ++ ++ DP(NETIF_MSG_LINK, ++ "8703 LASI status 0x%x\n", ++ val1); ++ } ++ ++ /* clear the interrupt LASI status register */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_STATUS, &val2); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_STATUS, &val1); ++ DP(NETIF_MSG_LINK, "807x PCS status 0x%x->0x%x\n", ++ val2, val1); ++ /* Clear MSG-OUT */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, ++ &val1); ++ ++ /* Check the LASI */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &val2); ++ ++ DP(NETIF_MSG_LINK, "KR 0x9003 0x%x\n", val2); ++ ++ /* Check the link status */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_STATUS, &val2); ++ DP(NETIF_MSG_LINK, "KR PCS status 0x%x\n", val2); ++ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_STATUS, &val2); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_STATUS, &val1); ++ ext_phy_link_up = ((val1 & 4) == 4); ++ DP(NETIF_MSG_LINK, "PMA_REG_STATUS=0x%x\n", val1); ++ if (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) { ++ ++ if (ext_phy_link_up && ++ ((params->req_line_speed != ++ SPEED_10000))) { ++ if (bnx2x_bcm8073_xaui_wa(params) ++ != 0) { ++ ext_phy_link_up = 0; ++ break; ++ } ++ } ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_LINK_STATUS, ++ &an1000_status); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_LINK_STATUS, ++ &an1000_status); ++ ++ /* Check the link status on 1.1.2 */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_STATUS, &val2); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_STATUS, &val1); ++ DP(NETIF_MSG_LINK, "KR PMA status 0x%x->0x%x," ++ "an_link_status=0x%x\n", ++ val2, val1, an1000_status); ++ ++ ext_phy_link_up = (((val1 & 4) == 4) || ++ (an1000_status & (1<<1))); ++ if (ext_phy_link_up && ++ bnx2x_8073_is_snr_needed(params)) { ++ /* The SNR will improve about 2dbby ++ changing the BW and FEE main tap.*/ ++ ++ /* The 1st write to change FFE main ++ tap is set before restart AN */ ++ /* Change PLL Bandwidth in EDC ++ register */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_PLL_BANDWIDTH, ++ 0x26BC); ++ ++ /* Change CDR Bandwidth in EDC ++ register */ ++ bnx2x_cl45_write(bp, port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CDR_BANDWIDTH, ++ 0x0333); ++ } ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8073_SPEED_LINK_STATUS, ++ &link_status); ++ ++ /* Bits 0..2 --> speed detected, ++ bits 13..15--> link is down */ ++ if ((link_status & (1<<2)) && ++ (!(link_status & (1<<15)))) { ++ ext_phy_link_up = 1; ++ vars->line_speed = SPEED_10000; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " up in 10G\n", params->port); ++ } else if ((link_status & (1<<1)) && ++ (!(link_status & (1<<14)))) { ++ ext_phy_link_up = 1; ++ vars->line_speed = SPEED_2500; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " up in 2.5G\n", params->port); ++ } else if ((link_status & (1<<0)) && ++ (!(link_status & (1<<13)))) { ++ ext_phy_link_up = 1; ++ vars->line_speed = SPEED_1000; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " up in 1G\n", params->port); ++ } else { ++ ext_phy_link_up = 0; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " is down\n", params->port); ++ } ++ } else { ++ /* See if 1G link is up for the 8072 */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_LINK_STATUS, ++ &an1000_status); ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_LINK_STATUS, ++ &an1000_status); ++ if (an1000_status & (1<<1)) { ++ ext_phy_link_up = 1; ++ vars->line_speed = SPEED_1000; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " up in 1G\n", params->port); ++ } else if (ext_phy_link_up) { ++ ext_phy_link_up = 1; ++ vars->line_speed = SPEED_10000; ++ DP(NETIF_MSG_LINK, ++ "port %x: External link" ++ " up in 10G\n", params->port); ++ } ++ } ++ ++ ++ break; ++ } ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_STATUS, &val2); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_STATUS, &val1); ++ DP(NETIF_MSG_LINK, ++ "10G-base-T LASI status 0x%x->0x%x\n", ++ val2, val1); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_STATUS, &val2); ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_STATUS, &val1); ++ DP(NETIF_MSG_LINK, ++ "10G-base-T PMA status 0x%x->0x%x\n", ++ val2, val1); ++ ext_phy_link_up = ((val1 & 4) == 4); ++ /* if link is up ++ * print the AN outcome of the SFX7101 PHY ++ */ ++ if (ext_phy_link_up) { ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_MASTER_STATUS, ++ &val2); ++ vars->line_speed = SPEED_10000; ++ DP(NETIF_MSG_LINK, ++ "SFX7101 AN status 0x%x->Master=%x\n", ++ val2, ++ (val2 & (1<<14))); ++ } ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481: ++ /* Clear LASI interrupt. (Obsolete) */ ++ ++ DP(NETIF_MSG_LINK, "8481 LASI status reg = 0x%x\n", ++ val1); ++ ++ /* Check 10G-BaseT link status */ ++ /* Check PMD signal ok */ ++ bnx2x_cl45_read(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_8481_PMD_SIGNAL, ++ &val2); ++ ++ /* Check link 10G */ ++ if (val2 & (1<<11)) { ++ vars->line_speed = SPEED_10000; ++ ext_phy_link_up = 1; ++ } else { /* Check Legacy speed link */ ++ u16 legacy_status, legacy_speed; ++ ++ /* Enable expansion register 0x42 ++ (Operation mode status) */ ++ bnx2x_cl45_write(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_EXPANSION_REG_ACCESS, ++ 0xf42); ++ ++ /* Get legacy speed operation status */ ++ bnx2x_cl45_read(bp, params->port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_8481_EXPANSION_REG_RD_RW, ++ &legacy_status); ++ ++ DP(NETIF_MSG_LINK, "Legacy speed status" ++ " = 0x%x\n", legacy_status); ++ ext_phy_link_up = ((legacy_status & (1<<11)) ++ == (1<<11)); ++ if (ext_phy_link_up) { ++ legacy_speed = (legacy_status & (3<<9)); ++ if (legacy_speed == (0<<9)) ++ vars->line_speed = SPEED_10; ++ else if (legacy_speed == (1<<9)) ++ vars->line_speed = ++ SPEED_100; ++ else if (legacy_speed == (2<<9)) ++ vars->line_speed = ++ SPEED_1000; ++ else /* Should not happen */ ++ vars->line_speed = 0; ++ ++ if (legacy_status & (1<<8)) ++ vars->duplex = DUPLEX_FULL; ++ else ++ vars->duplex = DUPLEX_HALF; ++ ++ DP(NETIF_MSG_LINK, "Link is up " ++ "in %dMbps, is_duplex_full" ++ "= %d\n", ++ vars->line_speed, ++ (vars->duplex == DUPLEX_FULL)); ++ } ++ } ++ break; ++ default: ++ DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n", ++ params->ext_phy_config); ++ ext_phy_link_up = 0; ++ break; ++ } ++ ++ } else { /* SerDes */ ++ ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config); ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT: ++ DP(NETIF_MSG_LINK, "SerDes Direct\n"); ++ ext_phy_link_up = 1; ++ break; ++ ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482: ++ DP(NETIF_MSG_LINK, "SerDes 5482\n"); ++ ext_phy_link_up = 1; ++ break; ++ ++ default: ++ DP(NETIF_MSG_LINK, ++ "BAD SerDes ext_phy_config 0x%x\n", ++ params->ext_phy_config); ++ ext_phy_link_up = 0; ++ break; ++ } ++ } ++ ++ return ext_phy_link_up; ++} ++ ++static void bnx2x_link_int_enable(struct link_params *params) ++{ ++ u8 port = params->port; ++ u32 ext_phy_type; ++ u32 mask; ++ struct bnx2x *bp = params->bp; ++ ++ /* setting the status to report on link up ++ for either XGXS or SerDes */ ++ ++ if (params->switch_cfg == SWITCH_CFG_10G) { ++ mask = (NIG_MASK_XGXS0_LINK10G | ++ NIG_MASK_XGXS0_LINK_STATUS); ++ DP(NETIF_MSG_LINK, "enabled XGXS interrupt\n"); ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) && ++ (ext_phy_type != ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN)) { ++ mask |= NIG_MASK_MI_INT; ++ DP(NETIF_MSG_LINK, "enabled external phy int\n"); ++ } ++ ++ } else { /* SerDes */ ++ mask = NIG_MASK_SERDES0_LINK_STATUS; ++ DP(NETIF_MSG_LINK, "enabled SerDes interrupt\n"); ++ ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config); ++ if ((ext_phy_type != ++ PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT) && ++ (ext_phy_type != ++ PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN)) { ++ mask |= NIG_MASK_MI_INT; ++ DP(NETIF_MSG_LINK, "enabled external phy int\n"); ++ } ++ } ++ bnx2x_bits_en(bp, ++ NIG_REG_MASK_INTERRUPT_PORT0 + port*4, ++ mask); ++ ++ DP(NETIF_MSG_LINK, "port %x, is_xgxs %x, int_status 0x%x\n", port, ++ (params->switch_cfg == SWITCH_CFG_10G), ++ REG_RD(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4)); ++ DP(NETIF_MSG_LINK, " int_mask 0x%x, MI_INT %x, SERDES_LINK %x\n", ++ REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4), ++ REG_RD(bp, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port*0x18), ++ REG_RD(bp, NIG_REG_SERDES0_STATUS_LINK_STATUS+port*0x3c)); ++ DP(NETIF_MSG_LINK, " 10G %x, XGXS_LINK %x\n", ++ REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68), ++ REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68)); ++} ++ ++static void bnx2x_8481_rearm_latch_signal(struct bnx2x *bp, u8 port, ++ u8 is_mi_int) ++{ ++ u32 latch_status = 0, is_mi_int_status; ++ /* Disable the MI INT ( external phy int ) ++ * by writing 1 to the status register. Link down indication ++ * is high-active-signal, so in this case we need to write the ++ * status to clear the XOR ++ */ ++ /* Read Latched signals */ ++ latch_status = REG_RD(bp, ++ NIG_REG_LATCH_STATUS_0 + port*8); ++ is_mi_int_status = REG_RD(bp, ++ NIG_REG_STATUS_INTERRUPT_PORT0 + port*4); ++ DP(NETIF_MSG_LINK, "original_signal = 0x%x, nig_status = 0x%x," ++ "latch_status = 0x%x\n", ++ is_mi_int, is_mi_int_status, latch_status); ++ /* Handle only those with latched-signal=up.*/ ++ if (latch_status & 1) { ++ /* For all latched-signal=up,Write original_signal to status */ ++ if (is_mi_int) ++ bnx2x_bits_en(bp, ++ NIG_REG_STATUS_INTERRUPT_PORT0 ++ + port*4, ++ NIG_STATUS_EMAC0_MI_INT); ++ else ++ bnx2x_bits_dis(bp, ++ NIG_REG_STATUS_INTERRUPT_PORT0 ++ + port*4, ++ NIG_STATUS_EMAC0_MI_INT); ++ /* For all latched-signal=up : Re-Arm Latch signals */ ++ REG_WR(bp, NIG_REG_LATCH_STATUS_0 + port*8, ++ (latch_status & 0xfffe) | (latch_status & 1)); ++ } ++} ++/* ++ * link management ++ */ ++static void bnx2x_link_int_ack(struct link_params *params, ++ struct link_vars *vars, u8 is_10g, ++ u8 is_mi_int) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ ++ /* first reset all status ++ * we assume only one line will be change at a time */ ++ bnx2x_bits_dis(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4, ++ (NIG_STATUS_XGXS0_LINK10G | ++ NIG_STATUS_XGXS0_LINK_STATUS | ++ NIG_STATUS_SERDES0_LINK_STATUS)); ++ if (XGXS_EXT_PHY_TYPE(params->ext_phy_config) ++ == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481) { ++ bnx2x_8481_rearm_latch_signal(bp, port, is_mi_int); ++ } ++ if (vars->phy_link_up) { ++ if (is_10g) { ++ /* Disable the 10G link interrupt ++ * by writing 1 to the status register ++ */ ++ DP(NETIF_MSG_LINK, "10G XGXS phy link up\n"); ++ bnx2x_bits_en(bp, ++ NIG_REG_STATUS_INTERRUPT_PORT0 + port*4, ++ NIG_STATUS_XGXS0_LINK10G); ++ ++ } else if (params->switch_cfg == SWITCH_CFG_10G) { ++ /* Disable the link interrupt ++ * by writing 1 to the relevant lane ++ * in the status register ++ */ ++ u32 ser_lane = ((params->lane_config & ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >> ++ PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT); ++ ++ DP(NETIF_MSG_LINK, "%d speed XGXS phy link up\n", ++ vars->line_speed); ++ bnx2x_bits_en(bp, ++ NIG_REG_STATUS_INTERRUPT_PORT0 + port*4, ++ ((1 << ser_lane) << ++ NIG_STATUS_XGXS0_LINK_STATUS_SIZE)); ++ ++ } else { /* SerDes */ ++ DP(NETIF_MSG_LINK, "SerDes phy link up\n"); ++ /* Disable the link interrupt ++ * by writing 1 to the status register ++ */ ++ bnx2x_bits_en(bp, ++ NIG_REG_STATUS_INTERRUPT_PORT0 + port*4, ++ NIG_STATUS_SERDES0_LINK_STATUS); ++ } ++ ++ } else { /* link_down */ ++ } ++} ++ ++static u8 bnx2x_format_ver(u32 num, u8 *str, u16 len) ++{ ++ u8 *str_ptr = str; ++ u32 mask = 0xf0000000; ++ u8 shift = 8*4; ++ u8 digit; ++ if (len < 10) { ++ /* Need more then 10chars for this format */ ++ *str_ptr = '\0'; ++ return -EINVAL; ++ } ++ while (shift > 0) { ++ ++ shift -= 4; ++ digit = ((num & mask) >> shift); ++ if (digit < 0xa) ++ *str_ptr = digit + '0'; ++ else ++ *str_ptr = digit - 0xa + 'a'; ++ str_ptr++; ++ mask = mask >> 4; ++ if (shift == 4*4) { ++ *str_ptr = ':'; ++ str_ptr++; ++ } ++ } ++ *str_ptr = '\0'; ++ return 0; ++} ++ ++static void bnx2x_turn_on_ef(struct bnx2x *bp, u8 port, u8 ext_phy_addr, ++ u32 ext_phy_type) ++{ ++ u32 cnt = 0; ++ u16 ctrl = 0; ++ ++ /* Enable EMAC0 in to enable MDIO */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, ++ (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port)); ++ msleep(5); ++ ++ /* take ext phy out of reset */ ++ bnx2x_set_gpio(bp, ++ MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_HIGH, ++ port); ++ ++ bnx2x_set_gpio(bp, ++ MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_HIGH, ++ port); ++ ++ /* wait for 5ms */ ++ msleep(5); ++ ++ for (cnt = 0; cnt < 1000; cnt++) { ++ msleep(1); ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ &ctrl); ++ if (!(ctrl & (1<<15))) { ++ DP(NETIF_MSG_LINK, "Reset completed\n\n"); ++ break; ++ } ++ } ++} ++ ++static void bnx2x_turn_off_sf(struct bnx2x *bp, u8 port) ++{ ++ /* put sf to reset */ ++ bnx2x_set_gpio(bp, ++ MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_LOW, ++ port); ++ bnx2x_set_gpio(bp, ++ MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_LOW, ++ port); ++} ++ ++u8 bnx2x_get_ext_phy_fw_version(struct link_params *params, u8 driver_loaded, ++ u8 *version, u16 len) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 ext_phy_type = 0; ++ u32 spirom_ver = 0; ++ u8 status = 0; ++ ++ if (version == NULL || params == NULL) ++ return -EINVAL; ++ ++ spirom_ver = REG_RD(bp, params->shmem_base + ++ offsetof(struct shmem_region, ++ port_mb[params->port].ext_phy_fw_version)); ++ ++ /* reset the returned value to zero */ ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ ++ if (len < 5) ++ return -EINVAL; ++ ++ version[0] = (spirom_ver & 0xFF); ++ version[1] = (spirom_ver & 0xFF00) >> 8; ++ version[2] = (spirom_ver & 0xFF0000) >> 16; ++ version[3] = (spirom_ver & 0xFF000000) >> 24; ++ version[4] = '\0'; ++ ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ status = bnx2x_format_ver(spirom_ver, version, len); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481: ++ spirom_ver = ((spirom_ver & 0xF80) >> 7) << 16 | ++ (spirom_ver & 0x7F); ++ status = bnx2x_format_ver(spirom_ver, version, len); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE: ++ DP(NETIF_MSG_LINK, "bnx2x_get_ext_phy_fw_version:" ++ " type is FAILURE!\n"); ++ status = -EINVAL; ++ break; ++ ++ default: ++ break; ++ } ++ return status; ++} ++ ++static void bnx2x_set_xgxs_loopback(struct link_params *params, ++ struct link_vars *vars, ++ u8 is_10g) ++{ ++ u8 port = params->port; ++ struct bnx2x *bp = params->bp; ++ ++ if (is_10g) { ++ u32 md_devad; ++ ++ DP(NETIF_MSG_LINK, "XGXS 10G loopback enable\n"); ++ ++ /* change the uni_phy_addr in the nig */ ++ md_devad = REG_RD(bp, (NIG_REG_XGXS0_CTRL_MD_DEVAD + ++ port*0x18)); ++ ++ REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_DEVAD + port*0x18, 0x5); ++ ++ bnx2x_cl45_write(bp, port, 0, ++ params->phy_addr, ++ 5, ++ (MDIO_REG_BANK_AER_BLOCK + ++ (MDIO_AER_BLOCK_AER_REG & 0xf)), ++ 0x2800); ++ ++ bnx2x_cl45_write(bp, port, 0, ++ params->phy_addr, ++ 5, ++ (MDIO_REG_BANK_CL73_IEEEB0 + ++ (MDIO_CL73_IEEEB0_CL73_AN_CONTROL & 0xf)), ++ 0x6041); ++ msleep(200); ++ /* set aer mmd back */ ++ bnx2x_set_aer_mmd(params, vars); ++ ++ /* and md_devad */ ++ REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_DEVAD + port*0x18, ++ md_devad); ++ ++ } else { ++ u16 mii_control; ++ ++ DP(NETIF_MSG_LINK, "XGXS 1G loopback enable\n"); ++ ++ CL45_RD_OVER_CL22(bp, port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ &mii_control); ++ ++ CL45_WR_OVER_CL22(bp, port, ++ params->phy_addr, ++ MDIO_REG_BANK_COMBO_IEEE0, ++ MDIO_COMBO_IEEE0_MII_CONTROL, ++ (mii_control | ++ MDIO_COMBO_IEEO_MII_CONTROL_LOOPBACK)); ++ } ++} ++ ++ ++static void bnx2x_ext_phy_loopback(struct link_params *params) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 ext_phy_addr; ++ u32 ext_phy_type; ++ ++ if (params->switch_cfg == SWITCH_CFG_10G) { ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ext_phy_addr = XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ /* CL37 Autoneg Enabled */ ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN: ++ DP(NETIF_MSG_LINK, ++ "ext_phy_loopback: We should not get here\n"); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ DP(NETIF_MSG_LINK, "ext_phy_loopback: 8705\n"); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ DP(NETIF_MSG_LINK, "ext_phy_loopback: 8706\n"); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ DP(NETIF_MSG_LINK, "PMA/PMD ext_phy_loopback: 8726\n"); ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ 0x0001); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ /* SFX7101_XGXS_TEST1 */ ++ bnx2x_cl45_write(bp, params->port, ext_phy_type, ++ ext_phy_addr, ++ MDIO_XS_DEVAD, ++ MDIO_XS_SFX7101_XGXS_TEST1, ++ 0x100); ++ DP(NETIF_MSG_LINK, ++ "ext_phy_loopback: set ext phy loopback\n"); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ ++ break; ++ } /* switch external PHY type */ ++ } else { ++ /* serdes */ ++ ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config); ++ ext_phy_addr = (params->ext_phy_config & ++ PORT_HW_CFG_SERDES_EXT_PHY_ADDR_MASK) ++ >> PORT_HW_CFG_SERDES_EXT_PHY_ADDR_SHIFT; ++ } ++} ++ ++ ++/* ++ *------------------------------------------------------------------------ ++ * bnx2x_override_led_value - ++ * ++ * Override the led value of the requsted led ++ * ++ *------------------------------------------------------------------------ ++ */ ++u8 bnx2x_override_led_value(struct bnx2x *bp, u8 port, ++ u32 led_idx, u32 value) ++{ ++ u32 reg_val; ++ ++ /* If port 0 then use EMAC0, else use EMAC1*/ ++ u32 emac_base = (port) ? GRCBASE_EMAC1 : GRCBASE_EMAC0; ++ ++ DP(NETIF_MSG_LINK, ++ "bnx2x_override_led_value() port %x led_idx %d value %d\n", ++ port, led_idx, value); ++ ++ switch (led_idx) { ++ case 0: /* 10MB led */ ++ /* Read the current value of the LED register in ++ the EMAC block */ ++ reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED); ++ /* Set the OVERRIDE bit to 1 */ ++ reg_val |= EMAC_LED_OVERRIDE; ++ /* If value is 1, set the 10M_OVERRIDE bit, ++ otherwise reset it.*/ ++ reg_val = (value == 1) ? (reg_val | EMAC_LED_10MB_OVERRIDE) : ++ (reg_val & ~EMAC_LED_10MB_OVERRIDE); ++ REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val); ++ break; ++ case 1: /*100MB led */ ++ /*Read the current value of the LED register in ++ the EMAC block */ ++ reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED); ++ /* Set the OVERRIDE bit to 1 */ ++ reg_val |= EMAC_LED_OVERRIDE; ++ /* If value is 1, set the 100M_OVERRIDE bit, ++ otherwise reset it.*/ ++ reg_val = (value == 1) ? (reg_val | EMAC_LED_100MB_OVERRIDE) : ++ (reg_val & ~EMAC_LED_100MB_OVERRIDE); ++ REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val); ++ break; ++ case 2: /* 1000MB led */ ++ /* Read the current value of the LED register in the ++ EMAC block */ ++ reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED); ++ /* Set the OVERRIDE bit to 1 */ ++ reg_val |= EMAC_LED_OVERRIDE; ++ /* If value is 1, set the 1000M_OVERRIDE bit, otherwise ++ reset it. */ ++ reg_val = (value == 1) ? (reg_val | EMAC_LED_1000MB_OVERRIDE) : ++ (reg_val & ~EMAC_LED_1000MB_OVERRIDE); ++ REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val); ++ break; ++ case 3: /* 2500MB led */ ++ /* Read the current value of the LED register in the ++ EMAC block*/ ++ reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED); ++ /* Set the OVERRIDE bit to 1 */ ++ reg_val |= EMAC_LED_OVERRIDE; ++ /* If value is 1, set the 2500M_OVERRIDE bit, otherwise ++ reset it.*/ ++ reg_val = (value == 1) ? (reg_val | EMAC_LED_2500MB_OVERRIDE) : ++ (reg_val & ~EMAC_LED_2500MB_OVERRIDE); ++ REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val); ++ break; ++ case 4: /*10G led */ ++ if (port == 0) { ++ REG_WR(bp, NIG_REG_LED_10G_P0, ++ value); ++ } else { ++ REG_WR(bp, NIG_REG_LED_10G_P1, ++ value); ++ } ++ break; ++ case 5: /* TRAFFIC led */ ++ /* Find if the traffic control is via BMAC or EMAC */ ++ if (port == 0) ++ reg_val = REG_RD(bp, NIG_REG_NIG_EMAC0_EN); ++ else ++ reg_val = REG_RD(bp, NIG_REG_NIG_EMAC1_EN); ++ ++ /* Override the traffic led in the EMAC:*/ ++ if (reg_val == 1) { ++ /* Read the current value of the LED register in ++ the EMAC block */ ++ reg_val = REG_RD(bp, emac_base + ++ EMAC_REG_EMAC_LED); ++ /* Set the TRAFFIC_OVERRIDE bit to 1 */ ++ reg_val |= EMAC_LED_OVERRIDE; ++ /* If value is 1, set the TRAFFIC bit, otherwise ++ reset it.*/ ++ reg_val = (value == 1) ? (reg_val | EMAC_LED_TRAFFIC) : ++ (reg_val & ~EMAC_LED_TRAFFIC); ++ REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val); ++ } else { /* Override the traffic led in the BMAC: */ ++ REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 ++ + port*4, 1); ++ REG_WR(bp, NIG_REG_LED_CONTROL_TRAFFIC_P0 + port*4, ++ value); ++ } ++ break; ++ default: ++ DP(NETIF_MSG_LINK, ++ "bnx2x_override_led_value() unknown led index %d " ++ "(should be 0-5)\n", led_idx); ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++ ++u8 bnx2x_set_led(struct bnx2x *bp, u8 port, u8 mode, u32 speed, ++ u16 hw_led_mode, u32 chip_id) ++{ ++ u8 rc = 0; ++ u32 tmp; ++ u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0; ++ ++ DP(NETIF_MSG_LINK, "bnx2x_set_led: port %x, mode %d\n", port, mode); ++ DP(NETIF_MSG_LINK, "speed 0x%x, hw_led_mode 0x%x\n", ++ speed, hw_led_mode); ++ switch (mode) { ++ case LED_MODE_OFF: ++ REG_WR(bp, NIG_REG_LED_10G_P0 + port*4, 0); ++ REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, ++ SHARED_HW_CFG_LED_MAC1); ++ ++ tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED); ++ EMAC_WR(bp, EMAC_REG_EMAC_LED, (tmp | EMAC_LED_OVERRIDE)); ++ break; ++ ++ case LED_MODE_OPER: ++ REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, hw_led_mode); ++ REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 + ++ port*4, 0); ++ /* Set blinking rate to ~15.9Hz */ ++ REG_WR(bp, NIG_REG_LED_CONTROL_BLINK_RATE_P0 + port*4, ++ LED_BLINK_RATE_VAL); ++ REG_WR(bp, NIG_REG_LED_CONTROL_BLINK_RATE_ENA_P0 + ++ port*4, 1); ++ tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED); ++ EMAC_WR(bp, EMAC_REG_EMAC_LED, ++ (tmp & (~EMAC_LED_OVERRIDE))); ++ ++ if (CHIP_IS_E1(bp) && ++ ((speed == SPEED_2500) || ++ (speed == SPEED_1000) || ++ (speed == SPEED_100) || ++ (speed == SPEED_10))) { ++ /* On Everest 1 Ax chip versions for speeds less than ++ 10G LED scheme is different */ ++ REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 ++ + port*4, 1); ++ REG_WR(bp, NIG_REG_LED_CONTROL_TRAFFIC_P0 + ++ port*4, 0); ++ REG_WR(bp, NIG_REG_LED_CONTROL_BLINK_TRAFFIC_P0 + ++ port*4, 1); ++ } ++ break; ++ ++ default: ++ rc = -EINVAL; ++ DP(NETIF_MSG_LINK, "bnx2x_set_led: Invalid led mode %d\n", ++ mode); ++ break; ++ } ++ return rc; ++ ++} ++ ++u8 bnx2x_test_link(struct link_params *params, struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u16 gp_status = 0; ++ ++ CL45_RD_OVER_CL22(bp, params->port, ++ params->phy_addr, ++ MDIO_REG_BANK_GP_STATUS, ++ MDIO_GP_STATUS_TOP_AN_STATUS1, ++ &gp_status); ++ /* link is up only if both local phy and external phy are up */ ++ if ((gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS) && ++ bnx2x_ext_phy_is_link_up(params, vars)) ++ return 0; ++ ++ return -ESRCH; ++} ++ ++static u8 bnx2x_link_initialize(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u8 rc = 0; ++ u8 non_ext_phy; ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ /* Activate the external PHY */ ++ bnx2x_ext_phy_reset(params, vars); ++ ++ bnx2x_set_aer_mmd(params, vars); ++ ++ if (vars->phy_flags & PHY_XGXS_FLAG) ++ bnx2x_set_master_ln(params); ++ ++ rc = bnx2x_reset_unicore(params); ++ /* reset the SerDes and wait for reset bit return low */ ++ if (rc != 0) ++ return rc; ++ ++ bnx2x_set_aer_mmd(params, vars); ++ ++ /* setting the masterLn_def again after the reset */ ++ if (vars->phy_flags & PHY_XGXS_FLAG) { ++ bnx2x_set_master_ln(params); ++ bnx2x_set_swap_lanes(params); ++ } ++ ++ if (vars->phy_flags & PHY_XGXS_FLAG) { ++ if ((params->req_line_speed && ++ ((params->req_line_speed == SPEED_100) || ++ (params->req_line_speed == SPEED_10))) || ++ (!params->req_line_speed && ++ (params->speed_cap_mask >= ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL) && ++ (params->speed_cap_mask < ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_1G) ++ )) { ++ vars->phy_flags |= PHY_SGMII_FLAG; ++ } else { ++ vars->phy_flags &= ~PHY_SGMII_FLAG; ++ } ++ } ++ /* In case of external phy existance, the line speed would be the ++ line speed linked up by the external phy. In case it is direct only, ++ then the line_speed during initialization will be equal to the ++ req_line_speed*/ ++ vars->line_speed = params->req_line_speed; ++ ++ bnx2x_calc_ieee_aneg_adv(params, &vars->ieee_fc); ++ ++ /* init ext phy and enable link state int */ ++ non_ext_phy = ((ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) || ++ (params->loopback_mode == LOOPBACK_XGXS_10)); ++ ++ if (non_ext_phy || ++ (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) || ++ (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726) || ++ (params->loopback_mode == LOOPBACK_EXT_PHY)) { ++ if (params->req_line_speed == SPEED_AUTO_NEG) ++ bnx2x_set_parallel_detection(params, vars->phy_flags); ++ bnx2x_init_internal_phy(params, vars, 0); ++ } ++ ++ if (!non_ext_phy) ++ rc |= bnx2x_ext_phy_init(params, vars); ++ ++ bnx2x_bits_dis(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4, ++ (NIG_STATUS_XGXS0_LINK10G | ++ NIG_STATUS_XGXS0_LINK_STATUS | ++ NIG_STATUS_SERDES0_LINK_STATUS)); ++ ++ return rc; ++ ++} ++ ++ ++u8 bnx2x_phy_init(struct link_params *params, struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 val; ++ ++ DP(NETIF_MSG_LINK, "Phy Initialization started\n"); ++ DP(NETIF_MSG_LINK, "req_speed %d, req_flowctrl %d\n", ++ params->req_line_speed, params->req_flow_ctrl); ++ vars->link_status = 0; ++ vars->phy_link_up = 0; ++ vars->link_up = 0; ++ vars->line_speed = 0; ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ vars->mac_type = MAC_TYPE_NONE; ++ ++ if (params->switch_cfg == SWITCH_CFG_1G) ++ vars->phy_flags = PHY_SERDES_FLAG; ++ else ++ vars->phy_flags = PHY_XGXS_FLAG; ++ ++ /* disable attentions */ ++ bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + params->port*4, ++ (NIG_MASK_XGXS0_LINK_STATUS | ++ NIG_MASK_XGXS0_LINK10G | ++ NIG_MASK_SERDES0_LINK_STATUS | ++ NIG_MASK_MI_INT)); ++ ++ bnx2x_emac_init(params, vars); ++ ++ if (CHIP_REV_IS_FPGA(bp)) { ++ ++ vars->link_up = 1; ++ vars->line_speed = SPEED_10000; ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ vars->link_status = (LINK_STATUS_LINK_UP | LINK_10GTFD); ++ /* enable on E1.5 FPGA */ ++ if (!CHIP_IS_E1(bp)) { ++ vars->flow_ctrl |= ++ (BNX2X_FLOW_CTRL_TX | ++ BNX2X_FLOW_CTRL_RX); ++ vars->link_status |= ++ (LINK_STATUS_TX_FLOW_CONTROL_ENABLED | ++ LINK_STATUS_RX_FLOW_CONTROL_ENABLED); ++ } ++ ++ bnx2x_emac_enable(params, vars, 0); ++ if (!(CHIP_IS_E2_NOT_PHASE0(params->chip_id))) ++ bnx2x_pbf_update(params, vars->flow_ctrl, ++ vars->line_speed); ++ /* disable drain */ ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + params->port*4, 0); ++ ++ /* update shared memory */ ++ bnx2x_update_mng(params, vars->link_status); ++ ++ return 0; ++ ++ } else ++ if (CHIP_REV_IS_EMUL(bp)) { ++ ++ vars->link_up = 1; ++ vars->line_speed = SPEED_10000; ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ vars->link_status = (LINK_STATUS_LINK_UP | LINK_10GTFD); ++ ++ bnx2x_bmac_enable(params, vars, 0); ++ ++ if (!(CHIP_IS_E2_NOT_PHASE0(params->chip_id))) ++ bnx2x_pbf_update(params, vars->flow_ctrl, ++ vars->line_speed); ++ /* Disable drain */ ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE ++ + params->port*4, 0); ++ ++ /* update shared memory */ ++ bnx2x_update_mng(params, vars->link_status); ++ ++ return 0; ++ ++ } else ++ if (params->loopback_mode == LOOPBACK_BMAC) { ++ ++ vars->link_up = 1; ++ vars->line_speed = SPEED_10000; ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ vars->mac_type = MAC_TYPE_BMAC; ++ ++ vars->phy_flags = PHY_XGXS_FLAG; ++ ++ bnx2x_phy_deassert(params, vars->phy_flags); ++ /* set bmac loopback */ ++ bnx2x_bmac_enable(params, vars, 1); ++ ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + ++ params->port*4, 0); ++ ++ } else if (params->loopback_mode == LOOPBACK_EMAC) { ++ ++ vars->link_up = 1; ++ vars->line_speed = SPEED_1000; ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ vars->mac_type = MAC_TYPE_EMAC; ++ ++ vars->phy_flags = PHY_XGXS_FLAG; ++ ++ bnx2x_phy_deassert(params, vars->phy_flags); ++ /* set bmac loopback */ ++ bnx2x_emac_enable(params, vars, 1); ++ bnx2x_emac_program(params, vars->line_speed, ++ vars->duplex); ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + ++ params->port*4, 0); ++ ++ } else if ((params->loopback_mode == LOOPBACK_XGXS_10) || ++ (params->loopback_mode == LOOPBACK_EXT_PHY)) { ++ ++ vars->link_up = 1; ++ vars->line_speed = SPEED_10000; ++ vars->duplex = DUPLEX_FULL; ++ vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ ++ vars->phy_flags = PHY_XGXS_FLAG; ++ ++ val = REG_RD(bp, ++ NIG_REG_XGXS0_CTRL_PHY_ADDR+ ++ params->port*0x18); ++ params->phy_addr = (u8)val; ++ ++ bnx2x_phy_deassert(params, vars->phy_flags); ++ bnx2x_link_initialize(params, vars); ++ ++ vars->mac_type = MAC_TYPE_BMAC; ++ ++ bnx2x_bmac_enable(params, vars, 0); ++ ++ if (params->loopback_mode == LOOPBACK_XGXS_10) { ++ /* set 10G XGXS loopback */ ++ bnx2x_set_xgxs_loopback(params, vars, 1); ++ } else { ++ /* set external phy loopback */ ++ bnx2x_ext_phy_loopback(params); ++ } ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + ++ params->port*4, 0); ++ ++ bnx2x_set_led(bp, params->port, LED_MODE_OPER, ++ vars->line_speed, params->hw_led_mode, ++ params->chip_id); ++ ++ } else ++ /* No loopback */ ++ { ++ bnx2x_phy_deassert(params, vars->phy_flags); ++ switch (params->switch_cfg) { ++ case SWITCH_CFG_1G: ++ vars->phy_flags |= PHY_SERDES_FLAG; ++ if ((params->ext_phy_config & ++ PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK) == ++ PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482) { ++ vars->phy_flags |= PHY_SGMII_FLAG; ++ } ++ ++ val = REG_RD(bp, ++ NIG_REG_SERDES0_CTRL_PHY_ADDR+ ++ params->port*0x10); ++ ++ params->phy_addr = (u8)val; ++ ++ break; ++ case SWITCH_CFG_10G: ++ vars->phy_flags |= PHY_XGXS_FLAG; ++ val = REG_RD(bp, ++ NIG_REG_XGXS0_CTRL_PHY_ADDR+ ++ params->port*0x18); ++ params->phy_addr = (u8)val; ++ ++ break; ++ default: ++ DP(NETIF_MSG_LINK, "Invalid switch_cfg\n"); ++ return -EINVAL; ++ } ++ DP(NETIF_MSG_LINK, "Phy address = 0x%x\n", params->phy_addr); ++ ++ bnx2x_link_initialize(params, vars); ++ msleep(30); ++ bnx2x_link_int_enable(params); ++ } ++ return 0; ++} ++ ++static void bnx2x_8726_reset_phy(struct bnx2x *bp, u8 port, u8 ext_phy_addr) ++{ ++ DP(NETIF_MSG_LINK, "bnx2x_8726_reset_phy port %d\n", port); ++ ++ /* Set serial boot control for external load */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_GEN_CTRL, 0x0001); ++} ++ ++u8 bnx2x_link_reset(struct link_params *params, struct link_vars *vars, ++ u8 reset_ext_phy) ++{ ++ struct bnx2x *bp = params->bp; ++ u32 ext_phy_config = params->ext_phy_config; ++ u16 hw_led_mode = params->hw_led_mode; ++ u32 chip_id = params->chip_id; ++ u8 port = params->port; ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(ext_phy_config); ++ u32 val = REG_RD(bp, params->shmem_base + ++ offsetof(struct shmem_region, dev_info. ++ port_feature_config[params->port]. ++ config)); ++ ++ /* disable attentions */ ++ vars->link_status = 0; ++ bnx2x_update_mng(params, vars->link_status); ++ bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, ++ (NIG_MASK_XGXS0_LINK_STATUS | ++ NIG_MASK_XGXS0_LINK10G | ++ NIG_MASK_SERDES0_LINK_STATUS | ++ NIG_MASK_MI_INT)); ++ ++ /* activate nig drain */ ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1); ++ ++ /* disable nig egress interface */ ++ REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0); ++ REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0); ++ ++ /* Stop BigMac rx */ ++ bnx2x_bmac_rx_disable(bp, params->chip_id, port); ++ ++ /* disable emac */ ++ REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0); ++ ++ msleep(10); ++ /* The PHY reset is controled by GPIO 1 ++ * Hold it as vars low ++ */ ++ /* clear link led */ ++ bnx2x_set_led(bp, port, LED_MODE_OFF, 0, hw_led_mode, chip_id); ++ if (reset_ext_phy) { ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ { ++ ++ /* Disable Transmitter */ ++ u8 ext_phy_addr = ++ XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) == ++ PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_DISABLE_TX_LASER) ++ bnx2x_sfp_set_transmitter(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr, 0); ++ break; ++ } ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ DP(NETIF_MSG_LINK, "Setting 8073 port %d into " ++ "low power mode\n", ++ port); ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, ++ port); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ { ++ u8 ext_phy_addr = ++ XGXS_EXT_PHY_ADDR(params->ext_phy_config); ++ /* Set soft reset */ ++ bnx2x_8726_reset_phy(bp, params->port, ext_phy_addr); ++ break; ++ } ++ default: ++ /* HW reset */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, ++ port); ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, ++ port); ++ DP(NETIF_MSG_LINK, "reset external PHY\n"); ++ } ++ } ++ /* reset the SerDes/XGXS */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_CLEAR, ++ (0x1ff << (port*16))); ++ ++ /* reset BigMac */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, ++ (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port)); ++ ++ /* disable nig ingress interface */ ++ REG_WR(bp, NIG_REG_BMAC0_IN_EN + port*4, 0); ++ REG_WR(bp, NIG_REG_EMAC0_IN_EN + port*4, 0); ++ REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0); ++ REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0); ++ vars->link_up = 0; ++ return 0; ++} ++ ++static u8 bnx2x_update_link_down(struct link_params *params, ++ struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ ++ DP(NETIF_MSG_LINK, "Port %x: Link is down\n", port); ++ bnx2x_set_led(bp, port, LED_MODE_OFF, ++ 0, params->hw_led_mode, ++ params->chip_id); ++ ++ /* indicate no mac active */ ++ vars->mac_type = MAC_TYPE_NONE; ++ ++ /* update shared memory */ ++ vars->link_status = 0; ++ vars->line_speed = 0; ++ bnx2x_update_mng(params, vars->link_status); ++ ++ /* activate nig drain */ ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1); ++ ++ /* disable emac */ ++ REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0); ++ ++ msleep(10); ++ ++ /* reset BigMac */ ++ bnx2x_bmac_rx_disable(bp, params->chip_id, params->port); ++ REG_WR(bp, GRCBASE_MISC + ++ MISC_REGISTERS_RESET_REG_2_CLEAR, ++ (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port)); ++ return 0; ++} ++ ++static u8 bnx2x_update_link_up(struct link_params *params, ++ struct link_vars *vars, ++ u8 link_10g, u32 gp_status) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u8 rc = 0; ++ ++ vars->link_status |= LINK_STATUS_LINK_UP; ++ if (link_10g) { ++ bnx2x_bmac_enable(params, vars, 0); ++ bnx2x_set_led(bp, port, LED_MODE_OPER, ++ SPEED_10000, params->hw_led_mode, ++ params->chip_id); ++ ++ } else { ++ bnx2x_emac_enable(params, vars, 0); ++ rc = bnx2x_emac_program(params, vars->line_speed, ++ vars->duplex); ++ ++ /* AN complete? */ ++ if (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) { ++ if (!(vars->phy_flags & ++ PHY_SGMII_FLAG)) ++ bnx2x_set_gmii_tx_driver(params); ++ } ++ } ++ ++ /* PBF - link up */ ++ if (!(CHIP_IS_E2_NOT_PHASE0(params->chip_id))) ++ rc |= bnx2x_pbf_update(params, vars->flow_ctrl, ++ vars->line_speed); ++ ++ /* disable drain */ ++ REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 0); ++ ++ /* update shared memory */ ++ bnx2x_update_mng(params, vars->link_status); ++ msleep(20); ++ return rc; ++} ++/* This function should called upon link interrupt */ ++/* In case vars->link_up, driver needs to ++ 1. Update the pbf ++ 2. Disable drain ++ 3. Update the shared memory ++ 4. Indicate link up ++ 5. Set LEDs ++ Otherwise, ++ 1. Update shared memory ++ 2. Reset BigMac ++ 3. Report link down ++ 4. Unset LEDs ++*/ ++u8 bnx2x_link_update(struct link_params *params, struct link_vars *vars) ++{ ++ struct bnx2x *bp = params->bp; ++ u8 port = params->port; ++ u16 gp_status; ++ u8 link_10g; ++ u8 ext_phy_link_up, rc = 0; ++ u32 ext_phy_type; ++ u8 is_mi_int = 0; ++ ++ DP(NETIF_MSG_LINK, "port %x, XGXS?%x, int_status 0x%x\n", ++ port, (vars->phy_flags & PHY_XGXS_FLAG), ++ REG_RD(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4)); ++ ++ is_mi_int = (u8)(REG_RD(bp, NIG_REG_EMAC0_STATUS_MISC_MI_INT + ++ port*0x18) > 0); ++ DP(NETIF_MSG_LINK, "int_mask 0x%x MI_INT %x, SERDES_LINK %x\n", ++ REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4), ++ is_mi_int, ++ REG_RD(bp, ++ NIG_REG_SERDES0_STATUS_LINK_STATUS + port*0x3c)); ++ ++ DP(NETIF_MSG_LINK, " 10G %x, XGXS_LINK %x\n", ++ REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68), ++ REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68)); ++ ++ /* disable emac */ ++ REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0); ++ ++ ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); ++ ++ /* Check external link change only for non-direct */ ++ ext_phy_link_up = bnx2x_ext_phy_is_link_up(params, vars); ++ ++ /* Read gp_status */ ++ CL45_RD_OVER_CL22(bp, port, params->phy_addr, ++ MDIO_REG_BANK_GP_STATUS, ++ MDIO_GP_STATUS_TOP_AN_STATUS1, ++ &gp_status); ++ ++ rc = bnx2x_link_settings_status(params, vars, gp_status); ++ if (rc != 0) ++ return rc; ++ ++ /* anything 10 and over uses the bmac */ ++ link_10g = ((vars->line_speed == SPEED_10000) || ++ (vars->line_speed == SPEED_12000) || ++ (vars->line_speed == SPEED_12500) || ++ (vars->line_speed == SPEED_13000) || ++ (vars->line_speed == SPEED_15000) || ++ (vars->line_speed == SPEED_16000)); ++ ++ bnx2x_link_int_ack(params, vars, link_10g, is_mi_int); ++ ++ /* In case external phy link is up, and internal link is down ++ ( not initialized yet probably after link initialization, it needs ++ to be initialized. ++ Note that after link down-up as result of cable plug, ++ the xgxs link would probably become up again without the need to ++ initialize it*/ ++ ++ if ((ext_phy_type != PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726) && ++ (ext_phy_link_up && !vars->phy_link_up)) { ++ if (vars->line_speed < SPEED_1000) ++ vars->phy_flags |= PHY_SGMII_FLAG; ++ else ++ vars->phy_flags &= ~PHY_SGMII_FLAG; ++ bnx2x_init_internal_phy(params, vars, 0); ++ } ++ ++ /* link is up only if both local phy and external phy are up */ ++ vars->link_up = (ext_phy_link_up && vars->phy_link_up); ++ ++ if (vars->link_up) ++ rc = bnx2x_update_link_up(params, vars, link_10g, gp_status); ++ else ++ rc = bnx2x_update_link_down(params, vars); ++ ++ return rc; ++} ++ ++static u8 bnx2x_8073_common_init_phy(struct bnx2x *bp, u32 shmem_base) ++{ ++ u8 ext_phy_addr[PORT_MAX]; ++ u16 val; ++ s8 port; ++ ++ /* PART1 - Reset both phys */ ++ for (port = PORT_MAX - 1; port >= PORT_0; port--) { ++ /* Extract the ext phy address for the port */ ++ u32 ext_phy_config = REG_RD(bp, shmem_base + ++ offsetof(struct shmem_region, ++ dev_info.port_hw_config[port].external_phy_config)); ++ ++ /* disable attentions */ ++ bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, ++ (NIG_MASK_XGXS0_LINK_STATUS | ++ NIG_MASK_XGXS0_LINK10G | ++ NIG_MASK_SERDES0_LINK_STATUS | ++ NIG_MASK_MI_INT)); ++ ++ ext_phy_addr[port] = XGXS_EXT_PHY_ADDR(ext_phy_config); ++ ++ /* Need to take the phy out of low power mode in order ++ to write to access its registers */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_HIGH, port); ++ ++ /* Reset the phy */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ 1<<15); ++ } ++ ++ /* Add delay of 150ms after reset */ ++ msleep(150); ++ ++ /* PART2 - Download firmware to both phys */ ++ for (port = PORT_MAX - 1; port >= PORT_0; port--) { ++ u16 fw_ver1; ++ ++ bnx2x_bcm8073_external_rom_boot(bp, port, ++ ext_phy_addr[port], shmem_base); ++ ++ bnx2x_cl45_read(bp, port, PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER1, &fw_ver1); ++ if (fw_ver1 == 0 || fw_ver1 == 0x4321) { ++ DP(NETIF_MSG_LINK, ++ "bnx2x_8073_common_init_phy port %x:" ++ "Download failed. fw version = 0x%x\n", ++ port, fw_ver1); ++ return -EINVAL; ++ } ++ ++ /* Only set bit 10 = 1 (Tx power down) */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_TX_POWER_DOWN, &val); ++ ++ /* Phase1 of TX_POWER_DOWN reset */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_TX_POWER_DOWN, ++ (val | 1<<10)); ++ } ++ ++ /* Toggle Transmitter: Power down and then up with 600ms ++ delay between */ ++ msleep(600); ++ ++ /* PART3 - complete TX_POWER_DOWN process, and set GPIO2 back to low */ ++ for (port = PORT_MAX - 1; port >= PORT_0; port--) { ++ /* Phase2 of POWER_DOWN_RESET */ ++ /* Release bit 10 (Release Tx power down) */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_TX_POWER_DOWN, &val); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_TX_POWER_DOWN, (val & (~(1<<10)))); ++ msleep(15); ++ ++ /* Read modify write the SPI-ROM version select register */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_EDC_FFE_MAIN, &val); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_EDC_FFE_MAIN, (val | (1<<12))); ++ ++ /* set GPIO2 back to LOW */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, port); ++ } ++ return 0; ++ ++} ++ ++static u8 bnx2x_8727_common_init_phy(struct bnx2x *bp, u32 shmem_base) ++{ ++ u8 ext_phy_addr[PORT_MAX]; ++ s8 port; ++ u32 swap_val, swap_override; ++ DP(NETIF_MSG_LINK, "Executing BCM8727 common init\n"); ++ swap_val = REG_RD(bp, NIG_REG_PORT_SWAP); ++ swap_override = REG_RD(bp, NIG_REG_STRAP_OVERRIDE); ++ ++ bnx2x_ext_phy_hw_reset(bp, 1 ^ (swap_val && swap_override)); ++ msleep(5); ++ ++ /* PART1 - Reset both phys */ ++ for (port = PORT_MAX - 1; port >= PORT_0; port--) { ++ /* Extract the ext phy address for the port */ ++ u32 ext_phy_config = REG_RD(bp, shmem_base + ++ offsetof(struct shmem_region, ++ dev_info.port_hw_config[port].external_phy_config)); ++ ++ /* disable attentions */ ++ bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, ++ (NIG_MASK_XGXS0_LINK_STATUS | ++ NIG_MASK_XGXS0_LINK10G | ++ NIG_MASK_SERDES0_LINK_STATUS | ++ NIG_MASK_MI_INT)); ++ ++ ext_phy_addr[port] = XGXS_EXT_PHY_ADDR(ext_phy_config); ++ ++ /* Reset the phy */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_CTRL, ++ 1<<15); ++ } ++ ++ /* Add delay of 150ms after reset */ ++ msleep(150); ++ ++ /* PART2 - Download firmware to both phys */ ++ for (port = PORT_MAX - 1; port >= PORT_0; port--) { ++ u16 fw_ver1; ++ ++ bnx2x_bcm8727_external_rom_boot(bp, port, ++ ext_phy_addr[port], shmem_base); ++ ++ bnx2x_cl45_read(bp, port, PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727, ++ ext_phy_addr[port], ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_ROM_VER1, &fw_ver1); ++ if (fw_ver1 == 0 || fw_ver1 == 0x4321) { ++ DP(NETIF_MSG_LINK, ++ "bnx2x_8073_common_init_phy port %x:" ++ "Download failed. fw version = 0x%x\n", ++ port, fw_ver1); ++ return -EINVAL; ++ } ++ ++ } ++ ++ ++ ++ return 0; ++} ++ ++ ++static u8 bnx2x_8726_common_init_phy(struct bnx2x *bp, u32 shmem_base) ++{ ++ u8 ext_phy_addr; ++ u32 val; ++ s8 port; ++ ++ /* Use port1 because of the static port-swap */ ++ /* Enable the module detection interrupt */ ++ val = REG_RD(bp, MISC_REG_GPIO_EVENT_EN); ++ val |= ((1<type, header->image_info, ++ header->byte_cnt); ++ ++ if ((header->magic != FILE_MAGIC) || ++ (header->version != FORMAT_VERSION_2) || ++ (header->type != image_hdr_type)) { ++ DP(NETIF_MSG_LINK, "Invalid image header: Magic = 0x%x," ++ " version = 0x%x, phy_type = 0x%x\n", ++ header->magic, header->version, header->type); ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++void bnx2x_sfx7101_sp_sw_reset(struct bnx2x *bp, u8 port, u8 phy_addr) ++{ ++ u16 val, cnt; ++ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7101_RESET, &val); ++ ++ for (cnt = 0; cnt < 10; cnt++) { ++ msleep(50); ++ /* Writes a self-clearing reset */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7101_RESET, ++ (val | (1<<15))); ++ /* Wait for clear */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7101_RESET, &val); ++ ++ if ((val & (1<<15)) == 0) ++ break; ++ } ++} ++ ++#define RESERVED_SIZE 256 ++/* max application is 160K bytes - data at end of RAM */ ++#define MAX_APP_SIZE (160*1024 - RESERVED_SIZE) ++ ++/* Header is 14 bytes */ ++#define HEADER_SIZE 14 ++#define DATA_OFFSET HEADER_SIZE ++ ++#define SPI_START_TRANSFER(bp, port, ext_phy_addr) \ ++ bnx2x_cl45_write(bp, port, PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, \ ++ ext_phy_addr, \ ++ MDIO_PCS_DEVAD, \ ++ MDIO_PCS_REG_7101_SPI_CTRL_ADDR, 1) ++ ++/************************************************************************/ ++/* Function: bnx2x_bcm_flash_download */ ++/* Description : Load SPI EEPROM through BCM8073. */ ++/* */ ++/************************************************************************/ ++ ++#define WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wrdata, rddata) \ ++ {if (write_message_bcm(bp, port, ext_phy_addr, \ ++ ext_phy_type, wrdata, rddata) != 0) \ ++ return -EINVAL; } ++ ++static u8 write_message_bcm(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, u32 ext_phy_type, ++ u16 wrdata, u16 *rddata) ++{ ++ u16 tmp_data = 0; ++ u16 i = 0; ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, &tmp_data); ++ ++ /* Write SPI Control Register Write Command.*/ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGIN_REG, wrdata); ++ ++ /* Wait For LASI To be asserted when M8051 writes Next Parameter To ++ MSG_OUT Register TBD wait (xlasi_ch1 === 1'b0); ++ Above wait can also be done by polling 9005, bit 2 As bellow. */ ++ ++ for (i = 0; i < UPGRADE_TIMEOUT_BCM; i++) { ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_STATUS, &tmp_data); ++ if ((tmp_data & (1<<2)) != 0) {/* bit 2 is Rx Alarm for LASI.*/ ++ break; ++ } ++ msleep(6); ++ } ++ ++ if (i == UPGRADE_TIMEOUT_BCM) { ++ DP(NETIF_MSG_LINK, "Failed to get LASI indication. Aborting\n"); ++ return -EINVAL; ++ } ++ ++ /* Read Message out register. 1.CA13 */ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, &tmp_data); ++ *rddata = tmp_data; ++ ++ /* Clear LASI Message Out Status. 1.9003*/ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &tmp_data); ++ return 0; ++} ++ ++ ++static u8 bnx2x_phy_bcm_rom_wait(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, u32 ext_phy_type) ++{ ++ /* Wait For WRSR Command To be written.*/ ++ u8 spi_ready = 0, count; ++ ++ u16 rd_data = 0, wr_data = 0 ; ++ u16 retry_count = 0; ++ while ((rd_data & 0x0100) == 0 && (++retry_count < 1000)) { ++ /* Write SPI Control Register Read Command.*/ ++ count = 1; ++ wr_data = ((RD_CPU_CTRL_REGS * 0x0100) | count); ++ count = 2; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_CTRL_1_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ } ++ if (retry_count == 1000) { ++ DP(NETIF_MSG_LINK, ++ "Failed writing SPI Write SPI Control Register\n"); ++ return -EINVAL; ++ } ++ DP(NETIF_MSG_LINK, "SPI Controller Wrote WRSR Command.\n" ++ " Checking SPI Status Now "); ++ spi_ready = 1; ++ retry_count = 0; ++ while (spi_ready == 1 && (++retry_count < 1000)) { ++ /* Set-up SPI Controller To Receive SPI EEPROM Status.*/ ++ /* Write SPI Control Register Write Command.*/ ++ count = 1; ++ wr_data = ((WR_CPU_CTRL_REGS * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Address.*/ ++ wr_data = SPI_CTRL_2_H; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Word-2.*/ ++ wr_data = 0x0100; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Fill-up SPI Transmit Fifo To check SPI Status.*/ ++ /* Write SPI Control Register Write Command.*/ ++ count = 2; ++ wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write Tx Fifo Register Address.*/ ++ wr_data = SPI_TXFIFO; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-1.*/ ++ wr_data = ((1 * 0x0100) | MSGTYPE_HRD); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-2.*/ ++ wr_data = RDSR_OPCODE; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control Register Write Command.*/ ++ count = 2; ++ wr_data = ((WR_CPU_CTRL_FIFO * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_CTRL_1_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-1.*/ ++ wr_data = 0x0101; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-2.*/ ++ wr_data = 0x0100; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control Register Write Command.*/ ++ count = 1; ++ wr_data = ((WR_CPU_CTRL_REGS * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_CTRL_1_H; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-2.*/ ++ wr_data = 0x0103; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ DP(NETIF_MSG_LINK, "**Wait for Status Register to be written "); ++ ++ /* Wait For 64 bytes To be written.*/ ++ rd_data = 0x0000; ++ while ((rd_data & 0x0100) == 0) { ++ /* Write SPI Control Register Read Command.*/ ++ count = 1; ++ wr_data = ((RD_CPU_CTRL_REGS * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, ++ wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_CTRL_1_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, ++ wr_data, &rd_data); ++ } ++ DP(NETIF_MSG_LINK, "**Write SPI CTRl Read command "); ++ ++ /* Write SPI Control Register Read Command.*/ ++ count = 1; /* Read from SPI Controller register C000.*/ ++ wr_data = ((RD_CPU_CTRL_REGS * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_RXFIFO; ++ if (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073 || ++ ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727) { ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, ++ wr_data, &rd_data); ++ } else { ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGIN_REG, wr_data); ++ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, &rd_data); ++ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &wr_data); ++ } ++ ++ if ((rd_data & 0x1) == 0) ++ spi_ready = 0; ++ } /* spi_ready */ ++ if (retry_count == 1000) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++ ++static u8 bnx2x_phy_bcm_rom_write_enable(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, u32 ext_phy_type, ++ u8 enable) ++{ ++ u8 count = 0, wrsr_data; ++ u16 rd_data = 0, wr_data = 0; ++ ++ /* De-assert SPI EEPROM Block Protection.*/ ++ DP(NETIF_MSG_LINK, "*** De-assert SPI Block Protect\n"); ++ ++ /* Write SPI Control Register Write Command.*/ ++ count = 2; ++ wr_data = ((WR_CPU_CTRL_FIFO * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ DP(NETIF_MSG_LINK, "First write succeeded\n"); ++ /* Write SPI Control -2 Register Address.*/ ++ wr_data = SPI_CTRL_2_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Word-1.*/ ++ wr_data = 0x8200; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Word-2.*/ ++ wr_data = 0x0100; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Fill-up SPI Transmit Fifo With SPI EEPROM Messages.*/ ++ /* Write SPI Control Register Write Command.*/ ++ count = 4; ++ wr_data = ((WR_CPU_CTRL_FIFO * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write Tx Fifo Register Address.*/ ++ wr_data = SPI_TXFIFO; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-1.*/ ++ wr_data = ((1 * 0x0100) | MSGTYPE_HWR); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-2.*/ ++ wr_data = ((MSGTYPE_HWR * 0x0100) | WREN_OPCODE); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-3.*/ ++ wr_data = ((WRSR_OPCODE * 0x0100) | 0x02); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-4.*/ ++ ++ wrsr_data = enable ? 0x2 : 0xc; ++ wr_data = ((wrsr_data * 0x0100) | wrsr_data); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control Register Write Command.*/ ++ wr_data = ((WR_CPU_CTRL_FIFO * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_CTRL_1_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-1.*/ ++ wr_data = 0x0101; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-2.*/ ++ wr_data = 0x0003; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ return bnx2x_phy_bcm_rom_wait(bp, port, ext_phy_addr, ext_phy_type); ++ ++} ++ ++/* Programs an image to DSP's flash via the SPI port*/ ++static u8 bnx2x_bcm_flash_download(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, u32 ext_phy_type, ++ char *code_ptr, u32 size) { ++ u16 tmp, rd_data, wr_data = 4; ++ u8 count, rc = 0; ++ u32 i, data_index; ++ u16 misc_ctrl; ++ ++ DP(NETIF_MSG_LINK, "bnx2x_bcm_flash_download: size=0x%x\n", size); ++ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_AN_DEVAD, ++ MDIO_AN_REG_CTRL, 0); ++ ++ /* Enable the LASI For Message out */ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, &misc_ctrl); ++ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, (misc_ctrl | (1<<0))); ++ ++ /* Read LASI Status registers To clear initial Failure status. */ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &tmp); ++ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_TX_ALARM, &tmp); ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_STATUS, &tmp); ++ ++ /* Enable the LASI For Message out */ ++ ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ wr_data = 0x0004; ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ wr_data = 0x0400; ++ break; ++ } ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM_CTRL, wr_data); ++ ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_LASI_CTRL, 0x4); ++ ++ ++ /* Read Any Residual Message out register.1.CA13*/ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_M8051_MSGOUT_REG, &rd_data); ++ ++ /* Clear LASI Message Out Status. 1.9003 */ ++ bnx2x_cl45_read(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_RX_ALARM, &rd_data); ++ ++ if (bnx2x_phy_bcm_rom_write_enable(bp, port, ext_phy_addr, ++ ext_phy_type, 1) != 0) ++ return -EINVAL; ++ ++ for (data_index = 0; data_index < BUF_SIZE_BCM; ++ data_index += WR_BLOCK_SIZE) { ++ /* Setup SPI Controller ++ Write SPI Control Register Write Command. */ ++ ++ count = 2;/* Write to C400, C401, C402, C403 Registers.*/ ++ wr_data = ((WR_CPU_CTRL_FIFO * 0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Address.*/ ++ wr_data = SPI_CTRL_2_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Word-1 */ ++ /* C400 = 0 for 0 Fill Byte. C401 = 02 for SPI Clcok to ++ be divide by 2 and little endian fifo.*/ ++ wr_data = 0x8200; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Word-2.*/ ++ /* C402 = 0, clear all status. C403 = 1, ++ to enable Done Status.*/ ++ wr_data = 0x0100; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Fill-up SPI Transmit Fifo.*/ ++ /* Write SPI Control Register Write Command. */ ++ /* Write To Transmit Fifo D000-onwards.*/ ++ count = 4 + (WR_BLOCK_SIZE/2); ++ wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write Tx Fifo Register Address.*/ ++ wr_data = SPI_TXFIFO; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-1.*/ ++ /* {8'h1, MSGTYPE_HWR}; ++ ( 1byte to transmit for WREN opcode).*/ ++ wr_data = ((1*0x0100) | MSGTYPE_HWR); ++ /* D001 = Write Message And Higher byte of Transfer Size */ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ /* Write SPI Tx Fifo Control Word-2.*/ ++ /* D002 = WREN Opcode For transmit.*/ ++ wr_data = ((MSGTYPE_HWR * 0x0100) | WREN_OPCODE); ++ /* D003 = Total byte To be transmited ++ (64 + 3 For command, And address).*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-3.*/ ++ /* D004 = Second Message is also WRITE Message.*/ ++ wr_data = ((WR_OPCODE * 0x0100) | ++ (0x3 + WR_BLOCK_SIZE)); ++ /* D005 = Write Opcode.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-4. */ ++ /* D006 = SPI EEPROM Dest Addr (higher byte sent out first).*/ ++ /* D007 = SPI EEPROM Dest Addr (lower byte sent out later).*/ ++ wr_data = (((data_index & 0x00FF)*0x0100) | ++ ((data_index & 0xFF00)/0x0100)); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ for (i = 0; i < WR_BLOCK_SIZE; i += 2) { ++ /* Write SPI Tx Fifo Data Word-4.*/ ++ /* D008 = Low Byte. D009 = High Byte.*/ ++ wr_data = (u16)((code_ptr[i+data_index+1]*0x0100) | ++ (code_ptr[i+data_index] & 0x00FF)); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, ++ &rd_data); ++ } ++ ++ DP(NETIF_MSG_LINK, " 64bytes filled in SPIfifo 0x%x\n", ++ data_index); ++ ++ /* Let the user know something's going on every 1024 bytes.*/ ++ if ((data_index % 1024) == 0) ++ DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size); ++ ++ /* Set-up SPI Controller To Transmit.*/ ++ /* Write SPI Control Register Write Command.*/ ++ /* Write to SPI Control Register C000 onwards.*/ ++ count = 2; ++ /* {CLC_WR_CPU_CTRL_FIFO, count};*/ ++ wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_CTRL_1_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-1.*/ ++ /* C000 = 1 to clear CMD Done Status. C001 = 1 to clear CMD Done ++ INT Status.*/ ++ wr_data = 0x0501; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-2.*/ ++ /* C002 = 3, Start Immidiate Command. C003 = 0, No Prepend byte ++ for Write.*/ ++ wr_data = 0x0003; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ if (bnx2x_phy_bcm_rom_wait(bp, port, ext_phy_addr, ext_phy_type) ++ != 0) ++ return -EINVAL; ++ } ++ DP(NETIF_MSG_LINK, "*** SPI_READ and WRITE COMPLETE 0x%x\n", ++ data_index); ++ ++ if (bnx2x_phy_bcm_rom_write_enable(bp, port, ext_phy_addr, ++ ext_phy_type, 0) != 0) ++ return -EINVAL; ++ ++ /* Disable SPI EEPROM.*/ ++ /* Write SPI Control Register Write Command.*/ ++ count = 2; /* Write to C400, C401, C402, C403 Registers.*/ ++ wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Address.*/ ++ wr_data = SPI_CTRL_2_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Word-1.*/ ++ wr_data = 0x8200; /* C400 = 0 for 0 Fill Byte. C401 = 02 for ++ SPI Clcok to be divide by 2 and little endian fifo.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -2 Register Word-2.*/ ++ wr_data = 0x0100; /* C402 = 0, clear all status. C403 = 1, to ++ enable Done Status.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Fill-up SPI Transmit Fifo With SPI EEPROM Messages.*/ ++ /* Write SPI Control Register Write Command.*/ ++ count = 2; /* Write to Transmit Fifo D000-onwards.*/ ++ wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /*Write Tx Fifo Register Address.*/ ++ wr_data = SPI_TXFIFO; /* D000.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-1.*/ ++ wr_data = ((0x1*0x0100) | MSGTYPE_HWR); /* D000 = Only 1 ++ byte Message ( 1byte to transmit for WRDI opcode).*/ ++ ++ /* D001 = Write Message And Higher byte of Transfer Size.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Tx Fifo Control Word-2.*/ ++ wr_data = WRDI_OPCODE; /* D002 = WRDI Opcode for transmit.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /*Write SPI Control Register Write Command.*/ ++ count = 2; /* Write to SPI Control Register C000 onwards.*/ ++ wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count); ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ /* Write SPI Control -1 Register Address.*/ ++ wr_data = SPI_CTRL_1_L; ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-1.*/ ++ wr_data = 0x0101; /* C000 = 1 to clear CMD Done Status. ++ C001 = 1 to clear CMD Done INT Status.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ ++ /* Write SPI Control -1 Register Word-2.*/ ++ wr_data = 0x0003; /* C002 = 3, Start Immidiate Command. ++ C003 = 0, No Prepend byte for Write.*/ ++ WRITE_MESSAGE_BCM(bp, port, ext_phy_addr, wr_data, &rd_data); ++ bnx2x_cl45_write(bp, port, ++ ext_phy_type, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_MISC_CTRL1, (misc_ctrl & ~(1<<0))); ++ DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size); ++ return rc; ++} ++ ++/* Programs an image to DSP's flash via the SPI port*/ ++static u8 bnx2x_sfx7101_flash_download(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, ++ char data[], u32 size) ++{ ++ const u16 num_trans = size/4; /* 4 bytes can be sent at a time */ ++ /* Doesn't include last trans!*/ ++ const u16 last_trans_size = size%4; /* Num bytes on last trans */ ++ u16 trans_cnt, byte_cnt; ++ u32 data_index; ++ u16 tmp; ++ u16 code_started = 0; ++ u16 image_revision1, image_revision2; ++ u16 cnt; ++ ++ DP(NETIF_MSG_LINK, "bnx2x_sfx7101_flash_download file_size=%d\n", size); ++ /* Going to flash*/ ++ if ((size-HEADER_SIZE) > MAX_APP_SIZE) { ++ /* This very often will be the case, because the image is built ++ with 160Kbytes size whereas the total image size must actually ++ be 160Kbytes-RESERVED_SIZE */ ++ DP(NETIF_MSG_LINK, "Warning, file size was %d bytes " ++ "truncated to %d bytes\n", size, MAX_APP_SIZE); ++ size = MAX_APP_SIZE+HEADER_SIZE; ++ } ++ DP(NETIF_MSG_LINK, "File version is %c%c\n", data[0x14e], data[0x14f]); ++ DP(NETIF_MSG_LINK, " %c%c\n", data[0x150], data[0x151]); ++ /* Put the DSP in download mode by setting FLASH_CFG[2] to 1 ++ and issuing a reset.*/ ++ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0, ++ MISC_REGISTERS_GPIO_HIGH, port); ++ ++ bnx2x_sfx7101_sp_sw_reset(bp, port, ext_phy_addr); ++ ++ /* wait 0.5 sec */ ++ for (cnt = 0; cnt < 100; cnt++) ++ msleep(5); ++ ++ /* Make sure we can access the DSP ++ And it's in the correct mode (waiting for download) */ ++ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_DSP_ACCESS, &tmp); ++ ++ if (tmp != 0x000A) { ++ DP(NETIF_MSG_LINK, "DSP is not in waiting on download mode. " ++ "Expected 0x000A, read 0x%04X\n", tmp); ++ DP(NETIF_MSG_LINK, "Download failed\n"); ++ return -EINVAL; ++ } ++ ++ /* Mux the SPI interface away from the internal processor */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_MUX, 1); ++ ++ /* Reset the SPI port */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_CTRL_ADDR, 0); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_CTRL_ADDR, ++ (1<>16)); ++ /* Bits 15-8 of address */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ (data_index>>8)); ++ ++ /* Bits 7-0 of address */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ ((u16)data_index)); ++ ++ byte_cnt = 0; ++ while (byte_cnt < 4 && data_index < size) { ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ data[data_index++]); ++ byte_cnt++; ++ } ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR, ++ byte_cnt+4); ++ ++ SPI_START_TRANSFER(bp, port, ext_phy_addr); ++ msleep(5); /* Wait 5 ms minimum between transs */ ++ ++ /* Let the user know something's going on.*/ ++ /* a pacifier ever 4K */ ++ if ((data_index % 1023) == 0) ++ DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size); ++ } ++ ++ DP(NETIF_MSG_LINK, "\n"); ++ /* Transfer the last block if there is data remaining */ ++ if (last_trans_size) { ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR_WRITE_ENABLE_CMD); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR, ++ 1); ++ ++ SPI_START_TRANSFER(bp, port, ext_phy_addr); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR_PAGE_PROGRAM_CMD); ++ ++ /* Bits 23-16 of address */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ (data_index>>16)); ++ /* Bits 15-8 of address */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ (data_index>>8)); ++ ++ /* Bits 7-0 of address */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ ((u16)data_index)); ++ ++ byte_cnt = 0; ++ while (byte_cnt < last_trans_size && data_index < size) { ++ /* Bits 7-0 of address */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_FIFO_ADDR, ++ data[data_index++]); ++ byte_cnt++; ++ } ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR, ++ byte_cnt+4); ++ ++ SPI_START_TRANSFER(bp, port, ext_phy_addr); ++ } ++ ++ /* DSP Remove Download Mode */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0, ++ MISC_REGISTERS_GPIO_LOW, port); ++ ++ bnx2x_sfx7101_sp_sw_reset(bp, port, ext_phy_addr); ++ ++ /* wait 0.5 sec to allow it to run */ ++ for (cnt = 0; cnt < 100; cnt++) ++ msleep(5); ++ ++ bnx2x_ext_phy_hw_reset(bp, port); ++ ++ for (cnt = 0; cnt < 100; cnt++) ++ msleep(5); ++ ++ /* Check that the code is started. In case the download ++ checksum failed, the code won't be started. */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PCS_DEVAD, ++ MDIO_PCS_REG_7101_DSP_ACCESS, ++ &tmp); ++ ++ code_started = (tmp & (1<<4)); ++ if (!code_started) { ++ DP(NETIF_MSG_LINK, "Download failed. Please check file.\n"); ++ return -EINVAL; ++ } ++ ++ /* Verify that the file revision is now equal to the image ++ revision within the DSP */ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7101_VER1, ++ &image_revision1); ++ ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, ++ MDIO_PMA_REG_7101_VER2, ++ &image_revision2); ++ ++ if (data[0x14e] != (image_revision2&0xFF) || ++ data[0x14f] != ((image_revision2&0xFF00)>>8) || ++ data[0x150] != (image_revision1&0xFF) || ++ data[0x151] != ((image_revision1&0xFF00)>>8)) { ++ DP(NETIF_MSG_LINK, "Download failed.\n"); ++ return -EINVAL; ++ } ++ DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size); ++ return 0; ++} ++ ++ ++ ++u8 bnx2x_bcm8481_flash_download(struct bnx2x *bp, u8 port, ++ u8 ext_phy_addr, ++ char data[], u32 size) ++{ ++ u32 data_index; ++ u16 val, cnt; ++ ++ /* Disable interrupts */ ++ bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, ++ (NIG_MASK_XGXS0_LINK_STATUS | ++ NIG_MASK_XGXS0_LINK10G | ++ NIG_MASK_SERDES0_LINK_STATUS | ++ NIG_MASK_MI_INT)); ++ ++ /* Step 1: Halt system */ ++ DP(NETIF_MSG_LINK, "Step 1: Halt system\n"); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4186, 0x8000); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x017c); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x0040); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA819, 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81A, 0xc300); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81B, 0x001e); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81C, 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA817, 0x0009); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA819, 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81A, 0xffff); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81B, 0xfffe); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81C, 0xeaff); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA817, 0x0009); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x0000); ++ ++ /* Step 2: Download code into memory*/ ++ DP(NETIF_MSG_LINK, "Step 2: Download code into memory\n"); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA817, 0x0039); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81A, 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA819, 0x0000); ++ ++ for (data_index = 0; data_index < size; data_index += 4) { ++ /* File is in Little Endian */ ++ /* Write upper 16-bits(x)*/ ++ val = data[data_index+2] | (data[data_index+3] << 8); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81C, val); ++ /* Write lower 16-bits(x)*/ ++ val = data[data_index+0] | (data[data_index+1] << 8); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81B, val); ++ /* Wait for complete status for upto 5 ms*/ ++ for (cnt = 0; cnt < 1000; cnt++) { ++ bnx2x_cl45_read(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA818, &val); ++ if (val & 0x1) ++ break; ++ /* Wait 50 microSec*/ ++ udelay(50); ++ } ++ if (cnt == 1000) { ++ DP(NETIF_MSG_LINK, "Failed to download image\n"); ++ return -EINVAL; ++ } ++ if ((data_index % 1024) == 0) ++ DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size); ++ } ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA817, 0x0000); ++ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA819, 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81A, 0xc300); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81B, 0x000c); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA81C, 0x0000); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ MDIO_PMA_DEVAD, 0xA817, 0x0009); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x0040); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x0000); ++ DP(NETIF_MSG_LINK, "Step 3: Waiting for the Programming" ++ "phase to be completed (5 seconds).\n"); ++ for (cnt = 0; cnt < 1000; cnt++) ++ msleep(5); ++ /* Step 3: Restart system */ ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x017c); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x0040); ++ bnx2x_cl45_write(bp, port, ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481, ++ ext_phy_addr, ++ 0x1e, 0x4181, 0x0000); ++ DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size); ++ return 0; ++} ++u8 bnx2x_flash_download(struct bnx2x *bp, u8 port, u32 ext_phy_config, ++ u8 driver_loaded, char data[], u32 size) ++{ ++ u8 rc = 0; ++ u32 ext_phy_type; ++ u8 ext_phy_addr; ++ ext_phy_addr = XGXS_EXT_PHY_ADDR(ext_phy_config); ++ ext_phy_type = XGXS_EXT_PHY_TYPE(ext_phy_config); ++ ++ /* Verify image header */ ++ if (bnx2x_verify_image_header(bp, ++ (struct bnx2x_image_header *)data, ++ ext_phy_type) != 0) ++ return -EINVAL; ++ data += sizeof(struct bnx2x_image_header); ++ size -= sizeof(struct bnx2x_image_header); ++ ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ DP(NETIF_MSG_LINK, ++ "Flash download not supported for this ext phy\n"); ++ rc = -EINVAL; ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ if (!driver_loaded) ++ bnx2x_turn_on_ef(bp, port, ext_phy_addr, ext_phy_type); ++ ++ rc = bnx2x_bcm_flash_download(bp, port, ext_phy_addr, ++ ext_phy_type, ++ data, size); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ /* Take ext phy out of reset */ ++ if (!driver_loaded) ++ bnx2x_turn_on_ef(bp, port, ext_phy_addr, ext_phy_type); ++ rc = bnx2x_sfx7101_flash_download(bp, port, ext_phy_addr, ++ data, size); ++ if (!driver_loaded) ++ bnx2x_turn_off_sf(bp, port); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481: ++ rc = bnx2x_bcm8481_flash_download(bp, port, ext_phy_addr, ++ data, size); ++ break; ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN: ++ default: ++ DP(NETIF_MSG_LINK, "Invalid ext phy type\n"); ++ rc = -EINVAL; ++ break; ++ } ++ return rc; ++} ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_link.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_link.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_link.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_link.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,210 @@ ++/* Copyright 2008-2009 Broadcom Corporation ++ * ++ * Unless you and Broadcom execute a separate written software license ++ * agreement governing use of this software, this software is licensed to you ++ * under the terms of the GNU General Public License version 2, available ++ * at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (the "GPL"). ++ * ++ * Notwithstanding the above, under no circumstances may you combine this ++ * software in any way with any other Broadcom software provided under a ++ * license other than the GPL, without Broadcom's express prior written ++ * consent. ++ * ++ * Written by Yaniv Rosner ++ * ++ */ ++ ++#ifndef BNX2X_LINK_H ++#define BNX2X_LINK_H ++ ++ ++ ++/***********************************************************/ ++/* Defines */ ++/***********************************************************/ ++#define DEFAULT_PHY_DEV_ADDR 3 ++ ++ ++ ++#define BNX2X_FLOW_CTRL_AUTO PORT_FEATURE_FLOW_CONTROL_AUTO ++#define BNX2X_FLOW_CTRL_TX PORT_FEATURE_FLOW_CONTROL_TX ++#define BNX2X_FLOW_CTRL_RX PORT_FEATURE_FLOW_CONTROL_RX ++#define BNX2X_FLOW_CTRL_BOTH PORT_FEATURE_FLOW_CONTROL_BOTH ++#define BNX2X_FLOW_CTRL_NONE PORT_FEATURE_FLOW_CONTROL_NONE ++ ++#define SPEED_AUTO_NEG 0 ++#define SPEED_12000 12000 ++#define SPEED_12500 12500 ++#define SPEED_13000 13000 ++#define SPEED_15000 15000 ++#define SPEED_16000 16000 ++ ++#define SFP_EEPROM_VENDOR_NAME_ADDR 0x14 ++#define SFP_EEPROM_VENDOR_NAME_SIZE 16 ++#define SFP_EEPROM_VENDOR_OUI_ADDR 0x25 ++#define SFP_EEPROM_VENDOR_OUI_SIZE 3 ++#define SFP_EEPROM_PART_NO_ADDR 0x28 ++#define SFP_EEPROM_PART_NO_SIZE 16 ++#define PWR_FLT_ERR_MSG_LEN 250 ++/***********************************************************/ ++/* Structs */ ++/***********************************************************/ ++/* Inputs parameters to the CLC */ ++struct link_params { ++ ++ u8 port; ++ ++ /* Default / User Configuration */ ++ u8 loopback_mode; ++#define LOOPBACK_NONE 0 ++#define LOOPBACK_EMAC 1 ++#define LOOPBACK_BMAC 2 ++#define LOOPBACK_XGXS_10 3 ++#define LOOPBACK_EXT_PHY 4 ++#define LOOPBACK_EXT 5 ++ ++ u16 req_duplex; ++ u16 req_flow_ctrl; ++ u16 req_fc_auto_adv; /* Should be set to TX / BOTH when ++ req_flow_ctrl is set to AUTO */ ++ u16 req_line_speed; /* Also determine AutoNeg */ ++ ++ /* Device parameters */ ++ u8 mac_addr[6]; ++ ++ /* shmem parameters */ ++ u32 shmem_base; ++ u32 speed_cap_mask; ++ u32 switch_cfg; ++#define SWITCH_CFG_1G PORT_FEATURE_CON_SWITCH_1G_SWITCH ++#define SWITCH_CFG_10G PORT_FEATURE_CON_SWITCH_10G_SWITCH ++#define SWITCH_CFG_AUTO_DETECT PORT_FEATURE_CON_SWITCH_AUTO_DETECT ++ ++ u16 hw_led_mode; /* part of the hw_config read from the shmem */ ++ ++ /* phy_addr populated by the CLC */ ++ u8 phy_addr; ++ /*u8 reserved1;*/ ++ ++ u32 lane_config; ++ u32 ext_phy_config; ++#define XGXS_EXT_PHY_TYPE(ext_phy_config) \ ++ ((ext_phy_config) & PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK) ++#define XGXS_EXT_PHY_ADDR(ext_phy_config) \ ++ (((ext_phy_config) & PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >> \ ++ PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT) ++#define SERDES_EXT_PHY_TYPE(ext_phy_config) \ ++ ((ext_phy_config) & PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK) ++ ++ /* Phy register parameter */ ++ u32 chip_id; ++ ++ u16 xgxs_config_rx[4]; /* preemphasis values for the rx side */ ++ u16 xgxs_config_tx[4]; /* preemphasis values for the tx side */ ++ ++ u32 feature_config_flags; ++#define FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED (1<<0) ++#define FEATURE_CONFIG_PFC_ENABLED (1<<1) ++#define FEATURE_CONFIG_BC_SUPPORTS_OPT_MDL_VRFY (1<<2) ++#define FEATURE_CONFIG_BCM8727_NOC (1<<3) ++ ++ /* Device pointer passed to all callback functions */ ++ struct bnx2x *bp; ++}; ++ ++/* Output parameters */ ++struct link_vars { ++ u8 phy_flags; ++ ++ u8 mac_type; ++#define MAC_TYPE_NONE 0 ++#define MAC_TYPE_EMAC 1 ++#define MAC_TYPE_BMAC 2 ++ ++ u8 phy_link_up; /* internal phy link indication */ ++ u8 link_up; ++ ++ u16 line_speed; ++ u16 duplex; ++ ++ u16 flow_ctrl; ++ u16 ieee_fc; ++ ++ u32 autoneg; ++#define AUTO_NEG_DISABLED 0x0 ++#define AUTO_NEG_ENABLED 0x1 ++#define AUTO_NEG_COMPLETE 0x2 ++#define AUTO_NEG_PARALLEL_DETECTION_USED 0x3 ++ ++ /* The same definitions as the shmem parameter */ ++ u32 link_status; ++}; ++ ++/***********************************************************/ ++/* Functions */ ++/***********************************************************/ ++ ++/* Initialize the phy */ ++u8 bnx2x_phy_init(struct link_params *input, struct link_vars *output); ++ ++/* Reset the link. Should be called when driver or interface goes down ++ Before calling phy firmware upgrade, the reset_ext_phy should be set ++ to 0 */ ++u8 bnx2x_link_reset(struct link_params *params, struct link_vars *vars, ++ u8 reset_ext_phy); ++ ++/* bnx2x_link_update should be called upon link interrupt */ ++u8 bnx2x_link_update(struct link_params *input, struct link_vars *output); ++ ++/* use the following cl45 functions to read/write from external_phy ++ In order to use it to read/write internal phy registers, use ++ DEFAULT_PHY_DEV_ADDR as devad, and (_bank + (_addr & 0xf)) as ++ Use ext_phy_type of 0 in case of cl22 over cl45 ++ the register */ ++u8 bnx2x_cl45_read(struct bnx2x *bp, u8 port, u32 ext_phy_type, ++ u8 phy_addr, u8 devad, u16 reg, u16 *ret_val); ++ ++u8 bnx2x_cl45_write(struct bnx2x *bp, u8 port, u32 ext_phy_type, ++ u8 phy_addr, u8 devad, u16 reg, u16 val); ++ ++/* Reads the link_status from the shmem, ++ and update the link vars accordingly */ ++void bnx2x_link_status_update(struct link_params *input, ++ struct link_vars *output); ++/* returns string representing the fw_version of the external phy */ ++u8 bnx2x_get_ext_phy_fw_version(struct link_params *params, u8 driver_loaded, ++ u8 *version, u16 len); ++ ++/* Set/Unset the led ++ Basically, the CLC takes care of the led for the link, but in case one needs ++ to set/unset the led unnaturally, set the "mode" to LED_MODE_OPER to ++ blink the led, and LED_MODE_OFF to set the led off.*/ ++u8 bnx2x_set_led(struct bnx2x *bp, u8 port, u8 mode, u32 speed, ++ u16 hw_led_mode, u32 chip_id); ++#define LED_MODE_OFF 0 ++#define LED_MODE_OPER 2 ++ ++u8 bnx2x_override_led_value(struct bnx2x *bp, u8 port, u32 led_idx, u32 value); ++ ++u8 bnx2x_flash_download(struct bnx2x *bp, u8 port, u32 ext_phy_config, ++ u8 driver_loaded, char data[], u32 size); ++/* bnx2x_handle_module_detect_int should be called upon module detection ++ interrupt */ ++void bnx2x_handle_module_detect_int(struct link_params *params); ++ ++/* Get the actual link status. In case it returns 0, link is up, ++ otherwise link is down*/ ++u8 bnx2x_test_link(struct link_params *input, struct link_vars *vars); ++ ++/* One-time initialization for external phy after power up */ ++u8 bnx2x_common_init_phy(struct bnx2x *bp, u32 shmem_base); ++ ++/* Reset the external PHY using GPIO */ ++void bnx2x_ext_phy_hw_reset(struct bnx2x *bp, u8 port); ++ ++void bnx2x_sfx7101_sp_sw_reset(struct bnx2x *bp, u8 port, u8 phy_addr); ++ ++u8 bnx2x_read_sfp_module_eeprom(struct link_params *params, u16 addr, ++ u8 byte_cnt, u8 *o_buf); ++ ++#endif /* BNX2X_LINK_H */ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_main.c linux-2.6.22-800/drivers/net/bnx2x/bnx2x_main.c +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_main.c 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_main.c 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,14191 @@ ++/* bnx2x_main.c: Broadcom Everest network driver. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ * Maintained by: Eilon Greenstein ++ * Written by: Eliezer Tamir ++ * Based on code from Michael Chan's bnx2 driver ++ * UDP CSUM errata workaround by Arik Gendelman ++ * Slowpath and fastpath rework by Vladislav Zolotarov ++ * Statistics and Link management by Yitchak Gertner ++ * ++ */ ++ ++#include ++#include ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++#include ++#endif ++#include ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++#include /* for dev_info() */ ++#endif ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++#include ++#endif ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#if (LINUX_VERSION_CODE < 0x020600) /* ! BNX2X_UPSTREAM */ ++#include ++#endif ++#include ++#include ++#if (LINUX_VERSION_CODE > 0x020607) /* BNX2X_UPSTREAM */ ++#include ++#endif ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++#include ++#endif ++#include ++#if (LINUX_VERSION_CODE >= 0x02061b) && !defined(BNX2X_DRIVER_DISK) && !defined(__VMKLNX__) /* BNX2X_UPSTREAM */ ++#include ++#endif ++#include ++#include ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++#include ++#else ++#include ++#endif ++ ++#if (LINUX_VERSION_CODE < 0x020600) /* ! BNX2X_UPSTREAM */ ++#define __NO_TPA__ 1 ++#endif ++ ++#include "bnx2x.h" ++#include "bnx2x_init.h" ++#include "bnx2x_init_ops.h" ++#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */ ++#include "bnx2x_self_test.h" ++#endif ++#include "bnx2x_dump.h" ++ ++#define DRV_MODULE_VERSION "1.50.13" ++#define DRV_MODULE_RELDATE "$DateTime: 2009/07/22 07:22:59 $" ++#define BNX2X_BC_VER 0x040200 ++ ++#if defined(BNX2X_UPSTREAM) && !defined(BNX2X_USE_INIT_VALUES) /* BNX2X_UPSTREAM */ ++#include ++#include "bnx2x_fw_file_hdr.h" ++/* FW files */ ++#define FW_FILE_PREFIX_E1 "bnx2x-e1-" ++#define FW_FILE_PREFIX_E1H "bnx2x-e1h-" ++#else ++void bnx2x_init_e1_firmware(struct bnx2x *bp); ++void bnx2x_init_e1h_firmware(struct bnx2x *bp); ++#endif ++ ++/* Time in jiffies before concluding the transmitter is hung */ ++#define TX_TIMEOUT (5*HZ) ++ ++static char version[] __devinitdata = ++ "Broadcom NetXtreme II 5771x 10Gigabit Ethernet Driver " ++ DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; ++ ++MODULE_AUTHOR("Eliezer Tamir"); ++MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710/57711/57711E Driver"); ++MODULE_LICENSE("GPL"); ++MODULE_VERSION(DRV_MODULE_VERSION); ++#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */ ++#if (LINUX_VERSION_CODE >= 0x020600) /* ! BNX2X_UPSTREAM */ ++MODULE_INFO(cvs_version, "$Revision: #18 $"); ++#endif ++#endif ++ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++static int multi_mode = 1; ++module_param(multi_mode, int, 0); ++#ifdef BNX2X_SAFC ++MODULE_PARM_DESC(multi_mode, " Multi queue mode " ++ "(0 Disable; 1 Enable (default);" ++ " 2 VLAN PRI; 3 E1HOV PRI; 4 IP DSCP)"); ++ ++static int pri_map; ++module_param(pri_map, int, 0); ++MODULE_PARM_DESC(pri_map, " Priority to HW queue mapping"); ++ ++static int qs_per_cos; ++module_param(qs_per_cos, int, 0); ++MODULE_PARM_DESC(qs_per_cos, " Number of queues per HW queue"); ++ ++static int cos_min_rate; ++module_param(cos_min_rate, int, 0); ++MODULE_PARM_DESC(cos_min_rate, " Weight for RR between HW queues"); ++#else /* BNX2X_UPSTREAM */ ++MODULE_PARM_DESC(multi_mode, " Multi queue mode " ++ "(0 Disable; 1 Enable (default))"); ++#endif /* not BNX2X_SAFC */ ++#else /* not BNX2X_NEW_NAPI */ ++static int multi_mode; ++#endif ++ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++static int num_rx_queues; ++module_param(num_rx_queues, int, 0); ++MODULE_PARM_DESC(num_rx_queues, " Number of Rx queues for multi_mode=1" ++ " (default is half number of CPUs)"); ++#endif ++ ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++static int num_tx_queues; ++module_param(num_tx_queues, int, 0); ++MODULE_PARM_DESC(num_tx_queues, " Number of Tx queues for multi_mode=1" ++ " (default is half number of CPUs)"); ++#endif ++ ++#if defined(__NO_TPA__) ++static int disable_tpa = 1; ++#else /* BNX2X_UPSTREAM */ ++static int disable_tpa; ++module_param(disable_tpa, int, 0); ++MODULE_PARM_DESC(disable_tpa, " Disable the TPA (LRO) feature"); ++#endif ++ ++static int int_mode; ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++module_param(int_mode, int, 0); ++MODULE_PARM_DESC(int_mode, " Force interrupt mode (1 INT#x; 2 MSI)"); ++#endif ++ ++static int dropless_fc; ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++module_param(dropless_fc, int, 0); ++MODULE_PARM_DESC(dropless_fc, " Pause on exhausted host ring"); ++#endif ++ ++static int poll; ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++module_param(poll, int, 0); ++MODULE_PARM_DESC(poll, " Use polling (for debug)"); ++#endif ++ ++static int mrrs = -1; ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++module_param(mrrs, int, 0); ++MODULE_PARM_DESC(mrrs, " Force Max Read Req Size (0..3) (for debug)"); ++#endif ++ ++static int debug; ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++module_param(debug, int, 0); ++MODULE_PARM_DESC(debug, " Default debug msglevel"); ++#endif ++ ++static int load_count[3]; /* 0-common, 1-port0, 2-port1 */ ++ ++static struct workqueue_struct *bnx2x_wq; ++ ++enum bnx2x_board_type { ++ BCM57710 = 0, ++ BCM57711 = 1, ++ BCM57711E = 2, ++}; ++ ++/* indexed by board_type, above */ ++static struct { ++ char *name; ++} board_info[] __devinitdata = { ++ { "Broadcom NetXtreme II BCM57710 XGb" }, ++ { "Broadcom NetXtreme II BCM57711 XGb" }, ++ { "Broadcom NetXtreme II BCM57711E XGb" } ++}; ++ ++#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */ ++#ifndef PCI_DEVICE_ID_NX2_57710 ++#define PCI_DEVICE_ID_NX2_57710 0x164e ++#endif ++#ifndef PCI_DEVICE_ID_NX2_57711 ++#define PCI_DEVICE_ID_NX2_57711 0x164f ++#endif ++#ifndef PCI_DEVICE_ID_NX2_57711E ++#define PCI_DEVICE_ID_NX2_57711E 0x1650 ++#endif ++#endif ++ ++static const struct pci_device_id bnx2x_pci_tbl[] = { ++ { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57710), BCM57710 }, ++ { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57711), BCM57711 }, ++ { PCI_VDEVICE(BROADCOM, PCI_DEVICE_ID_NX2_57711E), BCM57711E }, ++ { 0 } ++}; ++ ++MODULE_DEVICE_TABLE(pci, bnx2x_pci_tbl); ++ ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) /* ! BNX2X_UPSTREAM */ ++static int bnx2x_netqueue_ops(vmknetddi_queueops_op_t op, void *args); ++#endif ++ ++/**************************************************************************** ++* General service functions ++****************************************************************************/ ++ ++/* used only at init ++ * locking is done by mcp ++ */ ++void bnx2x_reg_wr_ind(struct bnx2x *bp, u32 addr, u32 val) ++{ ++ pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, addr); ++ pci_write_config_dword(bp->pdev, PCICFG_GRC_DATA, val); ++ pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, ++ PCICFG_VENDOR_ID_OFFSET); ++} ++ ++static u32 bnx2x_reg_rd_ind(struct bnx2x *bp, u32 addr) ++{ ++ u32 val; ++ ++ pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, addr); ++ pci_read_config_dword(bp->pdev, PCICFG_GRC_DATA, &val); ++ pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, ++ PCICFG_VENDOR_ID_OFFSET); ++ ++ return val; ++} ++ ++static const u32 dmae_reg_go_c[] = { ++ DMAE_REG_GO_C0, DMAE_REG_GO_C1, DMAE_REG_GO_C2, DMAE_REG_GO_C3, ++ DMAE_REG_GO_C4, DMAE_REG_GO_C5, DMAE_REG_GO_C6, DMAE_REG_GO_C7, ++ DMAE_REG_GO_C8, DMAE_REG_GO_C9, DMAE_REG_GO_C10, DMAE_REG_GO_C11, ++ DMAE_REG_GO_C12, DMAE_REG_GO_C13, DMAE_REG_GO_C14, DMAE_REG_GO_C15 ++}; ++ ++/* copy command into DMAE command memory and set DMAE command go */ ++static void bnx2x_post_dmae(struct bnx2x *bp, struct dmae_command *dmae, ++ int idx) ++{ ++ u32 cmd_offset; ++ int i; ++ ++ cmd_offset = (DMAE_REG_CMD_MEM + sizeof(struct dmae_command) * idx); ++ for (i = 0; i < (sizeof(struct dmae_command)/4); i++) { ++ REG_WR(bp, cmd_offset + i*4, *(((u32 *)dmae) + i)); ++ ++ DP(BNX2X_MSG_OFF, "DMAE cmd[%d].%d (0x%08x) : 0x%08x\n", ++ idx, i, cmd_offset + i*4, *(((u32 *)dmae) + i)); ++ } ++ REG_WR(bp, dmae_reg_go_c[idx], 1); ++} ++ ++void bnx2x_write_dmae(struct bnx2x *bp, dma_addr_t dma_addr, u32 dst_addr, ++ u32 len32) ++{ ++ struct dmae_command dmae; ++ u32 *wb_comp = bnx2x_sp(bp, wb_comp); ++ int cnt = 200; ++ ++ if (!bp->dmae_ready) { ++ u32 *data = bnx2x_sp(bp, wb_data[0]); ++ ++ DP(BNX2X_MSG_OFF, "DMAE is not ready (dst_addr %08x len32 %d)" ++ " using indirect\n", dst_addr, len32); ++ bnx2x_init_ind_wr(bp, dst_addr, data, len32); ++ return; ++ } ++ ++ memset(&dmae, 0, sizeof(struct dmae_command)); ++ ++ dmae.opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC | ++ DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ dmae.src_addr_lo = U64_LO(dma_addr); ++ dmae.src_addr_hi = U64_HI(dma_addr); ++ dmae.dst_addr_lo = dst_addr >> 2; ++ dmae.dst_addr_hi = 0; ++ dmae.len = len32; ++ dmae.comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_comp)); ++ dmae.comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_comp)); ++ dmae.comp_val = DMAE_COMP_VAL; ++ ++ DP(BNX2X_MSG_OFF, "DMAE: opcode 0x%08x\n" ++ DP_LEVEL "src_addr [%x:%08x] len [%d *4] " ++ "dst_addr [%x:%08x (%08x)]\n" ++ DP_LEVEL "comp_addr [%x:%08x] comp_val 0x%08x\n", ++ dmae.opcode, dmae.src_addr_hi, dmae.src_addr_lo, ++ dmae.len, dmae.dst_addr_hi, dmae.dst_addr_lo, dst_addr, ++ dmae.comp_addr_hi, dmae.comp_addr_lo, dmae.comp_val); ++ DP(BNX2X_MSG_OFF, "data [0x%08x 0x%08x 0x%08x 0x%08x]\n", ++ bp->slowpath->wb_data[0], bp->slowpath->wb_data[1], ++ bp->slowpath->wb_data[2], bp->slowpath->wb_data[3]); ++ ++ mutex_lock(&bp->dmae_mutex); ++ ++ *wb_comp = 0; ++ ++ bnx2x_post_dmae(bp, &dmae, INIT_DMAE_C(bp)); ++ ++ udelay(5); ++ ++ while (*wb_comp != DMAE_COMP_VAL) { ++ DP(BNX2X_MSG_OFF, "wb_comp 0x%08x\n", *wb_comp); ++ ++ if (!cnt) { ++ BNX2X_ERR("DMAE timeout!\n"); ++ break; ++ } ++ cnt--; ++ /* adjust delay for emulation/FPGA */ ++ if (CHIP_REV_IS_SLOW(bp)) ++ msleep(100); ++ else ++ udelay(5); ++ } ++ ++ mutex_unlock(&bp->dmae_mutex); ++} ++ ++void bnx2x_read_dmae(struct bnx2x *bp, u32 src_addr, u32 len32) ++{ ++ struct dmae_command dmae; ++ u32 *wb_comp = bnx2x_sp(bp, wb_comp); ++ int cnt = 200; ++ ++ if (!bp->dmae_ready) { ++ u32 *data = bnx2x_sp(bp, wb_data[0]); ++ int i; ++ ++ DP(BNX2X_MSG_OFF, "DMAE is not ready (src_addr %08x len32 %d)" ++ " using indirect\n", src_addr, len32); ++ for (i = 0; i < len32; i++) ++ data[i] = bnx2x_reg_rd_ind(bp, src_addr + i*4); ++ return; ++ } ++ ++ memset(&dmae, 0, sizeof(struct dmae_command)); ++ ++ dmae.opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI | ++ DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ dmae.src_addr_lo = src_addr >> 2; ++ dmae.src_addr_hi = 0; ++ dmae.dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_data)); ++ dmae.dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_data)); ++ dmae.len = len32; ++ dmae.comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_comp)); ++ dmae.comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_comp)); ++ dmae.comp_val = DMAE_COMP_VAL; ++ ++ DP(BNX2X_MSG_OFF, "DMAE: opcode 0x%08x\n" ++ DP_LEVEL "src_addr [%x:%08x] len [%d *4] " ++ "dst_addr [%x:%08x (%08x)]\n" ++ DP_LEVEL "comp_addr [%x:%08x] comp_val 0x%08x\n", ++ dmae.opcode, dmae.src_addr_hi, dmae.src_addr_lo, ++ dmae.len, dmae.dst_addr_hi, dmae.dst_addr_lo, src_addr, ++ dmae.comp_addr_hi, dmae.comp_addr_lo, dmae.comp_val); ++ ++ mutex_lock(&bp->dmae_mutex); ++ ++ memset(bnx2x_sp(bp, wb_data[0]), 0, sizeof(u32) * 4); ++ *wb_comp = 0; ++ ++ bnx2x_post_dmae(bp, &dmae, INIT_DMAE_C(bp)); ++ ++ udelay(5); ++ ++ while (*wb_comp != DMAE_COMP_VAL) { ++ ++ if (!cnt) { ++ BNX2X_ERR("DMAE timeout!\n"); ++ break; ++ } ++ cnt--; ++ /* adjust delay for emulation/FPGA */ ++ if (CHIP_REV_IS_SLOW(bp)) ++ msleep(100); ++ else ++ udelay(5); ++ } ++ DP(BNX2X_MSG_OFF, "data [0x%08x 0x%08x 0x%08x 0x%08x]\n", ++ bp->slowpath->wb_data[0], bp->slowpath->wb_data[1], ++ bp->slowpath->wb_data[2], bp->slowpath->wb_data[3]); ++ ++ mutex_unlock(&bp->dmae_mutex); ++} ++ ++void bnx2x_write_dmae_phys_len(struct bnx2x *bp, dma_addr_t phys_addr, ++ u32 addr, u32 len) ++{ ++ int offset = 0; ++ ++ while (len > DMAE_LEN32_WR_MAX) { ++ bnx2x_write_dmae(bp, phys_addr + offset, ++ addr + offset, DMAE_LEN32_WR_MAX); ++ offset += DMAE_LEN32_WR_MAX * 4; ++ len -= DMAE_LEN32_WR_MAX; ++ } ++ ++ bnx2x_write_dmae(bp, phys_addr + offset, addr + offset, len); ++} ++ ++/* used only for slowpath so not inlined */ ++static void bnx2x_wb_wr(struct bnx2x *bp, int reg, u32 val_hi, u32 val_lo) ++{ ++ u32 wb_write[2]; ++ ++ wb_write[0] = val_hi; ++ wb_write[1] = val_lo; ++ REG_WR_DMAE(bp, reg, wb_write, 2); ++} ++ ++#ifdef USE_WB_RD ++static u64 bnx2x_wb_rd(struct bnx2x *bp, int reg) ++{ ++ u32 wb_data[2]; ++ ++ REG_RD_DMAE(bp, reg, wb_data, 2); ++ ++ return HILO_U64(wb_data[0], wb_data[1]); ++} ++#endif ++ ++static int bnx2x_mc_assert(struct bnx2x *bp) ++{ ++ char last_idx; ++ int i, rc = 0; ++ u32 row0, row1, row2, row3; ++ ++ /* XSTORM */ ++ last_idx = REG_RD8(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_ASSERT_LIST_INDEX_OFFSET); ++ if (last_idx) ++ BNX2X_ERR("XSTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx); ++ ++ /* print the asserts */ ++ for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) { ++ ++ row0 = REG_RD(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_ASSERT_LIST_OFFSET(i)); ++ row1 = REG_RD(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_ASSERT_LIST_OFFSET(i) + 4); ++ row2 = REG_RD(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_ASSERT_LIST_OFFSET(i) + 8); ++ row3 = REG_RD(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_ASSERT_LIST_OFFSET(i) + 12); ++ ++ if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { ++ BNX2X_ERR("XSTORM_ASSERT_INDEX 0x%x = 0x%08x" ++ " 0x%08x 0x%08x 0x%08x\n", ++ i, row3, row2, row1, row0); ++ rc++; ++ } else { ++ break; ++ } ++ } ++ ++ /* TSTORM */ ++ last_idx = REG_RD8(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_ASSERT_LIST_INDEX_OFFSET); ++ if (last_idx) ++ BNX2X_ERR("TSTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx); ++ ++ /* print the asserts */ ++ for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) { ++ ++ row0 = REG_RD(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_ASSERT_LIST_OFFSET(i)); ++ row1 = REG_RD(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_ASSERT_LIST_OFFSET(i) + 4); ++ row2 = REG_RD(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_ASSERT_LIST_OFFSET(i) + 8); ++ row3 = REG_RD(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_ASSERT_LIST_OFFSET(i) + 12); ++ ++ if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { ++ BNX2X_ERR("TSTORM_ASSERT_INDEX 0x%x = 0x%08x" ++ " 0x%08x 0x%08x 0x%08x\n", ++ i, row3, row2, row1, row0); ++ rc++; ++ } else { ++ break; ++ } ++ } ++ ++ /* CSTORM */ ++ last_idx = REG_RD8(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_ASSERT_LIST_INDEX_OFFSET); ++ if (last_idx) ++ BNX2X_ERR("CSTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx); ++ ++ /* print the asserts */ ++ for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) { ++ ++ row0 = REG_RD(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_ASSERT_LIST_OFFSET(i)); ++ row1 = REG_RD(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_ASSERT_LIST_OFFSET(i) + 4); ++ row2 = REG_RD(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_ASSERT_LIST_OFFSET(i) + 8); ++ row3 = REG_RD(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_ASSERT_LIST_OFFSET(i) + 12); ++ ++ if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { ++ BNX2X_ERR("CSTORM_ASSERT_INDEX 0x%x = 0x%08x" ++ " 0x%08x 0x%08x 0x%08x\n", ++ i, row3, row2, row1, row0); ++ rc++; ++ } else { ++ break; ++ } ++ } ++ ++ /* USTORM */ ++ last_idx = REG_RD8(bp, BAR_USTRORM_INTMEM + ++ USTORM_ASSERT_LIST_INDEX_OFFSET); ++ if (last_idx) ++ BNX2X_ERR("USTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx); ++ ++ /* print the asserts */ ++ for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) { ++ ++ row0 = REG_RD(bp, BAR_USTRORM_INTMEM + ++ USTORM_ASSERT_LIST_OFFSET(i)); ++ row1 = REG_RD(bp, BAR_USTRORM_INTMEM + ++ USTORM_ASSERT_LIST_OFFSET(i) + 4); ++ row2 = REG_RD(bp, BAR_USTRORM_INTMEM + ++ USTORM_ASSERT_LIST_OFFSET(i) + 8); ++ row3 = REG_RD(bp, BAR_USTRORM_INTMEM + ++ USTORM_ASSERT_LIST_OFFSET(i) + 12); ++ ++ if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) { ++ BNX2X_ERR("USTORM_ASSERT_INDEX 0x%x = 0x%08x" ++ " 0x%08x 0x%08x 0x%08x\n", ++ i, row3, row2, row1, row0); ++ rc++; ++ } else { ++ break; ++ } ++ } ++ ++ return rc; ++} ++ ++static void bnx2x_fw_dump(struct bnx2x *bp) ++{ ++ u32 mark, offset; ++ __be32 data[9]; ++ int word; ++ ++ mark = REG_RD(bp, MCP_REG_MCPR_SCRATCH + 0xf104); ++ mark = ((mark + 0x3) & ~0x3); ++ printk(KERN_ERR PFX "begin fw dump (mark 0x%x)\n" KERN_ERR, mark); ++ ++ for (offset = mark - 0x08000000; offset <= 0xF900; offset += 0x8*4) { ++ for (word = 0; word < 8; word++) ++ data[word] = htonl(REG_RD(bp, MCP_REG_MCPR_SCRATCH + ++ offset + 4*word)); ++ data[8] = 0x0; ++ printk(KERN_CONT "%s", (char *)data); ++ } ++ for (offset = 0xF108; offset <= mark - 0x08000000; offset += 0x8*4) { ++ for (word = 0; word < 8; word++) ++ data[word] = htonl(REG_RD(bp, MCP_REG_MCPR_SCRATCH + ++ offset + 4*word)); ++ data[8] = 0x0; ++ printk(KERN_CONT "%s", (char *)data); ++ } ++ printk("\n" KERN_ERR PFX "end of fw dump\n"); ++} ++ ++static void bnx2x_panic_dump(struct bnx2x *bp) ++{ ++ int i; ++ u16 j, start, end; ++ ++ bp->stats_state = STATS_STATE_DISABLED; ++ DP(BNX2X_MSG_STATS, "stats_state - DISABLED\n"); ++ ++ BNX2X_ERR("begin crash dump -----------------\n"); ++ ++ /* Indices */ ++ /* Common */ ++ BNX2X_ERR("def_c_idx(%u) def_u_idx(%u) def_x_idx(%u)" ++ " def_t_idx(%u) def_att_idx(%u) attn_state(%u)" ++ " spq_prod_idx(%u)\n", ++ bp->def_c_idx, bp->def_u_idx, bp->def_x_idx, bp->def_t_idx, ++ bp->def_att_idx, bp->attn_state, bp->spq_prod_idx); ++ ++ /* Rx */ ++ for_each_rx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ BNX2X_ERR("fp%d: rx_bd_prod(%x) rx_bd_cons(%x)" ++ " *rx_bd_cons_sb(%x) rx_comp_prod(%x)" ++ " rx_comp_cons(%x) *rx_cons_sb(%x)\n", ++ i, fp->rx_bd_prod, fp->rx_bd_cons, ++ le16_to_cpu(*fp->rx_bd_cons_sb), fp->rx_comp_prod, ++ fp->rx_comp_cons, le16_to_cpu(*fp->rx_cons_sb)); ++ BNX2X_ERR(" rx_sge_prod(%x) last_max_sge(%x)" ++ " fp_u_idx(%x) *sb_u_idx(%x)\n", ++ fp->rx_sge_prod, fp->last_max_sge, ++ le16_to_cpu(fp->fp_u_idx), ++ fp->status_blk->u_status_block.status_block_index); ++ } ++ ++ /* Tx */ ++ for_each_tx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ BNX2X_ERR("fp%d: tx_pkt_prod(%x) tx_pkt_cons(%x)" ++ " tx_bd_prod(%x) tx_bd_cons(%x) *tx_cons_sb(%x)\n", ++ i, fp->tx_pkt_prod, fp->tx_pkt_cons, fp->tx_bd_prod, ++ fp->tx_bd_cons, le16_to_cpu(*fp->tx_cons_sb)); ++ BNX2X_ERR(" fp_c_idx(%x) *sb_c_idx(%x)" ++ " tx_db_prod(%x)\n", le16_to_cpu(fp->fp_c_idx), ++ fp->status_blk->c_status_block.status_block_index, ++ fp->tx_db.data.prod); ++ } ++ ++ /* Rings */ ++ /* Rx */ ++ for_each_rx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ start = RX_BD(le16_to_cpu(*fp->rx_cons_sb) - 10); ++ end = RX_BD(le16_to_cpu(*fp->rx_cons_sb) + 503); ++ for (j = start; j != end; j = RX_BD(j + 1)) { ++ u32 *rx_bd = (u32 *)&fp->rx_desc_ring[j]; ++ struct sw_rx_bd *sw_bd = &fp->rx_buf_ring[j]; ++ ++ BNX2X_ERR("fp%d: rx_bd[%x]=[%x:%x] sw_bd=[%p]\n", ++ i, j, rx_bd[1], rx_bd[0], sw_bd->skb); ++ } ++ ++ start = RX_SGE(fp->rx_sge_prod); ++ end = RX_SGE(fp->last_max_sge); ++ for (j = start; j != end; j = RX_SGE(j + 1)) { ++ u32 *rx_sge = (u32 *)&fp->rx_sge_ring[j]; ++ struct sw_rx_page *sw_page = &fp->rx_page_ring[j]; ++ ++ BNX2X_ERR("fp%d: rx_sge[%x]=[%x:%x] sw_page=[%p]\n", ++ i, j, rx_sge[1], rx_sge[0], sw_page->page); ++ } ++ ++ start = RCQ_BD(fp->rx_comp_cons - 10); ++ end = RCQ_BD(fp->rx_comp_cons + 503); ++ for (j = start; j != end; j = RCQ_BD(j + 1)) { ++ u32 *cqe = (u32 *)&fp->rx_comp_ring[j]; ++ ++ BNX2X_ERR("fp%d: cqe[%x]=[%x:%x:%x:%x]\n", ++ i, j, cqe[0], cqe[1], cqe[2], cqe[3]); ++ } ++ } ++ ++ /* Tx */ ++ for_each_tx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ start = TX_BD(le16_to_cpu(*fp->tx_cons_sb) - 10); ++ end = TX_BD(le16_to_cpu(*fp->tx_cons_sb) + 245); ++ for (j = start; j != end; j = TX_BD(j + 1)) { ++ struct sw_tx_bd *sw_bd = &fp->tx_buf_ring[j]; ++ ++ BNX2X_ERR("fp%d: packet[%x]=[%p,%x]\n", ++ i, j, sw_bd->skb, sw_bd->first_bd); ++ } ++ ++ start = TX_BD(fp->tx_bd_cons - 10); ++ end = TX_BD(fp->tx_bd_cons + 254); ++ for (j = start; j != end; j = TX_BD(j + 1)) { ++ u32 *tx_bd = (u32 *)&fp->tx_desc_ring[j]; ++ ++ BNX2X_ERR("fp%d: tx_bd[%x]=[%x:%x:%x:%x]\n", ++ i, j, tx_bd[0], tx_bd[1], tx_bd[2], tx_bd[3]); ++ } ++ } ++ ++ bnx2x_fw_dump(bp); ++#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */ ++ bp->msglevel |= NETIF_MSG_PROBE; ++ BNX2X_ERR("Idle check (1st round) ----------\n"); ++ bnx2x_idle_chk(bp); ++ BNX2X_ERR("Idle check (2nd round) ----------\n"); ++ bnx2x_idle_chk(bp); ++#endif ++ bnx2x_mc_assert(bp); ++ BNX2X_ERR("end crash dump -----------------\n"); ++} ++ ++static void bnx2x_int_enable(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ u32 addr = port ? HC_REG_CONFIG_1 : HC_REG_CONFIG_0; ++ u32 val = REG_RD(bp, addr); ++ int msix = (bp->flags & USING_MSIX_FLAG) ? 1 : 0; ++ int msi = (bp->flags & USING_MSI_FLAG) ? 1 : 0; ++ ++ if (msix) { ++ val &= ~(HC_CONFIG_0_REG_SINGLE_ISR_EN_0 | ++ HC_CONFIG_0_REG_INT_LINE_EN_0); ++ val |= (HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 | ++ HC_CONFIG_0_REG_ATTN_BIT_EN_0); ++ } else if (msi) { ++ val &= ~HC_CONFIG_0_REG_INT_LINE_EN_0; ++ val |= (HC_CONFIG_0_REG_SINGLE_ISR_EN_0 | ++ HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 | ++ HC_CONFIG_0_REG_ATTN_BIT_EN_0); ++ } else { ++ val |= (HC_CONFIG_0_REG_SINGLE_ISR_EN_0 | ++ HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 | ++ HC_CONFIG_0_REG_INT_LINE_EN_0 | ++ HC_CONFIG_0_REG_ATTN_BIT_EN_0); ++ ++ DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)\n", ++ val, port, addr); ++ ++ REG_WR(bp, addr, val); ++ ++ val &= ~HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0; ++ } ++ ++ DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x) mode %s\n", ++ val, port, addr, (msix ? "MSI-X" : (msi ? "MSI" : "INTx"))); ++ ++ REG_WR(bp, addr, val); ++ barrier(); ++ ++ if (CHIP_IS_E1H(bp)) { ++ /* init leading/trailing edge */ ++ if (IS_E1HMF(bp)) { ++ val = (0xee0f | (1 << (BP_E1HVN(bp) + 4))); ++ if (bp->port.pmf) ++ /* enable nig and gpio3 attention */ ++ val |= 0x1100; ++ } else ++ val = 0xffff; ++ ++ REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, val); ++ REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, val); ++ } ++ ++ /* Make sure that interrupts are indeed enabled from here on */ ++ mmiowb(); ++} ++ ++static void bnx2x_int_disable(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ u32 addr = port ? HC_REG_CONFIG_1 : HC_REG_CONFIG_0; ++ u32 val = REG_RD(bp, addr); ++ ++ val &= ~(HC_CONFIG_0_REG_SINGLE_ISR_EN_0 | ++ HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 | ++ HC_CONFIG_0_REG_INT_LINE_EN_0 | ++ HC_CONFIG_0_REG_ATTN_BIT_EN_0); ++ ++ DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)\n", ++ val, port, addr); ++ ++ /* flush all outstanding writes */ ++ mmiowb(); ++ ++ REG_WR(bp, addr, val); ++ if (REG_RD(bp, addr) != val) ++ BNX2X_ERR("BUG! proper val not read from IGU!\n"); ++} ++ ++static void bnx2x_int_disable_sync(struct bnx2x *bp, int disable_hw) ++{ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++ int msix = (bp->flags & USING_MSIX_FLAG) ? 1 : 0; ++ int i, offset; ++#endif ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ int j; ++#endif ++ ++ /* disable interrupt handling */ ++ atomic_inc(&bp->intr_sem); ++ smp_wmb(); /* Ensure that bp->intr_sem update is SMP-safe */ ++ ++ if (disable_hw) ++ /* prevent the HW from sending interrupts */ ++ bnx2x_int_disable(bp); ++ ++ /* make sure all ISRs are done */ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++ if (msix) { ++ synchronize_irq(bp->msix_table[0].vector); ++ offset = 1; ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ offset++; ++#endif ++ for_each_queue(bp, i) ++ synchronize_irq(bp->msix_table[i + offset].vector); ++ } else ++#endif ++ synchronize_irq(bp->pdev->irq); ++ ++ /* make sure sp_task is not running */ ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++ cancel_delayed_work(&bp->sp_task); ++ flush_workqueue(bnx2x_wq); ++#else ++ j = 0; ++ smp_mb(); /* sp_running is set by sp_task */ ++ while (bp->sp_running) { ++ if (!(++j % 1000)) ++ BNX2X_ERR("sp_running (j %d)\n", j); ++ msleep(1); ++ smp_mb(); ++ } ++#endif ++} ++ ++/* fast path */ ++ ++/* ++ * General service functions ++ */ ++ ++static inline void bnx2x_ack_sb(struct bnx2x *bp, u8 sb_id, ++ u8 storm, u16 index, u8 op, u8 update) ++{ ++ u32 hc_addr = (HC_REG_COMMAND_REG + BP_PORT(bp)*32 + ++ COMMAND_REG_INT_ACK); ++ struct igu_ack_register igu_ack; ++ ++ igu_ack.status_block_index = index; ++ igu_ack.sb_id_and_flags = ++ ((sb_id << IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT) | ++ (storm << IGU_ACK_REGISTER_STORM_ID_SHIFT) | ++ (update << IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT) | ++ (op << IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT)); ++ ++#if (LINUX_VERSION_CODE < 0x020600) /* ! BNX2X_UPSTREAM */ ++ /* x86's writel() in 2.4.x does not have barrier(). */ ++ barrier(); ++#endif ++ DP(BNX2X_MSG_OFF, "write 0x%08x to HC addr 0x%x\n", ++ (*(u32 *)&igu_ack), hc_addr); ++ REG_WR(bp, hc_addr, (*(u32 *)&igu_ack)); ++ ++ /* Make sure that ACK is written */ ++ mmiowb(); ++ barrier(); ++} ++ ++static inline u16 bnx2x_update_fpsb_idx(struct bnx2x_fastpath *fp) ++{ ++ struct host_status_block *fpsb = fp->status_blk; ++ u16 rc = 0; ++ ++ barrier(); /* status block is written to by the chip */ ++ if (fp->fp_c_idx != fpsb->c_status_block.status_block_index) { ++ fp->fp_c_idx = fpsb->c_status_block.status_block_index; ++ rc |= 1; ++ } ++ if (fp->fp_u_idx != fpsb->u_status_block.status_block_index) { ++ fp->fp_u_idx = fpsb->u_status_block.status_block_index; ++ rc |= 2; ++ } ++ return rc; ++} ++ ++static u16 bnx2x_ack_int(struct bnx2x *bp) ++{ ++ u32 hc_addr = (HC_REG_COMMAND_REG + BP_PORT(bp)*32 + ++ COMMAND_REG_SIMD_MASK); ++ u32 result = REG_RD(bp, hc_addr); ++ ++ DP(BNX2X_MSG_OFF, "read 0x%08x from HC addr 0x%x\n", ++ result, hc_addr); ++ ++ return result; ++} ++ ++ ++/* ++ * fast path service functions ++ */ ++ ++static inline int bnx2x_has_tx_work_unload(struct bnx2x_fastpath *fp) ++{ ++ /* Tell compiler that consumer and producer can change */ ++ barrier(); ++ return (fp->tx_pkt_prod != fp->tx_pkt_cons); ++} ++ ++/* free skb in the packet ring at pos idx ++ * return idx of last bd freed ++ */ ++static u16 bnx2x_free_tx_pkt(struct bnx2x *bp, struct bnx2x_fastpath *fp, ++ u16 idx) ++{ ++ struct sw_tx_bd *tx_buf = &fp->tx_buf_ring[idx]; ++ struct eth_tx_start_bd *tx_start_bd; ++ struct eth_tx_bd *tx_data_bd; ++ struct sk_buff *skb = tx_buf->skb; ++ u16 bd_idx = TX_BD(tx_buf->first_bd), new_cons; ++ int nbd; ++ ++ /* prefetch skb end pointer to speedup dev_kfree_skb() */ ++ prefetch(&skb->end); ++ ++ DP(BNX2X_MSG_OFF, "pkt_idx %d buff @(%p)->skb %p\n", ++ idx, tx_buf, skb); ++ ++ /* unmap first bd */ ++ DP(BNX2X_MSG_OFF, "free bd_idx %d\n", bd_idx); ++ tx_start_bd = &fp->tx_desc_ring[bd_idx].start_bd; ++ pci_unmap_single(bp->pdev, BD_UNMAP_ADDR(tx_start_bd), ++ BD_UNMAP_LEN(tx_start_bd), PCI_DMA_TODEVICE); ++ ++ nbd = le16_to_cpu(tx_start_bd->nbd) - 1; ++#ifdef BNX2X_STOP_ON_ERROR ++ if ((nbd - 1) > (MAX_SKB_FRAGS + 2)) { ++ BNX2X_ERR("BAD nbd!\n"); ++ bnx2x_panic(); ++ } ++#endif ++ new_cons = nbd + tx_buf->first_bd; ++ ++ /* Get the next bd */ ++ bd_idx = TX_BD(NEXT_TX_IDX(bd_idx)); ++ ++ /* Skip a parse bd... */ ++ --nbd; ++ bd_idx = TX_BD(NEXT_TX_IDX(bd_idx)); ++ ++ /* ...and the TSO split header bd since they have no mapping */ ++ if (tx_buf->flags & BNX2X_TSO_SPLIT_BD) { ++ --nbd; ++ bd_idx = TX_BD(NEXT_TX_IDX(bd_idx)); ++ } ++ ++ /* now free frags */ ++ while (nbd > 0) { ++ ++ DP(BNX2X_MSG_OFF, "free frag bd_idx %d\n", bd_idx); ++ tx_data_bd = &fp->tx_desc_ring[bd_idx].reg_bd; ++ pci_unmap_page(bp->pdev, BD_UNMAP_ADDR(tx_data_bd), ++ BD_UNMAP_LEN(tx_data_bd), PCI_DMA_TODEVICE); ++ if (--nbd) ++ bd_idx = TX_BD(NEXT_TX_IDX(bd_idx)); ++ } ++ ++ /* release skb */ ++ WARN_ON(!skb); ++ dev_kfree_skb_any(skb); ++ tx_buf->first_bd = 0; ++ tx_buf->skb = NULL; ++ ++ return new_cons; ++} ++ ++static inline u16 bnx2x_tx_avail(struct bnx2x_fastpath *fp) ++{ ++ s16 used; ++ u16 prod; ++ u16 cons; ++ ++ barrier(); /* Tell compiler that prod and cons can change */ ++ prod = fp->tx_bd_prod; ++ cons = fp->tx_bd_cons; ++ ++ /* NUM_TX_RINGS = number of "next-page" entries ++ It will be used as a threshold */ ++ used = SUB_S16(prod, cons) + (s16)NUM_TX_RINGS; ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ WARN_ON(used < 0); ++ WARN_ON(used > fp->bp->tx_ring_size); ++ WARN_ON((fp->bp->tx_ring_size - used) > MAX_TX_AVAIL); ++#endif ++ ++ return (s16)(fp->bp->tx_ring_size) - used; ++} ++ ++static void bnx2x_tx_int(struct bnx2x_fastpath *fp) ++{ ++ struct bnx2x *bp = fp->bp; ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ struct netdev_queue *txq; ++#endif ++ u16 hw_cons, sw_cons, bd_cons = fp->tx_bd_cons; ++ int done = 0; ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return; ++#endif ++ ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ txq = netdev_get_tx_queue(bp->dev, fp->index - bp->num_rx_queues); ++#endif ++ hw_cons = le16_to_cpu(*fp->tx_cons_sb); ++ sw_cons = fp->tx_pkt_cons; ++ ++ while (sw_cons != hw_cons) { ++ u16 pkt_cons; ++ ++ pkt_cons = TX_BD(sw_cons); ++ ++ /* prefetch(bp->tx_buf_ring[pkt_cons].skb); */ ++ ++ DP(NETIF_MSG_TX_DONE, "hw_cons %u sw_cons %u pkt_cons %u\n", ++ hw_cons, sw_cons, pkt_cons); ++ ++/* if (NEXT_TX_IDX(sw_cons) != hw_cons) { ++ rmb(); ++ prefetch(fp->tx_buf_ring[NEXT_TX_IDX(sw_cons)].skb); ++ } ++*/ ++ bd_cons = bnx2x_free_tx_pkt(bp, fp, pkt_cons); ++ sw_cons++; ++ done++; ++ } ++ ++ fp->tx_pkt_cons = sw_cons; ++ fp->tx_bd_cons = bd_cons; ++ ++ /* TBD need a thresh? */ ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ if (unlikely(netif_tx_queue_stopped(txq))) { ++ ++ /* Need to make the tx_bd_cons update visible to start_xmit() ++ * before checking for netif_tx_queue_stopped(). Without the ++ * memory barrier, there is a small possibility that ++ * start_xmit() will miss it and cause the queue to be stopped ++ * forever. ++ */ ++ smp_mb(); ++ ++ if ((netif_tx_queue_stopped(txq)) && ++ (bp->state == BNX2X_STATE_OPEN) && ++ (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3)) ++ netif_tx_wake_queue(txq); ++ } ++#else ++ if (unlikely(netif_queue_stopped(bp->dev))) { ++ ++ /* See above */ ++ smp_mb(); ++ ++ if (netif_queue_stopped(bp->dev) && ++ (bp->state == BNX2X_STATE_OPEN) && ++ (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3)) ++ netif_wake_queue(bp->dev); ++ } ++#endif ++} ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++static void bnx2x_cnic_cfc_comp(struct bnx2x *bp, int cid); ++#endif ++ ++static void bnx2x_sp_event(struct bnx2x_fastpath *fp, ++ union eth_rx_cqe *rr_cqe) ++{ ++ struct bnx2x *bp = fp->bp; ++ int cid = SW_CID(rr_cqe->ramrod_cqe.conn_and_cmd_data); ++ int command = CQE_CMD(rr_cqe->ramrod_cqe.conn_and_cmd_data); ++ ++ DP(BNX2X_MSG_SP, ++ "fp %d cid %d got ramrod #%d state is %x type is %d\n", ++ fp->index, cid, command, bp->state, ++ rr_cqe->ramrod_cqe.ramrod_type); ++ ++ bp->spq_left++; ++ ++ if (fp->index) { ++ switch (command | fp->state) { ++ case (RAMROD_CMD_ID_ETH_CLIENT_SETUP | ++ BNX2X_FP_STATE_OPENING): ++ DP(NETIF_MSG_IFUP, "got MULTI[%d] setup ramrod\n", ++ cid); ++ fp->state = BNX2X_FP_STATE_OPEN; ++ break; ++ ++ case (RAMROD_CMD_ID_ETH_HALT | BNX2X_FP_STATE_HALTING): ++ DP(NETIF_MSG_IFDOWN, "got MULTI[%d] halt ramrod\n", ++ cid); ++ fp->state = BNX2X_FP_STATE_HALTED; ++ break; ++ ++ default: ++ BNX2X_ERR("unexpected MC reply (%d) " ++ "fp->state is %x\n", command, fp->state); ++ break; ++ } ++ mb(); /* force bnx2x_wait_ramrod() to see the change */ ++ return; ++ } ++ ++ switch (command | bp->state) { ++ case (RAMROD_CMD_ID_ETH_PORT_SETUP | BNX2X_STATE_OPENING_WAIT4_PORT): ++ DP(NETIF_MSG_IFUP, "got setup ramrod\n"); ++ bp->state = BNX2X_STATE_OPEN; ++ break; ++ ++ case (RAMROD_CMD_ID_ETH_HALT | BNX2X_STATE_CLOSING_WAIT4_HALT): ++ DP(NETIF_MSG_IFDOWN, "got halt ramrod\n"); ++ bp->state = BNX2X_STATE_CLOSING_WAIT4_DELETE; ++ fp->state = BNX2X_FP_STATE_HALTED; ++ break; ++ ++ case (RAMROD_CMD_ID_ETH_CFC_DEL | BNX2X_STATE_CLOSING_WAIT4_HALT): ++ DP(NETIF_MSG_IFDOWN, "got delete ramrod for MULTI[%d]\n", cid); ++ bnx2x_fp(bp, cid, state) = BNX2X_FP_STATE_CLOSED; ++ break; ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ case (RAMROD_CMD_ID_ETH_CFC_DEL | BNX2X_STATE_OPEN): ++ DP(NETIF_MSG_IFDOWN, "got delete ramrod for CID %d\n", cid); ++ bnx2x_cnic_cfc_comp(bp, cid); ++ break; ++#endif ++ ++ case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_OPEN): ++ case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_DIAG): ++ DP(NETIF_MSG_IFUP, "got set mac ramrod\n"); ++ bp->set_mac_pending = 0; ++ break; ++ ++ case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_CLOSING_WAIT4_HALT): ++ case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_DISABLED): ++ DP(NETIF_MSG_IFDOWN, "got (un)set mac ramrod\n"); ++ break; ++ ++ default: ++ BNX2X_ERR("unexpected MC reply (%d) bp->state is %x\n", ++ command, bp->state); ++ break; ++ } ++ mb(); /* force bnx2x_wait_ramrod() to see the change */ ++} ++ ++static inline void bnx2x_free_rx_sge(struct bnx2x *bp, ++ struct bnx2x_fastpath *fp, u16 index) ++{ ++ struct sw_rx_page *sw_buf = &fp->rx_page_ring[index]; ++ struct page *page = sw_buf->page; ++ struct eth_rx_sge *sge = &fp->rx_sge_ring[index]; ++ ++ /* Skip "next page" elements */ ++ if (!page) ++ return; ++ ++ pci_unmap_page(bp->pdev, pci_unmap_addr(sw_buf, mapping), ++ SGE_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); ++ __free_pages(page, PAGES_PER_SGE_SHIFT); ++ ++ sw_buf->page = NULL; ++ sge->addr_hi = 0; ++ sge->addr_lo = 0; ++} ++ ++static inline void bnx2x_free_rx_sge_range(struct bnx2x *bp, ++ struct bnx2x_fastpath *fp, int last) ++{ ++ int i; ++ ++ for (i = 0; i < last; i++) ++ bnx2x_free_rx_sge(bp, fp, i); ++} ++ ++static inline int bnx2x_alloc_rx_sge(struct bnx2x *bp, ++ struct bnx2x_fastpath *fp, u16 index) ++{ ++ struct page *page = alloc_pages(GFP_ATOMIC, PAGES_PER_SGE_SHIFT); ++ struct sw_rx_page *sw_buf = &fp->rx_page_ring[index]; ++ struct eth_rx_sge *sge = &fp->rx_sge_ring[index]; ++ dma_addr_t mapping; ++ ++ if (unlikely(page == NULL)) ++ return -ENOMEM; ++ ++ mapping = pci_map_page(bp->pdev, page, 0, SGE_PAGE_SIZE*PAGES_PER_SGE, ++ PCI_DMA_FROMDEVICE); ++#if (LINUX_VERSION_CODE >= 0x02061b) /* BNX2X_UPSTREAM */ ++ if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { ++#else ++ if (unlikely(dma_mapping_error(mapping))) { ++#endif ++ __free_pages(page, PAGES_PER_SGE_SHIFT); ++ return -ENOMEM; ++ } ++ ++ sw_buf->page = page; ++ pci_unmap_addr_set(sw_buf, mapping, mapping); ++ ++ sge->addr_hi = cpu_to_le32(U64_HI(mapping)); ++ sge->addr_lo = cpu_to_le32(U64_LO(mapping)); ++ ++ return 0; ++} ++ ++static inline int bnx2x_alloc_rx_skb(struct bnx2x *bp, ++ struct bnx2x_fastpath *fp, u16 index) ++{ ++ struct sk_buff *skb; ++ struct sw_rx_bd *rx_buf = &fp->rx_buf_ring[index]; ++ struct eth_rx_bd *rx_bd = &fp->rx_desc_ring[index]; ++ dma_addr_t mapping; ++ ++ skb = netdev_alloc_skb(bp->dev, bp->rx_buf_size); ++ if (unlikely(skb == NULL)) ++ return -ENOMEM; ++ ++ mapping = pci_map_single(bp->pdev, skb->data, bp->rx_buf_size, ++ PCI_DMA_FROMDEVICE); ++#if (LINUX_VERSION_CODE >= 0x02061b) /* BNX2X_UPSTREAM */ ++ if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { ++#else ++ if (unlikely(dma_mapping_error(mapping))) { ++#endif ++ dev_kfree_skb(skb); ++ return -ENOMEM; ++ } ++ ++ rx_buf->skb = skb; ++ pci_unmap_addr_set(rx_buf, mapping, mapping); ++ ++ rx_bd->addr_hi = cpu_to_le32(U64_HI(mapping)); ++ rx_bd->addr_lo = cpu_to_le32(U64_LO(mapping)); ++ ++ return 0; ++} ++ ++/* note that we are not allocating a new skb, ++ * we are just moving one from cons to prod ++ * we are not creating a new mapping, ++ * so there is no need to check for dma_mapping_error(). ++ */ ++static void bnx2x_reuse_rx_skb(struct bnx2x_fastpath *fp, ++ struct sk_buff *skb, u16 cons, u16 prod) ++{ ++ struct bnx2x *bp = fp->bp; ++ struct sw_rx_bd *cons_rx_buf = &fp->rx_buf_ring[cons]; ++ struct sw_rx_bd *prod_rx_buf = &fp->rx_buf_ring[prod]; ++ struct eth_rx_bd *cons_bd = &fp->rx_desc_ring[cons]; ++ struct eth_rx_bd *prod_bd = &fp->rx_desc_ring[prod]; ++ ++ pci_dma_sync_single_for_device(bp->pdev, ++ pci_unmap_addr(cons_rx_buf, mapping), ++ RX_COPY_THRESH, PCI_DMA_FROMDEVICE); ++ ++ prod_rx_buf->skb = cons_rx_buf->skb; ++ pci_unmap_addr_set(prod_rx_buf, mapping, ++ pci_unmap_addr(cons_rx_buf, mapping)); ++ *prod_bd = *cons_bd; ++} ++ ++#if !defined(__NO_TPA__) /* BNX2X_UPSTREAM */ ++static inline void bnx2x_update_last_max_sge(struct bnx2x_fastpath *fp, ++ u16 idx) ++{ ++ u16 last_max = fp->last_max_sge; ++ ++ if (SUB_S16(idx, last_max) > 0) ++ fp->last_max_sge = idx; ++} ++ ++static void bnx2x_clear_sge_mask_next_elems(struct bnx2x_fastpath *fp) ++{ ++ int i, j; ++ ++ for (i = 1; i <= NUM_RX_SGE_PAGES; i++) { ++ int idx = RX_SGE_CNT * i - 1; ++ ++ for (j = 0; j < 2; j++) { ++ SGE_MASK_CLEAR_BIT(fp, idx); ++ idx--; ++ } ++ } ++} ++ ++static void bnx2x_update_sge_prod(struct bnx2x_fastpath *fp, ++ struct eth_fast_path_rx_cqe *fp_cqe) ++{ ++ struct bnx2x *bp = fp->bp; ++ u16 sge_len = SGE_PAGE_ALIGN(le16_to_cpu(fp_cqe->pkt_len) - ++ le16_to_cpu(fp_cqe->len_on_bd)) >> ++ SGE_PAGE_SHIFT; ++ u16 last_max, last_elem, first_elem; ++ u16 delta = 0; ++ u16 i; ++ ++ if (!sge_len) ++ return; ++ ++ /* First mark all used pages */ ++ for (i = 0; i < sge_len; i++) ++ SGE_MASK_CLEAR_BIT(fp, RX_SGE(le16_to_cpu(fp_cqe->sgl[i]))); ++ ++ DP(NETIF_MSG_RX_STATUS, "fp_cqe->sgl[%d] = %d\n", ++ sge_len - 1, le16_to_cpu(fp_cqe->sgl[sge_len - 1])); ++ ++ /* Here we assume that the last SGE index is the biggest */ ++ prefetch((void *)(fp->sge_mask)); ++ bnx2x_update_last_max_sge(fp, le16_to_cpu(fp_cqe->sgl[sge_len - 1])); ++ ++ last_max = RX_SGE(fp->last_max_sge); ++ last_elem = last_max >> RX_SGE_MASK_ELEM_SHIFT; ++ first_elem = RX_SGE(fp->rx_sge_prod) >> RX_SGE_MASK_ELEM_SHIFT; ++ ++ /* If ring is not full */ ++ if (last_elem + 1 != first_elem) ++ last_elem++; ++ ++ /* Now update the prod */ ++ for (i = first_elem; i != last_elem; i = NEXT_SGE_MASK_ELEM(i)) { ++ if (likely(fp->sge_mask[i])) ++ break; ++ ++ fp->sge_mask[i] = RX_SGE_MASK_ELEM_ONE_MASK; ++ delta += RX_SGE_MASK_ELEM_SZ; ++ } ++ ++ if (delta > 0) { ++ fp->rx_sge_prod += delta; ++ /* clear page-end entries */ ++ bnx2x_clear_sge_mask_next_elems(fp); ++ } ++ ++ DP(NETIF_MSG_RX_STATUS, ++ "fp->last_max_sge = %d fp->rx_sge_prod = %d\n", ++ fp->last_max_sge, fp->rx_sge_prod); ++} ++ ++static inline void bnx2x_init_sge_ring_bit_mask(struct bnx2x_fastpath *fp) ++{ ++ /* Set the mask to all 1-s: it's faster to compare to 0 than to 0xf-s */ ++ memset(fp->sge_mask, 0xff, ++ (NUM_RX_SGE >> RX_SGE_MASK_ELEM_SHIFT)*sizeof(u64)); ++ ++ /* Clear the two last indices in the page to 1: ++ these are the indices that correspond to the "next" element, ++ hence will never be indicated and should be removed from ++ the calculations. */ ++ bnx2x_clear_sge_mask_next_elems(fp); ++} ++ ++static void bnx2x_tpa_start(struct bnx2x_fastpath *fp, u16 queue, ++ struct sk_buff *skb, u16 cons, u16 prod) ++{ ++ struct bnx2x *bp = fp->bp; ++ struct sw_rx_bd *cons_rx_buf = &fp->rx_buf_ring[cons]; ++ struct sw_rx_bd *prod_rx_buf = &fp->rx_buf_ring[prod]; ++ struct eth_rx_bd *prod_bd = &fp->rx_desc_ring[prod]; ++ dma_addr_t mapping; ++ ++ /* move empty skb from pool to prod and map it */ ++ prod_rx_buf->skb = fp->tpa_pool[queue].skb; ++ mapping = pci_map_single(bp->pdev, fp->tpa_pool[queue].skb->data, ++ bp->rx_buf_size, PCI_DMA_FROMDEVICE); ++ pci_unmap_addr_set(prod_rx_buf, mapping, mapping); ++ ++ /* move partial skb from cons to pool (don't unmap yet) */ ++ fp->tpa_pool[queue] = *cons_rx_buf; ++ ++ /* mark bin state as start - print error if current state != stop */ ++ if (fp->tpa_state[queue] != BNX2X_TPA_STOP) ++ BNX2X_ERR("start of bin not in stop [%d]\n", queue); ++ ++ fp->tpa_state[queue] = BNX2X_TPA_START; ++ ++ /* point prod_bd to new skb */ ++ prod_bd->addr_hi = cpu_to_le32(U64_HI(mapping)); ++ prod_bd->addr_lo = cpu_to_le32(U64_LO(mapping)); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ fp->tpa_queue_used |= (1 << queue); ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++#ifdef _ASM_GENERIC_INT_L64_H ++ DP(NETIF_MSG_RX_STATUS, "fp->tpa_queue_used = 0x%lx\n", ++#else ++ DP(NETIF_MSG_RX_STATUS, "fp->tpa_queue_used = 0x%llx\n", ++#endif ++#else ++#if defined(__powerpc64__) || defined(_ASM_IA64_TYPES_H) ++ DP(NETIF_MSG_RX_STATUS, "fp->tpa_queue_used = 0x%lx\n", ++#else ++ DP(NETIF_MSG_RX_STATUS, "fp->tpa_queue_used = 0x%llx\n", ++#endif ++#endif ++ fp->tpa_queue_used); ++#endif ++} ++ ++static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp, ++ struct sk_buff *skb, ++ struct eth_fast_path_rx_cqe *fp_cqe, ++ u16 cqe_idx) ++{ ++ struct sw_rx_page *rx_pg, old_rx_pg; ++ u16 len_on_bd = le16_to_cpu(fp_cqe->len_on_bd); ++ u32 i, frag_len, frag_size, pages; ++ int err; ++ int j; ++ ++ frag_size = le16_to_cpu(fp_cqe->pkt_len) - len_on_bd; ++ pages = SGE_PAGE_ALIGN(frag_size) >> SGE_PAGE_SHIFT; ++ ++ /* This is needed in order to enable forwarding support */ ++ if (frag_size) ++ skb_shinfo(skb)->gso_size = min((u32)SGE_PAGE_SIZE, ++ max(frag_size, (u32)len_on_bd)); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (pages > ++ min((u32)8, (u32)MAX_SKB_FRAGS) * SGE_PAGE_SIZE * PAGES_PER_SGE) { ++ BNX2X_ERR("SGL length is too long: %d. CQE index is %d\n", ++ pages, cqe_idx); ++ BNX2X_ERR("fp_cqe->pkt_len = %d fp_cqe->len_on_bd = %d\n", ++ fp_cqe->pkt_len, len_on_bd); ++ bnx2x_panic(); ++ return -EINVAL; ++ } ++#endif ++ ++ /* Run through the SGL and compose the fragmented skb */ ++ for (i = 0, j = 0; i < pages; i += PAGES_PER_SGE, j++) { ++ u16 sge_idx = RX_SGE(le16_to_cpu(fp_cqe->sgl[j])); ++ ++ /* FW gives the indices of the SGE as if the ring is an array ++ (meaning that "next" element will consume 2 indices) */ ++ frag_len = min(frag_size, (u32)(SGE_PAGE_SIZE*PAGES_PER_SGE)); ++ rx_pg = &fp->rx_page_ring[sge_idx]; ++ old_rx_pg = *rx_pg; ++ ++ /* If we fail to allocate a substitute page, we simply stop ++ where we are and drop the whole packet */ ++ err = bnx2x_alloc_rx_sge(bp, fp, sge_idx); ++ if (unlikely(err)) { ++ fp->eth_q_stats.rx_skb_alloc_failed++; ++ return err; ++ } ++ ++ /* Unmap the page as we r going to pass it to the stack */ ++ pci_unmap_page(bp->pdev, pci_unmap_addr(&old_rx_pg, mapping), ++ SGE_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); ++ ++ /* Add one frag and update the appropriate fields in the skb */ ++ skb_fill_page_desc(skb, j, old_rx_pg.page, 0, frag_len); ++ ++ skb->data_len += frag_len; ++ skb->truesize += frag_len; ++ skb->len += frag_len; ++ ++ frag_size -= frag_len; ++ } ++ ++ return 0; ++} ++ ++static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp, ++ u16 queue, int pad, int len, union eth_rx_cqe *cqe, ++ u16 cqe_idx) ++{ ++ struct sw_rx_bd *rx_buf = &fp->tpa_pool[queue]; ++ struct sk_buff *skb = rx_buf->skb; ++ /* alloc new skb */ ++ struct sk_buff *new_skb = netdev_alloc_skb(bp->dev, bp->rx_buf_size); ++ ++ /* Unmap skb in the pool anyway, as we are going to change ++ pool entry status to BNX2X_TPA_STOP even if new skb allocation ++ fails. */ ++ pci_unmap_single(bp->pdev, pci_unmap_addr(rx_buf, mapping), ++ bp->rx_buf_size, PCI_DMA_FROMDEVICE); ++ ++ if (likely(new_skb)) { ++ /* fix ip xsum and give it to the stack */ ++ /* (no need to map the new skb) */ ++#ifdef BCM_VLAN ++ int is_vlan_cqe = ++ (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & ++ PARSING_FLAGS_VLAN); ++ int is_not_hwaccel_vlan_cqe = ++ (is_vlan_cqe && (!(bp->flags & HW_VLAN_RX_FLAG))); ++#endif ++ ++ prefetch(skb); ++ prefetch(((char *)(skb)) + 128); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (pad + len > bp->rx_buf_size) { ++ BNX2X_ERR("skb_put is about to fail... " ++ "pad %d len %d rx_buf_size %d\n", ++ pad, len, bp->rx_buf_size); ++ bnx2x_panic(); ++ return; ++ } ++#endif ++ ++ skb_reserve(skb, pad); ++ skb_put(skb, len); ++ ++ skb->protocol = eth_type_trans(skb, bp->dev); ++ skb->ip_summed = CHECKSUM_UNNECESSARY; ++ ++ { ++ struct iphdr *iph; ++ ++ iph = (struct iphdr *)skb->data; ++#ifdef BCM_VLAN ++ /* If there is no Rx VLAN offloading - ++ take VLAN tag into an account */ ++ if (unlikely(is_not_hwaccel_vlan_cqe)) ++ iph = (struct iphdr *)((u8 *)iph + VLAN_HLEN); ++#endif ++ iph->check = 0; ++ iph->check = ip_fast_csum((u8 *)iph, iph->ihl); ++ } ++ ++ if (!bnx2x_fill_frag_skb(bp, fp, skb, ++ &cqe->fast_path_cqe, cqe_idx)) { ++#ifdef BCM_VLAN ++ if ((bp->vlgrp != NULL) && is_vlan_cqe && ++ (!is_not_hwaccel_vlan_cqe)) ++ vlan_hwaccel_receive_skb(skb, bp->vlgrp, ++ le16_to_cpu(cqe->fast_path_cqe. ++ vlan_tag)); ++ else ++#endif ++ netif_receive_skb(skb); ++ } else { ++ DP(NETIF_MSG_RX_STATUS, "Failed to allocate new pages" ++ " - dropping packet!\n"); ++ dev_kfree_skb(skb); ++ } ++ ++#if (LINUX_VERSION_CODE < 0x02061b) /* ! BNX2X_UPSTREAM */ ++ bp->dev->last_rx = jiffies; ++#endif ++ ++ /* put new skb in bin */ ++ fp->tpa_pool[queue].skb = new_skb; ++ ++ } else { ++ /* else drop the packet and keep the buffer in the bin */ ++ DP(NETIF_MSG_RX_STATUS, ++ "Failed to allocate new skb - dropping packet!\n"); ++ fp->eth_q_stats.rx_skb_alloc_failed++; ++ } ++ ++ fp->tpa_state[queue] = BNX2X_TPA_STOP; ++} ++#endif ++ ++static inline void bnx2x_update_rx_prod(struct bnx2x *bp, ++ struct bnx2x_fastpath *fp, ++ u16 bd_prod, u16 rx_comp_prod, ++ u16 rx_sge_prod) ++{ ++ struct ustorm_eth_rx_producers rx_prods = {0}; ++ int i; ++ ++ /* Update producers */ ++ rx_prods.bd_prod = bd_prod; ++ rx_prods.cqe_prod = rx_comp_prod; ++ rx_prods.sge_prod = rx_sge_prod; ++ ++ /* ++ * Make sure that the BD and SGE data is updated before updating the ++ * producers since FW might read the BD/SGE right after the producer ++ * is updated. ++ * This is only applicable for weak-ordered memory model archs such ++ * as IA-64. The following barrier is also mandatory since FW will ++ * assumes BDs must have buffers. ++ */ ++ wmb(); ++ ++ for (i = 0; i < sizeof(struct ustorm_eth_rx_producers)/4; i++) ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_RX_PRODS_OFFSET(BP_PORT(bp), fp->cl_id) + i*4, ++ ((u32 *)&rx_prods)[i]); ++ ++ mmiowb(); /* keep prod updates ordered */ ++ ++ DP(NETIF_MSG_RX_STATUS, ++ "queue[%d]: wrote bd_prod %u cqe_prod %u sge_prod %u\n", ++ fp->index, bd_prod, rx_comp_prod, rx_sge_prod); ++} ++ ++static int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget) ++{ ++ struct bnx2x *bp = fp->bp; ++ u16 bd_cons, bd_prod, bd_prod_fw, comp_ring_cons; ++ u16 hw_comp_cons, sw_comp_cons, sw_comp_prod; ++ int rx_pkt = 0; ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return 0; ++#endif ++ ++ /* CQ "next element" is of the size of the regular element, ++ that's why it's ok here */ ++ hw_comp_cons = le16_to_cpu(*fp->rx_cons_sb); ++ if ((hw_comp_cons & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT) ++ hw_comp_cons++; ++ ++ bd_cons = fp->rx_bd_cons; ++ bd_prod = fp->rx_bd_prod; ++ bd_prod_fw = bd_prod; ++ sw_comp_cons = fp->rx_comp_cons; ++ sw_comp_prod = fp->rx_comp_prod; ++ ++ /* Memory barrier necessary as speculative reads of the rx ++ * buffer can be ahead of the index in the status block ++ */ ++ rmb(); ++ ++ DP(NETIF_MSG_RX_STATUS, ++ "queue[%d]: hw_comp_cons %u sw_comp_cons %u\n", ++ fp->index, hw_comp_cons, sw_comp_cons); ++ ++ while (sw_comp_cons != hw_comp_cons) { ++ struct sw_rx_bd *rx_buf = NULL; ++ struct sk_buff *skb; ++ union eth_rx_cqe *cqe; ++ u8 cqe_fp_flags; ++ u16 len, pad; ++ ++ comp_ring_cons = RCQ_BD(sw_comp_cons); ++ bd_prod = RX_BD(bd_prod); ++ bd_cons = RX_BD(bd_cons); ++ ++ /* Prefetch the page containing the BD descriptor ++ at producer's index. It will be needed when new skb is ++ allocated */ ++ prefetch((void *)(PAGE_ALIGN((unsigned long) ++ (&fp->rx_desc_ring[bd_prod])) - ++ PAGE_SIZE + 1)); ++ ++ cqe = &fp->rx_comp_ring[comp_ring_cons]; ++ cqe_fp_flags = cqe->fast_path_cqe.type_error_flags; ++ ++ DP(NETIF_MSG_RX_STATUS, "CQE type %x err %x status %x" ++ " queue %x vlan %x len %u\n", CQE_TYPE(cqe_fp_flags), ++ cqe_fp_flags, cqe->fast_path_cqe.status_flags, ++ le32_to_cpu(cqe->fast_path_cqe.rss_hash_result), ++ le16_to_cpu(cqe->fast_path_cqe.vlan_tag), ++ le16_to_cpu(cqe->fast_path_cqe.pkt_len)); ++ ++ /* is this a slowpath msg? */ ++ if (unlikely(CQE_TYPE(cqe_fp_flags))) { ++ bnx2x_sp_event(fp, cqe); ++ goto next_cqe; ++ ++ /* this is an rx packet */ ++ } else { ++ rx_buf = &fp->rx_buf_ring[bd_cons]; ++ skb = rx_buf->skb; ++ len = le16_to_cpu(cqe->fast_path_cqe.pkt_len); ++ pad = cqe->fast_path_cqe.placement_offset; ++ ++#if !defined(__NO_TPA__) /* BNX2X_UPSTREAM */ ++ /* If CQE is marked both TPA_START and TPA_END ++ it is a non-TPA CQE */ ++ if ((!fp->disable_tpa) && ++ (TPA_TYPE(cqe_fp_flags) != ++ (TPA_TYPE_START | TPA_TYPE_END))) { ++ u16 queue = cqe->fast_path_cqe.queue_index; ++ ++ if (TPA_TYPE(cqe_fp_flags) == TPA_TYPE_START) { ++ DP(NETIF_MSG_RX_STATUS, ++ "calling tpa_start on queue %d\n", ++ queue); ++ ++ bnx2x_tpa_start(fp, queue, skb, ++ bd_cons, bd_prod); ++ goto next_rx; ++ } ++ ++ if (TPA_TYPE(cqe_fp_flags) == TPA_TYPE_END) { ++ DP(NETIF_MSG_RX_STATUS, ++ "calling tpa_stop on queue %d\n", ++ queue); ++ ++ if (!BNX2X_RX_SUM_FIX(cqe)) ++ BNX2X_ERR("STOP on none TCP " ++ "data\n"); ++ ++ /* This is a size of the linear data ++ on this skb */ ++ len = le16_to_cpu(cqe->fast_path_cqe. ++ len_on_bd); ++ bnx2x_tpa_stop(bp, fp, queue, pad, ++ len, cqe, comp_ring_cons); ++#ifdef BNX2X_STOP_ON_ERROR ++ if (bp->panic) ++ return 0; ++#endif ++ ++ bnx2x_update_sge_prod(fp, ++ &cqe->fast_path_cqe); ++ goto next_cqe; ++ } ++ } ++#endif ++ ++ pci_dma_sync_single_for_device(bp->pdev, ++ pci_unmap_addr(rx_buf, mapping), ++ pad + RX_COPY_THRESH, ++ PCI_DMA_FROMDEVICE); ++ prefetch(skb); ++ prefetch(((char *)(skb)) + 128); ++ ++ /* is this an error packet? */ ++ if (unlikely(cqe_fp_flags & ETH_RX_ERROR_FALGS)) { ++ DP(NETIF_MSG_RX_ERR, ++ "ERROR flags %x rx packet %u\n", ++ cqe_fp_flags, sw_comp_cons); ++ fp->eth_q_stats.rx_err_discard_pkt++; ++ goto reuse_rx; ++ } ++ ++ /* Since we don't have a jumbo ring ++ * copy small packets if mtu > 1500 ++ */ ++ if ((bp->dev->mtu > ETH_MAX_PACKET_SIZE) && ++ (len <= RX_COPY_THRESH)) { ++ struct sk_buff *new_skb; ++ ++ new_skb = netdev_alloc_skb(bp->dev, ++ len + pad); ++ if (new_skb == NULL) { ++ DP(NETIF_MSG_RX_ERR, ++ "ERROR packet dropped " ++ "because of alloc failure\n"); ++ fp->eth_q_stats.rx_skb_alloc_failed++; ++ goto reuse_rx; ++ } ++ ++ /* aligned copy */ ++ skb_copy_from_linear_data_offset(skb, pad, ++ new_skb->data + pad, len); ++ skb_reserve(new_skb, pad); ++ skb_put(new_skb, len); ++ ++ bnx2x_reuse_rx_skb(fp, skb, bd_cons, bd_prod); ++ ++ skb = new_skb; ++ ++ } else ++ if (likely(bnx2x_alloc_rx_skb(bp, fp, bd_prod) == 0)) { ++ pci_unmap_single(bp->pdev, ++ pci_unmap_addr(rx_buf, mapping), ++ bp->rx_buf_size, ++ PCI_DMA_FROMDEVICE); ++ skb_reserve(skb, pad); ++ skb_put(skb, len); ++ ++ } else { ++ DP(NETIF_MSG_RX_ERR, ++ "ERROR packet dropped because " ++ "of alloc failure\n"); ++ fp->eth_q_stats.rx_skb_alloc_failed++; ++reuse_rx: ++ bnx2x_reuse_rx_skb(fp, skb, bd_cons, bd_prod); ++ goto next_rx; ++ } ++ ++ skb->protocol = eth_type_trans(skb, bp->dev); ++ ++ skb->ip_summed = CHECKSUM_NONE; ++ if (bp->rx_csum) { ++ if (likely(BNX2X_RX_CSUM_OK(cqe))) ++ skb->ip_summed = CHECKSUM_UNNECESSARY; ++ else ++ fp->eth_q_stats.hw_csum_err++; ++ } ++ } ++ ++ skb_record_rx_queue(skb, fp->index); ++ ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) /* ! BNX2X_UPSTREAM */ ++ vmknetddi_queueops_set_skb_queueid(skb, ++ VMKNETDDI_QUEUEOPS_MK_RX_QUEUEID(fp->index)); ++#endif ++ ++#ifdef BCM_VLAN ++ if ((bp->vlgrp != NULL) && (bp->flags & HW_VLAN_RX_FLAG) && ++ (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & ++ PARSING_FLAGS_VLAN)) ++ vlan_hwaccel_receive_skb(skb, bp->vlgrp, ++ le16_to_cpu(cqe->fast_path_cqe.vlan_tag)); ++ else ++#endif ++ netif_receive_skb(skb); ++ ++#if (LINUX_VERSION_CODE < 0x02061b) /* ! BNX2X_UPSTREAM */ ++ bp->dev->last_rx = jiffies; ++#endif ++ ++next_rx: ++ rx_buf->skb = NULL; ++ ++ bd_cons = NEXT_RX_IDX(bd_cons); ++ bd_prod = NEXT_RX_IDX(bd_prod); ++ bd_prod_fw = NEXT_RX_IDX(bd_prod_fw); ++ rx_pkt++; ++next_cqe: ++ sw_comp_prod = NEXT_RCQ_IDX(sw_comp_prod); ++ sw_comp_cons = NEXT_RCQ_IDX(sw_comp_cons); ++ ++ if (rx_pkt == budget) ++ break; ++ } /* while */ ++ ++ fp->rx_bd_cons = bd_cons; ++ fp->rx_bd_prod = bd_prod_fw; ++ fp->rx_comp_cons = sw_comp_cons; ++ fp->rx_comp_prod = sw_comp_prod; ++ ++ /* Update producers */ ++ bnx2x_update_rx_prod(bp, fp, bd_prod_fw, sw_comp_prod, ++ fp->rx_sge_prod); ++ ++ fp->rx_pkt += rx_pkt; ++ fp->rx_calls++; ++ ++ return rx_pkt; ++} ++ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++#if (LINUX_VERSION_CODE < 0x020613) && (VMWARE_ESX_DDK_VERSION < 4000) ++static irqreturn_t bnx2x_msix_fp_int(int irq, void *fp_cookie, ++ struct pt_regs *regs) ++#else /* BNX2X_UPSTREAM */ ++static irqreturn_t bnx2x_msix_fp_int(int irq, void *fp_cookie) ++#endif ++{ ++ struct bnx2x_fastpath *fp = fp_cookie; ++ struct bnx2x *bp = fp->bp; ++ ++ /* Return here if interrupt is disabled */ ++ if (unlikely(atomic_read(&bp->intr_sem) != 0)) { ++ DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n"); ++ return IRQ_HANDLED; ++ } ++ ++ DP(BNX2X_MSG_FP, "got an MSI-X interrupt on IDX:SB [%d:%d]\n", ++ fp->index, fp->sb_id); ++ bnx2x_ack_sb(bp, fp->sb_id, USTORM_ID, 0, IGU_INT_DISABLE, 0); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return IRQ_HANDLED; ++#endif ++ /* Handle Rx or Tx according to MSI-X vector */ ++ if (fp->is_rx_queue) { ++ prefetch(fp->rx_cons_sb); ++ prefetch(&fp->status_blk->u_status_block.status_block_index); ++ ++ napi_schedule(&bnx2x_fp(bp, fp->index, napi)); ++ ++ } else { ++ prefetch(fp->tx_cons_sb); ++ prefetch(&fp->status_blk->c_status_block.status_block_index); ++ ++ bnx2x_update_fpsb_idx(fp); ++ rmb(); ++ bnx2x_tx_int(fp); ++ ++ /* Re-enable interrupts */ ++ bnx2x_ack_sb(bp, fp->sb_id, USTORM_ID, ++ le16_to_cpu(fp->fp_u_idx), IGU_INT_NOP, 1); ++ bnx2x_ack_sb(bp, fp->sb_id, CSTORM_ID, ++ le16_to_cpu(fp->fp_c_idx), IGU_INT_ENABLE, 1); ++ } ++ ++ return IRQ_HANDLED; ++} ++#endif ++ ++#if (LINUX_VERSION_CODE < 0x020613) && (VMWARE_ESX_DDK_VERSION < 40000) ++static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance, ++ struct pt_regs *regs) ++#else /* BNX2X_UPSTREAM */ ++static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance) ++#endif ++{ ++ struct bnx2x *bp = netdev_priv(dev_instance); ++ u16 status = bnx2x_ack_int(bp); ++ u16 mask; ++ int i; ++ ++ /* Return here if interrupt is shared and it's not for us */ ++ if (unlikely(status == 0)) { ++ DP(NETIF_MSG_INTR, "not our interrupt!\n"); ++ return IRQ_NONE; ++ } ++ DP(NETIF_MSG_INTR, "got an interrupt status 0x%x\n", status); ++ ++ /* Return here if interrupt is disabled */ ++ if (unlikely(atomic_read(&bp->intr_sem) != 0)) { ++ DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n"); ++ return IRQ_HANDLED; ++ } ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return IRQ_HANDLED; ++#endif ++ ++ for (i = 0; i < BNX2X_NUM_QUEUES(bp); i++) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ mask = 0x2 << fp->sb_id; ++ if (status & mask) { ++ /* Handle Rx or Tx according to SB id */ ++ if (fp->is_rx_queue) { ++ prefetch(fp->rx_cons_sb); ++ prefetch(&fp->status_blk->u_status_block. ++ status_block_index); ++ ++ napi_schedule(&bnx2x_fp(bp, fp->index, napi)); ++ ++ } else { ++ prefetch(fp->tx_cons_sb); ++ prefetch(&fp->status_blk->c_status_block. ++ status_block_index); ++ ++ bnx2x_update_fpsb_idx(fp); ++ rmb(); ++ bnx2x_tx_int(fp); ++ ++ /* Re-enable interrupts */ ++ bnx2x_ack_sb(bp, fp->sb_id, USTORM_ID, ++ le16_to_cpu(fp->fp_u_idx), ++ IGU_INT_NOP, 1); ++ bnx2x_ack_sb(bp, fp->sb_id, CSTORM_ID, ++ le16_to_cpu(fp->fp_c_idx), ++ IGU_INT_ENABLE, 1); ++ } ++ status &= ~mask; ++ } ++ } ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ mask = 0x2 << CNIC_SB_ID(bp); ++ if (status & mask) { ++ struct cnic_ops *c_ops = NULL; ++ ++ rcu_read_lock(); ++ c_ops = rcu_dereference(bp->cnic_ops); ++ if (c_ops) ++ c_ops->cnic_handler(bp->cnic_data, NULL); ++ rcu_read_unlock(); ++ ++ status &= ~mask; ++ } ++#endif ++ ++ if (unlikely(status & 0x1)) { ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ queue_delayed_work(bnx2x_wq, &bp->sp_task, 0); ++#else ++ queue_work(bnx2x_wq, &bp->sp_task); ++#endif ++ ++ status &= ~0x1; ++ if (!status) ++ return IRQ_HANDLED; ++ } ++ ++ if (status) ++ DP(NETIF_MSG_INTR, "got an unknown interrupt! (status %u)\n", ++ status); ++ ++ return IRQ_HANDLED; ++} ++ ++/* end of fast path */ ++ ++static void bnx2x_stats_handle(struct bnx2x *bp, enum bnx2x_stats_event event); ++ ++/* Link */ ++ ++/* ++ * General service functions ++ */ ++ ++static int bnx2x_acquire_hw_lock(struct bnx2x *bp, u32 resource) ++{ ++ u32 lock_status; ++ u32 resource_bit = (1 << resource); ++ int func = BP_FUNC(bp); ++ u32 hw_lock_control_reg; ++ int cnt; ++ ++ /* Validating that the resource is within range */ ++ if (resource > HW_LOCK_MAX_RESOURCE_VALUE) { ++ DP(NETIF_MSG_HW, ++ "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)\n", ++ resource, HW_LOCK_MAX_RESOURCE_VALUE); ++ return -EINVAL; ++ } ++ ++ if (func <= 5) { ++ hw_lock_control_reg = (MISC_REG_DRIVER_CONTROL_1 + func*8); ++ } else { ++ hw_lock_control_reg = ++ (MISC_REG_DRIVER_CONTROL_7 + (func - 6)*8); ++ } ++ ++ /* Validating that the resource is not already taken */ ++ lock_status = REG_RD(bp, hw_lock_control_reg); ++ if (lock_status & resource_bit) { ++ DP(NETIF_MSG_HW, "lock_status 0x%x resource_bit 0x%x\n", ++ lock_status, resource_bit); ++ return -EEXIST; ++ } ++ ++ /* Try for 5 second every 5ms */ ++ for (cnt = 0; cnt < 1000; cnt++) { ++ /* Try to acquire the lock */ ++ REG_WR(bp, hw_lock_control_reg + 4, resource_bit); ++ lock_status = REG_RD(bp, hw_lock_control_reg); ++ if (lock_status & resource_bit) ++ return 0; ++ ++ msleep(5); ++ } ++ DP(NETIF_MSG_HW, "Timeout\n"); ++ return -EAGAIN; ++} ++ ++static int bnx2x_release_hw_lock(struct bnx2x *bp, u32 resource) ++{ ++ u32 lock_status; ++ u32 resource_bit = (1 << resource); ++ int func = BP_FUNC(bp); ++ u32 hw_lock_control_reg; ++ ++ /* Validating that the resource is within range */ ++ if (resource > HW_LOCK_MAX_RESOURCE_VALUE) { ++ DP(NETIF_MSG_HW, ++ "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)\n", ++ resource, HW_LOCK_MAX_RESOURCE_VALUE); ++ return -EINVAL; ++ } ++ ++ if (func <= 5) { ++ hw_lock_control_reg = (MISC_REG_DRIVER_CONTROL_1 + func*8); ++ } else { ++ hw_lock_control_reg = ++ (MISC_REG_DRIVER_CONTROL_7 + (func - 6)*8); ++ } ++ ++ /* Validating that the resource is currently taken */ ++ lock_status = REG_RD(bp, hw_lock_control_reg); ++ if (!(lock_status & resource_bit)) { ++ DP(NETIF_MSG_HW, "lock_status 0x%x resource_bit 0x%x\n", ++ lock_status, resource_bit); ++ return -EFAULT; ++ } ++ ++ REG_WR(bp, hw_lock_control_reg, resource_bit); ++ return 0; ++} ++ ++/* HW Lock for shared dual port PHYs */ ++static void bnx2x_acquire_phy_lock(struct bnx2x *bp) ++{ ++ mutex_lock(&bp->port.phy_mutex); ++ ++ if (bp->port.need_hw_lock) ++ bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_MDIO); ++} ++ ++static void bnx2x_release_phy_lock(struct bnx2x *bp) ++{ ++ if (bp->port.need_hw_lock) ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_MDIO); ++ ++ mutex_unlock(&bp->port.phy_mutex); ++} ++ ++int bnx2x_get_gpio(struct bnx2x *bp, int gpio_num, u8 port) ++{ ++ /* The GPIO should be swapped if swap register is set and active */ ++ int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) && ++ REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ port; ++ int gpio_shift = gpio_num + ++ (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0); ++ u32 gpio_mask = (1 << gpio_shift); ++ u32 gpio_reg; ++ int value; ++ ++ if (gpio_num > MISC_REGISTERS_GPIO_3) { ++ BNX2X_ERR("Invalid GPIO %d\n", gpio_num); ++ return -EINVAL; ++ } ++ ++ /* read GPIO value */ ++ gpio_reg = REG_RD(bp, MISC_REG_GPIO); ++ ++ /* get the requested pin value */ ++ if ((gpio_reg & gpio_mask) == gpio_mask) ++ value = 1; ++ else ++ value = 0; ++ ++ DP(NETIF_MSG_LINK, "pin %d value 0x%x\n", gpio_num, value); ++ ++ return value; ++} ++ ++int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode, u8 port) ++{ ++ /* The GPIO should be swapped if swap register is set and active */ ++ int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) && ++ REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ port; ++ int gpio_shift = gpio_num + ++ (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0); ++ u32 gpio_mask = (1 << gpio_shift); ++ u32 gpio_reg; ++ ++ if (gpio_num > MISC_REGISTERS_GPIO_3) { ++ BNX2X_ERR("Invalid GPIO %d\n", gpio_num); ++ return -EINVAL; ++ } ++ ++ bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_GPIO); ++ /* read GPIO and mask except the float bits */ ++ gpio_reg = (REG_RD(bp, MISC_REG_GPIO) & MISC_REGISTERS_GPIO_FLOAT); ++ ++ switch (mode) { ++ case MISC_REGISTERS_GPIO_OUTPUT_LOW: ++ DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> output low\n", ++ gpio_num, gpio_shift); ++ /* clear FLOAT and set CLR */ ++ gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS); ++ gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_CLR_POS); ++ break; ++ ++ case MISC_REGISTERS_GPIO_OUTPUT_HIGH: ++ DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> output high\n", ++ gpio_num, gpio_shift); ++ /* clear FLOAT and set SET */ ++ gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS); ++ gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_SET_POS); ++ break; ++ ++ case MISC_REGISTERS_GPIO_INPUT_HI_Z: ++ DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> input\n", ++ gpio_num, gpio_shift); ++ /* set FLOAT */ ++ gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS); ++ break; ++ ++ default: ++ break; ++ } ++ ++ REG_WR(bp, MISC_REG_GPIO, gpio_reg); ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_GPIO); ++ ++ return 0; ++} ++ ++int bnx2x_set_gpio_int(struct bnx2x *bp, int gpio_num, u32 mode, u8 port) ++{ ++ /* The GPIO should be swapped if swap register is set and active */ ++ int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) && ++ REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ port; ++ int gpio_shift = gpio_num + ++ (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0); ++ u32 gpio_mask = (1 << gpio_shift); ++ u32 gpio_reg; ++ ++ if (gpio_num > MISC_REGISTERS_GPIO_3) { ++ BNX2X_ERR("Invalid GPIO %d\n", gpio_num); ++ return -EINVAL; ++ } ++ ++ bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_GPIO); ++ /* read GPIO int */ ++ gpio_reg = REG_RD(bp, MISC_REG_GPIO_INT); ++ ++ switch (mode) { ++ case MISC_REGISTERS_GPIO_INT_OUTPUT_CLR: ++ DP(NETIF_MSG_LINK, "Clear GPIO INT %d (shift %d) -> " ++ "output low\n", gpio_num, gpio_shift); ++ /* clear SET and set CLR */ ++ gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_INT_SET_POS); ++ gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_INT_CLR_POS); ++ break; ++ ++ case MISC_REGISTERS_GPIO_INT_OUTPUT_SET: ++ DP(NETIF_MSG_LINK, "Set GPIO INT %d (shift %d) -> " ++ "output high\n", gpio_num, gpio_shift); ++ /* clear CLR and set SET */ ++ gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_INT_CLR_POS); ++ gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_INT_SET_POS); ++ break; ++ ++ default: ++ break; ++ } ++ ++ REG_WR(bp, MISC_REG_GPIO_INT, gpio_reg); ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_GPIO); ++ ++ return 0; ++} ++ ++static int bnx2x_set_spio(struct bnx2x *bp, int spio_num, u32 mode) ++{ ++ u32 spio_mask = (1 << spio_num); ++ u32 spio_reg; ++ ++ if ((spio_num < MISC_REGISTERS_SPIO_4) || ++ (spio_num > MISC_REGISTERS_SPIO_7)) { ++ BNX2X_ERR("Invalid SPIO %d\n", spio_num); ++ return -EINVAL; ++ } ++ ++ bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_SPIO); ++ /* read SPIO and mask except the float bits */ ++ spio_reg = (REG_RD(bp, MISC_REG_SPIO) & MISC_REGISTERS_SPIO_FLOAT); ++ ++ switch (mode) { ++ case MISC_REGISTERS_SPIO_OUTPUT_LOW: ++ DP(NETIF_MSG_LINK, "Set SPIO %d -> output low\n", spio_num); ++ /* clear FLOAT and set CLR */ ++ spio_reg &= ~(spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS); ++ spio_reg |= (spio_mask << MISC_REGISTERS_SPIO_CLR_POS); ++ break; ++ ++ case MISC_REGISTERS_SPIO_OUTPUT_HIGH: ++ DP(NETIF_MSG_LINK, "Set SPIO %d -> output high\n", spio_num); ++ /* clear FLOAT and set SET */ ++ spio_reg &= ~(spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS); ++ spio_reg |= (spio_mask << MISC_REGISTERS_SPIO_SET_POS); ++ break; ++ ++ case MISC_REGISTERS_SPIO_INPUT_HI_Z: ++ DP(NETIF_MSG_LINK, "Set SPIO %d -> input\n", spio_num); ++ /* set FLOAT */ ++ spio_reg |= (spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS); ++ break; ++ ++ default: ++ break; ++ } ++ ++ REG_WR(bp, MISC_REG_SPIO, spio_reg); ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_SPIO); ++ ++ return 0; ++} ++ ++static void bnx2x_calc_fc_adv(struct bnx2x *bp) ++{ ++ switch (bp->link_vars.ieee_fc & ++ MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) { ++ case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE: ++ bp->port.advertising &= ~(ADVERTISED_Asym_Pause | ++ ADVERTISED_Pause); ++ break; ++ ++ case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH: ++ bp->port.advertising |= (ADVERTISED_Asym_Pause | ++ ADVERTISED_Pause); ++ break; ++ ++ case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC: ++ bp->port.advertising |= ADVERTISED_Asym_Pause; ++ break; ++ ++ default: ++ bp->port.advertising &= ~(ADVERTISED_Asym_Pause | ++ ADVERTISED_Pause); ++ break; ++ } ++} ++ ++static void bnx2x_link_report(struct bnx2x *bp) ++{ ++ if (bp->state == BNX2X_STATE_DISABLED) { ++ netif_carrier_off(bp->dev); ++ printk(KERN_ERR PFX "%s NIC Link is Down\n", bp->dev->name); ++ return; ++ } ++ ++ if (bp->link_vars.link_up) { ++ if (bp->state == BNX2X_STATE_OPEN) ++ netif_carrier_on(bp->dev); ++ printk(KERN_INFO PFX "%s NIC Link is Up, ", bp->dev->name); ++ ++ printk("%d Mbps ", bp->link_vars.line_speed); ++ ++ if (bp->link_vars.duplex == DUPLEX_FULL) ++ printk("full duplex"); ++ else ++ printk("half duplex"); ++ ++ if (bp->link_vars.flow_ctrl != BNX2X_FLOW_CTRL_NONE) { ++ if (bp->link_vars.flow_ctrl & BNX2X_FLOW_CTRL_RX) { ++ printk(", receive "); ++ if (bp->link_vars.flow_ctrl & ++ BNX2X_FLOW_CTRL_TX) ++ printk("& transmit "); ++ } else { ++ printk(", transmit "); ++ } ++ printk("flow control ON"); ++ } ++ printk("\n"); ++ ++ } else { /* link_down */ ++ netif_carrier_off(bp->dev); ++ printk(KERN_ERR PFX "%s NIC Link is Down\n", bp->dev->name); ++ } ++} ++ ++static u8 bnx2x_initial_phy_init(struct bnx2x *bp, int load_mode) ++{ ++ if (!BP_NOMCP(bp)) { ++ u8 rc; ++ ++ /* Initialize link parameters structure variables */ ++ /* It is recommended to turn off RX FC for jumbo frames ++ for better performance */ ++ if (bp->dev->mtu > 5000) ++ bp->link_params.req_fc_auto_adv = BNX2X_FLOW_CTRL_TX; ++ else ++ bp->link_params.req_fc_auto_adv = BNX2X_FLOW_CTRL_BOTH; ++ ++ bnx2x_acquire_phy_lock(bp); ++ ++ if (load_mode == LOAD_DIAG) ++ bp->link_params.loopback_mode = LOOPBACK_XGXS_10; ++ ++ rc = bnx2x_phy_init(&bp->link_params, &bp->link_vars); ++ ++ bnx2x_release_phy_lock(bp); ++ ++ bnx2x_calc_fc_adv(bp); ++ ++ if (CHIP_REV_IS_SLOW(bp) && bp->link_vars.link_up) { ++ bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP); ++ bnx2x_link_report(bp); ++ } ++ ++ return rc; ++ } ++ BNX2X_ERR("Bootcode is missing - can not initialize link\n"); ++ return -EINVAL; ++} ++ ++static void bnx2x_link_set(struct bnx2x *bp) ++{ ++ if (!BP_NOMCP(bp)) { ++ bnx2x_acquire_phy_lock(bp); ++ bnx2x_phy_init(&bp->link_params, &bp->link_vars); ++ bnx2x_release_phy_lock(bp); ++ ++ bnx2x_calc_fc_adv(bp); ++ } else ++ BNX2X_ERR("Bootcode is missing - can not set link\n"); ++} ++ ++static void bnx2x__link_reset(struct bnx2x *bp) ++{ ++ if (!BP_NOMCP(bp)) { ++ bnx2x_acquire_phy_lock(bp); ++ bnx2x_link_reset(&bp->link_params, &bp->link_vars, 1); ++ bnx2x_release_phy_lock(bp); ++ } else ++ BNX2X_ERR("Bootcode is missing - can not reset link\n"); ++} ++ ++static u8 bnx2x_link_test(struct bnx2x *bp) ++{ ++ u8 rc; ++ ++ bnx2x_acquire_phy_lock(bp); ++ rc = bnx2x_test_link(&bp->link_params, &bp->link_vars); ++ bnx2x_release_phy_lock(bp); ++ ++ return rc; ++} ++ ++static void bnx2x_init_port_minmax(struct bnx2x *bp) ++{ ++ u32 r_param = bp->link_vars.line_speed / 8; ++ u32 fair_periodic_timeout_usec; ++ u32 t_fair; ++ ++ memset(&(bp->cmng.rs_vars), 0, ++ sizeof(struct rate_shaping_vars_per_port)); ++ memset(&(bp->cmng.fair_vars), 0, sizeof(struct fairness_vars_per_port)); ++ ++ /* 100 usec in SDM ticks = 25 since each tick is 4 usec */ ++ bp->cmng.rs_vars.rs_periodic_timeout = RS_PERIODIC_TIMEOUT_USEC / 4; ++ ++ /* this is the threshold below which no timer arming will occur ++ 1.25 coefficient is for the threshold to be a little bigger ++ than the real time, to compensate for timer in-accuracy */ ++ bp->cmng.rs_vars.rs_threshold = ++ (RS_PERIODIC_TIMEOUT_USEC * r_param * 5) / 4; ++ ++ /* resolution of fairness timer */ ++ fair_periodic_timeout_usec = QM_ARB_BYTES / r_param; ++ /* for 10G it is 1000usec. for 1G it is 10000usec. */ ++ t_fair = T_FAIR_COEF / bp->link_vars.line_speed; ++ ++ /* this is the threshold below which we won't arm the timer anymore */ ++ bp->cmng.fair_vars.fair_threshold = QM_ARB_BYTES; ++ ++ /* we multiply by 1e3/8 to get bytes/msec. ++ We don't want the credits to pass a credit ++ of the t_fair*FAIR_MEM (algorithm resolution) */ ++ bp->cmng.fair_vars.upper_bound = r_param * t_fair * FAIR_MEM; ++ /* since each tick is 4 usec */ ++ bp->cmng.fair_vars.fairness_timeout = fair_periodic_timeout_usec / 4; ++} ++ ++/* Calculates the sum of vn_min_rates. ++ It's needed for further normalizing of the min_rates. ++ Returns: ++ sum of vn_min_rates. ++ or ++ 0 - if all the min_rates are 0. ++ In the later case fainess algorithm should be deactivated. ++ If not all min_rates are zero then those that are zeroes will be set to 1. ++ */ ++static void bnx2x_calc_vn_weight_sum(struct bnx2x *bp) ++{ ++ int all_zero = 1; ++ int port = BP_PORT(bp); ++ int vn; ++ ++ bp->vn_weight_sum = 0; ++ for (vn = VN_0; vn < E1HVN_MAX; vn++) { ++ int func = 2*vn + port; ++ u32 vn_cfg = SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); ++ u32 vn_min_rate = ((vn_cfg & FUNC_MF_CFG_MIN_BW_MASK) >> ++ FUNC_MF_CFG_MIN_BW_SHIFT) * 100; ++ ++ /* Skip hidden vns */ ++ if (vn_cfg & FUNC_MF_CFG_FUNC_HIDE) ++ continue; ++ ++ /* If min rate is zero - set it to 1 */ ++ if (!vn_min_rate) ++ vn_min_rate = DEF_MIN_RATE; ++ else ++ all_zero = 0; ++ ++ bp->vn_weight_sum += vn_min_rate; ++ } ++ ++ /* ... only if all min rates are zeros - disable fairness */ ++ if (all_zero) ++ bp->vn_weight_sum = 0; ++} ++ ++static void bnx2x_init_vn_minmax(struct bnx2x *bp, int func) ++{ ++ struct rate_shaping_vars_per_vn m_rs_vn; ++ struct fairness_vars_per_vn m_fair_vn; ++ u32 vn_cfg = SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); ++ u16 vn_min_rate, vn_max_rate; ++ int i; ++ ++ /* If function is hidden - set min and max to zeroes */ ++ if (vn_cfg & FUNC_MF_CFG_FUNC_HIDE) { ++ vn_min_rate = 0; ++ vn_max_rate = 0; ++ ++ } else { ++ vn_min_rate = ((vn_cfg & FUNC_MF_CFG_MIN_BW_MASK) >> ++ FUNC_MF_CFG_MIN_BW_SHIFT) * 100; ++ /* If fairness is enabled (not all min rates are zeroes) and ++ if current min rate is zero - set it to 1. ++ This is a requirement of the algorithm. */ ++ if (bp->vn_weight_sum && (vn_min_rate == 0)) ++ vn_min_rate = DEF_MIN_RATE; ++ vn_max_rate = ((vn_cfg & FUNC_MF_CFG_MAX_BW_MASK) >> ++ FUNC_MF_CFG_MAX_BW_SHIFT) * 100; ++ } ++ ++ DP(NETIF_MSG_IFUP, ++ "func %d: vn_min_rate=%d vn_max_rate=%d vn_weight_sum=%d\n", ++ func, vn_min_rate, vn_max_rate, bp->vn_weight_sum); ++ ++ memset(&m_rs_vn, 0, sizeof(struct rate_shaping_vars_per_vn)); ++ memset(&m_fair_vn, 0, sizeof(struct fairness_vars_per_vn)); ++ ++ /* global vn counter - maximal Mbps for this vn */ ++ m_rs_vn.vn_counter.rate = vn_max_rate; ++ ++ /* quota - number of bytes transmitted in this period */ ++ m_rs_vn.vn_counter.quota = ++ (vn_max_rate * RS_PERIODIC_TIMEOUT_USEC) / 8; ++ ++ if (bp->vn_weight_sum) { ++ /* credit for each period of the fairness algorithm: ++ number of bytes in T_FAIR (the vn share the port rate). ++ vn_weight_sum should not be larger than 10000, thus ++ T_FAIR_COEF / (8 * vn_weight_sum) will always be greater ++ than zero */ ++ m_fair_vn.vn_credit_delta = ++ max((u32)(vn_min_rate * (T_FAIR_COEF / ++ (8 * bp->vn_weight_sum))), ++ (u32)(bp->cmng.fair_vars.fair_threshold * 2)); ++ DP(NETIF_MSG_IFUP, "m_fair_vn.vn_credit_delta=%d\n", ++ m_fair_vn.vn_credit_delta); ++ } ++ ++ /* Store it to internal memory */ ++ for (i = 0; i < sizeof(struct rate_shaping_vars_per_vn)/4; i++) ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_RATE_SHAPING_PER_VN_VARS_OFFSET(func) + i * 4, ++ ((u32 *)(&m_rs_vn))[i]); ++ ++ for (i = 0; i < sizeof(struct fairness_vars_per_vn)/4; i++) ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_FAIRNESS_PER_VN_VARS_OFFSET(func) + i * 4, ++ ((u32 *)(&m_fair_vn))[i]); ++} ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++static void bnx2x_init_cos_credit(struct bnx2x *bp) ++{ ++ struct fairness_vars_per_vn m_fair_vn; ++ int func = BP_FUNC(bp); ++ int i, cos; ++ ++ memset(&m_fair_vn, 0, sizeof(struct fairness_vars_per_vn)); ++ ++ for (cos = 0; cos < BNX2X_MAX_COS; cos++) { ++ if (bp->cos_min_rate[cos]) { ++ m_fair_vn.cos_credit_delta[cos] = ++ max((u32)(bp->cos_min_rate[cos] * ++ (T_FAIR_COEF / (8 * bp->cos_weight_sum))), ++ (u32)(bp->cmng.fair_vars.fair_threshold * 2)); ++ } ++ DP(NETIF_MSG_IFUP, "cos_credit_delta[%d] = %d\n", ++ cos, m_fair_vn.cos_credit_delta[cos]); ++ } ++ ++ for (i = 0; i < sizeof(struct fairness_vars_per_vn)/4; i++) ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_FAIRNESS_PER_VN_VARS_OFFSET(func) + i * 4, ++ ((u32 *)(&m_fair_vn))[i]); ++} ++#endif ++ ++/* This function is called upon link interrupt */ ++static void bnx2x_link_attn(struct bnx2x *bp) ++{ ++ /* Make sure that we are synced with the current statistics */ ++ bnx2x_stats_handle(bp, STATS_EVENT_STOP); ++ ++ bnx2x_link_update(&bp->link_params, &bp->link_vars); ++ ++ if (bp->link_vars.link_up) { ++ ++ /* dropless flow control */ ++ if (CHIP_IS_E1H(bp) && bp->dropless_fc) { ++ int port = BP_PORT(bp); ++ u32 pause_enabled = 0; ++ ++#ifdef BNX2X_SAFC ++ if ((bp->link_vars.flow_ctrl & BNX2X_FLOW_CTRL_TX) || ++ (bp->flags & SAFC_TX_FLAG)) ++#else /* BNX2X_UPSTREAM */ ++ if (bp->link_vars.flow_ctrl & BNX2X_FLOW_CTRL_TX) ++#endif ++ pause_enabled = 1; ++ ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_ETH_PAUSE_ENABLED_OFFSET(port), ++ pause_enabled); ++ } ++ ++ if (bp->link_vars.mac_type == MAC_TYPE_BMAC) { ++ struct host_port_stats *pstats; ++ ++ pstats = bnx2x_sp(bp, port_stats); ++ /* reset old bmac stats */ ++ memset(&(pstats->mac_stx[0]), 0, ++ sizeof(struct mac_stx)); ++ } ++ if ((bp->state == BNX2X_STATE_OPEN) || ++ (bp->state == BNX2X_STATE_DISABLED)) ++ bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP); ++ } ++ ++ /* indicate link status */ ++ bnx2x_link_report(bp); ++ ++ if (IS_E1HMF(bp)) { ++ int port = BP_PORT(bp); ++ int func; ++ int vn; ++ ++ /* Set the attention towards other drivers on the same port */ ++ for (vn = VN_0; vn < E1HVN_MAX; vn++) { ++ if (vn == BP_E1HVN(bp)) ++ continue; ++ ++ func = ((vn << 1) | port); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_0 + ++ (LINK_SYNC_ATTENTION_BIT_FUNC_0 + func)*4, 1); ++ } ++ ++ if (bp->link_vars.link_up) { ++ int i; ++ ++ /* Init rate shaping and fairness contexts */ ++ bnx2x_init_port_minmax(bp); ++ ++ for (vn = VN_0; vn < E1HVN_MAX; vn++) ++ bnx2x_init_vn_minmax(bp, 2*vn + port); ++ ++ /* Store it to internal memory */ ++ for (i = 0; ++ i < sizeof(struct cmng_struct_per_port) / 4; i++) ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) + i*4, ++ ((u32 *)(&bp->cmng))[i]); ++ } ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ } else { ++ if (bp->link_vars.link_up && bp->cos_weight_sum) { ++ int port = BP_PORT(bp); ++ int i; ++ ++ /* Init fairness context */ ++ bnx2x_init_port_minmax(bp); ++ ++ bnx2x_init_cos_credit(bp); ++ ++ /* Store it to internal memory */ ++ for (i = 0; ++ i < sizeof(struct cmng_struct_per_port) / 4; i++) ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) + i*4, ++ ((u32 *)(&bp->cmng))[i]); ++ } ++#endif ++ } ++} ++ ++static void bnx2x__link_status_update(struct bnx2x *bp) ++{ ++ int func = BP_FUNC(bp); ++ ++ if (bp->state != BNX2X_STATE_OPEN) ++ return; ++ ++ bnx2x_link_status_update(&bp->link_params, &bp->link_vars); ++ ++ if (bp->link_vars.link_up) ++ bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP); ++ else ++ bnx2x_stats_handle(bp, STATS_EVENT_STOP); ++ ++ bp->mf_config = SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); ++ bnx2x_calc_vn_weight_sum(bp); ++ ++ /* indicate link status */ ++ bnx2x_link_report(bp); ++} ++ ++static void bnx2x_pmf_update(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ u32 val; ++ ++ bp->port.pmf = 1; ++ DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf); ++ ++ /* enable nig attention */ ++ val = (0xff0f | (1 << (BP_E1HVN(bp) + 4))); ++ REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, val); ++ REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, val); ++ ++ bnx2x_stats_handle(bp, STATS_EVENT_PMF); ++} ++ ++/* end of Link */ ++ ++/* slow path */ ++ ++/* ++ * General service functions ++ */ ++ ++/* send the MCP a request, block until there is a reply */ ++u32 bnx2x_fw_command(struct bnx2x *bp, u32 command) ++{ ++ int func = BP_FUNC(bp); ++ u32 seq = ++bp->fw_seq; ++ u32 rc = 0; ++ u32 cnt = 1; ++ u8 delay = CHIP_REV_IS_SLOW(bp) ? 100 : 10; ++ ++ SHMEM_WR(bp, func_mb[func].drv_mb_header, (command | seq)); ++ DP(BNX2X_MSG_MCP, "wrote command (%x) to FW MB\n", (command | seq)); ++ ++ do { ++ /* let the FW do it's magic ... */ ++ msleep(delay); ++ ++ rc = SHMEM_RD(bp, func_mb[func].fw_mb_header); ++ ++ /* Give the FW up to 2 second (200*10ms) */ ++ } while ((seq != (rc & FW_MSG_SEQ_NUMBER_MASK)) && (cnt++ < 200)); ++ ++ DP(BNX2X_MSG_MCP, "[after %d ms] read (%x) seq is (%x) from FW MB\n", ++ cnt*delay, rc, seq); ++ ++ /* is this a reply to our command? */ ++ if (seq == (rc & FW_MSG_SEQ_NUMBER_MASK)) ++ rc &= FW_MSG_CODE_MASK; ++ else { ++ /* FW BUG! */ ++ BNX2X_ERR("FW failed to respond!\n"); ++ bnx2x_fw_dump(bp); ++ rc = 0; ++ } ++ ++ return rc; ++} ++ ++static void bnx2x_set_storm_rx_mode(struct bnx2x *bp); ++static void bnx2x_set_mac_addr_e1h(struct bnx2x *bp, int set); ++static void bnx2x_set_rx_mode(struct net_device *dev); ++ ++static void bnx2x_e1h_disable(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int i; ++ ++ bp->rx_mode = BNX2X_RX_MODE_NONE; ++ bnx2x_set_storm_rx_mode(bp); ++ ++ netif_tx_disable(bp->dev); ++ bp->dev->trans_start = jiffies; /* prevent tx timeout */ ++ ++ REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 0); ++ ++ bnx2x_set_mac_addr_e1h(bp, 0); ++ ++ for (i = 0; i < MC_HASH_SIZE; i++) ++ REG_WR(bp, MC_HASH_OFFSET(bp, i), 0); ++ ++ netif_carrier_off(bp->dev); ++} ++ ++static void bnx2x_e1h_enable(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ ++ REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 1); ++ ++ bnx2x_set_mac_addr_e1h(bp, 1); ++ ++ /* Tx queue should be only reenabled */ ++ netif_tx_wake_all_queues(bp->dev); ++ ++ /* Initialize the receive filter. */ ++ bnx2x_set_rx_mode(bp->dev); ++} ++ ++static void bnx2x_update_min_max(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int vn, i; ++ ++ /* Init rate shaping and fairness contexts */ ++ bnx2x_init_port_minmax(bp); ++ ++ bnx2x_calc_vn_weight_sum(bp); ++ ++ for (vn = VN_0; vn < E1HVN_MAX; vn++) ++ bnx2x_init_vn_minmax(bp, 2*vn + port); ++ ++ if (bp->port.pmf) { ++ int func; ++ ++ /* Set the attention towards other drivers on the same port */ ++ for (vn = VN_0; vn < E1HVN_MAX; vn++) { ++ if (vn == BP_E1HVN(bp)) ++ continue; ++ ++ func = ((vn << 1) | port); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_0 + ++ (LINK_SYNC_ATTENTION_BIT_FUNC_0 + func)*4, 1); ++ } ++ ++ /* Store it to internal memory */ ++ for (i = 0; i < sizeof(struct cmng_struct_per_port) / 4; i++) ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) + i*4, ++ ((u32 *)(&bp->cmng))[i]); ++ } ++} ++ ++static void bnx2x_dcc_event(struct bnx2x *bp, u32 dcc_event) ++{ ++ int func = BP_FUNC(bp); ++ ++ DP(BNX2X_MSG_MCP, "dcc_event 0x%x\n", dcc_event); ++ bp->mf_config = SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); ++ ++ if (dcc_event & DRV_STATUS_DCC_DISABLE_ENABLE_PF) { ++ ++ if (bp->mf_config & FUNC_MF_CFG_FUNC_DISABLED) { ++ DP(NETIF_MSG_IFDOWN, "mf_cfg function disabled\n"); ++ bp->state = BNX2X_STATE_DISABLED; ++ ++ bnx2x_e1h_disable(bp); ++ } else { ++ DP(NETIF_MSG_IFUP, "mf_cfg function enabled\n"); ++ bp->state = BNX2X_STATE_OPEN; ++ ++ bnx2x_e1h_enable(bp); ++ } ++ dcc_event &= ~DRV_STATUS_DCC_DISABLE_ENABLE_PF; ++ } ++ if (dcc_event & DRV_STATUS_DCC_BANDWIDTH_ALLOCATION) { ++ ++ bnx2x_update_min_max(bp); ++ dcc_event &= ~DRV_STATUS_DCC_BANDWIDTH_ALLOCATION; ++ } ++ ++ /* Report results to MCP */ ++ if (dcc_event) ++ bnx2x_fw_command(bp, DRV_MSG_CODE_DCC_FAILURE); ++ else ++ bnx2x_fw_command(bp, DRV_MSG_CODE_DCC_OK); ++} ++ ++/* the slow path queue is odd since completions arrive on the fastpath ring */ ++static int bnx2x_sp_post(struct bnx2x *bp, int command, int cid, ++ u32 data_hi, u32 data_lo, int common) ++{ ++ int func = BP_FUNC(bp); ++ ++ DP(BNX2X_MSG_SP/*NETIF_MSG_TIMER*/, ++ "SPQE (%x:%x) command %d hw_cid %x data (%x:%x) left %x\n", ++ (u32)U64_HI(bp->spq_mapping), (u32)(U64_LO(bp->spq_mapping) + ++ (void *)bp->spq_prod_bd - (void *)bp->spq), command, ++ HW_CID(bp, cid), data_hi, data_lo, bp->spq_left); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return -EIO; ++#endif ++ ++ spin_lock_bh(&bp->spq_lock); ++ ++ if (!bp->spq_left) { ++ BNX2X_ERR("BUG! SPQ ring full!\n"); ++ spin_unlock_bh(&bp->spq_lock); ++ bnx2x_panic(); ++ return -EBUSY; ++ } ++ ++ /* CID needs port number to be encoded int it */ ++ bp->spq_prod_bd->hdr.conn_and_cmd_data = ++ cpu_to_le32(((command << SPE_HDR_CMD_ID_SHIFT) | ++ HW_CID(bp, cid))); ++ bp->spq_prod_bd->hdr.type = cpu_to_le16(ETH_CONNECTION_TYPE); ++ if (common) ++ bp->spq_prod_bd->hdr.type |= ++ cpu_to_le16((1 << SPE_HDR_COMMON_RAMROD_SHIFT)); ++ ++ bp->spq_prod_bd->data.mac_config_addr.hi = cpu_to_le32(data_hi); ++ bp->spq_prod_bd->data.mac_config_addr.lo = cpu_to_le32(data_lo); ++ ++ bp->spq_left--; ++ ++ if (bp->spq_prod_bd == bp->spq_last_bd) { ++ bp->spq_prod_bd = bp->spq; ++ bp->spq_prod_idx = 0; ++ DP(NETIF_MSG_TIMER, "end of spq\n"); ++ ++ } else { ++ bp->spq_prod_bd++; ++ bp->spq_prod_idx++; ++ } ++ ++ /* Make sure that BD data is updated before writing the producer */ ++ wmb(); ++ ++ REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func), ++ bp->spq_prod_idx); ++ ++ mmiowb(); ++ ++ spin_unlock_bh(&bp->spq_lock); ++ return 0; ++} ++ ++/* acquire split MCP access lock register */ ++static int bnx2x_acquire_alr(struct bnx2x *bp) ++{ ++ u32 i, j, val; ++ int rc = 0; ++ ++ might_sleep(); ++ i = 100; ++ for (j = 0; j < i*10; j++) { ++ val = (1UL << 31); ++ REG_WR(bp, GRCBASE_MCP + 0x9c, val); ++ val = REG_RD(bp, GRCBASE_MCP + 0x9c); ++ if (val & (1L << 31)) ++ break; ++ ++ msleep(5); ++ } ++ if (!(val & (1L << 31))) { ++ BNX2X_ERR("Cannot acquire MCP access lock register\n"); ++ rc = -EBUSY; ++ } ++ ++ return rc; ++} ++ ++/* release split MCP access lock register */ ++static void bnx2x_release_alr(struct bnx2x *bp) ++{ ++ u32 val = 0; ++ ++ REG_WR(bp, GRCBASE_MCP + 0x9c, val); ++} ++ ++static inline u16 bnx2x_update_dsb_idx(struct bnx2x *bp) ++{ ++ struct host_def_status_block *def_sb = bp->def_status_blk; ++ u16 rc = 0; ++ ++ barrier(); /* status block is written to by the chip */ ++ if (bp->def_att_idx != def_sb->atten_status_block.attn_bits_index) { ++ bp->def_att_idx = def_sb->atten_status_block.attn_bits_index; ++ rc |= 1; ++ } ++ if (bp->def_c_idx != def_sb->c_def_status_block.status_block_index) { ++ bp->def_c_idx = def_sb->c_def_status_block.status_block_index; ++ rc |= 2; ++ } ++ if (bp->def_u_idx != def_sb->u_def_status_block.status_block_index) { ++ bp->def_u_idx = def_sb->u_def_status_block.status_block_index; ++ rc |= 4; ++ } ++ if (bp->def_x_idx != def_sb->x_def_status_block.status_block_index) { ++ bp->def_x_idx = def_sb->x_def_status_block.status_block_index; ++ rc |= 8; ++ } ++ if (bp->def_t_idx != def_sb->t_def_status_block.status_block_index) { ++ bp->def_t_idx = def_sb->t_def_status_block.status_block_index; ++ rc |= 16; ++ } ++ return rc; ++} ++ ++/* ++ * slow path service functions ++ */ ++ ++static void bnx2x_attn_int_asserted(struct bnx2x *bp, u32 asserted) ++{ ++ int port = BP_PORT(bp); ++ u32 hc_addr = (HC_REG_COMMAND_REG + port*32 + ++ COMMAND_REG_ATTN_BITS_SET); ++ u32 aeu_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 : ++ MISC_REG_AEU_MASK_ATTN_FUNC_0; ++ u32 nig_int_mask_addr = port ? NIG_REG_MASK_INTERRUPT_PORT1 : ++ NIG_REG_MASK_INTERRUPT_PORT0; ++ u32 aeu_mask; ++ u32 nig_mask = 0; ++ ++ if (bp->attn_state & asserted) ++ BNX2X_ERR("IGU ERROR\n"); ++ ++ bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port); ++ aeu_mask = REG_RD(bp, aeu_addr); ++ ++ DP(NETIF_MSG_HW, "aeu_mask %x newly asserted %x\n", ++ aeu_mask, asserted); ++ aeu_mask &= ~(asserted & 0xff); ++ DP(NETIF_MSG_HW, "new mask %x\n", aeu_mask); ++ ++ REG_WR(bp, aeu_addr, aeu_mask); ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port); ++ ++ DP(NETIF_MSG_HW, "attn_state %x\n", bp->attn_state); ++ bp->attn_state |= asserted; ++ DP(NETIF_MSG_HW, "new state %x\n", bp->attn_state); ++ ++ if (asserted & ATTN_HARD_WIRED_MASK) { ++ if (asserted & ATTN_NIG_FOR_FUNC) { ++ ++ bnx2x_acquire_phy_lock(bp); ++ ++ /* save nig interrupt mask */ ++ nig_mask = REG_RD(bp, nig_int_mask_addr); ++ REG_WR(bp, nig_int_mask_addr, 0); ++ ++ bnx2x_link_attn(bp); ++ ++ /* handle unicore attn? */ ++ } ++ if (asserted & ATTN_SW_TIMER_4_FUNC) ++ DP(NETIF_MSG_HW, "ATTN_SW_TIMER_4_FUNC!\n"); ++ ++ if (asserted & GPIO_2_FUNC) ++ DP(NETIF_MSG_HW, "GPIO_2_FUNC!\n"); ++ ++ if (asserted & GPIO_3_FUNC) ++ DP(NETIF_MSG_HW, "GPIO_3_FUNC!\n"); ++ ++ if (asserted & GPIO_4_FUNC) ++ DP(NETIF_MSG_HW, "GPIO_4_FUNC!\n"); ++ ++ if (port == 0) { ++ if (asserted & ATTN_GENERAL_ATTN_1) { ++ DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_1!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_1, 0x0); ++ } ++ if (asserted & ATTN_GENERAL_ATTN_2) { ++ DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_2!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_2, 0x0); ++ } ++ if (asserted & ATTN_GENERAL_ATTN_3) { ++ DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_3!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_3, 0x0); ++ } ++ } else { ++ if (asserted & ATTN_GENERAL_ATTN_4) { ++ DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_4!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_4, 0x0); ++ } ++ if (asserted & ATTN_GENERAL_ATTN_5) { ++ DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_5!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_5, 0x0); ++ } ++ if (asserted & ATTN_GENERAL_ATTN_6) { ++ DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_6!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_6, 0x0); ++ } ++ } ++ ++ } /* if hardwired */ ++ ++ DP(NETIF_MSG_HW, "about to mask 0x%08x at HC addr 0x%x\n", ++ asserted, hc_addr); ++ REG_WR(bp, hc_addr, asserted); ++ ++ /* now set back the mask */ ++ if (asserted & ATTN_NIG_FOR_FUNC) { ++ REG_WR(bp, nig_int_mask_addr, nig_mask); ++ bnx2x_release_phy_lock(bp); ++ } ++} ++ ++static inline void bnx2x_fan_failure(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ ++ /* mark the failure */ ++ bp->link_params.ext_phy_config &= ~PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK; ++ bp->link_params.ext_phy_config |= PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE; ++ SHMEM_WR(bp, dev_info.port_hw_config[port].external_phy_config, ++ bp->link_params.ext_phy_config); ++ ++ /* log the failure */ ++ printk(KERN_ERR PFX "Fan Failure on Network Controller %s has caused" ++ " the driver to shutdown the card to prevent permanent" ++ " damage. Please contact Dell Support for assistance\n", ++ bp->dev->name); ++} ++ ++static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn) ++{ ++ int port = BP_PORT(bp); ++ int reg_offset; ++ u32 val, swap_val, swap_override; ++ ++ reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 : ++ MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0); ++ ++ if (attn & AEU_INPUTS_ATTN_BITS_SPIO5) { ++ ++ val = REG_RD(bp, reg_offset); ++ val &= ~AEU_INPUTS_ATTN_BITS_SPIO5; ++ REG_WR(bp, reg_offset, val); ++ ++ BNX2X_ERR("SPIO5 hw attention\n"); ++ ++ /* Fan failure attention */ ++ switch (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config)) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ /* Low power mode is controlled by GPIO 2 */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, port); ++ /* The PHY reset is controlled by GPIO 1 */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, port); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ /* The PHY reset is controlled by GPIO 1 */ ++ /* fake the port number to cancel the swap done in ++ set_gpio() */ ++ swap_val = REG_RD(bp, NIG_REG_PORT_SWAP); ++ swap_override = REG_RD(bp, NIG_REG_STRAP_OVERRIDE); ++ port = (swap_val && swap_override) ^ 1; ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, ++ MISC_REGISTERS_GPIO_OUTPUT_LOW, port); ++ break; ++ ++ default: ++ break; ++ } ++ bnx2x_fan_failure(bp); ++ } ++ ++ if (attn & (AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_0 | ++ AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_1)) { ++ bnx2x_acquire_phy_lock(bp); ++ bnx2x_handle_module_detect_int(&bp->link_params); ++ bnx2x_release_phy_lock(bp); ++ } ++ ++ if (attn & HW_INTERRUT_ASSERT_SET_0) { ++ ++ val = REG_RD(bp, reg_offset); ++ val &= ~(attn & HW_INTERRUT_ASSERT_SET_0); ++ REG_WR(bp, reg_offset, val); ++ ++ BNX2X_ERR("FATAL HW block attention set0 0x%x\n", ++ (u32)(attn & HW_INTERRUT_ASSERT_SET_0)); ++ bnx2x_panic(); ++ } ++} ++ ++static inline void bnx2x_attn_int_deasserted1(struct bnx2x *bp, u32 attn) ++{ ++ u32 val; ++ ++ if (attn & AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT) { ++ ++ val = REG_RD(bp, DORQ_REG_DORQ_INT_STS_CLR); ++ BNX2X_ERR("DB hw attention 0x%x\n", val); ++ /* DORQ discard attention */ ++ if (val & 0x2) ++ BNX2X_ERR("FATAL error from DORQ\n"); ++ } ++ ++ if (attn & HW_INTERRUT_ASSERT_SET_1) { ++ ++ int port = BP_PORT(bp); ++ int reg_offset; ++ ++ reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_1 : ++ MISC_REG_AEU_ENABLE1_FUNC_0_OUT_1); ++ ++ val = REG_RD(bp, reg_offset); ++ val &= ~(attn & HW_INTERRUT_ASSERT_SET_1); ++ REG_WR(bp, reg_offset, val); ++ ++ BNX2X_ERR("FATAL HW block attention set1 0x%x\n", ++ (u32)(attn & HW_INTERRUT_ASSERT_SET_1)); ++ bnx2x_panic(); ++ } ++} ++ ++static inline void bnx2x_attn_int_deasserted2(struct bnx2x *bp, u32 attn) ++{ ++ u32 val; ++ ++ if (attn & AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT) { ++ ++ val = REG_RD(bp, CFC_REG_CFC_INT_STS_CLR); ++ BNX2X_ERR("CFC hw attention 0x%x\n", val); ++ /* CFC error attention */ ++ if (val & 0x2) ++ BNX2X_ERR("FATAL error from CFC\n"); ++ } ++ ++ if (attn & AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT) { ++ ++ val = REG_RD(bp, PXP_REG_PXP_INT_STS_CLR_0); ++ BNX2X_ERR("PXP hw attention 0x%x\n", val); ++ /* RQ_USDMDP_FIFO_OVERFLOW */ ++ if (val & 0x18000) ++ BNX2X_ERR("FATAL error from PXP\n"); ++ } ++ ++ if (attn & HW_INTERRUT_ASSERT_SET_2) { ++ ++ int port = BP_PORT(bp); ++ int reg_offset; ++ ++ reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_2 : ++ MISC_REG_AEU_ENABLE1_FUNC_0_OUT_2); ++ ++ val = REG_RD(bp, reg_offset); ++ val &= ~(attn & HW_INTERRUT_ASSERT_SET_2); ++ REG_WR(bp, reg_offset, val); ++ ++ BNX2X_ERR("FATAL HW block attention set2 0x%x\n", ++ (u32)(attn & HW_INTERRUT_ASSERT_SET_2)); ++ bnx2x_panic(); ++ } ++} ++ ++static inline void bnx2x_attn_int_deasserted3(struct bnx2x *bp, u32 attn) ++{ ++ u32 val; ++ ++ if (attn & EVEREST_GEN_ATTN_IN_USE_MASK) { ++ ++ if (attn & BNX2X_PMF_LINK_ASSERT) { ++ int func = BP_FUNC(bp); ++ ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_12 + func*4, 0); ++ val = SHMEM_RD(bp, func_mb[func].drv_status); ++ if (val & DRV_STATUS_DCC_EVENT_MASK) ++ bnx2x_dcc_event(bp, ++ (val & DRV_STATUS_DCC_EVENT_MASK)); ++ bnx2x__link_status_update(bp); ++ if ((bp->port.pmf == 0) && (val & DRV_STATUS_PMF)) ++ bnx2x_pmf_update(bp); ++ ++ } else if (attn & BNX2X_MC_ASSERT_BITS) { ++ ++ BNX2X_ERR("MC assert!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_10, 0); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_9, 0); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_8, 0); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_7, 0); ++ bnx2x_panic(); ++ ++ } else if (attn & BNX2X_MCP_ASSERT) { ++ ++ BNX2X_ERR("MCP assert!\n"); ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_11, 0); ++ bnx2x_fw_dump(bp); ++ ++ } else ++ BNX2X_ERR("Unknown HW assert! (attn 0x%x)\n", attn); ++ } ++ ++ if (attn & EVEREST_LATCHED_ATTN_IN_USE_MASK) { ++ BNX2X_ERR("LATCHED attention 0x%08x (masked)\n", attn); ++ if (attn & BNX2X_GRC_TIMEOUT) { ++ val = CHIP_IS_E1H(bp) ? ++ REG_RD(bp, MISC_REG_GRC_TIMEOUT_ATTN) : 0; ++ BNX2X_ERR("GRC time-out 0x%08x\n", val); ++ } ++ if (attn & BNX2X_GRC_RSV) { ++ val = CHIP_IS_E1H(bp) ? ++ REG_RD(bp, MISC_REG_GRC_RSV_ATTN) : 0; ++ BNX2X_ERR("GRC reserved 0x%08x\n", val); ++ } ++ REG_WR(bp, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0x7ff); ++ } ++} ++ ++static void bnx2x_attn_int_deasserted(struct bnx2x *bp, u32 deasserted) ++{ ++ struct attn_route attn; ++ struct attn_route group_mask; ++ int port = BP_PORT(bp); ++ int index; ++ u32 reg_addr; ++ u32 val; ++ u32 aeu_mask; ++ ++ /* need to take HW lock because MCP or other port might also ++ try to handle this event */ ++ bnx2x_acquire_alr(bp); ++ ++ attn.sig[0] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_1_FUNC_0 + port*4); ++ attn.sig[1] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_2_FUNC_0 + port*4); ++ attn.sig[2] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_3_FUNC_0 + port*4); ++ attn.sig[3] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_4_FUNC_0 + port*4); ++ DP(NETIF_MSG_HW, "attn: %08x %08x %08x %08x\n", ++ attn.sig[0], attn.sig[1], attn.sig[2], attn.sig[3]); ++ ++ for (index = 0; index < MAX_DYNAMIC_ATTN_GRPS; index++) { ++ if (deasserted & (1 << index)) { ++ group_mask = bp->attn_group[index]; ++ ++ DP(NETIF_MSG_HW, "group[%d]: %08x %08x %08x %08x\n", ++ index, group_mask.sig[0], group_mask.sig[1], ++ group_mask.sig[2], group_mask.sig[3]); ++ ++ bnx2x_attn_int_deasserted3(bp, ++ attn.sig[3] & group_mask.sig[3]); ++ bnx2x_attn_int_deasserted1(bp, ++ attn.sig[1] & group_mask.sig[1]); ++ bnx2x_attn_int_deasserted2(bp, ++ attn.sig[2] & group_mask.sig[2]); ++ bnx2x_attn_int_deasserted0(bp, ++ attn.sig[0] & group_mask.sig[0]); ++ ++ if ((attn.sig[0] & group_mask.sig[0] & ++ HW_PRTY_ASSERT_SET_0) || ++ (attn.sig[1] & group_mask.sig[1] & ++ HW_PRTY_ASSERT_SET_1) || ++ (attn.sig[2] & group_mask.sig[2] & ++ HW_PRTY_ASSERT_SET_2)) ++ BNX2X_ERR("FATAL HW block parity attention\n"); ++ } ++ } ++ ++ bnx2x_release_alr(bp); ++ ++ reg_addr = (HC_REG_COMMAND_REG + port*32 + COMMAND_REG_ATTN_BITS_CLR); ++ ++ val = ~deasserted; ++ DP(NETIF_MSG_HW, "about to mask 0x%08x at HC addr 0x%x\n", ++ val, reg_addr); ++ REG_WR(bp, reg_addr, val); ++ ++ if (~bp->attn_state & deasserted) ++ BNX2X_ERR("IGU ERROR\n"); ++ ++ reg_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 : ++ MISC_REG_AEU_MASK_ATTN_FUNC_0; ++ ++ bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port); ++ aeu_mask = REG_RD(bp, reg_addr); ++ ++ DP(NETIF_MSG_HW, "aeu_mask %x newly deasserted %x\n", ++ aeu_mask, deasserted); ++ aeu_mask |= (deasserted & 0xff); ++ DP(NETIF_MSG_HW, "new mask %x\n", aeu_mask); ++ ++ REG_WR(bp, reg_addr, aeu_mask); ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port); ++ ++ DP(NETIF_MSG_HW, "attn_state %x\n", bp->attn_state); ++ bp->attn_state &= ~deasserted; ++ DP(NETIF_MSG_HW, "new state %x\n", bp->attn_state); ++} ++ ++static void bnx2x_attn_int(struct bnx2x *bp) ++{ ++ /* read local copy of bits */ ++ u32 attn_bits = le32_to_cpu(bp->def_status_blk->atten_status_block. ++ attn_bits); ++ u32 attn_ack = le32_to_cpu(bp->def_status_blk->atten_status_block. ++ attn_bits_ack); ++ u32 attn_state = bp->attn_state; ++ ++ /* look for changed bits */ ++ u32 asserted = attn_bits & ~attn_ack & ~attn_state; ++ u32 deasserted = ~attn_bits & attn_ack & attn_state; ++ ++ DP(NETIF_MSG_HW, ++ "attn_bits %x attn_ack %x asserted %x deasserted %x\n", ++ attn_bits, attn_ack, asserted, deasserted); ++ ++ if (~(attn_bits ^ attn_ack) & (attn_bits ^ attn_state)) ++ BNX2X_ERR("BAD attention state\n"); ++ ++ /* handle bits that were raised */ ++ if (asserted) ++ bnx2x_attn_int_asserted(bp, asserted); ++ ++ if (deasserted) ++ bnx2x_attn_int_deasserted(bp, deasserted); ++} ++ ++#if defined(INIT_DELAYED_WORK_DEFERRABLE) || defined(INIT_WORK_NAR) || (VMWARE_ESX_DDK_VERSION >= 40000) /* BNX2X_UPSTREAM */ ++static void bnx2x_sp_task(struct work_struct *work) ++{ ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ struct bnx2x *bp = container_of(work, struct bnx2x, sp_task.work); ++#else ++ struct bnx2x *bp = container_of(work, struct bnx2x, sp_task); ++#endif ++#else ++static void bnx2x_sp_task(void *data) ++{ ++ struct bnx2x *bp = (struct bnx2x *)data; ++#endif ++ u16 status; ++ ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ bp->sp_running = 1; ++ smp_mb(); /* make sure close can see this */ ++#endif ++ ++ /* Return here if interrupt is disabled */ ++ if (unlikely(atomic_read(&bp->intr_sem) != 0)) { ++ DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n"); ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++ return; ++#else ++ goto sp_task_exit; ++#endif ++ } ++ ++ status = bnx2x_update_dsb_idx(bp); ++/* if (status == 0) */ ++/* BNX2X_ERR("spurious slowpath interrupt!\n"); */ ++ ++ DP(NETIF_MSG_INTR, "got a slowpath interrupt (updated %x)\n", status); ++ ++ /* HW attentions */ ++ if (status & 0x1) ++ bnx2x_attn_int(bp); ++ ++ bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, le16_to_cpu(bp->def_att_idx), ++ IGU_INT_NOP, 1); ++ bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx), ++ IGU_INT_NOP, 1); ++ bnx2x_ack_sb(bp, DEF_SB_ID, CSTORM_ID, le16_to_cpu(bp->def_c_idx), ++ IGU_INT_NOP, 1); ++ bnx2x_ack_sb(bp, DEF_SB_ID, XSTORM_ID, le16_to_cpu(bp->def_x_idx), ++ IGU_INT_NOP, 1); ++ bnx2x_ack_sb(bp, DEF_SB_ID, TSTORM_ID, le16_to_cpu(bp->def_t_idx), ++ IGU_INT_ENABLE, 1); ++ ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++sp_task_exit: ++ bp->sp_running = 0; ++ smp_mb(); /* make sure close can see this */ ++#endif ++} ++ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++#if (LINUX_VERSION_CODE < 0x020613) && (VMWARE_ESX_DDK_VERSION < 40000) ++static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance, ++ struct pt_regs *regs) ++#else /* BNX2X_UPSTREAM */ ++static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance) ++#endif ++{ ++ struct net_device *dev = dev_instance; ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ /* Return here if interrupt is disabled */ ++ if (unlikely(atomic_read(&bp->intr_sem) != 0)) { ++ DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n"); ++ return IRQ_HANDLED; ++ } ++ ++ bnx2x_ack_sb(bp, DEF_SB_ID, TSTORM_ID, 0, IGU_INT_DISABLE, 0); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return IRQ_HANDLED; ++#endif ++ ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ queue_delayed_work(bnx2x_wq, &bp->sp_task, 0); ++#else ++ queue_work(bnx2x_wq, &bp->sp_task); ++#endif ++ ++ return IRQ_HANDLED; ++} ++#endif ++ ++/* end of slow path */ ++ ++/* Statistics */ ++ ++/**************************************************************************** ++* Macros ++****************************************************************************/ ++ ++/* sum[hi:lo] += add[hi:lo] */ ++#define ADD_64(s_hi, a_hi, s_lo, a_lo) \ ++ do { \ ++ s_lo += a_lo; \ ++ s_hi += a_hi + ((s_lo < a_lo) ? 1 : 0); \ ++ } while (0) ++ ++/* difference = minuend - subtrahend */ ++#define DIFF_64(d_hi, m_hi, s_hi, d_lo, m_lo, s_lo) \ ++ do { \ ++ if (m_lo < s_lo) { \ ++ /* underflow */ \ ++ d_hi = m_hi - s_hi; \ ++ if (d_hi > 0) { \ ++ /* we can 'loan' 1 */ \ ++ d_hi--; \ ++ d_lo = m_lo + (UINT_MAX - s_lo) + 1; \ ++ } else { \ ++ /* m_hi <= s_hi */ \ ++ d_hi = 0; \ ++ d_lo = 0; \ ++ } \ ++ } else { \ ++ /* m_lo >= s_lo */ \ ++ if (m_hi < s_hi) { \ ++ d_hi = 0; \ ++ d_lo = 0; \ ++ } else { \ ++ /* m_hi >= s_hi */ \ ++ d_hi = m_hi - s_hi; \ ++ d_lo = m_lo - s_lo; \ ++ } \ ++ } \ ++ } while (0) ++ ++#define UPDATE_STAT64(s, t) \ ++ do { \ ++ DIFF_64(diff.hi, new->s##_hi, pstats->mac_stx[0].t##_hi, \ ++ diff.lo, new->s##_lo, pstats->mac_stx[0].t##_lo); \ ++ pstats->mac_stx[0].t##_hi = new->s##_hi; \ ++ pstats->mac_stx[0].t##_lo = new->s##_lo; \ ++ ADD_64(pstats->mac_stx[1].t##_hi, diff.hi, \ ++ pstats->mac_stx[1].t##_lo, diff.lo); \ ++ } while (0) ++ ++#define UPDATE_STAT64_NIG(s, t) \ ++ do { \ ++ DIFF_64(diff.hi, new->s##_hi, old->s##_hi, \ ++ diff.lo, new->s##_lo, old->s##_lo); \ ++ ADD_64(estats->t##_hi, diff.hi, \ ++ estats->t##_lo, diff.lo); \ ++ } while (0) ++ ++/* sum[hi:lo] += add */ ++#define ADD_EXTEND_64(s_hi, s_lo, a) \ ++ do { \ ++ s_lo += a; \ ++ s_hi += (s_lo < a) ? 1 : 0; \ ++ } while (0) ++ ++#define UPDATE_EXTEND_STAT(s) \ ++ do { \ ++ ADD_EXTEND_64(pstats->mac_stx[1].s##_hi, \ ++ pstats->mac_stx[1].s##_lo, \ ++ new->s); \ ++ } while (0) ++ ++#define UPDATE_EXTEND_TSTAT(s, t) \ ++ do { \ ++ diff = le32_to_cpu(tclient->s) - le32_to_cpu(old_tclient->s); \ ++ old_tclient->s = tclient->s; \ ++ ADD_EXTEND_64(qstats->t##_hi, qstats->t##_lo, diff); \ ++ } while (0) ++ ++#define UPDATE_EXTEND_USTAT(s, t) \ ++ do { \ ++ diff = le32_to_cpu(uclient->s) - le32_to_cpu(old_uclient->s); \ ++ old_uclient->s = uclient->s; \ ++ ADD_EXTEND_64(qstats->t##_hi, qstats->t##_lo, diff); \ ++ } while (0) ++ ++#define UPDATE_EXTEND_XSTAT(s, t) \ ++ do { \ ++ diff = le32_to_cpu(xclient->s) - le32_to_cpu(old_xclient->s); \ ++ old_xclient->s = xclient->s; \ ++ ADD_EXTEND_64(qstats->t##_hi, qstats->t##_lo, diff); \ ++ } while (0) ++ ++/* minuend -= subtrahend */ ++#define SUB_64(m_hi, s_hi, m_lo, s_lo) \ ++ do { \ ++ DIFF_64(m_hi, m_hi, s_hi, m_lo, m_lo, s_lo); \ ++ } while (0) ++ ++/* minuend[hi:lo] -= subtrahend */ ++#define SUB_EXTEND_64(m_hi, m_lo, s) \ ++ do { \ ++ SUB_64(m_hi, 0, m_lo, s); \ ++ } while (0) ++ ++#define SUB_EXTEND_USTAT(s, t) \ ++ do { \ ++ diff = le32_to_cpu(uclient->s) - le32_to_cpu(old_uclient->s); \ ++ SUB_EXTEND_64(qstats->t##_hi, qstats->t##_lo, diff); \ ++ } while (0) ++ ++/* ++ * General service functions ++ */ ++ ++static inline long bnx2x_hilo(u32 *hiref) ++{ ++ u32 lo = *(hiref + 1); ++#if (BITS_PER_LONG == 64) ++ u32 hi = *hiref; ++ ++ return HILO_U64(hi, lo); ++#else ++ return lo; ++#endif ++} ++ ++/* ++ * Init service functions ++ */ ++ ++static void bnx2x_storm_stats_post(struct bnx2x *bp) ++{ ++ if (!bp->stats_pending) { ++ struct eth_query_ramrod_data ramrod_data = {0}; ++ int i, rc; ++ ++ ramrod_data.drv_counter = bp->stats_counter++; ++ ramrod_data.collect_port = bp->port.pmf ? 1 : 0; ++ for_each_queue(bp, i) ++ ramrod_data.ctr_id_vector |= (1 << bp->fp[i].cl_id); ++ ++ rc = bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_STAT_QUERY, 0, ++ ((u32 *)&ramrod_data)[1], ++ ((u32 *)&ramrod_data)[0], 0); ++ if (rc == 0) { ++ /* stats ramrod has it's own slot on the spq */ ++ bp->spq_left++; ++ bp->stats_pending = 1; ++ } ++ } ++} ++ ++static void bnx2x_hw_stats_post(struct bnx2x *bp) ++{ ++ struct dmae_command *dmae = &bp->stats_dmae; ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ *stats_comp = DMAE_COMP_VAL; ++ if (CHIP_REV_IS_SLOW(bp)) ++ return; ++ ++ /* loader */ ++ if (bp->executer_idx) { ++ int loader_idx = PMF_DMAE_C(bp); ++ ++ memset(dmae, 0, sizeof(struct dmae_command)); ++ ++ dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC | ++ DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : ++ DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, dmae[0])); ++ dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, dmae[0])); ++ dmae->dst_addr_lo = (DMAE_REG_CMD_MEM + ++ sizeof(struct dmae_command) * ++ (loader_idx + 1)) >> 2; ++ dmae->dst_addr_hi = 0; ++ dmae->len = sizeof(struct dmae_command) >> 2; ++ if (CHIP_IS_E1(bp)) ++ dmae->len--; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx + 1] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ *stats_comp = 0; ++ bnx2x_post_dmae(bp, dmae, loader_idx); ++ ++ } else if (bp->func_stx) { ++ *stats_comp = 0; ++ bnx2x_post_dmae(bp, dmae, INIT_DMAE_C(bp)); ++ } ++} ++ ++static int bnx2x_stats_comp(struct bnx2x *bp) ++{ ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ int cnt = 10; ++ ++ might_sleep(); ++ while (*stats_comp != DMAE_COMP_VAL) { ++ if (!cnt) { ++ BNX2X_ERR("timeout waiting for stats finished\n"); ++ break; ++ } ++ cnt--; ++ msleep(1); ++ } ++ return 1; ++} ++ ++/* ++ * Statistics service functions ++ */ ++ ++static void bnx2x_stats_pmf_update(struct bnx2x *bp) ++{ ++ struct dmae_command *dmae; ++ u32 opcode; ++ int loader_idx = PMF_DMAE_C(bp); ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ /* sanity */ ++ if (!IS_E1HMF(bp) || !bp->port.pmf || !bp->port.port_stx) { ++ BNX2X_ERR("BUG!\n"); ++ return; ++ } ++ ++ bp->executer_idx = 0; ++ ++ opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI | ++ DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = (opcode | DMAE_CMD_C_DST_GRC); ++ dmae->src_addr_lo = bp->port.port_stx >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->len = DMAE_LEN32_RD_MAX; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = (opcode | DMAE_CMD_C_DST_PCI); ++ dmae->src_addr_lo = (bp->port.port_stx >> 2) + DMAE_LEN32_RD_MAX; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats) + ++ DMAE_LEN32_RD_MAX * 4); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats) + ++ DMAE_LEN32_RD_MAX * 4); ++ dmae->len = (sizeof(struct host_port_stats) >> 2) - DMAE_LEN32_RD_MAX; ++ dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_val = DMAE_COMP_VAL; ++ ++ *stats_comp = 0; ++ bnx2x_hw_stats_post(bp); ++ bnx2x_stats_comp(bp); ++} ++ ++static void bnx2x_port_stats_init(struct bnx2x *bp) ++{ ++ struct dmae_command *dmae; ++ int port = BP_PORT(bp); ++ int vn = BP_E1HVN(bp); ++ u32 opcode; ++ int loader_idx = PMF_DMAE_C(bp); ++ u32 mac_addr; ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ /* sanity */ ++ if (!bp->link_vars.link_up || !bp->port.pmf) { ++ BNX2X_ERR("BUG!\n"); ++ return; ++ } ++ ++ bp->executer_idx = 0; ++ ++ /* MCP */ ++ opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC | ++ DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (vn << DMAE_CMD_E1HVN_SHIFT)); ++ ++ if (bp->port.port_stx) { ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->dst_addr_lo = bp->port.port_stx >> 2; ++ dmae->dst_addr_hi = 0; ++ dmae->len = sizeof(struct host_port_stats) >> 2; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ } ++ ++ if (bp->func_stx) { ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, func_stats)); ++ dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, func_stats)); ++ dmae->dst_addr_lo = bp->func_stx >> 2; ++ dmae->dst_addr_hi = 0; ++ dmae->len = sizeof(struct host_func_stats) >> 2; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ } ++ ++ /* MAC */ ++ opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI | ++ DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (vn << DMAE_CMD_E1HVN_SHIFT)); ++ ++ if (bp->link_vars.mac_type == MAC_TYPE_BMAC) { ++ ++ mac_addr = (port ? NIG_REG_INGRESS_BMAC1_MEM : ++ NIG_REG_INGRESS_BMAC0_MEM); ++ ++ /* BIGMAC_REGISTER_TX_STAT_GTPKT .. ++ BIGMAC_REGISTER_TX_STAT_GTBYT */ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = (mac_addr + ++ BIGMAC_REGISTER_TX_STAT_GTPKT) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats)); ++ dmae->len = (8 + BIGMAC_REGISTER_TX_STAT_GTBYT - ++ BIGMAC_REGISTER_TX_STAT_GTPKT) >> 2; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ /* BIGMAC_REGISTER_RX_STAT_GR64 .. ++ BIGMAC_REGISTER_RX_STAT_GRIPJ */ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = (mac_addr + ++ BIGMAC_REGISTER_RX_STAT_GR64) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) + ++ offsetof(struct bmac_stats, rx_stat_gr64_lo)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) + ++ offsetof(struct bmac_stats, rx_stat_gr64_lo)); ++ dmae->len = (8 + BIGMAC_REGISTER_RX_STAT_GRIPJ - ++ BIGMAC_REGISTER_RX_STAT_GR64) >> 2; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ } else if (bp->link_vars.mac_type == MAC_TYPE_EMAC) { ++ ++ mac_addr = (port ? GRCBASE_EMAC1 : GRCBASE_EMAC0); ++ ++ /* EMAC_REG_EMAC_RX_STAT_AC (EMAC_REG_EMAC_RX_STAT_AC_COUNT)*/ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = (mac_addr + ++ EMAC_REG_EMAC_RX_STAT_AC) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats)); ++ dmae->len = EMAC_REG_EMAC_RX_STAT_AC_COUNT; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ /* EMAC_REG_EMAC_RX_STAT_AC_28 */ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = (mac_addr + ++ EMAC_REG_EMAC_RX_STAT_AC_28) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) + ++ offsetof(struct emac_stats, rx_stat_falsecarriererrors)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) + ++ offsetof(struct emac_stats, rx_stat_falsecarriererrors)); ++ dmae->len = 1; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ /* EMAC_REG_EMAC_TX_STAT_AC (EMAC_REG_EMAC_TX_STAT_AC_COUNT)*/ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = (mac_addr + ++ EMAC_REG_EMAC_TX_STAT_AC) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) + ++ offsetof(struct emac_stats, tx_stat_ifhcoutoctets)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) + ++ offsetof(struct emac_stats, tx_stat_ifhcoutoctets)); ++ dmae->len = EMAC_REG_EMAC_TX_STAT_AC_COUNT; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ } ++ ++ /* NIG */ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = (port ? NIG_REG_STAT1_BRB_DISCARD : ++ NIG_REG_STAT0_BRB_DISCARD) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig_stats)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig_stats)); ++ dmae->len = (sizeof(struct nig_stats) - 4*sizeof(u32)) >> 2; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = opcode; ++ dmae->src_addr_lo = (port ? NIG_REG_STAT1_EGRESS_MAC_PKT0 : ++ NIG_REG_STAT0_EGRESS_MAC_PKT0) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig_stats) + ++ offsetof(struct nig_stats, egress_mac_pkt0_lo)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig_stats) + ++ offsetof(struct nig_stats, egress_mac_pkt0_lo)); ++ dmae->len = (2*sizeof(u32)) >> 2; ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI | ++ DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (vn << DMAE_CMD_E1HVN_SHIFT)); ++ dmae->src_addr_lo = (port ? NIG_REG_STAT1_EGRESS_MAC_PKT1 : ++ NIG_REG_STAT0_EGRESS_MAC_PKT1) >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig_stats) + ++ offsetof(struct nig_stats, egress_mac_pkt1_lo)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig_stats) + ++ offsetof(struct nig_stats, egress_mac_pkt1_lo)); ++ dmae->len = (2*sizeof(u32)) >> 2; ++ dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_val = DMAE_COMP_VAL; ++ ++ *stats_comp = 0; ++} ++ ++static void bnx2x_func_stats_init(struct bnx2x *bp) ++{ ++ struct dmae_command *dmae = &bp->stats_dmae; ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ /* sanity */ ++ if (!bp->func_stx) { ++ BNX2X_ERR("BUG!\n"); ++ return; ++ } ++ ++ bp->executer_idx = 0; ++ memset(dmae, 0, sizeof(struct dmae_command)); ++ ++ dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC | ++ DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, func_stats)); ++ dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, func_stats)); ++ dmae->dst_addr_lo = bp->func_stx >> 2; ++ dmae->dst_addr_hi = 0; ++ dmae->len = sizeof(struct host_func_stats) >> 2; ++ dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_val = DMAE_COMP_VAL; ++ ++ *stats_comp = 0; ++} ++ ++static void bnx2x_stats_start(struct bnx2x *bp) ++{ ++ if (bp->port.pmf) ++ bnx2x_port_stats_init(bp); ++ ++ else if (bp->func_stx) ++ bnx2x_func_stats_init(bp); ++ ++ bnx2x_hw_stats_post(bp); ++ bnx2x_storm_stats_post(bp); ++} ++ ++static void bnx2x_stats_pmf_start(struct bnx2x *bp) ++{ ++ bnx2x_stats_comp(bp); ++ bnx2x_stats_pmf_update(bp); ++ bnx2x_stats_start(bp); ++} ++ ++static void bnx2x_stats_restart(struct bnx2x *bp) ++{ ++ bnx2x_stats_comp(bp); ++ bnx2x_stats_start(bp); ++} ++ ++static void bnx2x_bmac_stats_update(struct bnx2x *bp) ++{ ++ struct bmac_stats *new = bnx2x_sp(bp, mac_stats.bmac_stats); ++ struct host_port_stats *pstats = bnx2x_sp(bp, port_stats); ++ struct bnx2x_eth_stats *estats = &bp->eth_stats; ++ struct { ++ u32 lo; ++ u32 hi; ++ } diff; ++ ++ UPDATE_STAT64(rx_stat_grerb, rx_stat_ifhcinbadoctets); ++ UPDATE_STAT64(rx_stat_grfcs, rx_stat_dot3statsfcserrors); ++ UPDATE_STAT64(rx_stat_grund, rx_stat_etherstatsundersizepkts); ++ UPDATE_STAT64(rx_stat_grovr, rx_stat_dot3statsframestoolong); ++ UPDATE_STAT64(rx_stat_grfrg, rx_stat_etherstatsfragments); ++ UPDATE_STAT64(rx_stat_grjbr, rx_stat_etherstatsjabbers); ++ UPDATE_STAT64(rx_stat_grxcf, rx_stat_maccontrolframesreceived); ++ UPDATE_STAT64(rx_stat_grxpf, rx_stat_xoffstateentered); ++ UPDATE_STAT64(rx_stat_grxpf, rx_stat_bmac_xpf); ++ UPDATE_STAT64(tx_stat_gtxpf, tx_stat_outxoffsent); ++ UPDATE_STAT64(tx_stat_gtxpf, tx_stat_flowcontroldone); ++ UPDATE_STAT64(tx_stat_gt64, tx_stat_etherstatspkts64octets); ++ UPDATE_STAT64(tx_stat_gt127, ++ tx_stat_etherstatspkts65octetsto127octets); ++ UPDATE_STAT64(tx_stat_gt255, ++ tx_stat_etherstatspkts128octetsto255octets); ++ UPDATE_STAT64(tx_stat_gt511, ++ tx_stat_etherstatspkts256octetsto511octets); ++ UPDATE_STAT64(tx_stat_gt1023, ++ tx_stat_etherstatspkts512octetsto1023octets); ++ UPDATE_STAT64(tx_stat_gt1518, ++ tx_stat_etherstatspkts1024octetsto1522octets); ++ UPDATE_STAT64(tx_stat_gt2047, tx_stat_bmac_2047); ++ UPDATE_STAT64(tx_stat_gt4095, tx_stat_bmac_4095); ++ UPDATE_STAT64(tx_stat_gt9216, tx_stat_bmac_9216); ++ UPDATE_STAT64(tx_stat_gt16383, tx_stat_bmac_16383); ++ UPDATE_STAT64(tx_stat_gterr, ++ tx_stat_dot3statsinternalmactransmiterrors); ++ UPDATE_STAT64(tx_stat_gtufl, tx_stat_bmac_ufl); ++ ++ estats->pause_frames_received_hi = ++ pstats->mac_stx[1].rx_stat_bmac_xpf_hi; ++ estats->pause_frames_received_lo = ++ pstats->mac_stx[1].rx_stat_bmac_xpf_lo; ++ ++ estats->pause_frames_sent_hi = ++ pstats->mac_stx[1].tx_stat_outxoffsent_hi; ++ estats->pause_frames_sent_lo = ++ pstats->mac_stx[1].tx_stat_outxoffsent_lo; ++} ++ ++static void bnx2x_emac_stats_update(struct bnx2x *bp) ++{ ++ struct emac_stats *new = bnx2x_sp(bp, mac_stats.emac_stats); ++ struct host_port_stats *pstats = bnx2x_sp(bp, port_stats); ++ struct bnx2x_eth_stats *estats = &bp->eth_stats; ++ ++ UPDATE_EXTEND_STAT(rx_stat_ifhcinbadoctets); ++ UPDATE_EXTEND_STAT(tx_stat_ifhcoutbadoctets); ++ UPDATE_EXTEND_STAT(rx_stat_dot3statsfcserrors); ++ UPDATE_EXTEND_STAT(rx_stat_dot3statsalignmenterrors); ++ UPDATE_EXTEND_STAT(rx_stat_dot3statscarriersenseerrors); ++ UPDATE_EXTEND_STAT(rx_stat_falsecarriererrors); ++ UPDATE_EXTEND_STAT(rx_stat_etherstatsundersizepkts); ++ UPDATE_EXTEND_STAT(rx_stat_dot3statsframestoolong); ++ UPDATE_EXTEND_STAT(rx_stat_etherstatsfragments); ++ UPDATE_EXTEND_STAT(rx_stat_etherstatsjabbers); ++ UPDATE_EXTEND_STAT(rx_stat_maccontrolframesreceived); ++ UPDATE_EXTEND_STAT(rx_stat_xoffstateentered); ++ UPDATE_EXTEND_STAT(rx_stat_xonpauseframesreceived); ++ UPDATE_EXTEND_STAT(rx_stat_xoffpauseframesreceived); ++ UPDATE_EXTEND_STAT(tx_stat_outxonsent); ++ UPDATE_EXTEND_STAT(tx_stat_outxoffsent); ++ UPDATE_EXTEND_STAT(tx_stat_flowcontroldone); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatscollisions); ++ UPDATE_EXTEND_STAT(tx_stat_dot3statssinglecollisionframes); ++ UPDATE_EXTEND_STAT(tx_stat_dot3statsmultiplecollisionframes); ++ UPDATE_EXTEND_STAT(tx_stat_dot3statsdeferredtransmissions); ++ UPDATE_EXTEND_STAT(tx_stat_dot3statsexcessivecollisions); ++ UPDATE_EXTEND_STAT(tx_stat_dot3statslatecollisions); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatspkts64octets); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatspkts65octetsto127octets); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatspkts128octetsto255octets); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatspkts256octetsto511octets); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatspkts512octetsto1023octets); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatspkts1024octetsto1522octets); ++ UPDATE_EXTEND_STAT(tx_stat_etherstatspktsover1522octets); ++ UPDATE_EXTEND_STAT(tx_stat_dot3statsinternalmactransmiterrors); ++ ++ estats->pause_frames_received_hi = ++ pstats->mac_stx[1].rx_stat_xonpauseframesreceived_hi; ++ estats->pause_frames_received_lo = ++ pstats->mac_stx[1].rx_stat_xonpauseframesreceived_lo; ++ ADD_64(estats->pause_frames_received_hi, ++ pstats->mac_stx[1].rx_stat_xoffpauseframesreceived_hi, ++ estats->pause_frames_received_lo, ++ pstats->mac_stx[1].rx_stat_xoffpauseframesreceived_lo); ++ ++ estats->pause_frames_sent_hi = ++ pstats->mac_stx[1].tx_stat_outxonsent_hi; ++ estats->pause_frames_sent_lo = ++ pstats->mac_stx[1].tx_stat_outxonsent_lo; ++ ADD_64(estats->pause_frames_sent_hi, ++ pstats->mac_stx[1].tx_stat_outxoffsent_hi, ++ estats->pause_frames_sent_lo, ++ pstats->mac_stx[1].tx_stat_outxoffsent_lo); ++} ++ ++static int bnx2x_hw_stats_update(struct bnx2x *bp) ++{ ++ struct nig_stats *new = bnx2x_sp(bp, nig_stats); ++ struct nig_stats *old = &(bp->port.old_nig_stats); ++ struct host_port_stats *pstats = bnx2x_sp(bp, port_stats); ++ struct bnx2x_eth_stats *estats = &bp->eth_stats; ++ struct { ++ u32 lo; ++ u32 hi; ++ } diff; ++ u32 nig_timer_max; ++ ++ if (bp->link_vars.mac_type == MAC_TYPE_BMAC) ++ bnx2x_bmac_stats_update(bp); ++ ++ else if (bp->link_vars.mac_type == MAC_TYPE_EMAC) ++ bnx2x_emac_stats_update(bp); ++ ++ else { /* unreached */ ++ BNX2X_ERR("stats updated by DMAE but no MAC active\n"); ++ return -1; ++ } ++ ++ ADD_EXTEND_64(pstats->brb_drop_hi, pstats->brb_drop_lo, ++ new->brb_discard - old->brb_discard); ++ ADD_EXTEND_64(estats->brb_truncate_hi, estats->brb_truncate_lo, ++ new->brb_truncate - old->brb_truncate); ++ ++ UPDATE_STAT64_NIG(egress_mac_pkt0, ++ etherstatspkts1024octetsto1522octets); ++ UPDATE_STAT64_NIG(egress_mac_pkt1, etherstatspktsover1522octets); ++ ++ memcpy(old, new, sizeof(struct nig_stats)); ++ ++ memcpy(&(estats->rx_stat_ifhcinbadoctets_hi), &(pstats->mac_stx[1]), ++ sizeof(struct mac_stx)); ++ estats->brb_drop_hi = pstats->brb_drop_hi; ++ estats->brb_drop_lo = pstats->brb_drop_lo; ++ ++ pstats->host_port_stats_start = ++pstats->host_port_stats_end; ++ ++ nig_timer_max = SHMEM_RD(bp, port_mb[BP_PORT(bp)].stat_nig_timer); ++ if (nig_timer_max != estats->nig_timer_max) { ++ estats->nig_timer_max = nig_timer_max; ++ BNX2X_ERR("NIG timer max (%u)\n", estats->nig_timer_max); ++ } ++ ++ return 0; ++} ++ ++static int bnx2x_storm_stats_update(struct bnx2x *bp) ++{ ++ struct eth_stats_query *stats = bnx2x_sp(bp, fw_stats); ++ struct tstorm_per_port_stats *tport = ++ &stats->tstorm_common.port_statistics; ++ struct host_func_stats *fstats = bnx2x_sp(bp, func_stats); ++ struct bnx2x_eth_stats *estats = &bp->eth_stats; ++ int i; ++ ++ memcpy(&(fstats->total_bytes_received_hi), ++ &(bnx2x_sp(bp, func_stats_base)->total_bytes_received_hi), ++ sizeof(struct host_func_stats) - 2*sizeof(u32)); ++ estats->error_bytes_received_hi = 0; ++ estats->error_bytes_received_lo = 0; ++ estats->etherstatsoverrsizepkts_hi = 0; ++ estats->etherstatsoverrsizepkts_lo = 0; ++ estats->no_buff_discard_hi = 0; ++ estats->no_buff_discard_lo = 0; ++ ++ for_each_rx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ int cl_id = fp->cl_id; ++ struct tstorm_per_client_stats *tclient = ++ &stats->tstorm_common.client_statistics[cl_id]; ++ struct tstorm_per_client_stats *old_tclient = &fp->old_tclient; ++ struct ustorm_per_client_stats *uclient = ++ &stats->ustorm_common.client_statistics[cl_id]; ++ struct ustorm_per_client_stats *old_uclient = &fp->old_uclient; ++ struct xstorm_per_client_stats *xclient = ++ &stats->xstorm_common.client_statistics[cl_id]; ++ struct xstorm_per_client_stats *old_xclient = &fp->old_xclient; ++ struct bnx2x_eth_q_stats *qstats = &fp->eth_q_stats; ++ u32 diff; ++ ++ /* are storm stats valid? */ ++ if ((u16)(le16_to_cpu(xclient->stats_counter) + 1) != ++ bp->stats_counter) { ++ DP(BNX2X_MSG_STATS, "[%d] stats not updated by xstorm" ++ " xstorm counter (%d) != stats_counter (%d)\n", ++ i, xclient->stats_counter, bp->stats_counter); ++ return -1; ++ } ++ if ((u16)(le16_to_cpu(tclient->stats_counter) + 1) != ++ bp->stats_counter) { ++ DP(BNX2X_MSG_STATS, "[%d] stats not updated by tstorm" ++ " tstorm counter (%d) != stats_counter (%d)\n", ++ i, tclient->stats_counter, bp->stats_counter); ++ return -2; ++ } ++ if ((u16)(le16_to_cpu(uclient->stats_counter) + 1) != ++ bp->stats_counter) { ++ DP(BNX2X_MSG_STATS, "[%d] stats not updated by ustorm" ++ " ustorm counter (%d) != stats_counter (%d)\n", ++ i, uclient->stats_counter, bp->stats_counter); ++ return -4; ++ } ++ ++ qstats->total_bytes_received_hi = ++ le32_to_cpu(tclient->rcv_broadcast_bytes.hi); ++ qstats->total_bytes_received_lo = ++ le32_to_cpu(tclient->rcv_broadcast_bytes.lo); ++ ++ ADD_64(qstats->total_bytes_received_hi, ++ le32_to_cpu(tclient->rcv_multicast_bytes.hi), ++ qstats->total_bytes_received_lo, ++ le32_to_cpu(tclient->rcv_multicast_bytes.lo)); ++ ++ ADD_64(qstats->total_bytes_received_hi, ++ le32_to_cpu(tclient->rcv_unicast_bytes.hi), ++ qstats->total_bytes_received_lo, ++ le32_to_cpu(tclient->rcv_unicast_bytes.lo)); ++ ++ qstats->valid_bytes_received_hi = ++ qstats->total_bytes_received_hi; ++ qstats->valid_bytes_received_lo = ++ qstats->total_bytes_received_lo; ++ ++ qstats->error_bytes_received_hi = ++ le32_to_cpu(tclient->rcv_error_bytes.hi); ++ qstats->error_bytes_received_lo = ++ le32_to_cpu(tclient->rcv_error_bytes.lo); ++ ++ ADD_64(qstats->total_bytes_received_hi, ++ qstats->error_bytes_received_hi, ++ qstats->total_bytes_received_lo, ++ qstats->error_bytes_received_lo); ++ ++ UPDATE_EXTEND_TSTAT(rcv_unicast_pkts, ++ total_unicast_packets_received); ++ UPDATE_EXTEND_TSTAT(rcv_multicast_pkts, ++ total_multicast_packets_received); ++ UPDATE_EXTEND_TSTAT(rcv_broadcast_pkts, ++ total_broadcast_packets_received); ++ UPDATE_EXTEND_TSTAT(packets_too_big_discard, ++ etherstatsoverrsizepkts); ++ UPDATE_EXTEND_TSTAT(no_buff_discard, no_buff_discard); ++ ++ SUB_EXTEND_USTAT(ucast_no_buff_pkts, ++ total_unicast_packets_received); ++ SUB_EXTEND_USTAT(mcast_no_buff_pkts, ++ total_multicast_packets_received); ++ SUB_EXTEND_USTAT(bcast_no_buff_pkts, ++ total_broadcast_packets_received); ++ UPDATE_EXTEND_USTAT(ucast_no_buff_pkts, no_buff_discard); ++ UPDATE_EXTEND_USTAT(mcast_no_buff_pkts, no_buff_discard); ++ UPDATE_EXTEND_USTAT(bcast_no_buff_pkts, no_buff_discard); ++ ++ qstats->total_bytes_transmitted_hi = ++ le32_to_cpu(xclient->unicast_bytes_sent.hi); ++ qstats->total_bytes_transmitted_lo = ++ le32_to_cpu(xclient->unicast_bytes_sent.lo); ++ ++ ADD_64(qstats->total_bytes_transmitted_hi, ++ le32_to_cpu(xclient->multicast_bytes_sent.hi), ++ qstats->total_bytes_transmitted_lo, ++ le32_to_cpu(xclient->multicast_bytes_sent.lo)); ++ ++ ADD_64(qstats->total_bytes_transmitted_hi, ++ le32_to_cpu(xclient->broadcast_bytes_sent.hi), ++ qstats->total_bytes_transmitted_lo, ++ le32_to_cpu(xclient->broadcast_bytes_sent.lo)); ++ ++ UPDATE_EXTEND_XSTAT(unicast_pkts_sent, ++ total_unicast_packets_transmitted); ++ UPDATE_EXTEND_XSTAT(multicast_pkts_sent, ++ total_multicast_packets_transmitted); ++ UPDATE_EXTEND_XSTAT(broadcast_pkts_sent, ++ total_broadcast_packets_transmitted); ++ ++ old_tclient->checksum_discard = tclient->checksum_discard; ++ old_tclient->ttl0_discard = tclient->ttl0_discard; ++ ++ ADD_64(fstats->total_bytes_received_hi, ++ qstats->total_bytes_received_hi, ++ fstats->total_bytes_received_lo, ++ qstats->total_bytes_received_lo); ++ ADD_64(fstats->total_bytes_transmitted_hi, ++ qstats->total_bytes_transmitted_hi, ++ fstats->total_bytes_transmitted_lo, ++ qstats->total_bytes_transmitted_lo); ++ ADD_64(fstats->total_unicast_packets_received_hi, ++ qstats->total_unicast_packets_received_hi, ++ fstats->total_unicast_packets_received_lo, ++ qstats->total_unicast_packets_received_lo); ++ ADD_64(fstats->total_multicast_packets_received_hi, ++ qstats->total_multicast_packets_received_hi, ++ fstats->total_multicast_packets_received_lo, ++ qstats->total_multicast_packets_received_lo); ++ ADD_64(fstats->total_broadcast_packets_received_hi, ++ qstats->total_broadcast_packets_received_hi, ++ fstats->total_broadcast_packets_received_lo, ++ qstats->total_broadcast_packets_received_lo); ++ ADD_64(fstats->total_unicast_packets_transmitted_hi, ++ qstats->total_unicast_packets_transmitted_hi, ++ fstats->total_unicast_packets_transmitted_lo, ++ qstats->total_unicast_packets_transmitted_lo); ++ ADD_64(fstats->total_multicast_packets_transmitted_hi, ++ qstats->total_multicast_packets_transmitted_hi, ++ fstats->total_multicast_packets_transmitted_lo, ++ qstats->total_multicast_packets_transmitted_lo); ++ ADD_64(fstats->total_broadcast_packets_transmitted_hi, ++ qstats->total_broadcast_packets_transmitted_hi, ++ fstats->total_broadcast_packets_transmitted_lo, ++ qstats->total_broadcast_packets_transmitted_lo); ++ ADD_64(fstats->valid_bytes_received_hi, ++ qstats->valid_bytes_received_hi, ++ fstats->valid_bytes_received_lo, ++ qstats->valid_bytes_received_lo); ++ ++ ADD_64(estats->error_bytes_received_hi, ++ qstats->error_bytes_received_hi, ++ estats->error_bytes_received_lo, ++ qstats->error_bytes_received_lo); ++ ADD_64(estats->etherstatsoverrsizepkts_hi, ++ qstats->etherstatsoverrsizepkts_hi, ++ estats->etherstatsoverrsizepkts_lo, ++ qstats->etherstatsoverrsizepkts_lo); ++ ADD_64(estats->no_buff_discard_hi, qstats->no_buff_discard_hi, ++ estats->no_buff_discard_lo, qstats->no_buff_discard_lo); ++ } ++ ++ ADD_64(fstats->total_bytes_received_hi, ++ estats->rx_stat_ifhcinbadoctets_hi, ++ fstats->total_bytes_received_lo, ++ estats->rx_stat_ifhcinbadoctets_lo); ++ ++ memcpy(estats, &(fstats->total_bytes_received_hi), ++ sizeof(struct host_func_stats) - 2*sizeof(u32)); ++ ++ ADD_64(estats->etherstatsoverrsizepkts_hi, ++ estats->rx_stat_dot3statsframestoolong_hi, ++ estats->etherstatsoverrsizepkts_lo, ++ estats->rx_stat_dot3statsframestoolong_lo); ++ ADD_64(estats->error_bytes_received_hi, ++ estats->rx_stat_ifhcinbadoctets_hi, ++ estats->error_bytes_received_lo, ++ estats->rx_stat_ifhcinbadoctets_lo); ++ ++ if (bp->port.pmf) { ++ estats->mac_filter_discard = ++ le32_to_cpu(tport->mac_filter_discard); ++ estats->xxoverflow_discard = ++ le32_to_cpu(tport->xxoverflow_discard); ++ estats->brb_truncate_discard = ++ le32_to_cpu(tport->brb_truncate_discard); ++ estats->mac_discard = le32_to_cpu(tport->mac_discard); ++ } ++ ++ fstats->host_func_stats_start = ++fstats->host_func_stats_end; ++ ++ bp->stats_pending = 0; ++ ++ return 0; ++} ++ ++static void bnx2x_net_stats_update(struct bnx2x *bp) ++{ ++ struct bnx2x_eth_stats *estats = &bp->eth_stats; ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++ struct net_device_stats *nstats = &bp->dev->stats; ++#else ++ struct net_device_stats *nstats = &bp->net_stats; ++#endif ++ int i; ++ ++ nstats->rx_packets = ++ bnx2x_hilo(&estats->total_unicast_packets_received_hi) + ++ bnx2x_hilo(&estats->total_multicast_packets_received_hi) + ++ bnx2x_hilo(&estats->total_broadcast_packets_received_hi); ++ ++ nstats->tx_packets = ++ bnx2x_hilo(&estats->total_unicast_packets_transmitted_hi) + ++ bnx2x_hilo(&estats->total_multicast_packets_transmitted_hi) + ++ bnx2x_hilo(&estats->total_broadcast_packets_transmitted_hi); ++ ++ nstats->rx_bytes = bnx2x_hilo(&estats->total_bytes_received_hi); ++ ++ nstats->tx_bytes = bnx2x_hilo(&estats->total_bytes_transmitted_hi); ++ ++ nstats->rx_dropped = estats->mac_discard; ++ for_each_rx_queue(bp, i) ++ nstats->rx_dropped += ++ le32_to_cpu(bp->fp[i].old_tclient.checksum_discard); ++ ++ nstats->tx_dropped = 0; ++ ++ nstats->multicast = ++ bnx2x_hilo(&estats->total_multicast_packets_received_hi); ++ ++ nstats->collisions = ++ bnx2x_hilo(&estats->tx_stat_etherstatscollisions_hi); ++ ++ nstats->rx_length_errors = ++ bnx2x_hilo(&estats->rx_stat_etherstatsundersizepkts_hi) + ++ bnx2x_hilo(&estats->etherstatsoverrsizepkts_hi); ++ nstats->rx_over_errors = bnx2x_hilo(&estats->brb_drop_hi) + ++ bnx2x_hilo(&estats->brb_truncate_hi); ++ nstats->rx_crc_errors = ++ bnx2x_hilo(&estats->rx_stat_dot3statsfcserrors_hi); ++ nstats->rx_frame_errors = ++ bnx2x_hilo(&estats->rx_stat_dot3statsalignmenterrors_hi); ++ nstats->rx_fifo_errors = bnx2x_hilo(&estats->no_buff_discard_hi); ++ nstats->rx_missed_errors = estats->xxoverflow_discard; ++ ++ nstats->rx_errors = nstats->rx_length_errors + ++ nstats->rx_over_errors + ++ nstats->rx_crc_errors + ++ nstats->rx_frame_errors + ++ nstats->rx_fifo_errors + ++ nstats->rx_missed_errors; ++ ++ nstats->tx_aborted_errors = ++ bnx2x_hilo(&estats->tx_stat_dot3statslatecollisions_hi) + ++ bnx2x_hilo(&estats->tx_stat_dot3statsexcessivecollisions_hi); ++ nstats->tx_carrier_errors = ++ bnx2x_hilo(&estats->rx_stat_dot3statscarriersenseerrors_hi); ++ nstats->tx_fifo_errors = 0; ++ nstats->tx_heartbeat_errors = 0; ++ nstats->tx_window_errors = 0; ++ ++ nstats->tx_errors = nstats->tx_aborted_errors + ++ nstats->tx_carrier_errors + ++ bnx2x_hilo(&estats->tx_stat_dot3statsinternalmactransmiterrors_hi); ++} ++ ++static void bnx2x_drv_stats_update(struct bnx2x *bp) ++{ ++ struct bnx2x_eth_stats *estats = &bp->eth_stats; ++ int i; ++ ++ estats->driver_xoff = 0; ++ estats->rx_err_discard_pkt = 0; ++ estats->rx_skb_alloc_failed = 0; ++ estats->hw_csum_err = 0; ++ for_each_rx_queue(bp, i) { ++ struct bnx2x_eth_q_stats *qstats = &bp->fp[i].eth_q_stats; ++ ++ estats->driver_xoff += qstats->driver_xoff; ++ estats->rx_err_discard_pkt += qstats->rx_err_discard_pkt; ++ estats->rx_skb_alloc_failed += qstats->rx_skb_alloc_failed; ++ estats->hw_csum_err += qstats->hw_csum_err; ++ } ++} ++ ++static void bnx2x_stats_update(struct bnx2x *bp) ++{ ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ if (*stats_comp != DMAE_COMP_VAL) ++ return; ++ ++ if (bp->port.pmf) ++ bnx2x_hw_stats_update(bp); ++ ++ if (bnx2x_storm_stats_update(bp) && (bp->stats_pending++ == 3)) { ++ BNX2X_ERR("storm stats were not updated for 3 times\n"); ++ bnx2x_panic(); ++ return; ++ } ++ ++ bnx2x_net_stats_update(bp); ++ bnx2x_drv_stats_update(bp); ++ ++ if (bp->msglevel & NETIF_MSG_TIMER) { ++ struct bnx2x_fastpath *fp0_rx = bp->fp; ++ struct bnx2x_fastpath *fp0_tx = &(bp->fp[bp->num_rx_queues]); ++ struct tstorm_per_client_stats *old_tclient = ++ &bp->fp->old_tclient; ++ struct bnx2x_eth_q_stats *qstats = &bp->fp->eth_q_stats; ++ struct bnx2x_eth_stats *estats = &bp->eth_stats; ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++ struct net_device_stats *nstats = &bp->dev->stats; ++#else ++ struct net_device_stats *nstats = &bp->net_stats; ++#endif ++ int i; ++ ++ printk(KERN_DEBUG "%s:\n", bp->dev->name); ++ printk(KERN_DEBUG " tx avail (%4x) tx hc idx (%x)" ++ " tx pkt (%lx)\n", ++ bnx2x_tx_avail(fp0_tx), ++ le16_to_cpu(*fp0_tx->tx_cons_sb), nstats->tx_packets); ++ printk(KERN_DEBUG " rx usage (%4x) rx hc idx (%x)" ++ " rx pkt (%lx)\n", ++ (u16)(le16_to_cpu(*fp0_rx->rx_cons_sb) - ++ fp0_rx->rx_comp_cons), ++ le16_to_cpu(*fp0_rx->rx_cons_sb), nstats->rx_packets); ++ printk(KERN_DEBUG " %s (Xoff events %u) brb drops %u " ++ "brb truncate %u\n", ++ (netif_queue_stopped(bp->dev) ? "Xoff" : "Xon"), ++ qstats->driver_xoff, ++ estats->brb_drop_lo, estats->brb_truncate_lo); ++ printk(KERN_DEBUG "tstats: checksum_discard %u " ++ "packets_too_big_discard %lu no_buff_discard %lu " ++ "mac_discard %u mac_filter_discard %u " ++ "xxovrflow_discard %u brb_truncate_discard %u " ++ "ttl0_discard %u\n", ++ le32_to_cpu(old_tclient->checksum_discard), ++ bnx2x_hilo(&qstats->etherstatsoverrsizepkts_hi), ++ bnx2x_hilo(&qstats->no_buff_discard_hi), ++ estats->mac_discard, estats->mac_filter_discard, ++ estats->xxoverflow_discard, estats->brb_truncate_discard, ++ le32_to_cpu(old_tclient->ttl0_discard)); ++ ++ for_each_queue(bp, i) { ++ printk(KERN_DEBUG "[%d]: %lu\t%lu\t%lu\n", i, ++ bnx2x_fp(bp, i, tx_pkt), ++ bnx2x_fp(bp, i, rx_pkt), ++ bnx2x_fp(bp, i, rx_calls)); ++ } ++ } ++ ++ bnx2x_hw_stats_post(bp); ++ bnx2x_storm_stats_post(bp); ++} ++ ++static void bnx2x_port_stats_stop(struct bnx2x *bp) ++{ ++ struct dmae_command *dmae; ++ u32 opcode; ++ int loader_idx = PMF_DMAE_C(bp); ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ bp->executer_idx = 0; ++ ++ opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC | ++ DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ ++ if (bp->port.port_stx) { ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ if (bp->func_stx) ++ dmae->opcode = (opcode | DMAE_CMD_C_DST_GRC); ++ else ++ dmae->opcode = (opcode | DMAE_CMD_C_DST_PCI); ++ dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->dst_addr_lo = bp->port.port_stx >> 2; ++ dmae->dst_addr_hi = 0; ++ dmae->len = sizeof(struct host_port_stats) >> 2; ++ if (bp->func_stx) { ++ dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2; ++ dmae->comp_addr_hi = 0; ++ dmae->comp_val = 1; ++ } else { ++ dmae->comp_addr_lo = ++ U64_LO(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_addr_hi = ++ U64_HI(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_val = DMAE_COMP_VAL; ++ ++ *stats_comp = 0; ++ } ++ } ++ ++ if (bp->func_stx) { ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = (opcode | DMAE_CMD_C_DST_PCI); ++ dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, func_stats)); ++ dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, func_stats)); ++ dmae->dst_addr_lo = bp->func_stx >> 2; ++ dmae->dst_addr_hi = 0; ++ dmae->len = sizeof(struct host_func_stats) >> 2; ++ dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_val = DMAE_COMP_VAL; ++ ++ *stats_comp = 0; ++ } ++} ++ ++static void bnx2x_stats_stop(struct bnx2x *bp) ++{ ++ int update = 0; ++ ++ bnx2x_stats_comp(bp); ++ ++ if (bp->port.pmf) ++ update = (bnx2x_hw_stats_update(bp) == 0); ++ ++ update |= (bnx2x_storm_stats_update(bp) == 0); ++ ++ if (update) { ++ bnx2x_net_stats_update(bp); ++ ++ if (bp->port.pmf) ++ bnx2x_port_stats_stop(bp); ++ ++ bnx2x_hw_stats_post(bp); ++ bnx2x_stats_comp(bp); ++ } ++} ++ ++static void bnx2x_stats_do_nothing(struct bnx2x *bp) ++{ ++} ++ ++static const struct { ++ void (*action)(struct bnx2x *bp); ++ enum bnx2x_stats_state next_state; ++} bnx2x_stats_stm[STATS_STATE_MAX][STATS_EVENT_MAX] = { ++/* state event */ ++{ ++/* DISABLED PMF */ {bnx2x_stats_pmf_update, STATS_STATE_DISABLED}, ++/* LINK_UP */ {bnx2x_stats_start, STATS_STATE_ENABLED}, ++/* UPDATE */ {bnx2x_stats_do_nothing, STATS_STATE_DISABLED}, ++/* STOP */ {bnx2x_stats_do_nothing, STATS_STATE_DISABLED} ++}, ++{ ++/* ENABLED PMF */ {bnx2x_stats_pmf_start, STATS_STATE_ENABLED}, ++/* LINK_UP */ {bnx2x_stats_restart, STATS_STATE_ENABLED}, ++/* UPDATE */ {bnx2x_stats_update, STATS_STATE_ENABLED}, ++/* STOP */ {bnx2x_stats_stop, STATS_STATE_DISABLED} ++} ++}; ++ ++static void bnx2x_stats_handle(struct bnx2x *bp, enum bnx2x_stats_event event) ++{ ++ enum bnx2x_stats_state state = bp->stats_state; ++ ++ bnx2x_stats_stm[state][event].action(bp); ++ bp->stats_state = bnx2x_stats_stm[state][event].next_state; ++ ++ if ((event != STATS_EVENT_UPDATE) || (bp->msglevel & NETIF_MSG_TIMER)) ++ DP(BNX2X_MSG_STATS, "state %d -> event %d -> state %d\n", ++ state, event, bp->stats_state); ++} ++ ++static void bnx2x_port_stats_base_init(struct bnx2x *bp) ++{ ++ struct dmae_command *dmae; ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ /* sanity */ ++ if (!bp->port.pmf || !bp->port.port_stx) { ++ BNX2X_ERR("BUG!\n"); ++ return; ++ } ++ ++ bp->executer_idx = 0; ++ ++ dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]); ++ dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC | ++ DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats)); ++ dmae->dst_addr_lo = bp->port.port_stx >> 2; ++ dmae->dst_addr_hi = 0; ++ dmae->len = sizeof(struct host_port_stats) >> 2; ++ dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_val = DMAE_COMP_VAL; ++ ++ *stats_comp = 0; ++ bnx2x_hw_stats_post(bp); ++ bnx2x_stats_comp(bp); ++} ++ ++static void bnx2x_func_stats_base_init(struct bnx2x *bp) ++{ ++ int vn, vn_max = IS_E1HMF(bp) ? E1HVN_MAX : E1VN_MAX; ++ int port = BP_PORT(bp); ++ int func; ++ u32 func_stx; ++ ++ /* sanity */ ++ if (!bp->port.pmf || !bp->func_stx) { ++ BNX2X_ERR("BUG!\n"); ++ return; ++ } ++ ++ /* save our func_stx */ ++ func_stx = bp->func_stx; ++ ++ for (vn = VN_0; vn < vn_max; vn++) { ++ func = 2*vn + port; ++ ++ bp->func_stx = SHMEM_RD(bp, func_mb[func].fw_mb_param); ++ bnx2x_func_stats_init(bp); ++ bnx2x_hw_stats_post(bp); ++ bnx2x_stats_comp(bp); ++ } ++ ++ /* restore our func_stx */ ++ bp->func_stx = func_stx; ++} ++ ++static void bnx2x_func_stats_base_update(struct bnx2x *bp) ++{ ++ struct dmae_command *dmae = &bp->stats_dmae; ++ u32 *stats_comp = bnx2x_sp(bp, stats_comp); ++ ++ /* sanity */ ++ if (!bp->func_stx) { ++ BNX2X_ERR("BUG!\n"); ++ return; ++ } ++ ++ bp->executer_idx = 0; ++ memset(dmae, 0, sizeof(struct dmae_command)); ++ ++ dmae->opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI | ++ DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE | ++ DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET | ++#ifdef __BIG_ENDIAN ++ DMAE_CMD_ENDIANITY_B_DW_SWAP | ++#else ++ DMAE_CMD_ENDIANITY_DW_SWAP | ++#endif ++ (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) | ++ (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT)); ++ dmae->src_addr_lo = bp->func_stx >> 2; ++ dmae->src_addr_hi = 0; ++ dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, func_stats_base)); ++ dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, func_stats_base)); ++ dmae->len = sizeof(struct host_func_stats) >> 2; ++ dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp)); ++ dmae->comp_val = DMAE_COMP_VAL; ++ ++ *stats_comp = 0; ++ bnx2x_hw_stats_post(bp); ++ bnx2x_stats_comp(bp); ++} ++ ++static void bnx2x_stats_init(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int func = BP_FUNC(bp); ++ int i; ++ ++ bp->stats_pending = 0; ++ bp->executer_idx = 0; ++ bp->stats_counter = 0; ++ ++ /* port and func stats for management */ ++ if (!BP_NOMCP(bp)) { ++ bp->port.port_stx = SHMEM_RD(bp, port_mb[port].port_stx); ++ bp->func_stx = SHMEM_RD(bp, func_mb[func].fw_mb_param); ++ ++ } else { ++ bp->port.port_stx = 0; ++ bp->func_stx = 0; ++ } ++ DP(BNX2X_MSG_STATS, "port_stx 0x%x func_stx 0x%x\n", ++ bp->port.port_stx, bp->func_stx); ++ ++ /* port stats */ ++ memset(&(bp->port.old_nig_stats), 0, sizeof(struct nig_stats)); ++ bp->port.old_nig_stats.brb_discard = ++ REG_RD(bp, NIG_REG_STAT0_BRB_DISCARD + port*0x38); ++ bp->port.old_nig_stats.brb_truncate = ++ REG_RD(bp, NIG_REG_STAT0_BRB_TRUNCATE + port*0x38); ++ REG_RD_DMAE(bp, NIG_REG_STAT0_EGRESS_MAC_PKT0 + port*0x50, ++ &(bp->port.old_nig_stats.egress_mac_pkt0_lo), 2); ++ REG_RD_DMAE(bp, NIG_REG_STAT0_EGRESS_MAC_PKT1 + port*0x50, ++ &(bp->port.old_nig_stats.egress_mac_pkt1_lo), 2); ++ ++ /* function stats */ ++ for_each_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ memset(&fp->old_tclient, 0, ++ sizeof(struct tstorm_per_client_stats)); ++ memset(&fp->old_uclient, 0, ++ sizeof(struct ustorm_per_client_stats)); ++ memset(&fp->old_xclient, 0, ++ sizeof(struct xstorm_per_client_stats)); ++ memset(&fp->eth_q_stats, 0, sizeof(struct bnx2x_eth_q_stats)); ++ } ++ ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++ memset(&bp->dev->stats, 0, sizeof(struct net_device_stats)); ++#else ++ memset(&bp->net_stats, 0, sizeof(struct net_device_stats)); ++#endif ++ memset(&bp->eth_stats, 0, sizeof(struct bnx2x_eth_stats)); ++ ++ bp->stats_state = STATS_STATE_DISABLED; ++ ++ if (bp->port.pmf) { ++ if (bp->port.port_stx) ++ bnx2x_port_stats_base_init(bp); ++ ++ if (bp->func_stx) ++ bnx2x_func_stats_base_init(bp); ++ ++ } else if (bp->func_stx) ++ bnx2x_func_stats_base_update(bp); ++} ++ ++static void bnx2x_timer(unsigned long data) ++{ ++ struct bnx2x *bp = (struct bnx2x *) data; ++ ++ if (!netif_running(bp->dev)) ++ return; ++ ++ if (atomic_read(&bp->intr_sem) != 0) ++ goto timer_restart; ++ ++ if (poll) { ++ struct bnx2x_fastpath *fp = &bp->fp[0]; ++ int rc; ++ ++ bnx2x_tx_int(fp); ++ rc = bnx2x_rx_int(fp, 1000); ++ } ++ ++ if (!BP_NOMCP(bp)) { ++ int func = BP_FUNC(bp); ++ u32 drv_pulse; ++ u32 mcp_pulse; ++ ++ ++bp->fw_drv_pulse_wr_seq; ++ bp->fw_drv_pulse_wr_seq &= DRV_PULSE_SEQ_MASK; ++ /* TBD - add SYSTEM_TIME */ ++ drv_pulse = bp->fw_drv_pulse_wr_seq; ++ SHMEM_WR(bp, func_mb[func].drv_pulse_mb, drv_pulse); ++ ++ mcp_pulse = (SHMEM_RD(bp, func_mb[func].mcp_pulse_mb) & ++ MCP_PULSE_SEQ_MASK); ++ /* The delta between driver pulse and mcp response ++ * should be 1 (before mcp response) or 0 (after mcp response) ++ */ ++ if ((drv_pulse != mcp_pulse) && ++ (drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) { ++ /* someone lost a heartbeat... */ ++ BNX2X_ERR("drv_pulse (0x%x) != mcp_pulse (0x%x)\n", ++ drv_pulse, mcp_pulse); ++ } ++ } ++ ++ if ((bp->state == BNX2X_STATE_OPEN) || ++ (bp->state == BNX2X_STATE_DISABLED)) ++ bnx2x_stats_handle(bp, STATS_EVENT_UPDATE); ++ ++timer_restart: ++ mod_timer(&bp->timer, jiffies + bp->current_interval); ++} ++ ++/* end of Statistics */ ++ ++/* nic init */ ++ ++/* ++ * nic init service functions ++ */ ++ ++static void bnx2x_zero_sb(struct bnx2x *bp, int sb_id) ++{ ++ int port = BP_PORT(bp); ++ ++ /* "CSTORM" */ ++ bnx2x_init_fill(bp, CSEM_REG_FAST_MEMORY + ++ CSTORM_SB_HOST_STATUS_BLOCK_U_OFFSET(port, sb_id), 0, ++ CSTORM_SB_STATUS_BLOCK_U_SIZE / 4); ++ bnx2x_init_fill(bp, CSEM_REG_FAST_MEMORY + ++ CSTORM_SB_HOST_STATUS_BLOCK_C_OFFSET(port, sb_id), 0, ++ CSTORM_SB_STATUS_BLOCK_C_SIZE / 4); ++} ++ ++static void bnx2x_init_sb(struct bnx2x *bp, struct host_status_block *sb, ++ dma_addr_t mapping, int sb_id) ++{ ++ int port = BP_PORT(bp); ++ int func = BP_FUNC(bp); ++ int index; ++ u64 section; ++ ++ /* USTORM */ ++ section = ((u64)mapping) + offsetof(struct host_status_block, ++ u_status_block); ++ sb->u_status_block.status_block_id = sb_id; ++ ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HOST_SB_ADDR_U_OFFSET(port, sb_id), U64_LO(section)); ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ ((CSTORM_SB_HOST_SB_ADDR_U_OFFSET(port, sb_id)) + 4), ++ U64_HI(section)); ++ REG_WR8(bp, BAR_CSTRORM_INTMEM + FP_USB_FUNC_OFF + ++ CSTORM_SB_HOST_STATUS_BLOCK_U_OFFSET(port, sb_id), func); ++ ++ for (index = 0; index < HC_USTORM_SB_NUM_INDICES; index++) ++ REG_WR16(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HC_DISABLE_U_OFFSET(port, sb_id, index), 1); ++ ++ /* CSTORM */ ++ section = ((u64)mapping) + offsetof(struct host_status_block, ++ c_status_block); ++ sb->c_status_block.status_block_id = sb_id; ++ ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HOST_SB_ADDR_C_OFFSET(port, sb_id), U64_LO(section)); ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ ((CSTORM_SB_HOST_SB_ADDR_C_OFFSET(port, sb_id)) + 4), ++ U64_HI(section)); ++ REG_WR8(bp, BAR_CSTRORM_INTMEM + FP_CSB_FUNC_OFF + ++ CSTORM_SB_HOST_STATUS_BLOCK_C_OFFSET(port, sb_id), func); ++ ++ for (index = 0; index < HC_CSTORM_SB_NUM_INDICES; index++) ++ REG_WR16(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HC_DISABLE_C_OFFSET(port, sb_id, index), 1); ++ ++ bnx2x_ack_sb(bp, sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0); ++} ++ ++static void bnx2x_zero_def_sb(struct bnx2x *bp) ++{ ++ int func = BP_FUNC(bp); ++ ++ bnx2x_init_fill(bp, TSEM_REG_FAST_MEMORY + ++ TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0, ++ sizeof(struct tstorm_def_status_block)/4); ++ bnx2x_init_fill(bp, CSEM_REG_FAST_MEMORY + ++ CSTORM_DEF_SB_HOST_STATUS_BLOCK_U_OFFSET(func), 0, ++ sizeof(struct cstorm_def_status_block_u)/4); ++ bnx2x_init_fill(bp, CSEM_REG_FAST_MEMORY + ++ CSTORM_DEF_SB_HOST_STATUS_BLOCK_C_OFFSET(func), 0, ++ sizeof(struct cstorm_def_status_block_c)/4); ++ bnx2x_init_fill(bp, XSEM_REG_FAST_MEMORY + ++ XSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0, ++ sizeof(struct xstorm_def_status_block)/4); ++} ++ ++static void bnx2x_init_def_sb(struct bnx2x *bp, ++ struct host_def_status_block *def_sb, ++ dma_addr_t mapping, int sb_id) ++{ ++ int port = BP_PORT(bp); ++ int func = BP_FUNC(bp); ++ int index, val, reg_offset; ++ u64 section; ++ ++ /* ATTN */ ++ section = ((u64)mapping) + offsetof(struct host_def_status_block, ++ atten_status_block); ++ def_sb->atten_status_block.status_block_id = sb_id; ++ ++ bp->attn_state = 0; ++ ++ reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 : ++ MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0); ++ ++ for (index = 0; index < MAX_DYNAMIC_ATTN_GRPS; index++) { ++ bp->attn_group[index].sig[0] = REG_RD(bp, ++ reg_offset + 0x10*index); ++ bp->attn_group[index].sig[1] = REG_RD(bp, ++ reg_offset + 0x4 + 0x10*index); ++ bp->attn_group[index].sig[2] = REG_RD(bp, ++ reg_offset + 0x8 + 0x10*index); ++ bp->attn_group[index].sig[3] = REG_RD(bp, ++ reg_offset + 0xc + 0x10*index); ++ } ++ ++ reg_offset = (port ? HC_REG_ATTN_MSG1_ADDR_L : ++ HC_REG_ATTN_MSG0_ADDR_L); ++ ++ REG_WR(bp, reg_offset, U64_LO(section)); ++ REG_WR(bp, reg_offset + 4, U64_HI(section)); ++ ++ reg_offset = (port ? HC_REG_ATTN_NUM_P1 : HC_REG_ATTN_NUM_P0); ++ ++ val = REG_RD(bp, reg_offset); ++ val |= sb_id; ++ REG_WR(bp, reg_offset, val); ++ ++ /* USTORM */ ++ section = ((u64)mapping) + offsetof(struct host_def_status_block, ++ u_def_status_block); ++ def_sb->u_def_status_block.status_block_id = sb_id; ++ ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_DEF_SB_HOST_SB_ADDR_U_OFFSET(func), U64_LO(section)); ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ ((CSTORM_DEF_SB_HOST_SB_ADDR_U_OFFSET(func)) + 4), ++ U64_HI(section)); ++ REG_WR8(bp, BAR_CSTRORM_INTMEM + DEF_USB_FUNC_OFF + ++ CSTORM_DEF_SB_HOST_STATUS_BLOCK_U_OFFSET(func), func); ++ ++ for (index = 0; index < HC_USTORM_DEF_SB_NUM_INDICES; index++) ++ REG_WR16(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_DEF_SB_HC_DISABLE_U_OFFSET(func, index), 1); ++ ++ /* CSTORM */ ++ section = ((u64)mapping) + offsetof(struct host_def_status_block, ++ c_def_status_block); ++ def_sb->c_def_status_block.status_block_id = sb_id; ++ ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_DEF_SB_HOST_SB_ADDR_C_OFFSET(func), U64_LO(section)); ++ REG_WR(bp, BAR_CSTRORM_INTMEM + ++ ((CSTORM_DEF_SB_HOST_SB_ADDR_C_OFFSET(func)) + 4), ++ U64_HI(section)); ++ REG_WR8(bp, BAR_CSTRORM_INTMEM + DEF_CSB_FUNC_OFF + ++ CSTORM_DEF_SB_HOST_STATUS_BLOCK_C_OFFSET(func), func); ++ ++ for (index = 0; index < HC_CSTORM_DEF_SB_NUM_INDICES; index++) ++ REG_WR16(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_DEF_SB_HC_DISABLE_C_OFFSET(func, index), 1); ++ ++ /* TSTORM */ ++ section = ((u64)mapping) + offsetof(struct host_def_status_block, ++ t_def_status_block); ++ def_sb->t_def_status_block.status_block_id = sb_id; ++ ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func), U64_LO(section)); ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ ((TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func)) + 4), ++ U64_HI(section)); ++ REG_WR8(bp, BAR_TSTRORM_INTMEM + DEF_TSB_FUNC_OFF + ++ TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), func); ++ ++ for (index = 0; index < HC_TSTORM_DEF_SB_NUM_INDICES; index++) ++ REG_WR16(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_DEF_SB_HC_DISABLE_OFFSET(func, index), 1); ++ ++ /* XSTORM */ ++ section = ((u64)mapping) + offsetof(struct host_def_status_block, ++ x_def_status_block); ++ def_sb->x_def_status_block.status_block_id = sb_id; ++ ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func), U64_LO(section)); ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ ((XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func)) + 4), ++ U64_HI(section)); ++ REG_WR8(bp, BAR_XSTRORM_INTMEM + DEF_XSB_FUNC_OFF + ++ XSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), func); ++ ++ for (index = 0; index < HC_XSTORM_DEF_SB_NUM_INDICES; index++) ++ REG_WR16(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_DEF_SB_HC_DISABLE_OFFSET(func, index), 1); ++ ++ bp->stats_pending = 0; ++ bp->set_mac_pending = 0; ++ ++ bnx2x_ack_sb(bp, sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0); ++} ++ ++static void bnx2x_update_coalesce(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int i; ++ ++ for_each_queue(bp, i) { ++ int sb_id = bp->fp[i].sb_id; ++ ++ /* HC_INDEX_U_ETH_RX_CQ_CONS */ ++ REG_WR8(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HC_TIMEOUT_U_OFFSET(port, sb_id, ++ U_SB_ETH_RX_CQ_INDEX), ++ bp->rx_ticks/12); ++ REG_WR16(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HC_DISABLE_U_OFFSET(port, sb_id, ++ U_SB_ETH_RX_CQ_INDEX), ++ (bp->rx_ticks/12) ? 0 : 1); ++ ++ /* HC_INDEX_C_ETH_TX_CQ_CONS */ ++ REG_WR8(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HC_TIMEOUT_C_OFFSET(port, sb_id, ++ C_SB_ETH_TX_CQ_INDEX), ++ bp->tx_ticks/12); ++ REG_WR16(bp, BAR_CSTRORM_INTMEM + ++ CSTORM_SB_HC_DISABLE_C_OFFSET(port, sb_id, ++ C_SB_ETH_TX_CQ_INDEX), ++ (bp->tx_ticks/12) ? 0 : 1); ++ } ++} ++ ++static inline void bnx2x_free_tpa_pool(struct bnx2x *bp, ++ struct bnx2x_fastpath *fp, int last) ++{ ++ int i; ++ ++ for (i = 0; i < last; i++) { ++ struct sw_rx_bd *rx_buf = &(fp->tpa_pool[i]); ++ struct sk_buff *skb = rx_buf->skb; ++ ++ if (skb == NULL) { ++ DP(NETIF_MSG_IFDOWN, "tpa bin %d empty on free\n", i); ++ continue; ++ } ++ ++ if (fp->tpa_state[i] == BNX2X_TPA_START) ++ pci_unmap_single(bp->pdev, ++ pci_unmap_addr(rx_buf, mapping), ++ bp->rx_buf_size, PCI_DMA_FROMDEVICE); ++ ++ dev_kfree_skb(skb); ++ rx_buf->skb = NULL; ++ } ++} ++ ++static void bnx2x_init_rx_rings(struct bnx2x *bp) ++{ ++ int func = BP_FUNC(bp); ++ int max_agg_queues = CHIP_IS_E1(bp) ? ETH_MAX_AGGREGATION_QUEUES_E1 : ++ ETH_MAX_AGGREGATION_QUEUES_E1H; ++ u16 ring_prod, cqe_ring_prod; ++ int i, j; ++ ++ bp->rx_buf_size = bp->dev->mtu + ETH_OVREHEAD + BNX2X_RX_ALIGN; ++ DP(NETIF_MSG_IFUP, ++ "mtu %d rx_buf_size %d\n", bp->dev->mtu, bp->rx_buf_size); ++ ++ if (bp->flags & TPA_ENABLE_FLAG) { ++ ++ for_each_rx_queue(bp, j) { ++ struct bnx2x_fastpath *fp = &bp->fp[j]; ++ ++ for (i = 0; i < max_agg_queues; i++) { ++ fp->tpa_pool[i].skb = ++ netdev_alloc_skb(bp->dev, bp->rx_buf_size); ++ if (!fp->tpa_pool[i].skb) { ++ BNX2X_ERR("Failed to allocate TPA " ++ "skb pool for queue[%d] - " ++ "disabling TPA on this " ++ "queue!\n", j); ++ bnx2x_free_tpa_pool(bp, fp, i); ++ fp->disable_tpa = 1; ++ break; ++ } ++ pci_unmap_addr_set((struct sw_rx_bd *) ++ &bp->fp->tpa_pool[i], ++ mapping, 0); ++ fp->tpa_state[i] = BNX2X_TPA_STOP; ++ } ++ } ++ } ++ ++ for_each_rx_queue(bp, j) { ++ struct bnx2x_fastpath *fp = &bp->fp[j]; ++ ++ fp->rx_bd_cons = 0; ++ fp->rx_cons_sb = BNX2X_RX_SB_INDEX; ++ fp->rx_bd_cons_sb = BNX2X_RX_SB_BD_INDEX; ++ ++ /* Mark queue as Rx */ ++ fp->is_rx_queue = 1; ++ ++#if defined(__NO_TPA__) ++ fp->disable_tpa = 1; ++#else /* BNX2X_UPSTREAM */ ++ /* "next page" elements initialization */ ++ /* SGE ring */ ++ for (i = 1; i <= NUM_RX_SGE_PAGES; i++) { ++ struct eth_rx_sge *sge; ++ ++ sge = &fp->rx_sge_ring[RX_SGE_CNT * i - 2]; ++ sge->addr_hi = ++ cpu_to_le32(U64_HI(fp->rx_sge_mapping + ++ BCM_PAGE_SIZE*(i % NUM_RX_SGE_PAGES))); ++ sge->addr_lo = ++ cpu_to_le32(U64_LO(fp->rx_sge_mapping + ++ BCM_PAGE_SIZE*(i % NUM_RX_SGE_PAGES))); ++ } ++ ++ bnx2x_init_sge_ring_bit_mask(fp); ++#endif ++ ++ /* RX BD ring */ ++ for (i = 1; i <= NUM_RX_RINGS; i++) { ++ struct eth_rx_bd *rx_bd; ++ ++ rx_bd = &fp->rx_desc_ring[RX_DESC_CNT * i - 2]; ++ rx_bd->addr_hi = ++ cpu_to_le32(U64_HI(fp->rx_desc_mapping + ++ BCM_PAGE_SIZE*(i % NUM_RX_RINGS))); ++ rx_bd->addr_lo = ++ cpu_to_le32(U64_LO(fp->rx_desc_mapping + ++ BCM_PAGE_SIZE*(i % NUM_RX_RINGS))); ++ } ++ ++ /* CQ ring */ ++ for (i = 1; i <= NUM_RCQ_RINGS; i++) { ++ struct eth_rx_cqe_next_page *nextpg; ++ ++ nextpg = (struct eth_rx_cqe_next_page *) ++ &fp->rx_comp_ring[RCQ_DESC_CNT * i - 1]; ++ nextpg->addr_hi = ++ cpu_to_le32(U64_HI(fp->rx_comp_mapping + ++ BCM_PAGE_SIZE*(i % NUM_RCQ_RINGS))); ++ nextpg->addr_lo = ++ cpu_to_le32(U64_LO(fp->rx_comp_mapping + ++ BCM_PAGE_SIZE*(i % NUM_RCQ_RINGS))); ++ } ++ ++#if !defined(__NO_TPA__) /* BNX2X_UPSTREAM */ ++ /* Allocate SGEs and initialize the ring elements */ ++ for (i = 0, ring_prod = 0; ++ i < MAX_RX_SGE_CNT*NUM_RX_SGE_PAGES; i++) { ++ ++ if (bnx2x_alloc_rx_sge(bp, fp, ring_prod) < 0) { ++ BNX2X_ERR("was only able to allocate " ++ "%d rx sges\n", i); ++ BNX2X_ERR("disabling TPA for queue[%d]\n", j); ++ /* Cleanup already allocated elements */ ++ bnx2x_free_rx_sge_range(bp, fp, ring_prod); ++ bnx2x_free_tpa_pool(bp, fp, max_agg_queues); ++ fp->disable_tpa = 1; ++ ring_prod = 0; ++ break; ++ } ++ ring_prod = NEXT_SGE_IDX(ring_prod); ++ } ++ fp->rx_sge_prod = ring_prod; ++#endif ++ ++ /* Allocate BDs and initialize BD ring */ ++ fp->rx_comp_cons = 0; ++ cqe_ring_prod = ring_prod = 0; ++ for (i = 0; i < bp->rx_ring_size; i++) { ++ if (bnx2x_alloc_rx_skb(bp, fp, ring_prod) < 0) { ++ BNX2X_ERR("was only able to allocate " ++ "%d rx skbs on queue[%d]\n", i, j); ++ fp->eth_q_stats.rx_skb_alloc_failed++; ++ break; ++ } ++ ring_prod = NEXT_RX_IDX(ring_prod); ++ cqe_ring_prod = NEXT_RCQ_IDX(cqe_ring_prod); ++ WARN_ON(ring_prod <= i); ++ } ++ ++ fp->rx_bd_prod = ring_prod; ++ /* must not have more available CQEs than BDs */ ++ fp->rx_comp_prod = min((u16)(NUM_RCQ_RINGS*RCQ_DESC_CNT), ++ cqe_ring_prod); ++ fp->rx_pkt = fp->rx_calls = 0; ++ ++ /* Warning! ++ * this will generate an interrupt (to the TSTORM) ++ * must only be done after chip is initialized ++ */ ++ bnx2x_update_rx_prod(bp, fp, ring_prod, fp->rx_comp_prod, ++ fp->rx_sge_prod); ++ if (j != 0) ++ continue; ++ ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(func), ++ U64_LO(fp->rx_comp_mapping)); ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(func) + 4, ++ U64_HI(fp->rx_comp_mapping)); ++ } ++} ++ ++static void bnx2x_init_tx_ring(struct bnx2x *bp) ++{ ++ int i, j; ++ ++ for_each_tx_queue(bp, j) { ++ struct bnx2x_fastpath *fp = &bp->fp[j]; ++ ++ for (i = 1; i <= NUM_TX_RINGS; i++) { ++ struct eth_tx_next_bd *tx_next_bd = ++ &fp->tx_desc_ring[TX_DESC_CNT * i - 1].next_bd; ++ ++ tx_next_bd->addr_hi = ++ cpu_to_le32(U64_HI(fp->tx_desc_mapping + ++ BCM_PAGE_SIZE*(i % NUM_TX_RINGS))); ++ tx_next_bd->addr_lo = ++ cpu_to_le32(U64_LO(fp->tx_desc_mapping + ++ BCM_PAGE_SIZE*(i % NUM_TX_RINGS))); ++ } ++ ++ fp->tx_db.data.header.header = DOORBELL_HDR_DB_TYPE; ++ fp->tx_db.data.zero_fill1 = 0; ++ fp->tx_db.data.prod = 0; ++ ++ fp->tx_pkt_prod = 0; ++ fp->tx_pkt_cons = 0; ++ fp->tx_bd_prod = 0; ++ fp->tx_bd_cons = 0; ++ fp->tx_cons_sb = BNX2X_TX_SB_INDEX; ++ fp->tx_pkt = 0; ++ } ++ ++ /* clean tx statistics */ ++ for_each_rx_queue(bp, i) ++ bnx2x_fp(bp, i, tx_pkt) = 0; ++} ++ ++static void bnx2x_init_sp_ring(struct bnx2x *bp) ++{ ++ int func = BP_FUNC(bp); ++ ++ spin_lock_init(&bp->spq_lock); ++ ++ bp->spq_left = MAX_SPQ_PENDING; ++ bp->spq_prod_idx = 0; ++ bp->dsb_sp_prod = BNX2X_SP_DSB_INDEX; ++ bp->spq_prod_bd = bp->spq; ++ bp->spq_last_bd = bp->spq_prod_bd + MAX_SP_DESC_CNT; ++ ++ REG_WR(bp, XSEM_REG_FAST_MEMORY + XSTORM_SPQ_PAGE_BASE_OFFSET(func), ++ U64_LO(bp->spq_mapping)); ++ REG_WR(bp, ++ XSEM_REG_FAST_MEMORY + XSTORM_SPQ_PAGE_BASE_OFFSET(func) + 4, ++ U64_HI(bp->spq_mapping)); ++ ++ REG_WR(bp, XSEM_REG_FAST_MEMORY + XSTORM_SPQ_PROD_OFFSET(func), ++ bp->spq_prod_idx); ++} ++ ++static void bnx2x_init_context(struct bnx2x *bp) ++{ ++ int i; ++ ++ for_each_rx_queue(bp, i) { ++ struct eth_context *context = bnx2x_sp(bp, context[i].eth); ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ u8 cl_id = fp->cl_id; ++ ++ context->ustorm_st_context.common.sb_index_numbers = ++ BNX2X_RX_SB_INDEX_NUM; ++ context->ustorm_st_context.common.clientId = cl_id; ++ context->ustorm_st_context.common.status_block_id = fp->sb_id; ++ context->ustorm_st_context.common.flags = ++ (USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT | ++ USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS); ++ context->ustorm_st_context.common.statistics_counter_id = ++ cl_id; ++ context->ustorm_st_context.common.mc_alignment_log_size = ++ BNX2X_RX_ALIGN_SHIFT; ++ context->ustorm_st_context.common.bd_buff_size = ++ bp->rx_buf_size; ++ context->ustorm_st_context.common.bd_page_base_hi = ++ U64_HI(fp->rx_desc_mapping); ++ context->ustorm_st_context.common.bd_page_base_lo = ++ U64_LO(fp->rx_desc_mapping); ++ if (!fp->disable_tpa) { ++ context->ustorm_st_context.common.flags |= ++ USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA; ++ context->ustorm_st_context.common.sge_buff_size = ++ (u16)min((u32)SGE_PAGE_SIZE*PAGES_PER_SGE, ++ (u32)0xffff); ++ context->ustorm_st_context.common.sge_page_base_hi = ++ U64_HI(fp->rx_sge_mapping); ++ context->ustorm_st_context.common.sge_page_base_lo = ++ U64_LO(fp->rx_sge_mapping); ++ ++ context->ustorm_st_context.common.max_sges_for_packet = ++ SGE_PAGE_ALIGN(bp->dev->mtu) >> SGE_PAGE_SHIFT; ++ context->ustorm_st_context.common.max_sges_for_packet = ++ ((context->ustorm_st_context.common. ++ max_sges_for_packet + PAGES_PER_SGE - 1) & ++ (~(PAGES_PER_SGE - 1))) >> PAGES_PER_SGE_SHIFT; ++ } ++ ++ context->ustorm_ag_context.cdu_usage = ++ CDU_RSRVD_VALUE_TYPE_A(HW_CID(bp, i), ++ CDU_REGION_NUMBER_UCM_AG, ++ ETH_CONNECTION_TYPE); ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ switch (bp->multi_mode) { ++ case ETH_RSS_MODE_DISABLED: ++ case ETH_RSS_MODE_REGULAR: ++ break; ++ ++ case ETH_RSS_MODE_VLAN_PRI: ++ case ETH_RSS_MODE_E1HOV_PRI: ++ case ETH_RSS_MODE_IP_DSCP: ++ context->xstorm_st_context.safc_group_en = 1; ++ context->xstorm_st_context.safc_group_num = fp->cos; ++ break; ++ ++ default: ++ break; ++ } ++#endif ++ context->xstorm_ag_context.cdu_reserved = ++ CDU_RSRVD_VALUE_TYPE_A(HW_CID(bp, i), ++ CDU_REGION_NUMBER_XCM_AG, ++ ETH_CONNECTION_TYPE); ++ } ++ ++ for_each_tx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ struct eth_context *context = ++ bnx2x_sp(bp, context[i - bp->num_rx_queues].eth); ++ ++ context->cstorm_st_context.sb_index_number = ++ C_SB_ETH_TX_CQ_INDEX; ++ context->cstorm_st_context.status_block_id = fp->sb_id; ++ ++ context->xstorm_st_context.tx_bd_page_base_hi = ++ U64_HI(fp->tx_desc_mapping); ++ context->xstorm_st_context.tx_bd_page_base_lo = ++ U64_LO(fp->tx_desc_mapping); ++ context->xstorm_st_context.statistics_data = (fp->cl_id | ++ XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE); ++ } ++} ++ ++static void bnx2x_init_ind_table(struct bnx2x *bp) ++{ ++ int func = BP_FUNC(bp); ++#ifdef BNX2X_SAFC ++ int i, cos; ++ u8 val; ++#else /* BNX2X_UPSTREAM */ ++ int i; ++#endif ++ ++ if (bp->multi_mode == ETH_RSS_MODE_DISABLED) ++ return; ++ ++ DP(NETIF_MSG_IFUP, ++ "Initializing indirection table multi_mode %d\n", bp->multi_mode); ++#ifdef BNX2X_SAFC ++ for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++) { ++ cos = bp->pri_map[i / BNX2X_MAX_ENTRIES_PER_PRI]; ++ val = bp->fp->cl_id + bp->cos_map[cos] + ++ (i % bp->qs_per_cos[cos]); ++ REG_WR8(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_INDIRECTION_TABLE_OFFSET(func) + i, val); ++ } ++#else /* BNX2X_UPSTREAM */ ++ for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++) ++ REG_WR8(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_INDIRECTION_TABLE_OFFSET(func) + i, ++ bp->fp->cl_id + (i % bp->num_rx_queues)); ++#endif ++} ++ ++static void bnx2x_set_client_config(struct bnx2x *bp) ++{ ++ struct tstorm_eth_client_config tstorm_client = {0}; ++ int port = BP_PORT(bp); ++ int i; ++ ++ tstorm_client.mtu = bp->dev->mtu; ++ tstorm_client.config_flags = ++ (TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE | ++ TSTORM_ETH_CLIENT_CONFIG_E1HOV_REM_ENABLE); ++#ifdef BCM_VLAN ++ if (bp->rx_mode && bp->vlgrp && (bp->flags & HW_VLAN_RX_FLAG)) { ++ tstorm_client.config_flags |= ++ TSTORM_ETH_CLIENT_CONFIG_VLAN_REM_ENABLE; ++ DP(NETIF_MSG_IFUP, "vlan removal enabled\n"); ++ } ++#endif ++ ++ for_each_queue(bp, i) { ++ tstorm_client.statistics_counter_id = bp->fp[i].cl_id; ++ ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_CLIENT_CONFIG_OFFSET(port, bp->fp[i].cl_id), ++ ((u32 *)&tstorm_client)[0]); ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_CLIENT_CONFIG_OFFSET(port, bp->fp[i].cl_id) + 4, ++ ((u32 *)&tstorm_client)[1]); ++ } ++ ++ DP(BNX2X_MSG_OFF, "tstorm_client: 0x%08x 0x%08x\n", ++ ((u32 *)&tstorm_client)[0], ((u32 *)&tstorm_client)[1]); ++} ++ ++static void bnx2x_set_storm_rx_mode(struct bnx2x *bp) ++{ ++ struct tstorm_eth_mac_filter_config tstorm_mac_filter = {0}; ++ int mode = bp->rx_mode; ++ int mask = (1 << BP_L_ID(bp)); ++ int func = BP_FUNC(bp); ++ int i; ++ ++ DP(NETIF_MSG_IFUP, "rx mode %d mask 0x%x\n", mode, mask); ++ ++ switch (mode) { ++ case BNX2X_RX_MODE_NONE: /* no Rx */ ++ tstorm_mac_filter.ucast_drop_all = mask; ++ tstorm_mac_filter.mcast_drop_all = mask; ++ tstorm_mac_filter.bcast_drop_all = mask; ++ break; ++ ++ case BNX2X_RX_MODE_NORMAL: ++ tstorm_mac_filter.bcast_accept_all = mask; ++ break; ++ ++ case BNX2X_RX_MODE_ALLMULTI: ++ tstorm_mac_filter.mcast_accept_all = mask; ++ tstorm_mac_filter.bcast_accept_all = mask; ++ break; ++ ++ case BNX2X_RX_MODE_PROMISC: ++ tstorm_mac_filter.ucast_accept_all = mask; ++ tstorm_mac_filter.mcast_accept_all = mask; ++ tstorm_mac_filter.bcast_accept_all = mask; ++ break; ++ ++ default: ++ BNX2X_ERR("BAD rx mode (%d)\n", mode); ++ break; ++ } ++ ++ for (i = 0; i < sizeof(struct tstorm_eth_mac_filter_config)/4; i++) { ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_MAC_FILTER_CONFIG_OFFSET(func) + i * 4, ++ ((u32 *)&tstorm_mac_filter)[i]); ++ ++/* DP(NETIF_MSG_IFUP, "tstorm_mac_filter[%d]: 0x%08x\n", i, ++ ((u32 *)&tstorm_mac_filter)[i]); */ ++ } ++ ++ if (mode != BNX2X_RX_MODE_NONE) ++ bnx2x_set_client_config(bp); ++} ++ ++static void bnx2x_init_internal_common(struct bnx2x *bp) ++{ ++ int i; ++ ++ /* Zero this manually as its initialization is ++ currently missing in the initTool */ ++ for (i = 0; i < (USTORM_AGG_DATA_SIZE >> 2); i++) ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_AGG_DATA_OFFSET + i * 4, 0); ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ if (bp->flags & SAFC_TX_FLAG) { ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_COMMON_SAFC_WORKAROUND_ENABLE_OFFSET, 1); ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_COMMON_SAFC_WORKAROUND_TIMEOUT_10USEC_OFFSET, 10); ++ REG_WR(bp, MISC_REG_SW_TIMER_VAL + 0xc, 10); ++ REG_WR(bp, MISC_REG_SW_TIMER_RELOAD_VAL_4, 10); ++ } ++#endif ++} ++ ++static void bnx2x_init_internal_port(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ ++ REG_WR(bp, ++ BAR_CSTRORM_INTMEM + CSTORM_HC_BTR_U_OFFSET(port), BNX2X_BTR); ++ REG_WR(bp, ++ BAR_CSTRORM_INTMEM + CSTORM_HC_BTR_C_OFFSET(port), BNX2X_BTR); ++ REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_HC_BTR_OFFSET(port), BNX2X_BTR); ++ REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_HC_BTR_OFFSET(port), BNX2X_BTR); ++} ++ ++static void bnx2x_init_internal_func(struct bnx2x *bp) ++{ ++ struct tstorm_eth_function_common_config tstorm_config = {0}; ++ struct stats_indication_flags stats_flags = {0}; ++ int port = BP_PORT(bp); ++ int func = BP_FUNC(bp); ++ int i, j; ++ u32 offset; ++ u16 max_agg_size; ++ ++ if (is_multi(bp)) { ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) ++ /* enable queue 0 as the default queue */ ++ tstorm_config.config_flags = ++ TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE; ++#else /* BNX2X_UPSTREAM */ ++ tstorm_config.config_flags = MULTI_FLAGS(bp); ++ tstorm_config.rss_result_mask = MULTI_MASK; ++#endif ++ } ++ ++ /* Enable TPA if needed */ ++ if (bp->flags & TPA_ENABLE_FLAG) ++ tstorm_config.config_flags |= ++ TSTORM_ETH_FUNCTION_COMMON_CONFIG_ENABLE_TPA; ++ ++ if (IS_E1HMF(bp)) ++ tstorm_config.config_flags |= ++ TSTORM_ETH_FUNCTION_COMMON_CONFIG_E1HOV_IN_CAM; ++ ++ tstorm_config.leading_client_id = BP_L_ID(bp); ++ ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_FUNCTION_COMMON_CONFIG_OFFSET(func), ++ (*(u32 *)&tstorm_config)); ++ ++ bp->rx_mode = BNX2X_RX_MODE_NONE; /* no rx until link is up */ ++ bnx2x_set_storm_rx_mode(bp); ++ ++ for_each_queue(bp, i) { ++ u8 cl_id = bp->fp[i].cl_id; ++ ++ /* reset xstorm per client statistics */ ++ offset = BAR_XSTRORM_INTMEM + ++ XSTORM_PER_COUNTER_ID_STATS_OFFSET(port, cl_id); ++ for (j = 0; ++ j < sizeof(struct xstorm_per_client_stats) / 4; j++) ++ REG_WR(bp, offset + j*4, 0); ++ ++ /* reset tstorm per client statistics */ ++ offset = BAR_TSTRORM_INTMEM + ++ TSTORM_PER_COUNTER_ID_STATS_OFFSET(port, cl_id); ++ for (j = 0; ++ j < sizeof(struct tstorm_per_client_stats) / 4; j++) ++ REG_WR(bp, offset + j*4, 0); ++ ++ /* reset ustorm per client statistics */ ++ offset = BAR_USTRORM_INTMEM + ++ USTORM_PER_COUNTER_ID_STATS_OFFSET(port, cl_id); ++ for (j = 0; ++ j < sizeof(struct ustorm_per_client_stats) / 4; j++) ++ REG_WR(bp, offset + j*4, 0); ++ } ++ ++ /* Init statistics related context */ ++ stats_flags.collect_eth = 1; ++ ++ REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_STATS_FLAGS_OFFSET(func), ++ ((u32 *)&stats_flags)[0]); ++ REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_STATS_FLAGS_OFFSET(func) + 4, ++ ((u32 *)&stats_flags)[1]); ++ ++ REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_STATS_FLAGS_OFFSET(func), ++ ((u32 *)&stats_flags)[0]); ++ REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_STATS_FLAGS_OFFSET(func) + 4, ++ ((u32 *)&stats_flags)[1]); ++ ++ REG_WR(bp, BAR_USTRORM_INTMEM + USTORM_STATS_FLAGS_OFFSET(func), ++ ((u32 *)&stats_flags)[0]); ++ REG_WR(bp, BAR_USTRORM_INTMEM + USTORM_STATS_FLAGS_OFFSET(func) + 4, ++ ((u32 *)&stats_flags)[1]); ++ ++ REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_STATS_FLAGS_OFFSET(func), ++ ((u32 *)&stats_flags)[0]); ++ REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_STATS_FLAGS_OFFSET(func) + 4, ++ ((u32 *)&stats_flags)[1]); ++ ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func), ++ U64_LO(bnx2x_sp_mapping(bp, fw_stats))); ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func) + 4, ++ U64_HI(bnx2x_sp_mapping(bp, fw_stats))); ++ ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func), ++ U64_LO(bnx2x_sp_mapping(bp, fw_stats))); ++ REG_WR(bp, BAR_TSTRORM_INTMEM + ++ TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func) + 4, ++ U64_HI(bnx2x_sp_mapping(bp, fw_stats))); ++ ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_ETH_STATS_QUERY_ADDR_OFFSET(func), ++ U64_LO(bnx2x_sp_mapping(bp, fw_stats))); ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_ETH_STATS_QUERY_ADDR_OFFSET(func) + 4, ++ U64_HI(bnx2x_sp_mapping(bp, fw_stats))); ++ ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR8(bp, BAR_XSTRORM_INTMEM + XSTORM_FUNCTION_MODE_OFFSET, ++ IS_E1HMF(bp)); ++ REG_WR8(bp, BAR_TSTRORM_INTMEM + TSTORM_FUNCTION_MODE_OFFSET, ++ IS_E1HMF(bp)); ++ REG_WR8(bp, BAR_CSTRORM_INTMEM + CSTORM_FUNCTION_MODE_OFFSET, ++ IS_E1HMF(bp)); ++ REG_WR8(bp, BAR_USTRORM_INTMEM + USTORM_FUNCTION_MODE_OFFSET, ++ IS_E1HMF(bp)); ++ ++ REG_WR16(bp, BAR_XSTRORM_INTMEM + XSTORM_E1HOV_OFFSET(func), ++ bp->e1hov); ++ } ++ ++ /* Init CQ ring mapping and aggregation size, the FW limit is 8 frags */ ++ max_agg_size = ++ min((u32)(min((u32)8, (u32)MAX_SKB_FRAGS) * ++ SGE_PAGE_SIZE * PAGES_PER_SGE), ++ (u32)0xffff); ++ for_each_rx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_CQE_PAGE_BASE_OFFSET(port, fp->cl_id), ++ U64_LO(fp->rx_comp_mapping)); ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_CQE_PAGE_BASE_OFFSET(port, fp->cl_id) + 4, ++ U64_HI(fp->rx_comp_mapping)); ++ ++ /* Next page */ ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_CQE_PAGE_NEXT_OFFSET(port, fp->cl_id), ++ U64_LO(fp->rx_comp_mapping + BCM_PAGE_SIZE)); ++ REG_WR(bp, BAR_USTRORM_INTMEM + ++ USTORM_CQE_PAGE_NEXT_OFFSET(port, fp->cl_id) + 4, ++ U64_HI(fp->rx_comp_mapping + BCM_PAGE_SIZE)); ++ ++ REG_WR16(bp, BAR_USTRORM_INTMEM + ++ USTORM_MAX_AGG_SIZE_OFFSET(port, fp->cl_id), ++ max_agg_size); ++ } ++ ++ /* dropless flow control */ ++ if (CHIP_IS_E1H(bp)) { ++ struct ustorm_eth_rx_pause_data_e1h rx_pause = {0}; ++ ++ rx_pause.bd_thr_low = 250; ++ rx_pause.cqe_thr_low = 250; ++ rx_pause.cos = 1; ++ rx_pause.sge_thr_low = 0; ++ rx_pause.bd_thr_high = 350; ++ rx_pause.cqe_thr_high = 350; ++ rx_pause.sge_thr_high = 0; ++ ++ for_each_rx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ if (!fp->disable_tpa) { ++ rx_pause.sge_thr_low = 150; ++ rx_pause.sge_thr_high = 250; ++ } ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ if (bp->flags & SAFC_TX_FLAG) { ++ rx_pause.cos = 0; ++ for (j = 0; j < BNX2X_MAX_PRIORITY; j++) ++ if (bp->pri_map[j] == fp->cos) ++ rx_pause.cos |= (1 << j); ++ } ++#endif ++ ++ offset = BAR_USTRORM_INTMEM + ++ USTORM_ETH_RING_PAUSE_DATA_OFFSET(port, ++ fp->cl_id); ++ for (j = 0; ++ j < sizeof(struct ustorm_eth_rx_pause_data_e1h)/4; ++ j++) ++ REG_WR(bp, offset + j*4, ++ ((u32 *)&rx_pause)[j]); ++ } ++ } ++ ++ memset(&(bp->cmng), 0, sizeof(struct cmng_struct_per_port)); ++ ++ /* Init rate shaping and fairness contexts */ ++ if (IS_E1HMF(bp)) { ++ int vn; ++ ++ /* During init there is no active link ++ Until link is up, set link rate to 10Gbps */ ++ bp->link_vars.line_speed = SPEED_10000; ++ bnx2x_init_port_minmax(bp); ++ ++ bnx2x_calc_vn_weight_sum(bp); ++ ++ for (vn = VN_0; vn < E1HVN_MAX; vn++) ++ bnx2x_init_vn_minmax(bp, 2*vn + port); ++ ++ /* Enable rate shaping and fairness */ ++ bp->cmng.flags.cmng_enables = ++ CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN; ++ if (bp->vn_weight_sum) ++ bp->cmng.flags.cmng_enables |= ++ CMNG_FLAGS_PER_PORT_FAIRNESS_VN; ++ else ++ DP(NETIF_MSG_IFUP, "All MIN values are zeroes" ++ " fairness will be disabled\n"); ++ } else { ++#ifdef BNX2X_SAFC ++ if (bp->cos_weight_sum) { ++ /* During init there is no active link ++ Until link is up, set link rate to 10Gbps */ ++ bp->link_vars.line_speed = SPEED_10000; ++ bnx2x_init_port_minmax(bp); ++ ++ bnx2x_init_cos_credit(bp); ++ ++ /* Enable fairness */ ++ bp->cmng.flags.cmng_enables = ++ CMNG_FLAGS_PER_PORT_FAIRNESS_COS; ++ } else ++ DP(NETIF_MSG_IFUP, "All MIN values are zeroes" ++ " fairness will be disabled\n"); ++#else /* BNX2X_UPSTREAM */ ++ /* rate shaping and fairness are disabled */ ++ DP(NETIF_MSG_IFUP, ++ "single function mode minmax will be disabled\n"); ++#endif ++ } ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ switch (bp->multi_mode) { ++ case ETH_RSS_MODE_DISABLED: ++ case ETH_RSS_MODE_REGULAR: ++ break; ++ ++ case ETH_RSS_MODE_VLAN_PRI: ++ case ETH_RSS_MODE_E1HOV_PRI: ++ case ETH_RSS_MODE_IP_DSCP: ++ bp->cmng.safc_vars.safc_timeout_usec = 200; ++ for (i = 0; i < BNX2X_MAX_PRIORITY; i++) ++ bp->cmng.safc_vars.cos_to_pause_mask[i] = ++ (1 << bp->pri_map[i]); ++ break; ++ ++ default: ++ break; ++ } ++#endif ++ ++ /* Store it to internal memory */ ++ if (bp->port.pmf) ++ for (i = 0; i < sizeof(struct cmng_struct_per_port) / 4; i++) ++ REG_WR(bp, BAR_XSTRORM_INTMEM + ++ XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) + i * 4, ++ ((u32 *)(&bp->cmng))[i]); ++} ++ ++static void bnx2x_init_internal(struct bnx2x *bp, u32 load_code) ++{ ++ switch (load_code) { ++ case FW_MSG_CODE_DRV_LOAD_COMMON: ++ bnx2x_init_internal_common(bp); ++ /* no break */ ++ ++ case FW_MSG_CODE_DRV_LOAD_PORT: ++ bnx2x_init_internal_port(bp); ++ /* no break */ ++ ++ case FW_MSG_CODE_DRV_LOAD_FUNCTION: ++ bnx2x_init_internal_func(bp); ++ break; ++ ++ default: ++ BNX2X_ERR("Unknown load_code (0x%x) from MCP\n", load_code); ++ break; ++ } ++} ++ ++static void bnx2x_nic_init(struct bnx2x *bp, u32 load_code) ++{ ++ int i; ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ int cos, num_queues; ++#endif ++ ++ for_each_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ fp->bp = bp; ++ fp->state = BNX2X_FP_STATE_CLOSED; ++ fp->index = i; ++ fp->cl_id = BP_L_ID(bp) + i; ++#ifdef BCM_CNIC ++ fp->sb_id = fp->cl_id + 1; ++#else/* BNX2X_UPSTREAM */ ++ fp->sb_id = fp->cl_id; ++#endif ++ /* Suitable Rx and Tx SBs are served by the same client */ ++ if (i >= bp->num_rx_queues) ++ fp->cl_id -= bp->num_rx_queues; ++#ifdef BNX2X_SAFC ++ num_queues = 0; ++ for (cos = 0; cos < BNX2X_MAX_COS; cos++) { ++ if (i < (num_queues + bp->qs_per_cos[cos])) { ++ fp->cos = cos; ++ break; ++ } else ++ num_queues += bp->qs_per_cos[cos]; ++ } ++ DP(NETIF_MSG_IFUP, "queue[%d]: bnx2x_init_sb(%p,%p) " ++ "cl_id %d sb %d cos %d\n", ++ i, bp, fp->status_blk, fp->cl_id, fp->sb_id, fp->cos); ++#else /* BNX2X_UPSTREAM */ ++ DP(NETIF_MSG_IFUP, ++ "queue[%d]: bnx2x_init_sb(%p,%p) cl_id %d sb %d\n", ++ i, bp, fp->status_blk, fp->cl_id, fp->sb_id); ++#endif ++ bnx2x_init_sb(bp, fp->status_blk, fp->status_blk_mapping, ++ fp->sb_id); ++ bnx2x_update_fpsb_idx(fp); ++ } ++ ++ /* ensure status block indices were read */ ++ rmb(); ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ for (cos = 0; cos < BNX2X_MAX_COS; cos++) { ++ bp->cos_map[cos] = 0; ++ for_each_queue(bp, i) { ++ /* take the 1st queue that belongs to this cos */ ++ if (bp->fp[i].cos == cos) { ++ bp->cos_map[cos] = i; ++ break; ++ } ++ } ++ } ++#endif ++ ++ bnx2x_init_def_sb(bp, bp->def_status_blk, bp->def_status_blk_mapping, ++ DEF_SB_ID); ++ bnx2x_update_dsb_idx(bp); ++ bnx2x_update_coalesce(bp); ++ bnx2x_init_rx_rings(bp); ++ bnx2x_init_tx_ring(bp); ++ bnx2x_init_sp_ring(bp); ++ bnx2x_init_context(bp); ++ bnx2x_init_internal(bp, load_code); ++ bnx2x_init_ind_table(bp); ++ bnx2x_stats_init(bp); ++ ++ /* At this point, we are ready for interrupts */ ++ atomic_set(&bp->intr_sem, 0); ++ ++ /* flush all before enabling interrupts */ ++ mb(); ++ mmiowb(); ++ ++ bnx2x_int_enable(bp); ++ ++ /* Check for SPIO5 */ ++ bnx2x_attn_int_deasserted0(bp, ++ REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_1_FUNC_0 + BP_PORT(bp)*4) & ++ AEU_INPUTS_ATTN_BITS_SPIO5); ++} ++ ++/* end of nic init */ ++ ++/* ++ * gzip service functions ++ */ ++ ++static int bnx2x_gunzip_init(struct bnx2x *bp) ++{ ++ bp->gunzip_buf = pci_alloc_consistent(bp->pdev, FW_BUF_SIZE, ++ &bp->gunzip_mapping); ++ if (bp->gunzip_buf == NULL) ++ goto gunzip_nomem1; ++ ++ bp->strm = kmalloc(sizeof(*bp->strm), GFP_KERNEL); ++ if (bp->strm == NULL) ++ goto gunzip_nomem2; ++ ++ bp->strm->workspace = kmalloc(zlib_inflate_workspacesize(), ++ GFP_KERNEL); ++ if (bp->strm->workspace == NULL) ++ goto gunzip_nomem3; ++ ++ return 0; ++ ++gunzip_nomem3: ++ kfree(bp->strm); ++ bp->strm = NULL; ++ ++gunzip_nomem2: ++ pci_free_consistent(bp->pdev, FW_BUF_SIZE, bp->gunzip_buf, ++ bp->gunzip_mapping); ++ bp->gunzip_buf = NULL; ++ ++gunzip_nomem1: ++ printk(KERN_ERR PFX "%s: Cannot allocate firmware buffer for" ++ " un-compression\n", bp->dev->name); ++ return -ENOMEM; ++} ++ ++static void bnx2x_gunzip_end(struct bnx2x *bp) ++{ ++ kfree(bp->strm->workspace); ++ ++ kfree(bp->strm); ++ bp->strm = NULL; ++ ++ if (bp->gunzip_buf) { ++ pci_free_consistent(bp->pdev, FW_BUF_SIZE, bp->gunzip_buf, ++ bp->gunzip_mapping); ++ bp->gunzip_buf = NULL; ++ } ++} ++ ++static int bnx2x_gunzip(struct bnx2x *bp, const u8 *zbuf, int len) ++{ ++ int n, rc; ++ ++ /* check gzip header */ ++ if ((zbuf[0] != 0x1f) || (zbuf[1] != 0x8b) || (zbuf[2] != Z_DEFLATED)) { ++ BNX2X_ERR("Bad gzip header\n"); ++ return -EINVAL; ++ } ++ ++ n = 10; ++ ++#define FNAME 0x8 ++ ++ if (zbuf[3] & FNAME) ++ while ((zbuf[n++] != 0) && (n < len)); ++ ++ bp->strm->next_in = (typeof(bp->strm->next_in))zbuf + n; ++ bp->strm->avail_in = len - n; ++ bp->strm->next_out = bp->gunzip_buf; ++ bp->strm->avail_out = FW_BUF_SIZE; ++ ++ rc = zlib_inflateInit2(bp->strm, -MAX_WBITS); ++ if (rc != Z_OK) ++ return rc; ++ ++ rc = zlib_inflate(bp->strm, Z_FINISH); ++ if ((rc != Z_OK) && (rc != Z_STREAM_END)) ++ printk(KERN_ERR PFX "%s: Firmware decompression error: %s\n", ++ bp->dev->name, bp->strm->msg); ++ ++ bp->gunzip_outlen = (FW_BUF_SIZE - bp->strm->avail_out); ++ if (bp->gunzip_outlen & 0x3) ++ printk(KERN_ERR PFX "%s: Firmware decompression error:" ++ " gunzip_outlen (%d) not aligned\n", ++ bp->dev->name, bp->gunzip_outlen); ++ bp->gunzip_outlen >>= 2; ++ ++ zlib_inflateEnd(bp->strm); ++ ++ if (rc == Z_STREAM_END) ++ return 0; ++ ++ return rc; ++} ++ ++/* nic load/unload */ ++ ++/* ++ * General service functions ++ */ ++ ++/* send a NIG loopback debug packet */ ++static void bnx2x_lb_pckt(struct bnx2x *bp) ++{ ++ u32 wb_write[3]; ++ ++ /* Ethernet source and destination addresses */ ++ wb_write[0] = 0x55555555; ++ wb_write[1] = 0x55555555; ++ wb_write[2] = 0x20; /* SOP */ ++ REG_WR_DMAE(bp, NIG_REG_DEBUG_PACKET_LB, wb_write, 3); ++ ++ /* NON-IP protocol */ ++ wb_write[0] = 0x09000000; ++ wb_write[1] = 0x55555555; ++ wb_write[2] = 0x10; /* EOP, eop_bvalid = 0 */ ++ REG_WR_DMAE(bp, NIG_REG_DEBUG_PACKET_LB, wb_write, 3); ++} ++ ++/* some of the internal memories ++ * are not directly readable from the driver ++ * to test them we send debug packets ++ */ ++static int bnx2x_int_mem_test(struct bnx2x *bp) ++{ ++ int factor; ++ int count, i; ++ u32 val = 0; ++ ++ if (CHIP_REV_IS_FPGA(bp)) ++ factor = 120; ++ else if (CHIP_REV_IS_EMUL(bp)) ++ factor = 200; ++ else ++ factor = 1; ++ ++ DP(NETIF_MSG_HW, "start part1\n"); ++ ++ /* Disable inputs of parser neighbor blocks */ ++ REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x0); ++ REG_WR(bp, TCM_REG_PRS_IFEN, 0x0); ++ REG_WR(bp, CFC_REG_DEBUG0, 0x1); ++ REG_WR(bp, NIG_REG_PRS_REQ_IN_EN, 0x0); ++ ++ /* Write 0 to parser credits for CFC search request */ ++ REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x0); ++ ++ /* send Ethernet packet */ ++ bnx2x_lb_pckt(bp); ++ ++ /* TODO do i reset NIG statistic? */ ++ /* Wait until NIG register shows 1 packet of size 0x10 */ ++ count = 1000 * factor; ++ while (count) { ++ ++ bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2); ++ val = *bnx2x_sp(bp, wb_data[0]); ++ if (val == 0x10) ++ break; ++ ++ msleep(10); ++ count--; ++ } ++ if (val != 0x10) { ++ BNX2X_ERR("NIG timeout val = 0x%x\n", val); ++ return -1; ++ } ++ ++ /* Wait until PRS register shows 1 packet */ ++ count = 1000 * factor; ++ while (count) { ++ val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS); ++ if (val == 1) ++ break; ++ ++ msleep(10); ++ count--; ++ } ++ if (val != 0x1) { ++ BNX2X_ERR("PRS timeout val = 0x%x\n", val); ++ return -2; ++ } ++ ++ /* Reset and init BRB, PRS */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, 0x03); ++ msleep(50); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x03); ++ msleep(50); ++ bnx2x_init_block(bp, BRB1_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, PRS_BLOCK, COMMON_STAGE); ++ ++ DP(NETIF_MSG_HW, "part2\n"); ++ ++ /* Disable inputs of parser neighbor blocks */ ++ REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x0); ++ REG_WR(bp, TCM_REG_PRS_IFEN, 0x0); ++ REG_WR(bp, CFC_REG_DEBUG0, 0x1); ++ REG_WR(bp, NIG_REG_PRS_REQ_IN_EN, 0x0); ++ ++ /* Write 0 to parser credits for CFC search request */ ++ REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x0); ++ ++ /* send 10 Ethernet packets */ ++ for (i = 0; i < 10; i++) ++ bnx2x_lb_pckt(bp); ++ ++ /* Wait until NIG register shows 10 + 1 ++ packets of size 11*0x10 = 0xb0 */ ++ count = 1000 * factor; ++ while (count) { ++ ++ bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2); ++ val = *bnx2x_sp(bp, wb_data[0]); ++ if (val == 0xb0) ++ break; ++ ++ msleep(10); ++ count--; ++ } ++ if (val != 0xb0) { ++ BNX2X_ERR("NIG timeout val = 0x%x\n", val); ++ return -3; ++ } ++ ++ /* Wait until PRS register shows 2 packets */ ++ val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS); ++ if (val != 2) ++ BNX2X_ERR("PRS timeout val = 0x%x\n", val); ++ ++ /* Write 1 to parser credits for CFC search request */ ++ REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x1); ++ ++ /* Wait until PRS register shows 3 packets */ ++ msleep(10 * factor); ++ /* Wait until NIG register shows 1 packet of size 0x10 */ ++ val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS); ++ if (val != 3) ++ BNX2X_ERR("PRS timeout val = 0x%x\n", val); ++ ++ /* clear NIG EOP FIFO */ ++ for (i = 0; i < 11; i++) ++ REG_RD(bp, NIG_REG_INGRESS_EOP_LB_FIFO); ++ val = REG_RD(bp, NIG_REG_INGRESS_EOP_LB_EMPTY); ++ if (val != 1) { ++ BNX2X_ERR("clear of NIG failed\n"); ++ return -4; ++ } ++ ++ /* Reset and init BRB, PRS, NIG */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, 0x03); ++ msleep(50); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x03); ++ msleep(50); ++ bnx2x_init_block(bp, BRB1_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, PRS_BLOCK, COMMON_STAGE); ++#ifndef BCM_CNIC /* BNX2X_UPSTREAM */ ++ /* set NIC mode */ ++ REG_WR(bp, PRS_REG_NIC_MODE, 1); ++#endif ++ ++ /* Enable inputs of parser neighbor blocks */ ++ REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x7fffffff); ++ REG_WR(bp, TCM_REG_PRS_IFEN, 0x1); ++ REG_WR(bp, CFC_REG_DEBUG0, 0x0); ++ REG_WR(bp, NIG_REG_PRS_REQ_IN_EN, 0x1); ++ ++ DP(NETIF_MSG_HW, "done\n"); ++ ++ return 0; /* OK */ ++} ++ ++static void enable_blocks_attention(struct bnx2x *bp) ++{ ++ REG_WR(bp, PXP_REG_PXP_INT_MASK_0, 0); ++ REG_WR(bp, PXP_REG_PXP_INT_MASK_1, 0); ++ REG_WR(bp, DORQ_REG_DORQ_INT_MASK, 0); ++ REG_WR(bp, CFC_REG_CFC_INT_MASK, 0); ++ REG_WR(bp, QM_REG_QM_INT_MASK, 0); ++ REG_WR(bp, TM_REG_TM_INT_MASK, 0); ++ REG_WR(bp, XSDM_REG_XSDM_INT_MASK_0, 0); ++ REG_WR(bp, XSDM_REG_XSDM_INT_MASK_1, 0); ++ REG_WR(bp, XCM_REG_XCM_INT_MASK, 0); ++/* REG_WR(bp, XSEM_REG_XSEM_INT_MASK_0, 0); */ ++/* REG_WR(bp, XSEM_REG_XSEM_INT_MASK_1, 0); */ ++ REG_WR(bp, USDM_REG_USDM_INT_MASK_0, 0); ++ REG_WR(bp, USDM_REG_USDM_INT_MASK_1, 0); ++ REG_WR(bp, UCM_REG_UCM_INT_MASK, 0); ++/* REG_WR(bp, USEM_REG_USEM_INT_MASK_0, 0); */ ++/* REG_WR(bp, USEM_REG_USEM_INT_MASK_1, 0); */ ++ REG_WR(bp, GRCBASE_UPB + PB_REG_PB_INT_MASK, 0); ++ REG_WR(bp, CSDM_REG_CSDM_INT_MASK_0, 0); ++ REG_WR(bp, CSDM_REG_CSDM_INT_MASK_1, 0); ++ REG_WR(bp, CCM_REG_CCM_INT_MASK, 0); ++/* REG_WR(bp, CSEM_REG_CSEM_INT_MASK_0, 0); */ ++/* REG_WR(bp, CSEM_REG_CSEM_INT_MASK_1, 0); */ ++ if (CHIP_REV_IS_FPGA(bp)) ++ REG_WR(bp, PXP2_REG_PXP2_INT_MASK_0, 0x580000); ++ else ++ REG_WR(bp, PXP2_REG_PXP2_INT_MASK_0, 0x480000); ++ REG_WR(bp, TSDM_REG_TSDM_INT_MASK_0, 0); ++ REG_WR(bp, TSDM_REG_TSDM_INT_MASK_1, 0); ++ REG_WR(bp, TCM_REG_TCM_INT_MASK, 0); ++/* REG_WR(bp, TSEM_REG_TSEM_INT_MASK_0, 0); */ ++/* REG_WR(bp, TSEM_REG_TSEM_INT_MASK_1, 0); */ ++ REG_WR(bp, CDU_REG_CDU_INT_MASK, 0); ++ REG_WR(bp, DMAE_REG_DMAE_INT_MASK, 0); ++/* REG_WR(bp, MISC_REG_MISC_INT_MASK, 0); */ ++ REG_WR(bp, PBF_REG_PBF_INT_MASK, 0X18); /* bit 3,4 masked */ ++} ++ ++#ifdef BNX2X_EXTRA_DEBUG /* ! BNX2X_UPSTREAM */ ++static void enable_blocks_parity(struct bnx2x *bp) ++{ ++ REG_WR(bp, PXP_REG_PXP_PRTY_MASK, 0x80000); /* bit 19 masked */ ++ REG_WR(bp, PXP2_REG_PXP2_PRTY_MASK_0, 0xfff40020);/* bit 5,18,20-31 */ ++ REG_WR(bp, PXP2_REG_PXP2_PRTY_MASK_1, 0x20); /* bit 5 */ ++ REG_WR(bp, QM_REG_QM_PRTY_MASK, 0x0); ++ REG_WR(bp, DORQ_REG_DORQ_PRTY_MASK, 0x0); ++ REG_WR(bp, GRCBASE_UPB + PB_REG_PB_PRTY_MASK, 0x0); ++ REG_WR(bp, GRCBASE_XPB + PB_REG_PB_PRTY_MASK, 0x0); ++ REG_WR(bp, SRC_REG_SRC_PRTY_MASK, 0x4); /* bit 2 */ ++ REG_WR(bp, CDU_REG_CDU_PRTY_MASK, 0x0); ++ REG_WR(bp, CFC_REG_CFC_PRTY_MASK, 0x0); ++ REG_WR(bp, HC_REG_HC_PRTY_MASK, 0x0); ++ REG_WR(bp, MISC_REG_MISC_PRTY_MASK, 0x0); ++ REG_WR(bp, DBG_REG_DBG_PRTY_MASK, 0x0); ++ REG_WR(bp, DMAE_REG_DMAE_PRTY_MASK, 0x0); ++ REG_WR(bp, BRB1_REG_BRB1_PRTY_MASK, 0x0); ++ REG_WR(bp, PRS_REG_PRS_PRTY_MASK, (1<<6)); /* bit 6 */ ++ REG_WR(bp, TSDM_REG_TSDM_PRTY_MASK, 0x8); /* bit 3 */ ++ REG_WR(bp, CSDM_REG_CSDM_PRTY_MASK, 0x8); /* bit 3 */ ++ REG_WR(bp, USDM_REG_USDM_PRTY_MASK, 0x28); /* bit 3,5 */ ++ REG_WR(bp, XSDM_REG_XSDM_PRTY_MASK, 0x8); /* bit 3 */ ++ REG_WR(bp, TSEM_REG_TSEM_PRTY_MASK_0, 0x0); ++ REG_WR(bp, TSEM_REG_TSEM_PRTY_MASK_1, 0x0); ++ REG_WR(bp, USEM_REG_USEM_PRTY_MASK_0, 0x0); ++ REG_WR(bp, USEM_REG_USEM_PRTY_MASK_1, 0x0); ++ REG_WR(bp, CSEM_REG_CSEM_PRTY_MASK_0, 0x0); ++ REG_WR(bp, CSEM_REG_CSEM_PRTY_MASK_1, 0x0); ++ REG_WR(bp, XSEM_REG_XSEM_PRTY_MASK_0, 0x0); ++ REG_WR(bp, XSEM_REG_XSEM_PRTY_MASK_1, 0x0); ++} ++#endif ++ ++static void bnx2x_reset_common(struct bnx2x *bp) ++{ ++ /* reset_common */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, ++ 0xd3ffff7f); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, 0x1403); ++} ++ ++static void bnx2x_init_pxp(struct bnx2x *bp) ++{ ++ u16 devctl; ++ int r_order, w_order; ++ ++ pci_read_config_word(bp->pdev, ++ bp->pcie_cap + PCI_EXP_DEVCTL, &devctl); ++ DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl); ++ w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5); ++ if (bp->mrrs == -1) ++ r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12); ++ else { ++ DP(NETIF_MSG_HW, "force read order to %d\n", bp->mrrs); ++ r_order = bp->mrrs; ++ } ++ ++ bnx2x_init_pxp_arb(bp, r_order, w_order); ++} ++ ++static void bnx2x_setup_fan_failure_detection(struct bnx2x *bp) ++{ ++ u32 val; ++ u8 port; ++ u8 is_required = 0; ++ ++ val = SHMEM_RD(bp, dev_info.shared_hw_config.config2) & ++ SHARED_HW_CFG_FAN_FAILURE_MASK; ++ ++ if (val == SHARED_HW_CFG_FAN_FAILURE_ENABLED) ++ is_required = 1; ++ ++ /* ++ * The fan failure mechanism is usually related to the PHY type since ++ * the power consumption of the board is affected by the PHY. Currently, ++ * fan is required for most designs with SFX7101, BCM8727 and BCM8481. ++ */ ++ else if (val == SHARED_HW_CFG_FAN_FAILURE_PHY_TYPE) ++ for (port = PORT_0; port < PORT_MAX; port++) { ++ u32 phy_type = ++ SHMEM_RD(bp, dev_info.port_hw_config[port]. ++ external_phy_config) & ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK; ++ is_required |= ++ ((phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101) || ++ (phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727) || ++ (phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481)); ++ } ++ ++ DP(NETIF_MSG_HW, "fan detection setting: %d\n", is_required); ++ ++ if (is_required == 0) ++ return; ++ ++ /* Fan failure is indicated by SPIO 5 */ ++ bnx2x_set_spio(bp, MISC_REGISTERS_SPIO_5, ++ MISC_REGISTERS_SPIO_INPUT_HI_Z); ++ ++ /* set to active low mode */ ++ val = REG_RD(bp, MISC_REG_SPIO_INT); ++ val |= ((1 << MISC_REGISTERS_SPIO_5) << ++ MISC_REGISTERS_SPIO_INT_OLD_SET_POS); ++ REG_WR(bp, MISC_REG_SPIO_INT, val); ++ ++ /* enable interrupt to signal the IGU */ ++ val = REG_RD(bp, MISC_REG_SPIO_EVENT_EN); ++ val |= (1 << MISC_REGISTERS_SPIO_5); ++ REG_WR(bp, MISC_REG_SPIO_EVENT_EN, val); ++} ++ ++static int bnx2x_init_common(struct bnx2x *bp) ++{ ++ u32 val, i; ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ u32 wb_write[2]; ++#endif ++ ++ DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_FUNC(bp)); ++ ++ bnx2x_reset_common(bp); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 0xfffc); ++ ++ bnx2x_init_block(bp, MISC_BLOCK, COMMON_STAGE); ++ if (CHIP_IS_E1H(bp)) ++ REG_WR(bp, MISC_REG_E1HMF_MODE, IS_E1HMF(bp)); ++ ++ REG_WR(bp, MISC_REG_LCPLL_CTRL_REG_2, 0x100); ++ msleep(30); ++ REG_WR(bp, MISC_REG_LCPLL_CTRL_REG_2, 0x0); ++ ++ bnx2x_init_block(bp, PXP_BLOCK, COMMON_STAGE); ++ if (CHIP_IS_E1(bp)) { ++ /* enable HW interrupt from PXP on USDM overflow ++ bit 16 on INT_MASK_0 */ ++ REG_WR(bp, PXP_REG_PXP_INT_MASK_0, 0); ++ } ++ ++ bnx2x_init_block(bp, PXP2_BLOCK, COMMON_STAGE); ++ bnx2x_init_pxp(bp); ++ ++#ifdef __BIG_ENDIAN ++ REG_WR(bp, PXP2_REG_RQ_QM_ENDIAN_M, 1); ++ REG_WR(bp, PXP2_REG_RQ_TM_ENDIAN_M, 1); ++ REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1); ++ REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1); ++ REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1); ++ /* make sure this value is 0 */ ++ REG_WR(bp, PXP2_REG_RQ_HC_ENDIAN_M, 0); ++ ++/* REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */ ++ REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1); ++ REG_WR(bp, PXP2_REG_RD_TM_SWAP_MODE, 1); ++ REG_WR(bp, PXP2_REG_RD_SRC_SWAP_MODE, 1); ++ REG_WR(bp, PXP2_REG_RD_CDURD_SWAP_MODE, 1); ++#endif ++ ++ REG_WR(bp, PXP2_REG_RQ_CDU_P_SIZE, 2); ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ REG_WR(bp, PXP2_REG_RQ_TM_P_SIZE, 5); ++ REG_WR(bp, PXP2_REG_RQ_QM_P_SIZE, 5); ++ REG_WR(bp, PXP2_REG_RQ_SRC_P_SIZE, 5); ++#endif ++ ++ if (CHIP_REV_IS_FPGA(bp) && CHIP_IS_E1H(bp)) ++ REG_WR(bp, PXP2_REG_PGL_TAGS_LIMIT, 0x1); ++ ++ /* let the HW do it's magic ... */ ++ msleep(100); ++ /* finish PXP init */ ++ val = REG_RD(bp, PXP2_REG_RQ_CFG_DONE); ++ if (val != 1) { ++ BNX2X_ERR("PXP2 CFG failed\n"); ++ return -EBUSY; ++ } ++ val = REG_RD(bp, PXP2_REG_RD_INIT_DONE); ++ if (val != 1) { ++ BNX2X_ERR("PXP2 RD_INIT failed\n"); ++ return -EBUSY; ++ } ++ ++ REG_WR(bp, PXP2_REG_RQ_DISABLE_INPUTS, 0); ++ REG_WR(bp, PXP2_REG_RD_DISABLE_INPUTS, 0); ++ ++ bnx2x_init_block(bp, DMAE_BLOCK, COMMON_STAGE); ++ ++ /* clean the DMAE memory */ ++ bp->dmae_ready = 1; ++ bnx2x_init_fill(bp, TSEM_REG_PRAM, 0, 8); ++ ++ bnx2x_init_block(bp, TCM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, UCM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, CCM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, XCM_BLOCK, COMMON_STAGE); ++ ++ bnx2x_read_dmae(bp, XSEM_REG_PASSIVE_BUFFER, 3); ++ bnx2x_read_dmae(bp, CSEM_REG_PASSIVE_BUFFER, 3); ++ bnx2x_read_dmae(bp, TSEM_REG_PASSIVE_BUFFER, 3); ++ bnx2x_read_dmae(bp, USEM_REG_PASSIVE_BUFFER, 3); ++ ++ bnx2x_init_block(bp, QM_BLOCK, COMMON_STAGE); ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ switch (bp->multi_mode) { ++ case ETH_RSS_MODE_DISABLED: ++ case ETH_RSS_MODE_REGULAR: ++ break; ++ ++ case ETH_RSS_MODE_VLAN_PRI: ++ case ETH_RSS_MODE_E1HOV_PRI: ++ case ETH_RSS_MODE_IP_DSCP: ++ REG_WR(bp, QM_REG_BYTECRDINITVAL, 0x5dc0); ++ break; ++ ++ default: ++ break; ++ } ++#endif ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ wb_write[0] = 0; ++ wb_write[1] = 0; ++ for (i = 0; i < 64; i++) { ++ REG_WR(bp, QM_REG_BASEADDR + i*4, 1024 * 4 * (i%16)); ++ bnx2x_init_ind_wr(bp, QM_REG_PTRTBL + i*8, wb_write, 2); ++ ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR(bp, QM_REG_BASEADDR_EXT_A + i*4, 1024*4*(i%16)); ++ bnx2x_init_ind_wr(bp, QM_REG_PTRTBL_EXT_A + i*8, ++ wb_write, 2); ++ } ++ } ++#endif ++ /* soft reset pulse */ ++ REG_WR(bp, QM_REG_SOFT_RESET, 1); ++ REG_WR(bp, QM_REG_SOFT_RESET, 0); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ bnx2x_init_block(bp, TIMERS_BLOCK, COMMON_STAGE); ++#endif ++ ++ bnx2x_init_block(bp, DQ_BLOCK, COMMON_STAGE); ++ REG_WR(bp, DORQ_REG_DPM_CID_OFST, BCM_PAGE_SHIFT); ++ if (!CHIP_REV_IS_SLOW(bp)) { ++ /* enable hw interrupt from doorbell Q */ ++ REG_WR(bp, DORQ_REG_DORQ_INT_MASK, 0); ++ } ++ ++ bnx2x_init_block(bp, BRB1_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, PRS_BLOCK, COMMON_STAGE); ++ REG_WR(bp, PRS_REG_A_PRSU_20, 0xf); ++#ifndef BCM_CNIC /* BNX2X_UPSTREAM */ ++ /* set NIC mode */ ++ REG_WR(bp, PRS_REG_NIC_MODE, 1); ++#endif ++#ifdef BNX2X_SAFC ++ if (CHIP_IS_E1H(bp)) { ++ val = (IS_E1HMF(bp) || ++ (bp->multi_mode == ETH_RSS_MODE_E1HOV_PRI)) ? 1 : 0; ++ REG_WR(bp, PRS_REG_E1HOV_MODE, val); ++ } ++#else /* BNX2X_UPSTREAM */ ++ if (CHIP_IS_E1H(bp)) ++ REG_WR(bp, PRS_REG_E1HOV_MODE, IS_E1HMF(bp)); ++#endif ++ ++ bnx2x_init_block(bp, TSDM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, CSDM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, USDM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, XSDM_BLOCK, COMMON_STAGE); ++ ++ bnx2x_init_fill(bp, TSEM_REG_FAST_MEMORY, 0, STORM_INTMEM_SIZE(bp)); ++ bnx2x_init_fill(bp, USEM_REG_FAST_MEMORY, 0, STORM_INTMEM_SIZE(bp)); ++ bnx2x_init_fill(bp, CSEM_REG_FAST_MEMORY, 0, STORM_INTMEM_SIZE(bp)); ++ bnx2x_init_fill(bp, XSEM_REG_FAST_MEMORY, 0, STORM_INTMEM_SIZE(bp)); ++ ++ bnx2x_init_block(bp, TSEM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, USEM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, CSEM_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, XSEM_BLOCK, COMMON_STAGE); ++ ++ /* sync semi rtc */ ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, ++ 0x80000000); ++ REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, ++ 0x80000000); ++ ++ bnx2x_init_block(bp, UPB_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, XPB_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, PBF_BLOCK, COMMON_STAGE); ++ ++ REG_WR(bp, SRC_REG_SOFT_RST, 1); ++ for (i = SRC_REG_KEYRSS0_0; i <= SRC_REG_KEYRSS1_9; i += 4) { ++ REG_WR(bp, i, 0xc0cac01a); ++ /* TODO: replace with something meaningful */ ++ } ++ bnx2x_init_block(bp, SRCH_BLOCK, COMMON_STAGE); ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ REG_WR(bp, SRC_REG_KEYSEARCH_0, 0x63285672); ++ REG_WR(bp, SRC_REG_KEYSEARCH_1, 0x24b8f2cc); ++ REG_WR(bp, SRC_REG_KEYSEARCH_2, 0x223aef9b); ++ REG_WR(bp, SRC_REG_KEYSEARCH_3, 0x26001e3a); ++ REG_WR(bp, SRC_REG_KEYSEARCH_4, 0x7ae91116); ++ REG_WR(bp, SRC_REG_KEYSEARCH_5, 0x5ce5230b); ++ REG_WR(bp, SRC_REG_KEYSEARCH_6, 0x298d8adf); ++ REG_WR(bp, SRC_REG_KEYSEARCH_7, 0x6eb0ff09); ++ REG_WR(bp, SRC_REG_KEYSEARCH_8, 0x1830f82f); ++ REG_WR(bp, SRC_REG_KEYSEARCH_9, 0x01e46be7); ++#endif ++ REG_WR(bp, SRC_REG_SOFT_RST, 0); ++ ++ if (sizeof(union cdu_context) != 1024) ++ /* we currently assume that a context is 1024 bytes */ ++ printk(KERN_ALERT PFX "please adjust the size of" ++ " cdu_context(%ld)\n", (long)sizeof(union cdu_context)); ++ ++ bnx2x_init_block(bp, CDU_BLOCK, COMMON_STAGE); ++ val = (4 << 24) + (0 << 12) + 1024; ++ REG_WR(bp, CDU_REG_CDU_GLOBAL_PARAMS, val); ++ ++ bnx2x_init_block(bp, CFC_BLOCK, COMMON_STAGE); ++ REG_WR(bp, CFC_REG_INIT_REG, 0x7FF); ++ /* enable context validation interrupt from CFC */ ++ REG_WR(bp, CFC_REG_CFC_INT_MASK, 0); ++ ++ /* set the thresholds to prevent CFC/CDU race */ ++ REG_WR(bp, CFC_REG_DEBUG0, 0x20020000); ++ ++ bnx2x_init_block(bp, HC_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, MISC_AEU_BLOCK, COMMON_STAGE); ++ ++ bnx2x_init_block(bp, PXPCS_BLOCK, COMMON_STAGE); ++ /* Reset PCIE errors for debug */ ++ REG_WR(bp, 0x2814, 0xffffffff); ++ REG_WR(bp, 0x3820, 0xffffffff); ++ ++ bnx2x_init_block(bp, EMAC0_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, EMAC1_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, DBU_BLOCK, COMMON_STAGE); ++ bnx2x_init_block(bp, DBG_BLOCK, COMMON_STAGE); ++ ++ bnx2x_init_block(bp, NIG_BLOCK, COMMON_STAGE); ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR(bp, NIG_REG_LLH_MF_MODE, IS_E1HMF(bp)); ++ REG_WR(bp, NIG_REG_LLH_E1HOV_MODE, IS_E1HMF(bp)); ++ } ++ ++ if (CHIP_REV_IS_SLOW(bp)) ++ msleep(200); ++ ++ /* finish CFC init */ ++ val = reg_poll(bp, CFC_REG_LL_INIT_DONE, 1, 100, 10); ++ if (val != 1) { ++ BNX2X_ERR("CFC LL_INIT failed\n"); ++ return -EBUSY; ++ } ++ val = reg_poll(bp, CFC_REG_AC_INIT_DONE, 1, 100, 10); ++ if (val != 1) { ++ BNX2X_ERR("CFC AC_INIT failed\n"); ++ return -EBUSY; ++ } ++ val = reg_poll(bp, CFC_REG_CAM_INIT_DONE, 1, 100, 10); ++ if (val != 1) { ++ BNX2X_ERR("CFC CAM_INIT failed\n"); ++ return -EBUSY; ++ } ++ REG_WR(bp, CFC_REG_DEBUG0, 0); ++ ++ /* read NIG statistic ++ to see if this is our first up since powerup */ ++ bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2); ++ val = *bnx2x_sp(bp, wb_data[0]); ++ ++ /* do internal memory self test */ ++ if ((CHIP_IS_E1(bp)) && (val == 0) && bnx2x_int_mem_test(bp)) { ++ BNX2X_ERR("internal mem self test failed\n"); ++ return -EBUSY; ++ } ++ ++ switch (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config)) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ bp->port.need_hw_lock = 1; ++ break; ++ ++ default: ++ break; ++ } ++ ++ bnx2x_setup_fan_failure_detection(bp); ++ ++ /* clear PXP2 attentions */ ++ REG_RD(bp, PXP2_REG_PXP2_INT_STS_CLR_0); ++ ++ enable_blocks_attention(bp); ++#ifdef BNX2X_EXTRA_DEBUG /* ! BNX2X_UPSTREAM */ ++ enable_blocks_parity(bp); ++#endif ++ ++ if (!BP_NOMCP(bp)) { ++ bnx2x_acquire_phy_lock(bp); ++ bnx2x_common_init_phy(bp, bp->common.shmem_base); ++ bnx2x_release_phy_lock(bp); ++ } else ++ BNX2X_ERR("Bootcode is missing - can not initialize link\n"); ++ ++ return 0; ++} ++ ++static int bnx2x_init_port(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int init_stage = port ? PORT1_STAGE : PORT0_STAGE; ++ u32 low, high; ++ u32 val; ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ int i; ++#endif ++ ++ DP(BNX2X_MSG_MCP, "starting port init port %x\n", port); ++ ++ REG_WR(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, 0); ++ ++ bnx2x_init_block(bp, PXP_BLOCK, init_stage); ++ bnx2x_init_block(bp, PXP2_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, TCM_BLOCK, init_stage); ++ bnx2x_init_block(bp, UCM_BLOCK, init_stage); ++ bnx2x_init_block(bp, CCM_BLOCK, init_stage); ++ bnx2x_init_block(bp, XCM_BLOCK, init_stage); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ REG_WR(bp, QM_REG_CONNNUM_0 + port*4, 1024/16 - 1); ++ ++ bnx2x_init_block(bp, TIMERS_BLOCK, init_stage); ++ REG_WR(bp, TM_REG_LIN0_SCAN_TIME + port*4, 20); ++ REG_WR(bp, TM_REG_LIN0_MAX_ACTIVE_CID + port*4, 31); ++#endif ++ ++ bnx2x_init_block(bp, DQ_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, BRB1_BLOCK, init_stage); ++ if (CHIP_REV_IS_SLOW(bp) && !CHIP_IS_E1H(bp)) { ++ /* no pause for emulation and FPGA */ ++ low = 0; ++ high = 513; ++ } else { ++ if (IS_E1HMF(bp)) ++ low = ((bp->flags & ONE_PORT_FLAG) ? 160 : 246); ++ else if (bp->dev->mtu > 4096) { ++ if (bp->flags & ONE_PORT_FLAG) ++ low = 160; ++ else { ++ val = bp->dev->mtu; ++ /* (24*1024 + val*4)/256 */ ++ low = 96 + (val/64) + ((val % 64) ? 1 : 0); ++ } ++ } else ++ low = ((bp->flags & ONE_PORT_FLAG) ? 80 : 160); ++ high = low + 56; /* 14*1024/256 */ ++ } ++ REG_WR(bp, BRB1_REG_PAUSE_LOW_THRESHOLD_0 + port*4, low); ++ REG_WR(bp, BRB1_REG_PAUSE_HIGH_THRESHOLD_0 + port*4, high); ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ if (bp->flags & SAFC_TX_FLAG) { ++ REG_WR(bp, BRB1_REG_HIGH_LLFC_LOW_THRESHOLD_0 + port*4, 0xa0); ++ REG_WR(bp, BRB1_REG_HIGH_LLFC_HIGH_THRESHOLD_0 + port*4, 0xd8); ++ REG_WR(bp, BRB1_REG_LOW_LLFC_LOW_THRESHOLD_0 + port*4, 0xa0); ++ REG_WR(bp, BRB1_REG_LOW_LLFC_HIGH_THRESHOLD_0 + port*4, 0xd8); ++ } ++#endif ++ ++ bnx2x_init_block(bp, PRS_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, TSDM_BLOCK, init_stage); ++ bnx2x_init_block(bp, CSDM_BLOCK, init_stage); ++ bnx2x_init_block(bp, USDM_BLOCK, init_stage); ++ bnx2x_init_block(bp, XSDM_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, TSEM_BLOCK, init_stage); ++ bnx2x_init_block(bp, USEM_BLOCK, init_stage); ++ bnx2x_init_block(bp, CSEM_BLOCK, init_stage); ++ bnx2x_init_block(bp, XSEM_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, UPB_BLOCK, init_stage); ++ bnx2x_init_block(bp, XPB_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, PBF_BLOCK, init_stage); ++ ++ /* configure PBF to work without PAUSE mtu 9000 */ ++ REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, 0); ++ ++ /* update threshold */ ++ REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, (9040/16)); ++ /* update init credit */ ++ REG_WR(bp, PBF_REG_P0_INIT_CRD + port*4, (9040/16) + 553 - 22); ++ ++ /* probe changes */ ++ REG_WR(bp, PBF_REG_INIT_P0 + port*4, 1); ++ msleep(5); ++ REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ bnx2x_init_block(bp, SRCH_BLOCK, init_stage); ++#endif ++ bnx2x_init_block(bp, CDU_BLOCK, init_stage); ++ bnx2x_init_block(bp, CFC_BLOCK, init_stage); ++ ++ if (CHIP_IS_E1(bp)) { ++ REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0); ++ REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0); ++ } ++ bnx2x_init_block(bp, HC_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, MISC_AEU_BLOCK, init_stage); ++ /* init aeu_mask_attn_func_0/1: ++ * - SF mode: bits 3-7 are masked. only bits 0-2 are in use ++ * - MF mode: bit 3 is masked. bits 0-2 are in use as in SF ++ * bits 4-7 are used for "per vn group attention" */ ++ REG_WR(bp, MISC_REG_AEU_MASK_ATTN_FUNC_0 + port*4, ++ (IS_E1HMF(bp) ? 0xF7 : 0x7)); ++ ++ bnx2x_init_block(bp, PXPCS_BLOCK, init_stage); ++ bnx2x_init_block(bp, EMAC0_BLOCK, init_stage); ++ bnx2x_init_block(bp, EMAC1_BLOCK, init_stage); ++ bnx2x_init_block(bp, DBU_BLOCK, init_stage); ++ bnx2x_init_block(bp, DBG_BLOCK, init_stage); ++ ++ bnx2x_init_block(bp, NIG_BLOCK, init_stage); ++ ++ REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 1); ++ ++ if (CHIP_IS_E1H(bp)) { ++ /* 0x2 disable e1hov, 0x1 enable */ ++ REG_WR(bp, NIG_REG_LLH0_BRB1_DRV_MASK_MF + port*4, ++ (IS_E1HMF(bp) ? 0x1 : 0x2)); ++ ++#ifdef BNX2X_SAFC ++ if (bp->flags & SAFC_TX_FLAG) { ++ high = 0; ++ for (i = 0; i < BNX2X_MAX_PRIORITY; i++) ++ if (bp->pri_map[i] == 1) ++ high |= (1 << i); ++ REG_WR(bp, ++ NIG_REG_LLFC_HIGH_PRIORITY_CLASSES_0 + port*4, ++ high); ++ low = 0; ++ for (i = 0; i < BNX2X_MAX_PRIORITY; i++) ++ if (bp->pri_map[i] == 0) ++ low |= (1 << i); ++ REG_WR(bp, ++ NIG_REG_LLFC_LOW_PRIORITY_CLASSES_0 + port*4, ++ low); ++ ++ REG_WR(bp, NIG_REG_PAUSE_ENABLE_0 + port*4, 0); ++ REG_WR(bp, NIG_REG_LLFC_ENABLE_0 + port*4, 1); ++ REG_WR(bp, NIG_REG_LLFC_OUT_EN_0 + port*4, 1); ++ } else { ++#else /* BNX2X_UPSTREAM */ ++ { ++#endif ++ REG_WR(bp, NIG_REG_LLFC_ENABLE_0 + port*4, 0); ++ REG_WR(bp, NIG_REG_LLFC_OUT_EN_0 + port*4, 0); ++ REG_WR(bp, NIG_REG_PAUSE_ENABLE_0 + port*4, 1); ++ } ++ } ++ ++ bnx2x_init_block(bp, MCP_BLOCK, init_stage); ++ bnx2x_init_block(bp, DMAE_BLOCK, init_stage); ++ ++ switch (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config)) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ { ++ u32 swap_val, swap_override, aeu_gpio_mask, offset; ++ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_3, ++ MISC_REGISTERS_GPIO_INPUT_HI_Z, port); ++ ++ /* The GPIO should be swapped if the swap register is ++ set and active */ ++ swap_val = REG_RD(bp, NIG_REG_PORT_SWAP); ++ swap_override = REG_RD(bp, NIG_REG_STRAP_OVERRIDE); ++ ++ /* Select function upon port-swap configuration */ ++ if (port == 0) { ++ offset = MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0; ++ aeu_gpio_mask = (swap_val && swap_override) ? ++ AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_1 : ++ AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_0; ++ } else { ++ offset = MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0; ++ aeu_gpio_mask = (swap_val && swap_override) ? ++ AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_0 : ++ AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_1; ++ } ++ val = REG_RD(bp, offset); ++ /* add GPIO3 to group */ ++ val |= aeu_gpio_mask; ++ REG_WR(bp, offset, val); ++ } ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ /* add SPIO 5 to group 0 */ ++ { ++ u32 reg_addr = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 : ++ MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0); ++ val = REG_RD(bp, reg_addr); ++ val |= AEU_INPUTS_ATTN_BITS_SPIO5; ++ REG_WR(bp, reg_addr, val); ++ } ++ break; ++ ++ default: ++ break; ++ } ++ ++ bnx2x__link_reset(bp); ++ ++ return 0; ++} ++ ++#define ILT_PER_FUNC (768/2) ++#define FUNC_ILT_BASE(func) (func * ILT_PER_FUNC) ++/* the phys address is shifted right 12 bits and has an added ++ 1=valid bit added to the 53rd bit ++ then since this is a wide register(TM) ++ we split it into two 32 bit writes ++ */ ++#define ONCHIP_ADDR1(x) ((u32)(((u64)x >> 12) & 0xFFFFFFFF)) ++#define ONCHIP_ADDR2(x) ((u32)((1 << 20) | ((u64)x >> 44))) ++#define PXP_ONE_ILT(x) (((x) << 10) | x) ++#define PXP_ILT_RANGE(f, l) (((l) << 10) | f) ++ ++#ifdef BCM_CNIC ++#define CNIC_ILT_LINES 127 ++#define CNIC_CTX_PER_ILT 16 ++#else /* BNX2X_UPSTREAM */ ++#define CNIC_ILT_LINES 0 ++#endif ++ ++static void bnx2x_ilt_wr(struct bnx2x *bp, u32 index, dma_addr_t addr) ++{ ++ int reg; ++ ++ if (CHIP_IS_E1H(bp)) ++ reg = PXP2_REG_RQ_ONCHIP_AT_B0 + index*8; ++ else /* E1 */ ++ reg = PXP2_REG_RQ_ONCHIP_AT + index*8; ++ ++ bnx2x_wb_wr(bp, reg, ONCHIP_ADDR1(addr), ONCHIP_ADDR2(addr)); ++} ++ ++static int bnx2x_init_func(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int func = BP_FUNC(bp); ++ u32 addr, val; ++ int i; ++ ++ DP(BNX2X_MSG_MCP, "starting func init func %x\n", func); ++ ++ /* set MSI reconfigure capability */ ++ addr = (port ? HC_REG_CONFIG_1 : HC_REG_CONFIG_0); ++ val = REG_RD(bp, addr); ++ val |= HC_CONFIG_0_REG_MSI_ATTN_EN_0; ++ REG_WR(bp, addr, val); ++ ++ i = FUNC_ILT_BASE(func); ++ ++ bnx2x_ilt_wr(bp, i, bnx2x_sp_mapping(bp, context)); ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR(bp, PXP2_REG_RQ_CDU_FIRST_ILT, i); ++ REG_WR(bp, PXP2_REG_RQ_CDU_LAST_ILT, i + CNIC_ILT_LINES); ++ } else /* E1 */ ++ REG_WR(bp, PXP2_REG_PSWRQ_CDU0_L2P + func*4, ++ PXP_ILT_RANGE(i, i + CNIC_ILT_LINES)); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ i += 1 + CNIC_ILT_LINES; ++ bnx2x_ilt_wr(bp, i, bp->timers_mapping); ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR(bp, PXP2_REG_RQ_TM_FIRST_ILT, i); ++ REG_WR(bp, PXP2_REG_RQ_TM_LAST_ILT, i); ++ } else /* E1 */ ++ REG_WR(bp, PXP2_REG_PSWRQ_TM0_L2P + func*4, PXP_ONE_ILT(i)); ++ ++ i++; ++ bnx2x_ilt_wr(bp, i, bp->qm_mapping); ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR(bp, PXP2_REG_RQ_QM_FIRST_ILT, i); ++ REG_WR(bp, PXP2_REG_RQ_QM_LAST_ILT, i); ++ } else /* E1 */ ++ REG_WR(bp, PXP2_REG_PSWRQ_QM0_L2P + func*4, PXP_ONE_ILT(i)); ++ ++ i++; ++ bnx2x_ilt_wr(bp, i, bp->t1_mapping); ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR(bp, PXP2_REG_RQ_SRC_FIRST_ILT, i); ++ REG_WR(bp, PXP2_REG_RQ_SRC_LAST_ILT, i); ++ } else /* E1 */ ++ REG_WR(bp, PXP2_REG_PSWRQ_SRC0_L2P + func*4, PXP_ONE_ILT(i)); ++ ++ /* tell the searcher where the T2 table is */ ++ REG_WR(bp, SRC_REG_COUNTFREE0 + port*4, 16*1024/64); ++ ++ bnx2x_wb_wr(bp, SRC_REG_FIRSTFREE0 + port*16, ++ U64_LO(bp->t2_mapping), U64_HI(bp->t2_mapping)); ++ ++ bnx2x_wb_wr(bp, SRC_REG_LASTFREE0 + port*16, ++ U64_LO((u64)bp->t2_mapping + 16*1024 - 64), ++ U64_HI((u64)bp->t2_mapping + 16*1024 - 64)); ++ ++ REG_WR(bp, SRC_REG_NUMBER_HASH_BITS0 + port*4, 10); ++#endif ++ ++ if (CHIP_IS_E1H(bp)) { ++ bnx2x_init_block(bp, MISC_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, TCM_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, UCM_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, CCM_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, XCM_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, TSEM_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, USEM_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, CSEM_BLOCK, FUNC0_STAGE + func); ++ bnx2x_init_block(bp, XSEM_BLOCK, FUNC0_STAGE + func); ++ ++ REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 1); ++ REG_WR(bp, NIG_REG_LLH0_FUNC_VLAN_ID + port*8, bp->e1hov); ++ } ++ ++ /* HC init per function */ ++ if (CHIP_IS_E1H(bp)) { ++ REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_12 + func*4, 0); ++ ++ REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0); ++ REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0); ++ } ++ bnx2x_init_block(bp, HC_BLOCK, FUNC0_STAGE + func); ++ ++ /* Reset PCIE errors for debug */ ++ REG_WR(bp, 0x2114, 0xffffffff); ++ REG_WR(bp, 0x2120, 0xffffffff); ++ ++ return 0; ++} ++ ++static int bnx2x_init_hw(struct bnx2x *bp, u32 load_code) ++{ ++ int i, rc = 0; ++ ++ DP(BNX2X_MSG_MCP, "function %d load_code %x\n", ++ BP_FUNC(bp), load_code); ++ ++ bp->dmae_ready = 0; ++ mutex_init(&bp->dmae_mutex); ++ rc = bnx2x_gunzip_init(bp); ++ if (rc) ++ return rc; ++ ++ switch (load_code) { ++ case FW_MSG_CODE_DRV_LOAD_COMMON: ++ rc = bnx2x_init_common(bp); ++ if (rc) ++ goto init_hw_err; ++ /* no break */ ++ ++ case FW_MSG_CODE_DRV_LOAD_PORT: ++ bp->dmae_ready = 1; ++ rc = bnx2x_init_port(bp); ++ if (rc) ++ goto init_hw_err; ++ /* no break */ ++ ++ case FW_MSG_CODE_DRV_LOAD_FUNCTION: ++ bp->dmae_ready = 1; ++ rc = bnx2x_init_func(bp); ++ if (rc) ++ goto init_hw_err; ++ break; ++ ++ default: ++ BNX2X_ERR("Unknown load_code (0x%x) from MCP\n", load_code); ++ break; ++ } ++ ++ if (!BP_NOMCP(bp)) { ++ int func = BP_FUNC(bp); ++ ++ bp->fw_drv_pulse_wr_seq = ++ (SHMEM_RD(bp, func_mb[func].drv_pulse_mb) & ++ DRV_PULSE_SEQ_MASK); ++ DP(BNX2X_MSG_MCP, "drv_pulse 0x%x\n", bp->fw_drv_pulse_wr_seq); ++ } ++ ++ /* this needs to be done before gunzip end */ ++ bnx2x_zero_def_sb(bp); ++ for_each_queue(bp, i) ++ bnx2x_zero_sb(bp, BP_L_ID(bp) + i); ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ bnx2x_zero_sb(bp, BP_L_ID(bp) + i); ++#endif ++ ++init_hw_err: ++ bnx2x_gunzip_end(bp); ++ ++ return rc; ++} ++ ++static void bnx2x_free_mem(struct bnx2x *bp) ++{ ++ ++#define BNX2X_PCI_FREE(x, y, size) \ ++ do { \ ++ if (x) { \ ++ pci_free_consistent(bp->pdev, size, x, y); \ ++ x = NULL; \ ++ y = 0; \ ++ } \ ++ } while (0) ++ ++#define BNX2X_FREE(x) \ ++ do { \ ++ if (x) { \ ++ vfree(x); \ ++ x = NULL; \ ++ } \ ++ } while (0) ++ ++ int i; ++ ++ /* fastpath */ ++ /* Common */ ++ for_each_queue(bp, i) { ++ ++ /* status blocks */ ++ BNX2X_PCI_FREE(bnx2x_fp(bp, i, status_blk), ++ bnx2x_fp(bp, i, status_blk_mapping), ++ sizeof(struct host_status_block)); ++ } ++ /* Rx */ ++ for_each_rx_queue(bp, i) { ++ ++ /* fastpath rx rings: rx_buf rx_desc rx_comp */ ++ BNX2X_FREE(bnx2x_fp(bp, i, rx_buf_ring)); ++ BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_desc_ring), ++ bnx2x_fp(bp, i, rx_desc_mapping), ++ sizeof(struct eth_rx_bd) * NUM_RX_BD); ++ ++ BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_comp_ring), ++ bnx2x_fp(bp, i, rx_comp_mapping), ++ sizeof(struct eth_fast_path_rx_cqe) * ++ NUM_RCQ_BD); ++ ++ /* SGE ring */ ++ BNX2X_FREE(bnx2x_fp(bp, i, rx_page_ring)); ++ BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_sge_ring), ++ bnx2x_fp(bp, i, rx_sge_mapping), ++ BCM_PAGE_SIZE * NUM_RX_SGE_PAGES); ++ } ++ /* Tx */ ++ for_each_tx_queue(bp, i) { ++ ++ /* fastpath tx rings: tx_buf tx_desc */ ++ BNX2X_FREE(bnx2x_fp(bp, i, tx_buf_ring)); ++ BNX2X_PCI_FREE(bnx2x_fp(bp, i, tx_desc_ring), ++ bnx2x_fp(bp, i, tx_desc_mapping), ++ sizeof(union eth_tx_bd_types) * NUM_TX_BD); ++ } ++ /* end of fastpath */ ++ ++ BNX2X_PCI_FREE(bp->def_status_blk, bp->def_status_blk_mapping, ++ sizeof(struct host_def_status_block)); ++ ++ BNX2X_PCI_FREE(bp->slowpath, bp->slowpath_mapping, ++ sizeof(struct bnx2x_slowpath)); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ BNX2X_PCI_FREE(bp->t1, bp->t1_mapping, 64*1024); ++ BNX2X_PCI_FREE(bp->t2, bp->t2_mapping, 16*1024); ++ BNX2X_PCI_FREE(bp->timers, bp->timers_mapping, 8*1024); ++ BNX2X_PCI_FREE(bp->qm, bp->qm_mapping, 128*1024); ++ BNX2X_PCI_FREE(bp->cnic_sb, bp->cnic_sb_mapping, ++ sizeof(struct host_status_block)); ++#endif ++ BNX2X_PCI_FREE(bp->spq, bp->spq_mapping, BCM_PAGE_SIZE); ++ ++#undef BNX2X_PCI_FREE ++#undef BNX2X_KFREE ++} ++ ++static int bnx2x_alloc_mem(struct bnx2x *bp) ++{ ++ ++#define BNX2X_PCI_ALLOC(x, y, size) \ ++ do { \ ++ x = pci_alloc_consistent(bp->pdev, size, y); \ ++ if (x == NULL) \ ++ goto alloc_mem_err; \ ++ memset(x, 0, size); \ ++ } while (0) ++ ++#define BNX2X_ALLOC(x, size) \ ++ do { \ ++ x = vmalloc(size); \ ++ if (x == NULL) \ ++ goto alloc_mem_err; \ ++ memset(x, 0, size); \ ++ } while (0) ++ ++ int i; ++ ++ /* fastpath */ ++ /* Common */ ++ for_each_queue(bp, i) { ++ bnx2x_fp(bp, i, bp) = bp; ++ ++ /* status blocks */ ++ BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, status_blk), ++ &bnx2x_fp(bp, i, status_blk_mapping), ++ sizeof(struct host_status_block)); ++ } ++ /* Rx */ ++ for_each_rx_queue(bp, i) { ++ ++ /* fastpath rx rings: rx_buf rx_desc rx_comp */ ++ BNX2X_ALLOC(bnx2x_fp(bp, i, rx_buf_ring), ++ sizeof(struct sw_rx_bd) * NUM_RX_BD); ++ BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_desc_ring), ++ &bnx2x_fp(bp, i, rx_desc_mapping), ++ sizeof(struct eth_rx_bd) * NUM_RX_BD); ++ ++ BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_comp_ring), ++ &bnx2x_fp(bp, i, rx_comp_mapping), ++ sizeof(struct eth_fast_path_rx_cqe) * ++ NUM_RCQ_BD); ++ ++ /* SGE ring */ ++ BNX2X_ALLOC(bnx2x_fp(bp, i, rx_page_ring), ++ sizeof(struct sw_rx_page) * NUM_RX_SGE); ++ BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_sge_ring), ++ &bnx2x_fp(bp, i, rx_sge_mapping), ++ BCM_PAGE_SIZE * NUM_RX_SGE_PAGES); ++ } ++ /* Tx */ ++ for_each_tx_queue(bp, i) { ++ ++ /* fastpath tx rings: tx_buf tx_desc */ ++ BNX2X_ALLOC(bnx2x_fp(bp, i, tx_buf_ring), ++ sizeof(struct sw_tx_bd) * NUM_TX_BD); ++ BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, tx_desc_ring), ++ &bnx2x_fp(bp, i, tx_desc_mapping), ++ sizeof(union eth_tx_bd_types) * NUM_TX_BD); ++ } ++ /* end of fastpath */ ++ ++ BNX2X_PCI_ALLOC(bp->def_status_blk, &bp->def_status_blk_mapping, ++ sizeof(struct host_def_status_block)); ++ ++ BNX2X_PCI_ALLOC(bp->slowpath, &bp->slowpath_mapping, ++ sizeof(struct bnx2x_slowpath)); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ BNX2X_PCI_ALLOC(bp->t1, &bp->t1_mapping, 64*1024); ++ ++ /* allocate searcher T2 table ++ we allocate 1/4 of alloc num for T2 ++ (which is not entered into the ILT) */ ++ BNX2X_PCI_ALLOC(bp->t2, &bp->t2_mapping, 16*1024); ++ ++ /* Initialize T2 (for 1024 connections) */ ++ for (i = 0; i < 16*1024; i += 64) ++ *(u64 *)((char *)bp->t2 + i + 56) = bp->t2_mapping + i + 64; ++ ++ /* Timer block array (8*MAX_CONN) phys uncached for now 1024 conns */ ++ BNX2X_PCI_ALLOC(bp->timers, &bp->timers_mapping, 8*1024); ++ ++ /* QM queues (128*MAX_CONN) */ ++ BNX2X_PCI_ALLOC(bp->qm, &bp->qm_mapping, 128*1024); ++ ++ BNX2X_PCI_ALLOC(bp->cnic_sb, &bp->cnic_sb_mapping, ++ sizeof(struct host_status_block)); ++#endif ++ ++ /* Slow path ring */ ++ BNX2X_PCI_ALLOC(bp->spq, &bp->spq_mapping, BCM_PAGE_SIZE); ++ ++ return 0; ++ ++alloc_mem_err: ++ bnx2x_free_mem(bp); ++ return -ENOMEM; ++ ++#undef BNX2X_PCI_ALLOC ++#undef BNX2X_ALLOC ++} ++ ++static void bnx2x_free_tx_skbs(struct bnx2x *bp) ++{ ++ int i; ++ ++ for_each_tx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ u16 bd_cons = fp->tx_bd_cons; ++ u16 sw_prod = fp->tx_pkt_prod; ++ u16 sw_cons = fp->tx_pkt_cons; ++ ++ while (sw_cons != sw_prod) { ++ bd_cons = bnx2x_free_tx_pkt(bp, fp, TX_BD(sw_cons)); ++ sw_cons++; ++ } ++ } ++} ++ ++static void bnx2x_free_rx_skbs(struct bnx2x *bp) ++{ ++ int i, j; ++ ++ for_each_rx_queue(bp, j) { ++ struct bnx2x_fastpath *fp = &bp->fp[j]; ++ ++ for (i = 0; i < NUM_RX_BD; i++) { ++ struct sw_rx_bd *rx_buf = &fp->rx_buf_ring[i]; ++ struct sk_buff *skb = rx_buf->skb; ++ ++ if (skb == NULL) ++ continue; ++ ++ pci_unmap_single(bp->pdev, ++ pci_unmap_addr(rx_buf, mapping), ++ bp->rx_buf_size, PCI_DMA_FROMDEVICE); ++ ++ rx_buf->skb = NULL; ++ dev_kfree_skb(skb); ++ } ++ if (!fp->disable_tpa) ++ bnx2x_free_tpa_pool(bp, fp, CHIP_IS_E1(bp) ? ++ ETH_MAX_AGGREGATION_QUEUES_E1 : ++ ETH_MAX_AGGREGATION_QUEUES_E1H); ++ } ++} ++ ++static void bnx2x_free_skbs(struct bnx2x *bp) ++{ ++ bnx2x_free_tx_skbs(bp); ++ bnx2x_free_rx_skbs(bp); ++} ++ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++static void bnx2x_free_msix_irqs(struct bnx2x *bp) ++{ ++ int i, offset = 1; ++ ++ free_irq(bp->msix_table[0].vector, bp->dev); ++ DP(NETIF_MSG_IFDOWN, "released sp irq (%d)\n", ++ bp->msix_table[0].vector); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ offset++; ++#endif ++ for_each_queue(bp, i) { ++ DP(NETIF_MSG_IFDOWN, "about to release fp #%d->%d irq " ++ "state %x\n", i, bp->msix_table[i + offset].vector, ++ bnx2x_fp(bp, i, state)); ++ ++ free_irq(bp->msix_table[i + offset].vector, &bp->fp[i]); ++ } ++} ++#endif ++ ++static void bnx2x_free_irq(struct bnx2x *bp) ++{ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++ if (bp->flags & USING_MSIX_FLAG) { ++ bnx2x_free_msix_irqs(bp); ++ pci_disable_msix(bp->pdev); ++ bp->flags &= ~USING_MSIX_FLAG; ++ ++ } else if (bp->flags & USING_MSI_FLAG) { ++ free_irq(bp->pdev->irq, bp->dev); ++ pci_disable_msi(bp->pdev); ++ bp->flags &= ~USING_MSI_FLAG; ++ ++ } else ++#endif ++ free_irq(bp->pdev->irq, bp->dev); ++} ++ ++static int bnx2x_enable_msix(struct bnx2x *bp) ++{ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++ int i, rc, offset = 1; ++ int igu_vec = 0; ++ ++ bp->msix_table[0].entry = igu_vec; ++ DP(NETIF_MSG_IFUP, "msix_table[0].entry = %d (slowpath)\n", igu_vec); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ igu_vec = BP_L_ID(bp) + offset; ++ bp->msix_table[1].entry = igu_vec; ++ DP(NETIF_MSG_IFUP, "msix_table[1].entry = %d (CNIC)\n", igu_vec); ++ offset++; ++#endif ++ for_each_queue(bp, i) { ++ igu_vec = BP_L_ID(bp) + offset + i; ++ bp->msix_table[i + offset].entry = igu_vec; ++ DP(NETIF_MSG_IFUP, "msix_table[%d].entry = %d " ++ "(fastpath #%u)\n", i + offset, igu_vec, i); ++ } ++ ++ rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], ++ BNX2X_NUM_QUEUES(bp) + offset); ++ if (rc) { ++ DP(NETIF_MSG_IFUP, "MSI-X is not attainable rc %d\n", rc); ++ return rc; ++ } ++ ++ bp->flags |= USING_MSIX_FLAG; ++ ++ return 0; ++#else ++ return -1; ++#endif ++} ++ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++static int bnx2x_req_msix_irqs(struct bnx2x *bp) ++{ ++ int i, rc, offset = 1; ++ ++ rc = request_irq(bp->msix_table[0].vector, bnx2x_msix_sp_int, 0, ++ bp->dev->name, bp->dev); ++ if (rc) { ++ BNX2X_ERR("request sp irq failed\n"); ++ return -EBUSY; ++ } ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ offset++; ++#endif ++ for_each_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ if (i < bp->num_rx_queues) ++ sprintf(fp->name, "%s-rx-%d", bp->dev->name, i); ++ else ++ sprintf(fp->name, "%s-tx-%d", ++ bp->dev->name, i - bp->num_rx_queues); ++ ++ rc = request_irq(bp->msix_table[i + offset].vector, ++ bnx2x_msix_fp_int, 0, fp->name, fp); ++ if (rc) { ++ BNX2X_ERR("request fp #%d irq failed rc %d\n", i, rc); ++ bnx2x_free_msix_irqs(bp); ++ return -EBUSY; ++ } ++ ++ fp->state = BNX2X_FP_STATE_IRQ; ++ } ++ ++ i = BNX2X_NUM_QUEUES(bp); ++ printk(KERN_INFO PFX "%s: using MSI-X IRQs: sp %d fp[%d] %d" ++ " ... fp[%d] %d\n", ++ bp->dev->name, bp->msix_table[0].vector, ++ 0, bp->msix_table[offset].vector, ++ i - 1, bp->msix_table[offset + i - 1].vector); ++ ++ return 0; ++} ++ ++static int bnx2x_enable_msi(struct bnx2x *bp) ++{ ++ int rc; ++ ++ rc = pci_enable_msi(bp->pdev); ++ if (rc) { ++ DP(NETIF_MSG_IFUP, "MSI is not attainable\n"); ++ return -1; ++ } ++ bp->flags |= USING_MSI_FLAG; ++ ++ return 0; ++} ++#endif ++ ++static int bnx2x_req_irq(struct bnx2x *bp) ++{ ++ unsigned long flags; ++ int rc; ++ ++ if (bp->flags & USING_MSI_FLAG) ++ flags = 0; ++ else ++ flags = IRQF_SHARED; ++ ++ rc = request_irq(bp->pdev->irq, bnx2x_interrupt, flags, ++ bp->dev->name, bp->dev); ++ if (!rc) ++ bnx2x_fp(bp, 0, state) = BNX2X_FP_STATE_IRQ; ++ ++ return rc; ++} ++ ++static void bnx2x_napi_enable(struct bnx2x *bp) ++{ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ int i; ++ ++ for_each_rx_queue(bp, i) ++ napi_enable(&bnx2x_fp(bp, i, napi)); ++#else ++ netif_poll_enable(bp->dev); ++#endif ++} ++ ++static void bnx2x_napi_disable(struct bnx2x *bp) ++{ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ int i; ++ ++ for_each_rx_queue(bp, i) ++ napi_disable(&bnx2x_fp(bp, i, napi)); ++#else ++ netif_poll_disable(bp->dev); ++#endif ++} ++ ++static void bnx2x_netif_start(struct bnx2x *bp) ++{ ++ int intr_sem; ++ ++ intr_sem = atomic_dec_and_test(&bp->intr_sem); ++ smp_wmb(); /* Ensure that bp->intr_sem update is SMP-safe */ ++ ++ if (intr_sem) { ++ if (netif_running(bp->dev)) { ++ bnx2x_napi_enable(bp); ++ bnx2x_int_enable(bp); ++ if (bp->state == BNX2X_STATE_OPEN) ++ netif_tx_wake_all_queues(bp->dev); ++ } ++ } ++} ++ ++static void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw) ++{ ++ bnx2x_int_disable_sync(bp, disable_hw); ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ bnx2x_napi_disable(bp); ++#else ++ if (netif_running(bp->dev)) ++ bnx2x_napi_disable(bp); ++#endif ++ netif_tx_disable(bp->dev); ++ bp->dev->trans_start = jiffies; /* prevent tx timeout */ ++} ++ ++/* ++ * Init service functions ++ */ ++ ++static void bnx2x_set_mac_addr_e1(struct bnx2x *bp, int set) ++{ ++ struct mac_configuration_cmd *config = bnx2x_sp(bp, mac_config); ++ int port = BP_PORT(bp); ++ ++ /* CAM allocation ++ * unicasts 0-31:port0 32-63:port1 ++ * multicast 64-127:port0 128-191:port1 ++ */ ++ config->hdr.length = 2; ++ config->hdr.offset = port ? 32 : 0; ++ config->hdr.client_id = bp->fp->cl_id; ++ config->hdr.reserved1 = 0; ++ ++ /* primary MAC */ ++ config->config_table[0].cam_entry.msb_mac_addr = ++ swab16(*(u16 *)&bp->dev->dev_addr[0]); ++ config->config_table[0].cam_entry.middle_mac_addr = ++ swab16(*(u16 *)&bp->dev->dev_addr[2]); ++ config->config_table[0].cam_entry.lsb_mac_addr = ++ swab16(*(u16 *)&bp->dev->dev_addr[4]); ++ config->config_table[0].cam_entry.flags = cpu_to_le16(port); ++ if (set) ++ config->config_table[0].target_table_entry.flags = 0; ++ else ++ CAM_INVALIDATE(config->config_table[0]); ++ config->config_table[0].target_table_entry.clients_bit_vector = ++ cpu_to_le32(1 << BP_L_ID(bp)); ++ config->config_table[0].target_table_entry.vlan_id = 0; ++ ++ DP(NETIF_MSG_IFUP, "%s MAC (%04x:%04x:%04x)\n", ++ (set ? "setting" : "clearing"), ++ config->config_table[0].cam_entry.msb_mac_addr, ++ config->config_table[0].cam_entry.middle_mac_addr, ++ config->config_table[0].cam_entry.lsb_mac_addr); ++ ++ /* broadcast */ ++ config->config_table[1].cam_entry.msb_mac_addr = cpu_to_le16(0xffff); ++ config->config_table[1].cam_entry.middle_mac_addr = cpu_to_le16(0xffff); ++ config->config_table[1].cam_entry.lsb_mac_addr = cpu_to_le16(0xffff); ++ config->config_table[1].cam_entry.flags = cpu_to_le16(port); ++ if (set) ++ config->config_table[1].target_table_entry.flags = ++ TSTORM_CAM_TARGET_TABLE_ENTRY_BROADCAST; ++ else ++ CAM_INVALIDATE(config->config_table[1]); ++ config->config_table[1].target_table_entry.clients_bit_vector = ++ cpu_to_le32(1 << BP_L_ID(bp)); ++ config->config_table[1].target_table_entry.vlan_id = 0; ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mac_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); ++} ++ ++static void bnx2x_set_mac_addr_e1h(struct bnx2x *bp, int set) ++{ ++ struct mac_configuration_cmd_e1h *config = ++ (struct mac_configuration_cmd_e1h *)bnx2x_sp(bp, mac_config); ++ ++ /* CAM allocation for E1H ++ * unicasts: by func number ++ * multicast: 20+FUNC*20, 20 each ++ */ ++ config->hdr.length = 1; ++ config->hdr.offset = BP_FUNC(bp); ++ config->hdr.client_id = bp->fp->cl_id; ++ config->hdr.reserved1 = 0; ++ ++ /* primary MAC */ ++ config->config_table[0].msb_mac_addr = ++ swab16(*(u16 *)&bp->dev->dev_addr[0]); ++ config->config_table[0].middle_mac_addr = ++ swab16(*(u16 *)&bp->dev->dev_addr[2]); ++ config->config_table[0].lsb_mac_addr = ++ swab16(*(u16 *)&bp->dev->dev_addr[4]); ++ config->config_table[0].clients_bit_vector = ++ cpu_to_le32(1 << BP_L_ID(bp)); ++ config->config_table[0].vlan_id = 0; ++ config->config_table[0].e1hov_id = cpu_to_le16(bp->e1hov); ++ if (set) ++ config->config_table[0].flags = BP_PORT(bp); ++ else ++ config->config_table[0].flags = ++ MAC_CONFIGURATION_ENTRY_E1H_ACTION_TYPE; ++ ++ DP(NETIF_MSG_IFUP, "%s MAC (%04x:%04x:%04x) E1HOV %d CLID %d\n", ++ (set ? "setting" : "clearing"), ++ config->config_table[0].msb_mac_addr, ++ config->config_table[0].middle_mac_addr, ++ config->config_table[0].lsb_mac_addr, bp->e1hov, BP_L_ID(bp)); ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mac_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); ++} ++ ++static int bnx2x_wait_ramrod(struct bnx2x *bp, int state, int idx, ++ int *state_p, int poll) ++{ ++ /* can take a while if any port is running */ ++ int cnt = 5000; ++ ++ DP(NETIF_MSG_IFUP, "%s for state to become %x on IDX [%d]\n", ++ poll ? "polling" : "waiting", state, idx); ++ ++ might_sleep(); ++ while (cnt--) { ++ if (poll) { ++ bnx2x_rx_int(bp->fp, 10); ++ /* if index is different from 0 ++ * the reply for some commands will ++ * be on the non default queue ++ */ ++ if (idx) ++ bnx2x_rx_int(&bp->fp[idx], 10); ++ } ++ ++ mb(); /* state is changed by bnx2x_sp_event() */ ++ if (*state_p == state) { ++#ifdef BNX2X_STOP_ON_ERROR ++ DP(NETIF_MSG_IFUP, "exit (cnt %d)\n", 5000 - cnt); ++#endif ++ return 0; ++ } ++ ++ msleep(1); ++ ++ if (bp->panic) ++ return -EIO; ++ } ++ ++ /* timeout! */ ++ BNX2X_ERR("timeout %s for state %x on IDX [%d]\n", ++ poll ? "polling" : "waiting", state, idx); ++#ifdef BNX2X_STOP_ON_ERROR ++ bnx2x_panic(); ++#endif ++ ++ return -EBUSY; ++} ++ ++static int bnx2x_setup_leading(struct bnx2x *bp) ++{ ++ int rc; ++ ++ /* reset IGU state */ ++ bnx2x_ack_sb(bp, bp->fp[0].sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0); ++ ++ /* SETUP ramrod */ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_PORT_SETUP, 0, 0, 0, 0); ++ ++ /* Wait for completion */ ++ rc = bnx2x_wait_ramrod(bp, BNX2X_STATE_OPEN, 0, &(bp->state), 0); ++ ++ return rc; ++} ++ ++static int bnx2x_setup_multi(struct bnx2x *bp, int index) ++{ ++ struct bnx2x_fastpath *fp = &bp->fp[index]; ++ ++ /* reset IGU state */ ++ bnx2x_ack_sb(bp, fp->sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0); ++ ++ /* SETUP ramrod */ ++ fp->state = BNX2X_FP_STATE_OPENING; ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_CLIENT_SETUP, index, 0, ++ fp->cl_id, 0); ++ ++ /* Wait for completion */ ++ return bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_OPEN, index, ++ &(fp->state), 0); ++} ++ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++static int bnx2x_poll(struct napi_struct *napi, int budget); ++#else ++static int bnx2x_poll(struct net_device *dev, int *budget); ++#endif ++ ++static void bnx2x_set_int_mode_msix(struct bnx2x *bp, int *num_rx_queues_out, ++ int *num_tx_queues_out) ++{ ++ int _num_rx_queues = 0, _num_tx_queues = 0; ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ int i; ++#endif ++ ++ switch (bp->multi_mode) { ++ case ETH_RSS_MODE_DISABLED: ++ _num_rx_queues = 1; ++ _num_tx_queues = 1; ++ break; ++ ++ case ETH_RSS_MODE_REGULAR: ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ if (num_rx_queues) ++ _num_rx_queues = min_t(u32, num_rx_queues, ++ BNX2X_MAX_QUEUES(bp)); ++ else ++ _num_rx_queues = min_t(u32, num_online_cpus(), ++ BNX2X_MAX_QUEUES(bp)); ++#else ++ _num_rx_queues = 1; ++#endif ++ ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ if (num_tx_queues) ++ _num_tx_queues = min_t(u32, num_tx_queues, ++ BNX2X_MAX_QUEUES(bp)); ++ else ++ _num_tx_queues = min_t(u32, num_online_cpus(), ++ BNX2X_MAX_QUEUES(bp)); ++ ++ /* There must be not more Tx queues than Rx queues */ ++ if (_num_tx_queues > _num_rx_queues) { ++ BNX2X_ERR("number of tx queues (%d) > " ++ "number of rx queues (%d)" ++ " defaulting to %d\n", ++ _num_tx_queues, _num_rx_queues, ++ _num_rx_queues); ++ _num_tx_queues = _num_rx_queues; ++ } ++#else ++ _num_tx_queues = 1; ++#endif ++ break; ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ case ETH_RSS_MODE_VLAN_PRI: ++ case ETH_RSS_MODE_E1HOV_PRI: ++ case ETH_RSS_MODE_IP_DSCP: ++ _num_rx_queues = 0; ++ for (i = 0; i < BNX2X_MAX_COS; i++) ++ _num_rx_queues += bp->qs_per_cos[i]; ++ _num_tx_queues = _num_rx_queues; ++ break; ++#endif ++ ++ default: ++ _num_rx_queues = 1; ++ _num_tx_queues = 1; ++ break; ++ } ++ ++ *num_rx_queues_out = _num_rx_queues; ++ *num_tx_queues_out = _num_tx_queues; ++} ++ ++static int bnx2x_set_int_mode(struct bnx2x *bp) ++{ ++ int rc = 0; ++ ++ switch (int_mode) { ++ case INT_MODE_INTx: ++ case INT_MODE_MSI: ++ bp->num_rx_queues = 1; ++ bp->num_tx_queues = 1; ++ DP(NETIF_MSG_IFUP, "set number of queues to 1\n"); ++ break; ++ ++ case INT_MODE_MSIX: ++ default: ++ /* Set interrupt mode according to bp->multi_mode value */ ++ bnx2x_set_int_mode_msix(bp, &bp->num_rx_queues, &bp->num_tx_queues); ++ ++ DP(NETIF_MSG_IFUP, "set number of queues to: rx %d tx %d\n", ++ bp->num_rx_queues, bp->num_tx_queues); ++ ++ /* if we can't use MSI-X we only need one fp, ++ * so try to enable MSI-X with the requested number of fp's ++ * and fallback to MSI or legacy INTx with one fp ++ */ ++ rc = bnx2x_enable_msix(bp); ++ if (rc) { ++ /* failed to enable MSI-X */ ++ if (bp->multi_mode) ++ BNX2X_ERR("Multi requested but failed to " ++ "enable MSI-X (rx %d tx %d), " ++ "set number of queues to 1\n", ++ bp->num_rx_queues, bp->num_tx_queues); ++ bp->num_rx_queues = 1; ++ bp->num_tx_queues = 1; ++ } ++ break; ++ } ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ bp->dev->real_num_tx_queues = bp->num_tx_queues; ++#endif ++ return rc; ++} ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++static int bnx2x_cnic_notify(struct bnx2x *bp, int cmd); ++static void bnx2x_setup_cnic_irq_info(struct bnx2x *bp); ++#endif ++ ++/* must be called with rtnl_lock */ ++static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) ++{ ++ u32 load_code; ++ int i, rc; ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return -EPERM; ++#endif ++ ++ bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD; ++ ++ rc = bnx2x_set_int_mode(bp); ++ ++ if (bnx2x_alloc_mem(bp)) ++ return -ENOMEM; ++ ++ for_each_rx_queue(bp, i) ++ bnx2x_fp(bp, i, disable_tpa) = ++ ((bp->flags & TPA_ENABLE_FLAG) == 0); ++ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ for_each_rx_queue(bp, i) ++ netif_napi_add(bp->dev, &bnx2x_fp(bp, i, napi), ++ bnx2x_poll, 128); ++#endif ++ ++ bnx2x_napi_enable(bp); ++ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++ if (bp->flags & USING_MSIX_FLAG) { ++ rc = bnx2x_req_msix_irqs(bp); ++ if (rc) { ++ pci_disable_msix(bp->pdev); ++ goto load_error1; ++ } ++ } else { ++ /* Fall to INTx if failed to enable MSI-X due to lack of ++ memory (in bnx2x_set_int_mode()) */ ++ if ((rc != -ENOMEM) && (int_mode != INT_MODE_INTx)) ++ bnx2x_enable_msi(bp); ++#else ++ { ++#endif ++ bnx2x_ack_int(bp); ++ rc = bnx2x_req_irq(bp); ++ if (rc) { ++ BNX2X_ERR("IRQ request failed rc %d, aborting\n", rc); ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++ if (bp->flags & USING_MSI_FLAG) ++ pci_disable_msi(bp->pdev); ++#endif ++ goto load_error1; ++ } ++ if (bp->flags & USING_MSI_FLAG) { ++ bp->dev->irq = bp->pdev->irq; ++ printk(KERN_INFO PFX "%s: using MSI IRQ %d\n", ++ bp->dev->name, bp->pdev->irq); ++ } ++ } ++ ++ /* Send LOAD_REQUEST command to MCP ++ Returns the type of LOAD command: ++ if it is the first port to be initialized ++ common blocks should be initialized, otherwise - not ++ */ ++ if (!BP_NOMCP(bp)) { ++ load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ); ++ if (!load_code) { ++ BNX2X_ERR("MCP response failure, aborting\n"); ++ rc = -EBUSY; ++ goto load_error2; ++ } ++ if (load_code == FW_MSG_CODE_DRV_LOAD_REFUSED) { ++ rc = -EBUSY; /* other port in diagnostic mode */ ++ goto load_error2; ++ } ++ ++ } else { ++ int port = BP_PORT(bp); ++ ++ DP(NETIF_MSG_IFUP, "NO MCP - load counts %d, %d, %d\n", ++ load_count[0], load_count[1], load_count[2]); ++ load_count[0]++; ++ load_count[1 + port]++; ++ DP(NETIF_MSG_IFUP, "NO MCP - new load counts %d, %d, %d\n", ++ load_count[0], load_count[1], load_count[2]); ++ if (load_count[0] == 1) ++ load_code = FW_MSG_CODE_DRV_LOAD_COMMON; ++ else if (load_count[1 + port] == 1) ++ load_code = FW_MSG_CODE_DRV_LOAD_PORT; ++ else ++ load_code = FW_MSG_CODE_DRV_LOAD_FUNCTION; ++ } ++ ++ if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) || ++ (load_code == FW_MSG_CODE_DRV_LOAD_PORT)) ++ bp->port.pmf = 1; ++ else ++ bp->port.pmf = 0; ++ DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf); ++ ++ /* Initialize HW */ ++ rc = bnx2x_init_hw(bp, load_code); ++ if (rc) { ++ BNX2X_ERR("HW init failed, aborting\n"); ++ goto load_error2; ++ } ++ ++ /* Setup NIC internals and enable interrupts */ ++ bnx2x_nic_init(bp, load_code); ++ ++ if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) && ++ (bp->common.shmem2_base)) ++ SHMEM2_WR(bp, dcc_support, ++ (SHMEM_DCC_SUPPORT_DISABLE_ENABLE_PF_TLV | ++ SHMEM_DCC_SUPPORT_BANDWIDTH_ALLOCATION_TLV)); ++ ++ /* Send LOAD_DONE command to MCP */ ++ if (!BP_NOMCP(bp)) { ++ load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE); ++ if (!load_code) { ++ BNX2X_ERR("MCP response failure, aborting\n"); ++ rc = -EBUSY; ++ goto load_error3; ++ } ++ } ++ ++ bp->state = BNX2X_STATE_OPENING_WAIT4_PORT; ++ ++ rc = bnx2x_setup_leading(bp); ++ if (rc) { ++ BNX2X_ERR("Setup leading failed!\n"); ++#ifndef BNX2X_STOP_ON_ERROR ++ goto load_error3; ++#else ++ bp->panic = 1; ++ return -EBUSY; ++#endif ++ } ++ ++ if (CHIP_IS_E1H(bp)) ++ if (bp->mf_config & FUNC_MF_CFG_FUNC_DISABLED) { ++ DP(NETIF_MSG_IFUP, "mf_cfg function disabled\n"); ++ bp->state = BNX2X_STATE_DISABLED; ++ } ++ ++ if (bp->state == BNX2X_STATE_OPEN) { ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ /* Enable Timer scan */ ++ REG_WR(bp, TM_REG_EN_LINEAR0_TIMER + BP_PORT(bp)*4, 1); ++#endif ++ for_each_nondefault_queue(bp, i) { ++ rc = bnx2x_setup_multi(bp, i); ++ if (rc) ++#ifdef BCM_CNIC ++ goto load_error4; ++#else /* BNX2X_UPSTREAM */ ++ goto load_error3; ++#endif ++ } ++ ++ if (CHIP_IS_E1(bp)) ++ bnx2x_set_mac_addr_e1(bp, 1); ++ else ++ bnx2x_set_mac_addr_e1h(bp, 1); ++ } ++ ++ if (bp->port.pmf) ++ bnx2x_initial_phy_init(bp, load_mode); ++ ++ /* Start fast path */ ++ switch (load_mode) { ++ case LOAD_NORMAL: ++ if (bp->state == BNX2X_STATE_OPEN) { ++ /* Tx queue should be only reenabled */ ++ netif_tx_wake_all_queues(bp->dev); ++ } ++ /* Initialize the receive filter. */ ++ bnx2x_set_rx_mode(bp->dev); ++ break; ++ ++ case LOAD_OPEN: ++ netif_tx_start_all_queues(bp->dev); ++ if (bp->state != BNX2X_STATE_OPEN) ++ netif_tx_disable(bp->dev); ++ /* Initialize the receive filter. */ ++ bnx2x_set_rx_mode(bp->dev); ++ break; ++ ++ case LOAD_DIAG: ++ /* Initialize the receive filter. */ ++ bnx2x_set_rx_mode(bp->dev); ++ bp->state = BNX2X_STATE_DIAG; ++ break; ++ ++ default: ++ break; ++ } ++ ++ if (!bp->port.pmf) ++ bnx2x__link_status_update(bp); ++ ++ /* start the timer */ ++ mod_timer(&bp->timer, jiffies + bp->current_interval); ++ ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) /* ! BNX2X_UPSTREAM */ ++ for_each_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ fp->netq_flags &= ~(BNX2X_NETQ_RX_QUEUE_ALLOCATED | ++ BNX2X_NETQ_TX_QUEUE_ALLOCATED); ++ } ++ bp->n_rx_queues_allocated = 0; ++ bp->n_tx_queues_allocated = 0; ++ if (bp->netq_enabled) { ++ /* workaround for packets duplicated issue when NetQ enabled */ ++ bp->rx_mode = BNX2X_RX_MODE_NORMAL; ++ bnx2x_set_storm_rx_mode(bp); ++ } ++#endif ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ bnx2x_setup_cnic_irq_info(bp); ++ if (bp->state == BNX2X_STATE_OPEN) ++ bnx2x_cnic_notify(bp, CNIC_CTL_START_CMD); ++#endif ++ return 0; ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++load_error4: ++ /* Disable Timer scan */ ++ REG_WR(bp, TM_REG_EN_LINEAR0_TIMER + BP_PORT(bp)*4, 0); ++#endif ++load_error3: ++ bnx2x_int_disable_sync(bp, 1); ++ if (!BP_NOMCP(bp)) { ++ bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP); ++ bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE); ++ } ++ bp->port.pmf = 0; ++ /* Free SKBs, SGEs, TPA pool and driver internals */ ++ bnx2x_free_skbs(bp); ++ for_each_rx_queue(bp, i) ++ bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); ++load_error2: ++ /* Release IRQs */ ++ bnx2x_free_irq(bp); ++load_error1: ++ bnx2x_napi_disable(bp); ++#if defined(BNX2X_NEW_NAPI) && (LINUX_VERSION_CODE >= 0x02061b) /* BNX2X_UPSTREAM */ ++ for_each_rx_queue(bp, i) ++ netif_napi_del(&bnx2x_fp(bp, i, napi)); ++#endif ++ bnx2x_free_mem(bp); ++ ++ return rc; ++} ++ ++static int bnx2x_stop_multi(struct bnx2x *bp, int index) ++{ ++ struct bnx2x_fastpath *fp = &bp->fp[index]; ++ int rc; ++ ++ /* halt the connection */ ++ fp->state = BNX2X_FP_STATE_HALTING; ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_HALT, index, 0, fp->cl_id, 0); ++ ++ /* Wait for completion */ ++ rc = bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_HALTED, index, ++ &(fp->state), 1); ++ if (rc) /* timeout */ ++ return rc; ++ ++ /* delete cfc entry */ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_CFC_DEL, index, 0, 0, 1); ++ ++ /* Wait for completion */ ++ rc = bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_CLOSED, index, ++ &(fp->state), 1); ++ return rc; ++} ++ ++static int bnx2x_stop_leading(struct bnx2x *bp) ++{ ++ __le16 dsb_sp_prod_idx; ++ /* if the other port is handling traffic, ++ this can take a lot of time */ ++ int cnt = 500; ++ int rc; ++ ++ might_sleep(); ++ ++ /* Send HALT ramrod */ ++ bp->fp[0].state = BNX2X_FP_STATE_HALTING; ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_HALT, 0, 0, bp->fp->cl_id, 0); ++ ++ /* Wait for completion */ ++ rc = bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_HALTED, 0, ++ &(bp->fp[0].state), 1); ++ if (rc) /* timeout */ ++ return rc; ++ ++ dsb_sp_prod_idx = *bp->dsb_sp_prod; ++ ++ /* Send PORT_DELETE ramrod */ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_PORT_DEL, 0, 0, 0, 1); ++ ++ /* Wait for completion to arrive on default status block ++ we are going to reset the chip anyway ++ so there is not much to do if this times out ++ */ ++ while (dsb_sp_prod_idx == *bp->dsb_sp_prod) { ++ if (!cnt) { ++ DP(NETIF_MSG_IFDOWN, "timeout waiting for port del " ++ "dsb_sp_prod 0x%x != dsb_sp_prod_idx 0x%x\n", ++ *bp->dsb_sp_prod, dsb_sp_prod_idx); ++#ifdef BNX2X_STOP_ON_ERROR ++ bnx2x_panic(); ++#endif ++ rc = -EBUSY; ++ break; ++ } ++ cnt--; ++ msleep(1); ++ rmb(); /* Refresh the dsb_sp_prod */ ++ } ++ bp->state = BNX2X_STATE_CLOSING_WAIT4_UNLOAD; ++ bp->fp[0].state = BNX2X_FP_STATE_CLOSED; ++ ++ return rc; ++} ++ ++static void bnx2x_reset_func(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int func = BP_FUNC(bp); ++ int base, i; ++ ++ /* Configure IGU */ ++ REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0); ++ REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ /* Disable Timer scan */ ++ REG_WR(bp, TM_REG_EN_LINEAR0_TIMER + port*4, 0); ++ /* ++ * Wait for at least 10ms and up to 2 second for the timers scan to ++ * complete ++ */ ++ for (i = 0; i < 200; i++) { ++ msleep(10); ++ if (!REG_RD(bp, TM_REG_LIN0_SCAN_ON + port*4)) ++ break; ++ } ++#endif ++ /* Clear ILT */ ++ base = FUNC_ILT_BASE(func); ++ for (i = base; i < base + ILT_PER_FUNC; i++) ++ bnx2x_ilt_wr(bp, i, 0); ++} ++ ++static void bnx2x_reset_port(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ u32 val; ++ ++ REG_WR(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, 0); ++ ++ /* Do not rcv packets to BRB */ ++ REG_WR(bp, NIG_REG_LLH0_BRB1_DRV_MASK + port*4, 0x0); ++ /* Do not direct rcv packets that are not for MCP to the BRB */ ++ REG_WR(bp, (port ? NIG_REG_LLH1_BRB1_NOT_MCP : ++ NIG_REG_LLH0_BRB1_NOT_MCP), 0x0); ++ ++ /* Configure AEU */ ++ REG_WR(bp, MISC_REG_AEU_MASK_ATTN_FUNC_0 + port*4, 0); ++ ++ msleep(100); ++ /* Check for BRB port occupancy */ ++ val = REG_RD(bp, BRB1_REG_PORT_NUM_OCC_BLOCKS_0 + port*4); ++ if (val) ++ DP(NETIF_MSG_IFDOWN, ++ "BRB1 is not empty %d blocks are occupied\n", val); ++ ++ /* TODO: Close Doorbell port? */ ++} ++ ++static void bnx2x_reset_chip(struct bnx2x *bp, u32 reset_code) ++{ ++ DP(BNX2X_MSG_MCP, "function %d reset_code %x\n", ++ BP_FUNC(bp), reset_code); ++ ++ switch (reset_code) { ++ case FW_MSG_CODE_DRV_UNLOAD_COMMON: ++ bnx2x_reset_port(bp); ++ bnx2x_reset_func(bp); ++ bnx2x_reset_common(bp); ++ break; ++ ++ case FW_MSG_CODE_DRV_UNLOAD_PORT: ++ bnx2x_reset_port(bp); ++ bnx2x_reset_func(bp); ++ break; ++ ++ case FW_MSG_CODE_DRV_UNLOAD_FUNCTION: ++ bnx2x_reset_func(bp); ++ break; ++ ++ default: ++ BNX2X_ERR("Unknown reset_code (0x%x) from MCP\n", reset_code); ++ break; ++ } ++} ++ ++/* must be called with rtnl_lock */ ++static int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode) ++{ ++ int port = BP_PORT(bp); ++ u32 reset_code = 0; ++ int i, cnt, rc; ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ bnx2x_cnic_notify(bp, CNIC_CTL_STOP_CMD); ++#endif ++ bp->state = BNX2X_STATE_CLOSING_WAIT4_HALT; ++ ++ /* Set "drop all" */ ++ bp->rx_mode = BNX2X_RX_MODE_NONE; ++ bnx2x_set_storm_rx_mode(bp); ++ ++ /* Disable HW interrupts, NAPI and Tx */ ++ bnx2x_netif_stop(bp, 1); ++ ++ del_timer_sync(&bp->timer); ++ SHMEM_WR(bp, func_mb[BP_FUNC(bp)].drv_pulse_mb, ++ (DRV_PULSE_ALWAYS_ALIVE | bp->fw_drv_pulse_wr_seq)); ++ bnx2x_stats_handle(bp, STATS_EVENT_STOP); ++ ++ /* Release IRQs */ ++ bnx2x_free_irq(bp); ++ ++ /* Wait until tx fastpath tasks complete */ ++ for_each_tx_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ cnt = 1000; ++ while (bnx2x_has_tx_work_unload(fp)) { ++ ++ bnx2x_tx_int(fp); ++ if (!cnt) { ++ BNX2X_ERR("timeout waiting for queue[%d]\n", ++ i); ++#ifdef BNX2X_STOP_ON_ERROR ++ bnx2x_panic(); ++ return -EBUSY; ++#else ++ break; ++#endif ++ } ++ cnt--; ++ msleep(1); ++ } ++ } ++ /* Give HW time to discard old tx messages */ ++ msleep(1); ++ ++ if (CHIP_IS_E1(bp)) { ++ struct mac_configuration_cmd *config = ++ bnx2x_sp(bp, mcast_config); ++ ++ bnx2x_set_mac_addr_e1(bp, 0); ++ ++ for (i = 0; i < config->hdr.length; i++) ++ CAM_INVALIDATE(config->config_table[i]); ++ ++ config->hdr.length = i; ++ if (CHIP_REV_IS_SLOW(bp)) ++ config->hdr.offset = BNX2X_MAX_EMUL_MULTI*(1 + port); ++ else ++ config->hdr.offset = BNX2X_MAX_MULTICAST*(1 + port); ++ config->hdr.client_id = bp->fp->cl_id; ++ config->hdr.reserved1 = 0; ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mcast_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mcast_config)), 0); ++ ++ } else { /* E1H */ ++ REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 0); ++ ++ bnx2x_set_mac_addr_e1h(bp, 0); ++ ++ for (i = 0; i < MC_HASH_SIZE; i++) ++ REG_WR(bp, MC_HASH_OFFSET(bp, i), 0); ++ ++ REG_WR(bp, MISC_REG_E1HMF_MODE, 0); ++ } ++ ++ if (unload_mode == UNLOAD_NORMAL) ++ reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS; ++ ++ else if (bp->flags & NO_WOL_FLAG) ++ reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP; ++ ++ else if (bp->wol) { ++ u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0; ++ u8 *mac_addr = bp->dev->dev_addr; ++ u32 val; ++ /* The mac address is written to entries 1-4 to ++ preserve entry 0 which is used by the PMF */ ++ u8 entry = (BP_E1HVN(bp) + 1)*8; ++ ++ val = (mac_addr[0] << 8) | mac_addr[1]; ++ EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH + entry, val); ++ ++ val = (mac_addr[2] << 24) | (mac_addr[3] << 16) | ++ (mac_addr[4] << 8) | mac_addr[5]; ++ EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH + entry + 4, val); ++ ++ reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_EN; ++ ++ } else ++ reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS; ++ ++ /* Close multi and leading connections ++ Completions for ramrods are collected in a synchronous way */ ++ for_each_nondefault_queue(bp, i) ++ if (bnx2x_stop_multi(bp, i)) ++ goto unload_error; ++ ++ rc = bnx2x_stop_leading(bp); ++ if (rc) { ++ BNX2X_ERR("Stop leading failed!\n"); ++#ifdef BNX2X_STOP_ON_ERROR ++ return -EBUSY; ++#else ++ goto unload_error; ++#endif ++ } ++ ++unload_error: ++ if (!BP_NOMCP(bp)) ++ reset_code = bnx2x_fw_command(bp, reset_code); ++ else { ++ DP(NETIF_MSG_IFDOWN, "NO MCP - load counts %d, %d, %d\n", ++ load_count[0], load_count[1], load_count[2]); ++ load_count[0]--; ++ load_count[1 + port]--; ++ DP(NETIF_MSG_IFDOWN, "NO MCP - new load counts %d, %d, %d\n", ++ load_count[0], load_count[1], load_count[2]); ++ if (load_count[0] == 0) ++ reset_code = FW_MSG_CODE_DRV_UNLOAD_COMMON; ++ else if (load_count[1 + port] == 0) ++ reset_code = FW_MSG_CODE_DRV_UNLOAD_PORT; ++ else ++ reset_code = FW_MSG_CODE_DRV_UNLOAD_FUNCTION; ++ } ++ ++ if ((reset_code == FW_MSG_CODE_DRV_UNLOAD_COMMON) || ++ (reset_code == FW_MSG_CODE_DRV_UNLOAD_PORT)) ++ bnx2x__link_reset(bp); ++ ++ /* Reset the chip */ ++ bnx2x_reset_chip(bp, reset_code); ++ ++ /* Report UNLOAD_DONE to MCP */ ++ if (!BP_NOMCP(bp)) ++ bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE); ++ ++ bp->port.pmf = 0; ++ ++ /* Free SKBs, SGEs, TPA pool and driver internals */ ++ bnx2x_free_skbs(bp); ++ for_each_rx_queue(bp, i) ++ bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); ++#if defined(BNX2X_NEW_NAPI) && (LINUX_VERSION_CODE >= 0x02061b) /* BNX2X_UPSTREAM */ ++ for_each_rx_queue(bp, i) ++ netif_napi_del(&bnx2x_fp(bp, i, napi)); ++#endif ++ bnx2x_free_mem(bp); ++ ++ bp->state = BNX2X_STATE_CLOSED; ++ ++ netif_carrier_off(bp->dev); ++ ++ return 0; ++} ++ ++#if defined(INIT_DELAYED_WORK_DEFERRABLE) || defined(INIT_WORK_NAR) || (VMWARE_ESX_DDK_VERSION >= 40000) /* BNX2X_UPSTREAM */ ++static void bnx2x_reset_task(struct work_struct *work) ++{ ++ struct bnx2x *bp = container_of(work, struct bnx2x, reset_task); ++#else ++static void bnx2x_reset_task(void *data) ++{ ++ struct bnx2x *bp = (struct bnx2x *)data; ++#endif ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ BNX2X_ERR("reset task called but STOP_ON_ERROR defined" ++ " so reset not done to allow debug dump,\n" ++ KERN_ERR " you will need to reboot when done\n"); ++ return; ++#endif ++ ++ rtnl_lock(); ++ ++ if (!netif_running(bp->dev)) ++ goto reset_task_exit; ++ ++ bnx2x_nic_unload(bp, UNLOAD_NORMAL); ++ bnx2x_nic_load(bp, LOAD_NORMAL); ++ ++reset_task_exit: ++ rtnl_unlock(); ++} ++ ++/* end of nic load/unload */ ++ ++/* ethtool_ops */ ++ ++/* ++ * Init service functions ++ */ ++ ++static inline u32 bnx2x_get_pretend_reg(struct bnx2x *bp, int func) ++{ ++ switch (func) { ++ case 0: return PXP2_REG_PGL_PRETEND_FUNC_F0; ++ case 1: return PXP2_REG_PGL_PRETEND_FUNC_F1; ++ case 2: return PXP2_REG_PGL_PRETEND_FUNC_F2; ++ case 3: return PXP2_REG_PGL_PRETEND_FUNC_F3; ++ case 4: return PXP2_REG_PGL_PRETEND_FUNC_F4; ++ case 5: return PXP2_REG_PGL_PRETEND_FUNC_F5; ++ case 6: return PXP2_REG_PGL_PRETEND_FUNC_F6; ++ case 7: return PXP2_REG_PGL_PRETEND_FUNC_F7; ++ default: ++ BNX2X_ERR("Unsupported function index: %d\n", func); ++ return (u32)(-1); ++ } ++} ++ ++static void bnx2x_undi_int_disable_e1h(struct bnx2x *bp, int orig_func) ++{ ++ u32 reg = bnx2x_get_pretend_reg(bp, orig_func), new_val; ++ ++ /* Flush all outstanding writes */ ++ mmiowb(); ++ ++ /* Pretend to be function 0 */ ++ REG_WR(bp, reg, 0); ++ /* Flush the GRC transaction (in the chip) */ ++ new_val = REG_RD(bp, reg); ++ if (new_val != 0) { ++ BNX2X_ERR("Hmmm... Pretend register wasn't updated: (0,%d)!\n", ++ new_val); ++ BUG(); ++ } ++ ++ /* From now we are in the "like-E1" mode */ ++ bnx2x_int_disable(bp); ++ ++ /* Flush all outstanding writes */ ++ mmiowb(); ++ ++ /* Restore the original funtion settings */ ++ REG_WR(bp, reg, orig_func); ++ new_val = REG_RD(bp, reg); ++ if (new_val != orig_func) { ++ BNX2X_ERR("Hmmm... Pretend register wasn't updated: (%d,%d)!\n", ++ orig_func, new_val); ++ BUG(); ++ } ++} ++ ++static inline void bnx2x_undi_int_disable(struct bnx2x *bp, int func) ++{ ++ if (CHIP_IS_E1H(bp)) ++ bnx2x_undi_int_disable_e1h(bp, func); ++ else ++ bnx2x_int_disable(bp); ++} ++ ++static void __devinit bnx2x_undi_unload(struct bnx2x *bp) ++{ ++ u32 val; ++ ++ /* Check if there is any driver already loaded */ ++ val = REG_RD(bp, MISC_REG_UNPREPARED); ++ if (val == 0x1) { ++ /* Check if it is the UNDI driver ++ * UNDI driver initializes CID offset for normal bell to 0x7 ++ */ ++ bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); ++ val = REG_RD(bp, DORQ_REG_NORM_CID_OFST); ++ if (val == 0x7) { ++ u32 reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS; ++ /* save our func */ ++ int func = BP_FUNC(bp); ++ u32 swap_en; ++ u32 swap_val; ++ ++ /* clear the UNDI indication */ ++ REG_WR(bp, DORQ_REG_NORM_CID_OFST, 0); ++ ++ BNX2X_DEV_INFO("UNDI is active! reset device\n"); ++ ++ /* try unload UNDI on port 0 */ ++ bp->func = 0; ++ bp->fw_seq = ++ (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) & ++ DRV_MSG_SEQ_NUMBER_MASK); ++ reset_code = bnx2x_fw_command(bp, reset_code); ++ ++ /* if UNDI is loaded on the other port */ ++ if (reset_code != FW_MSG_CODE_DRV_UNLOAD_COMMON) { ++ ++ /* send "DONE" for previous unload */ ++ bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE); ++ ++ /* unload UNDI on port 1 */ ++ bp->func = 1; ++ bp->fw_seq = ++ (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) & ++ DRV_MSG_SEQ_NUMBER_MASK); ++ reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS; ++ ++ bnx2x_fw_command(bp, reset_code); ++ } ++ ++ /* now it's safe to release the lock */ ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); ++ ++ bnx2x_undi_int_disable(bp, func); ++ ++ /* close input traffic and wait for it */ ++ /* Do not rcv packets to BRB */ ++ REG_WR(bp, ++ (BP_PORT(bp) ? NIG_REG_LLH1_BRB1_DRV_MASK : ++ NIG_REG_LLH0_BRB1_DRV_MASK), 0x0); ++ /* Do not direct rcv packets that are not for MCP to ++ * the BRB */ ++ REG_WR(bp, ++ (BP_PORT(bp) ? NIG_REG_LLH1_BRB1_NOT_MCP : ++ NIG_REG_LLH0_BRB1_NOT_MCP), 0x0); ++ /* clear AEU */ ++ REG_WR(bp, ++ (BP_PORT(bp) ? MISC_REG_AEU_MASK_ATTN_FUNC_1 : ++ MISC_REG_AEU_MASK_ATTN_FUNC_0), 0); ++ msleep(10); ++ ++ /* save NIG port swap info */ ++ swap_val = REG_RD(bp, NIG_REG_PORT_SWAP); ++ swap_en = REG_RD(bp, NIG_REG_STRAP_OVERRIDE); ++ /* reset device */ ++ REG_WR(bp, ++ GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, ++ 0xd3ffffff); ++ REG_WR(bp, ++ GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, ++ 0x1403); ++ /* take the NIG out of reset and restore swap values */ ++ REG_WR(bp, ++ GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, ++ MISC_REGISTERS_RESET_REG_1_RST_NIG); ++ REG_WR(bp, NIG_REG_PORT_SWAP, swap_val); ++ REG_WR(bp, NIG_REG_STRAP_OVERRIDE, swap_en); ++ ++ /* send unload done to the MCP */ ++ bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE); ++ ++ /* restore our func and fw_seq */ ++ bp->func = func; ++ bp->fw_seq = ++ (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) & ++ DRV_MSG_SEQ_NUMBER_MASK); ++ ++ } else ++ bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); ++ } ++} ++ ++static void __devinit bnx2x_get_common_hwinfo(struct bnx2x *bp) ++{ ++ u32 val, val2, val3, val4, id; ++ u16 pmc; ++ ++ /* Get the chip revision id and number. */ ++ /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */ ++ val = REG_RD(bp, MISC_REG_CHIP_NUM); ++ id = ((val & 0xffff) << 16); ++ val = REG_RD(bp, MISC_REG_CHIP_REV); ++ id |= ((val & 0xf) << 12); ++ val = REG_RD(bp, MISC_REG_CHIP_METAL); ++ id |= ((val & 0xff) << 4); ++ val = REG_RD(bp, MISC_REG_BOND_ID); ++ id |= (val & 0xf); ++ bp->common.chip_id = id; ++ bp->link_params.chip_id = bp->common.chip_id; ++ BNX2X_DEV_INFO("chip ID is 0x%x\n", id); ++ ++ val = (REG_RD(bp, 0x2874) & 0x55); ++ if ((bp->common.chip_id & 0x1) || ++ (CHIP_IS_E1(bp) && val) || (CHIP_IS_E1H(bp) && (val == 0x55))) { ++ bp->flags |= ONE_PORT_FLAG; ++ BNX2X_DEV_INFO("single port device\n"); ++ } ++ ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_CFG4); ++ bp->common.flash_size = (NVRAM_1MB_SIZE << ++ (val & MCPR_NVM_CFG4_FLASH_SIZE)); ++ BNX2X_DEV_INFO("flash_size 0x%x (%d)\n", ++ bp->common.flash_size, bp->common.flash_size); ++ ++ bp->common.shmem_base = REG_RD(bp, MISC_REG_SHARED_MEM_ADDR); ++ bp->common.shmem2_base = REG_RD(bp, MISC_REG_GENERIC_CR_0); ++ bp->link_params.shmem_base = bp->common.shmem_base; ++ BNX2X_DEV_INFO("shmem offset 0x%x shmem2 offset 0x%x\n", ++ bp->common.shmem_base, bp->common.shmem2_base); ++ ++ if (!bp->common.shmem_base || ++ (bp->common.shmem_base < 0xA0000) || ++ (bp->common.shmem_base >= 0xC0000)) { ++ BNX2X_DEV_INFO("MCP not active\n"); ++ bp->flags |= NO_MCP_FLAG; ++ return; ++ } ++ ++ val = SHMEM_RD(bp, validity_map[BP_PORT(bp)]); ++ if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) ++ != (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) ++ BNX2X_ERR("BAD MCP validity signature\n"); ++ ++ bp->common.hw_config = SHMEM_RD(bp, dev_info.shared_hw_config.config); ++ BNX2X_DEV_INFO("hw_config 0x%08x\n", bp->common.hw_config); ++ ++ bp->link_params.hw_led_mode = ((bp->common.hw_config & ++ SHARED_HW_CFG_LED_MODE_MASK) >> ++ SHARED_HW_CFG_LED_MODE_SHIFT); ++ ++ bp->link_params.feature_config_flags = 0; ++ val = SHMEM_RD(bp, dev_info.shared_feature_config.config); ++ if (val & SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_ENABLED) ++ bp->link_params.feature_config_flags |= ++ FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED; ++ else ++ bp->link_params.feature_config_flags &= ++ ~FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED; ++ ++ val = SHMEM_RD(bp, dev_info.bc_rev) >> 8; ++ bp->common.bc_ver = val; ++ BNX2X_DEV_INFO("bc_ver %X\n", val); ++ if (val < BNX2X_BC_VER) { ++ /* for now only warn ++ * later we might need to enforce this */ ++ BNX2X_ERR("This driver needs bc_ver %X but found %X," ++ " please upgrade BC\n", BNX2X_BC_VER, val); ++ } ++ bp->link_params.feature_config_flags |= ++ (val >= REQ_BC_VER_4_VRFY_OPT_MDL) ? ++ FEATURE_CONFIG_BC_SUPPORTS_OPT_MDL_VRFY : 0; ++ ++ if (BP_E1HVN(bp) == 0) { ++ pci_read_config_word(bp->pdev, bp->pm_cap + PCI_PM_PMC, &pmc); ++ bp->flags |= (pmc & PCI_PM_CAP_PME_D3cold) ? 0 : NO_WOL_FLAG; ++ } else { ++ /* no WOL capability for E1HVN != 0 */ ++ bp->flags |= NO_WOL_FLAG; ++ } ++ BNX2X_DEV_INFO("%sWoL capable\n", ++ (bp->flags & NO_WOL_FLAG) ? "not " : ""); ++ ++ val = SHMEM_RD(bp, dev_info.shared_hw_config.part_num); ++ val2 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[4]); ++ val3 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[8]); ++ val4 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[12]); ++ ++ printk(KERN_INFO PFX "part number %X-%X-%X-%X\n", ++ val, val2, val3, val4); ++} ++ ++static void __devinit bnx2x_link_settings_supported(struct bnx2x *bp, ++ u32 switch_cfg) ++{ ++ int port = BP_PORT(bp); ++ u32 ext_phy_type; ++ ++ switch (switch_cfg) { ++ case SWITCH_CFG_1G: ++ BNX2X_DEV_INFO("switch_cfg 0x%x (1G)\n", switch_cfg); ++ ++ ext_phy_type = ++ SERDES_EXT_PHY_TYPE(bp->link_params.ext_phy_config); ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (Direct)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10baseT_Half | ++ SUPPORTED_10baseT_Full | ++ SUPPORTED_100baseT_Half | ++ SUPPORTED_100baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_2500baseX_Full | ++ SUPPORTED_TP | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Autoneg | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (5482)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10baseT_Half | ++ SUPPORTED_10baseT_Full | ++ SUPPORTED_100baseT_Half | ++ SUPPORTED_100baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_TP | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Autoneg | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ default: ++ BNX2X_ERR("NVRAM config error. " ++ "BAD SerDes ext_phy_config 0x%x\n", ++ bp->link_params.ext_phy_config); ++ return; ++ } ++ ++ bp->port.phy_addr = REG_RD(bp, NIG_REG_SERDES0_CTRL_PHY_ADDR + ++ port*0x10); ++ BNX2X_DEV_INFO("phy_addr 0x%x\n", bp->port.phy_addr); ++ break; ++ ++ case SWITCH_CFG_10G: ++ BNX2X_DEV_INFO("switch_cfg 0x%x (10G)\n", switch_cfg); ++ ++ ext_phy_type = ++ XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config); ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (Direct)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10baseT_Half | ++ SUPPORTED_10baseT_Full | ++ SUPPORTED_100baseT_Half | ++ SUPPORTED_100baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_2500baseX_Full | ++ SUPPORTED_10000baseT_Full | ++ SUPPORTED_TP | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Autoneg | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (8072)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10000baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Autoneg | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (8073)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10000baseT_Full | ++ SUPPORTED_2500baseX_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Autoneg | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (8705)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10000baseT_Full | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (8706)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10000baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (8726)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10000baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_Autoneg | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (8727)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10000baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_Autoneg | ++ SUPPORTED_FIBRE | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (SFX7101)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10000baseT_Full | ++ SUPPORTED_TP | ++ SUPPORTED_Autoneg | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481: ++ BNX2X_DEV_INFO("ext_phy_type 0x%x (BCM8481)\n", ++ ext_phy_type); ++ ++ bp->port.supported |= (SUPPORTED_10baseT_Half | ++ SUPPORTED_10baseT_Full | ++ SUPPORTED_100baseT_Half | ++ SUPPORTED_100baseT_Full | ++ SUPPORTED_1000baseT_Full | ++ SUPPORTED_10000baseT_Full | ++ SUPPORTED_TP | ++ SUPPORTED_Autoneg | ++ SUPPORTED_Pause | ++ SUPPORTED_Asym_Pause); ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE: ++ BNX2X_ERR("XGXS PHY Failure detected 0x%x\n", ++ bp->link_params.ext_phy_config); ++ break; ++ ++ default: ++ BNX2X_ERR("NVRAM config error. " ++ "BAD XGXS ext_phy_config 0x%x\n", ++ bp->link_params.ext_phy_config); ++ return; ++ } ++ ++ bp->port.phy_addr = REG_RD(bp, NIG_REG_XGXS0_CTRL_PHY_ADDR + ++ port*0x18); ++ BNX2X_DEV_INFO("phy_addr 0x%x\n", bp->port.phy_addr); ++ ++ break; ++ ++ default: ++ BNX2X_ERR("BAD switch_cfg link_config 0x%x\n", ++ bp->port.link_config); ++ return; ++ } ++ bp->link_params.phy_addr = bp->port.phy_addr; ++ ++ /* mask what we support according to speed_cap_mask */ ++ if (!(bp->link_params.speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF)) ++ bp->port.supported &= ~SUPPORTED_10baseT_Half; ++ ++ if (!(bp->link_params.speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL)) ++ bp->port.supported &= ~SUPPORTED_10baseT_Full; ++ ++ if (!(bp->link_params.speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF)) ++ bp->port.supported &= ~SUPPORTED_100baseT_Half; ++ ++ if (!(bp->link_params.speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL)) ++ bp->port.supported &= ~SUPPORTED_100baseT_Full; ++ ++ if (!(bp->link_params.speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_1G)) ++ bp->port.supported &= ~(SUPPORTED_1000baseT_Half | ++ SUPPORTED_1000baseT_Full); ++ ++ if (!(bp->link_params.speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G)) ++ bp->port.supported &= ~SUPPORTED_2500baseX_Full; ++ ++ if (!(bp->link_params.speed_cap_mask & ++ PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) ++ bp->port.supported &= ~SUPPORTED_10000baseT_Full; ++ ++ BNX2X_DEV_INFO("supported 0x%x\n", bp->port.supported); ++} ++ ++static void __devinit bnx2x_link_settings_requested(struct bnx2x *bp) ++{ ++ bp->link_params.req_duplex = DUPLEX_FULL; ++ ++ switch (bp->port.link_config & PORT_FEATURE_LINK_SPEED_MASK) { ++ case PORT_FEATURE_LINK_SPEED_AUTO: ++ if (bp->port.supported & SUPPORTED_Autoneg) { ++ bp->link_params.req_line_speed = SPEED_AUTO_NEG; ++ bp->port.advertising = bp->port.supported; ++ } else { ++ u32 ext_phy_type = ++ XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config); ++ ++ if ((ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) || ++ (ext_phy_type == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706)) { ++ /* force 10G, no AN */ ++ bp->link_params.req_line_speed = SPEED_10000; ++ bp->port.advertising = ++ (ADVERTISED_10000baseT_Full | ++ ADVERTISED_FIBRE); ++ break; ++ } ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " Autoneg not supported\n", ++ bp->port.link_config); ++ return; ++ } ++ break; ++ ++ case PORT_FEATURE_LINK_SPEED_10M_FULL: ++ if (bp->port.supported & SUPPORTED_10baseT_Full) { ++ bp->link_params.req_line_speed = SPEED_10; ++ bp->port.advertising = (ADVERTISED_10baseT_Full | ++ ADVERTISED_TP); ++ } else { ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " speed_cap_mask 0x%x\n", ++ bp->port.link_config, ++ bp->link_params.speed_cap_mask); ++ return; ++ } ++ break; ++ ++ case PORT_FEATURE_LINK_SPEED_10M_HALF: ++ if (bp->port.supported & SUPPORTED_10baseT_Half) { ++ bp->link_params.req_line_speed = SPEED_10; ++ bp->link_params.req_duplex = DUPLEX_HALF; ++ bp->port.advertising = (ADVERTISED_10baseT_Half | ++ ADVERTISED_TP); ++ } else { ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " speed_cap_mask 0x%x\n", ++ bp->port.link_config, ++ bp->link_params.speed_cap_mask); ++ return; ++ } ++ break; ++ ++ case PORT_FEATURE_LINK_SPEED_100M_FULL: ++ if (bp->port.supported & SUPPORTED_100baseT_Full) { ++ bp->link_params.req_line_speed = SPEED_100; ++ bp->port.advertising = (ADVERTISED_100baseT_Full | ++ ADVERTISED_TP); ++ } else { ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " speed_cap_mask 0x%x\n", ++ bp->port.link_config, ++ bp->link_params.speed_cap_mask); ++ return; ++ } ++ break; ++ ++ case PORT_FEATURE_LINK_SPEED_100M_HALF: ++ if (bp->port.supported & SUPPORTED_100baseT_Half) { ++ bp->link_params.req_line_speed = SPEED_100; ++ bp->link_params.req_duplex = DUPLEX_HALF; ++ bp->port.advertising = (ADVERTISED_100baseT_Half | ++ ADVERTISED_TP); ++ } else { ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " speed_cap_mask 0x%x\n", ++ bp->port.link_config, ++ bp->link_params.speed_cap_mask); ++ return; ++ } ++ break; ++ ++ case PORT_FEATURE_LINK_SPEED_1G: ++ if (bp->port.supported & SUPPORTED_1000baseT_Full) { ++ bp->link_params.req_line_speed = SPEED_1000; ++ bp->port.advertising = (ADVERTISED_1000baseT_Full | ++ ADVERTISED_TP); ++ } else { ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " speed_cap_mask 0x%x\n", ++ bp->port.link_config, ++ bp->link_params.speed_cap_mask); ++ return; ++ } ++ break; ++ ++ case PORT_FEATURE_LINK_SPEED_2_5G: ++ if (bp->port.supported & SUPPORTED_2500baseX_Full) { ++ bp->link_params.req_line_speed = SPEED_2500; ++ bp->port.advertising = (ADVERTISED_2500baseX_Full | ++ ADVERTISED_TP); ++ } else { ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " speed_cap_mask 0x%x\n", ++ bp->port.link_config, ++ bp->link_params.speed_cap_mask); ++ return; ++ } ++ break; ++ ++ case PORT_FEATURE_LINK_SPEED_10G_CX4: ++ case PORT_FEATURE_LINK_SPEED_10G_KX4: ++ case PORT_FEATURE_LINK_SPEED_10G_KR: ++ if (bp->port.supported & SUPPORTED_10000baseT_Full) { ++ bp->link_params.req_line_speed = SPEED_10000; ++ bp->port.advertising = (ADVERTISED_10000baseT_Full | ++ ADVERTISED_FIBRE); ++ } else { ++ BNX2X_ERR("NVRAM config error. " ++ "Invalid link_config 0x%x" ++ " speed_cap_mask 0x%x\n", ++ bp->port.link_config, ++ bp->link_params.speed_cap_mask); ++ return; ++ } ++ break; ++ ++ default: ++ BNX2X_ERR("NVRAM config error. " ++ "BAD link speed link_config 0x%x\n", ++ bp->port.link_config); ++ bp->link_params.req_line_speed = SPEED_AUTO_NEG; ++ bp->port.advertising = bp->port.supported; ++ break; ++ } ++ ++ bp->link_params.req_flow_ctrl = (bp->port.link_config & ++ PORT_FEATURE_FLOW_CONTROL_MASK); ++ if ((bp->link_params.req_flow_ctrl == BNX2X_FLOW_CTRL_AUTO) && ++ !(bp->port.supported & SUPPORTED_Autoneg)) ++ bp->link_params.req_flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ ++ BNX2X_DEV_INFO("req_line_speed %d req_duplex %d req_flow_ctrl 0x%x" ++ " advertising 0x%x\n", ++ bp->link_params.req_line_speed, ++ bp->link_params.req_duplex, ++ bp->link_params.req_flow_ctrl, bp->port.advertising); ++} ++ ++static void __devinit bnx2x_get_port_hwinfo(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ u32 val, val2; ++ u32 config; ++ u16 i; ++ u32 ext_phy_type; ++ ++ bp->link_params.bp = bp; ++ bp->link_params.port = port; ++ ++ bp->link_params.lane_config = ++ SHMEM_RD(bp, dev_info.port_hw_config[port].lane_config); ++ bp->link_params.ext_phy_config = ++ SHMEM_RD(bp, ++ dev_info.port_hw_config[port].external_phy_config); ++ /* BCM8727_NOC => BCM8727 no over current */ ++ if (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727_NOC) { ++ bp->link_params.ext_phy_config &= ++ ~PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK; ++ bp->link_params.ext_phy_config |= ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727; ++ bp->link_params.feature_config_flags |= ++ FEATURE_CONFIG_BCM8727_NOC; ++ } ++ ++ bp->link_params.speed_cap_mask = ++ SHMEM_RD(bp, ++ dev_info.port_hw_config[port].speed_capability_mask); ++ ++ bp->port.link_config = ++ SHMEM_RD(bp, dev_info.port_feature_config[port].link_config); ++ ++ /* Get the 4 lanes xgxs config rx and tx */ ++ for (i = 0; i < 2; i++) { ++ val = SHMEM_RD(bp, ++ dev_info.port_hw_config[port].xgxs_config_rx[i<<1]); ++ bp->link_params.xgxs_config_rx[i << 1] = ((val>>16) & 0xffff); ++ bp->link_params.xgxs_config_rx[(i << 1) + 1] = (val & 0xffff); ++ ++ val = SHMEM_RD(bp, ++ dev_info.port_hw_config[port].xgxs_config_tx[i<<1]); ++ bp->link_params.xgxs_config_tx[i << 1] = ((val>>16) & 0xffff); ++ bp->link_params.xgxs_config_tx[(i << 1) + 1] = (val & 0xffff); ++ } ++ ++ /* If the device is capable of WoL, set the default state according ++ * to the HW ++ */ ++ config = SHMEM_RD(bp, dev_info.port_feature_config[port].config); ++ bp->wol = (!(bp->flags & NO_WOL_FLAG) && ++ (config & PORT_FEATURE_WOL_ENABLED)); ++ ++ BNX2X_DEV_INFO("lane_config 0x%08x ext_phy_config 0x%08x" ++ " speed_cap_mask 0x%08x link_config 0x%08x\n", ++ bp->link_params.lane_config, ++ bp->link_params.ext_phy_config, ++ bp->link_params.speed_cap_mask, bp->port.link_config); ++ ++ bp->link_params.switch_cfg |= (bp->port.link_config & ++ PORT_FEATURE_CONNECTED_SWITCH_MASK); ++ bnx2x_link_settings_supported(bp, bp->link_params.switch_cfg); ++ ++ bnx2x_link_settings_requested(bp); ++ ++ /* ++ * If connected directly, work with the internal PHY, otherwise, work ++ * with the external PHY ++ */ ++ ext_phy_type = XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config); ++ if (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) ++ bp->mdio.prtad = bp->link_params.phy_addr; ++ ++ else if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) && ++ (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN)) { ++ bp->mdio.prtad = ++ XGXS_EXT_PHY_ADDR(bp->link_params.ext_phy_config); ++ } ++ ++ val2 = SHMEM_RD(bp, dev_info.port_hw_config[port].mac_upper); ++ val = SHMEM_RD(bp, dev_info.port_hw_config[port].mac_lower); ++ bp->dev->dev_addr[0] = (u8)(val2 >> 8 & 0xff); ++ bp->dev->dev_addr[1] = (u8)(val2 & 0xff); ++ bp->dev->dev_addr[2] = (u8)(val >> 24 & 0xff); ++ bp->dev->dev_addr[3] = (u8)(val >> 16 & 0xff); ++ bp->dev->dev_addr[4] = (u8)(val >> 8 & 0xff); ++ bp->dev->dev_addr[5] = (u8)(val & 0xff); ++ memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ETH_ALEN); ++#ifdef ETHTOOL_GPERMADDR /* BNX2X_UPSTREAM */ ++ memcpy(bp->dev->perm_addr, bp->dev->dev_addr, ETH_ALEN); ++#endif ++} ++ ++static int __devinit bnx2x_get_hwinfo(struct bnx2x *bp) ++{ ++ int func = BP_FUNC(bp); ++ u32 val, val2; ++ int rc = 0; ++ ++ bnx2x_get_common_hwinfo(bp); ++ ++ bp->e1hov = 0; ++ bp->e1hmf = 0; ++ if (CHIP_IS_E1H(bp)) { ++ bp->mf_config = ++ SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); ++ ++ val = (SHMEM_RD(bp, mf_cfg.func_mf_config[FUNC_0].e1hov_tag) & ++ FUNC_MF_CFG_E1HOV_TAG_MASK); ++ if (val != FUNC_MF_CFG_E1HOV_TAG_DEFAULT) ++ bp->e1hmf = 1; ++ BNX2X_DEV_INFO("%s function mode\n", ++ IS_E1HMF(bp) ? "multi" : "single"); ++ ++ if (IS_E1HMF(bp)) { ++ val = (SHMEM_RD(bp, mf_cfg.func_mf_config[func]. ++ e1hov_tag) & ++ FUNC_MF_CFG_E1HOV_TAG_MASK); ++ if (val != FUNC_MF_CFG_E1HOV_TAG_DEFAULT) { ++ bp->e1hov = val; ++ BNX2X_DEV_INFO("E1HOV for func %d is %d " ++ "(0x%04x)\n", ++ func, bp->e1hov, bp->e1hov); ++ } else { ++ BNX2X_ERR("!!! No valid E1HOV for func %d," ++ " aborting\n", func); ++ rc = -EPERM; ++ } ++ } else { ++ if (BP_E1HVN(bp)) { ++ BNX2X_ERR("!!! VN %d in single function mode," ++ " aborting\n", BP_E1HVN(bp)); ++ rc = -EPERM; ++ } ++ } ++ } ++ ++ if (!BP_NOMCP(bp)) { ++ bnx2x_get_port_hwinfo(bp); ++ ++ bp->fw_seq = (SHMEM_RD(bp, func_mb[func].drv_mb_header) & ++ DRV_MSG_SEQ_NUMBER_MASK); ++ BNX2X_DEV_INFO("fw_seq 0x%08x\n", bp->fw_seq); ++ } ++ ++ if (IS_E1HMF(bp)) { ++ val2 = SHMEM_RD(bp, mf_cfg.func_mf_config[func].mac_upper); ++ val = SHMEM_RD(bp, mf_cfg.func_mf_config[func].mac_lower); ++ if ((val2 != FUNC_MF_CFG_UPPERMAC_DEFAULT) && ++ (val != FUNC_MF_CFG_LOWERMAC_DEFAULT)) { ++ bp->dev->dev_addr[0] = (u8)(val2 >> 8 & 0xff); ++ bp->dev->dev_addr[1] = (u8)(val2 & 0xff); ++ bp->dev->dev_addr[2] = (u8)(val >> 24 & 0xff); ++ bp->dev->dev_addr[3] = (u8)(val >> 16 & 0xff); ++ bp->dev->dev_addr[4] = (u8)(val >> 8 & 0xff); ++ bp->dev->dev_addr[5] = (u8)(val & 0xff); ++ memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ++ ETH_ALEN); ++#ifdef ETHTOOL_GPERMADDR /* BNX2X_UPSTREAM */ ++ memcpy(bp->dev->perm_addr, bp->dev->dev_addr, ++ ETH_ALEN); ++#endif ++ } ++ ++ return rc; ++ } ++ ++ if (BP_NOMCP(bp)) { ++ /* only supposed to happen on emulation/FPGA */ ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++ BNX2X_ERR("warning random MAC workaround active\n"); ++ random_ether_addr(bp->dev->dev_addr); ++#else ++ BNX2X_ERR("warning constant MAC workaround active\n"); ++ bp->dev->dev_addr[0] = 0; ++ bp->dev->dev_addr[1] = 0x50; ++ bp->dev->dev_addr[2] = 0xc2; ++ bp->dev->dev_addr[3] = 0x2c; ++ bp->dev->dev_addr[4] = (func + 1) * 0x10; ++ bp->dev->dev_addr[5] = 0x00; ++ memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ETH_ALEN); ++#endif ++#ifdef ETHTOOL_GPERMADDR /* BNX2X_UPSTREAM */ ++ memcpy(bp->dev->perm_addr, bp->dev->dev_addr, ETH_ALEN); ++#endif ++ } ++ ++ return rc; ++} ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++static u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb); ++ ++static void __devinit bnx2x_init_safc(struct bnx2x *bp) ++{ ++ int i, cos, max_cos, max_queues; ++ ++ bp->flags &= ~SAFC_TX_FLAG; ++ ++ for (i = 0; i < BNX2X_MAX_PRIORITY; i++) ++ bp->pri_map[i] = 0; ++ ++ max_cos = BNX2X_MAX_COS; ++ bp->cos_weight_sum = 0; ++ for (cos = 0; cos < BNX2X_MAX_COS; cos++) { ++ bp->qs_per_cos[cos] = 0; ++ bp->cos_min_rate[cos] = 0; ++ } ++ ++ switch (bp->multi_mode) { ++ case ETH_RSS_MODE_DISABLED: ++ bp->qs_per_cos[0] = 1; ++ break; ++ ++ case ETH_RSS_MODE_REGULAR: ++ bp->qs_per_cos[0] = min_t(u32, num_online_cpus(), ++ BNX2X_MAX_QUEUES(bp)); ++ break; ++ ++ case ETH_RSS_MODE_VLAN_PRI: ++ case ETH_RSS_MODE_E1HOV_PRI: ++ if (CHIP_IS_E1H(bp)) { ++ bp->flags |= SAFC_TX_FLAG; ++ max_cos = BNX2X_MAX_TX_COS; ++ } ++ ++ /* fallthrough */ ++ ++ case ETH_RSS_MODE_IP_DSCP: ++ /* COS 0 must have at least 1 queue */ ++ if (BNX2X_COS_QUEUES(0) == 0) { ++ printk(KERN_ERR PFX ++ "Illegal number of queues per COS 0 " ++ "defaulting to 1\n"); ++ qs_per_cos |= 0x1; ++ } ++ ++ for (i = 0; i < BNX2X_MAX_PRIORITY; i++) { ++ cos = ((pri_map & (0xf << i*4)) >> i*4); ++ if (cos < max_cos) { ++ bp->pri_map[i] = cos; ++ if (BNX2X_COS_QUEUES(cos) == 0) { ++ printk(KERN_ERR PFX ++ "Illegal number of queues per " ++ "COS %d defaulting to 1\n", ++ cos); ++ qs_per_cos |= (0x1 << cos*8); ++ } ++ } else { ++ printk(KERN_ERR PFX ++ "Illegal COS (%d) for priority %d " ++ "defaulting to 0\n", cos, i); ++ pri_map &= ~(0xf << i*4); ++ bp->pri_map[i] = 0; ++ } ++ } ++ ++ max_queues = BNX2X_MAX_QUEUES(bp); ++ for (cos = 0; cos < BNX2X_MAX_COS; cos++) { ++ i = BNX2X_COS_QUEUES(cos); ++ if (i <= max_queues) { ++ bp->qs_per_cos[cos] = i; ++ max_queues -= i; ++ } else { ++ bp->qs_per_cos[cos] = max_queues; ++ max_queues = 0; ++ } ++ if (bp->qs_per_cos[cos] == 0) ++ for (i = 0; i < BNX2X_MAX_PRIORITY; i++) ++ if (bp->pri_map[i] == cos) { ++ printk(KERN_ERR PFX ++ "Illegal COS (%d) for " ++ "priority %d " ++ "defaulting to 0\n", ++ cos, i); ++ pri_map &= ~(0xf << i*4); ++ bp->pri_map[i] = 0; ++ } ++ } ++ ++ bp->dev->select_queue = bnx2x_select_queue; ++ ++ if (cos_min_rate == 0) ++ break; ++ ++ for (cos = 0; cos < BNX2X_MAX_COS; cos++) { ++ i = BNX2X_COS_RATE(cos); ++ if (i > 100) { ++ printk(KERN_ERR PFX ++ "Illegal rate (%d) for COS %d " ++ "defaulting to 100\n", i, cos); ++ i = 100; ++ cos_min_rate |= (i << cos*8); ++ } ++ i *= 100; ++ if (bp->qs_per_cos[cos]) { ++ if (i == 0) { ++ printk(KERN_ERR PFX ++ "Illegal rate for COS %d " ++ "defaulting to 1\n", cos); ++ i = DEF_MIN_RATE; ++ cos_min_rate |= (i << cos*8); ++ } ++ } else { ++ if (i) { ++ printk(KERN_ERR PFX ++ "Illegal rate (%d) for COS %d " ++ "with no queues " ++ "defaulting to 0\n", i, cos); ++ i = 0; ++ cos_min_rate &= ~(0xff << cos*8); ++ } ++ } ++ bp->cos_min_rate[cos] = i; ++ bp->cos_weight_sum += i; ++ } ++ break; ++ ++ default: ++ bp->multi_mode = ETH_RSS_MODE_DISABLED; ++ bp->qs_per_cos[0] = 1; ++ break; ++ } ++} ++#endif ++ ++static int __devinit bnx2x_init_bp(struct bnx2x *bp) ++{ ++ int func = BP_FUNC(bp); ++ int timer_interval; ++ int rc; ++ ++ /* Disable interrupt handling until HW is initialized */ ++ atomic_set(&bp->intr_sem, 1); ++ smp_wmb(); /* Ensure that bp->intr_sem update is SMP-safe */ ++ ++ mutex_init(&bp->port.phy_mutex); ++ ++#if defined(INIT_DELAYED_WORK_DEFERRABLE) || defined(INIT_WORK_NAR) || (VMWARE_ESX_DDK_VERSION >= 40000) /* BNX2X_UPSTREAM */ ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ INIT_DELAYED_WORK(&bp->sp_task, bnx2x_sp_task); ++#else ++ INIT_WORK(&bp->sp_task, bnx2x_sp_task); ++#endif ++ INIT_WORK(&bp->reset_task, bnx2x_reset_task); ++#else ++ INIT_WORK(&bp->sp_task, bnx2x_sp_task, bp); ++ INIT_WORK(&bp->reset_task, bnx2x_reset_task, bp); ++#endif ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ bp->sp_running = 0; ++#endif ++ ++ rc = bnx2x_get_hwinfo(bp); ++ ++ /* need to reset chip if undi was active */ ++ if (!BP_NOMCP(bp)) ++ bnx2x_undi_unload(bp); ++ ++ if (CHIP_REV_IS_FPGA(bp)) ++ printk(KERN_ERR PFX "FPGA detected\n"); ++ ++ if (BP_NOMCP(bp) && (func == 0)) ++ printk(KERN_ERR PFX ++ "MCP disabled, must load devices in order!\n"); ++ ++ /* Set multi queue mode and priority mapping */ ++ if ((multi_mode != ETH_RSS_MODE_DISABLED) && ++ ((int_mode == INT_MODE_INTx) || (int_mode == INT_MODE_MSI))) { ++ printk(KERN_ERR PFX ++ "Multi disabled since int_mode requested is not MSI-X\n"); ++ multi_mode = ETH_RSS_MODE_DISABLED; ++ } ++ bp->multi_mode = multi_mode; ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++ bnx2x_init_safc(bp); ++#endif ++ ++ /* Set TPA flags */ ++ if (disable_tpa) { ++ bp->flags &= ~TPA_ENABLE_FLAG; ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++ bp->dev->features &= ~NETIF_F_LRO; ++#endif ++ } else { ++ bp->flags |= TPA_ENABLE_FLAG; ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++ bp->dev->features |= NETIF_F_LRO; ++#endif ++ } ++ ++ if (CHIP_IS_E1(bp)) ++ bp->dropless_fc = 0; ++ else ++ bp->dropless_fc = dropless_fc; ++ ++ bp->mrrs = mrrs; ++ ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ /* MCP workaround */ ++ if (BP_NOMCP(bp)) { ++ /* [0x24c0]table size: ++ PCI_REG_GRC_PTR(func)->pci_msix_control = 0x10; */ ++ REG_WR(bp, 0x24c0, 0x10); ++ /* [0x24c4]table pointer: ++ PCI_REG_GRC_PTR(func)->pci_msix_tbl_off_bir = ++ 0x440000 + 0x2000*func; */ ++ REG_WR(bp, 0x24c4, 0x440000 + 0x2000*func); ++ /* [0x24c8]PBA pointer: ++ PCI_REG_GRC_PTR(func)->pci_msix_pba_off_bir = ++ 0x441800 + 0x2000*func; */ ++ REG_WR(bp, 0x24c8, 0x441800 + 0x2000*func); ++ } ++#endif ++ bp->tx_ring_size = MAX_TX_AVAIL; ++ bp->rx_ring_size = MAX_RX_AVAIL; ++ ++ bp->rx_csum = 1; ++ ++ bp->tx_ticks = 50; ++ bp->rx_ticks = 25; ++ ++ timer_interval = (CHIP_REV_IS_SLOW(bp) ? 5*HZ : HZ); ++ bp->current_interval = (poll ? poll : timer_interval); ++ ++ init_timer(&bp->timer); ++ bp->timer.expires = jiffies + bp->current_interval; ++ bp->timer.data = (unsigned long) bp; ++ bp->timer.function = bnx2x_timer; ++ ++ return rc; ++} ++ ++/* ++ * ethtool service functions ++ */ ++ ++/* All ethtool functions called with rtnl_lock */ ++ ++static int bnx2x_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ cmd->supported = bp->port.supported; ++ cmd->advertising = bp->port.advertising; ++ ++ if (netif_carrier_ok(dev)) { ++ cmd->speed = bp->link_vars.line_speed; ++ cmd->duplex = bp->link_vars.duplex; ++ } else { ++ cmd->speed = bp->link_params.req_line_speed; ++ cmd->duplex = bp->link_params.req_duplex; ++ } ++ if (IS_E1HMF(bp)) { ++ u16 vn_max_rate; ++ ++ vn_max_rate = ((bp->mf_config & FUNC_MF_CFG_MAX_BW_MASK) >> ++ FUNC_MF_CFG_MAX_BW_SHIFT) * 100; ++ if (vn_max_rate < cmd->speed) ++ cmd->speed = vn_max_rate; ++ } ++ ++ if (bp->link_params.switch_cfg == SWITCH_CFG_10G) { ++ u32 ext_phy_type = ++ XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config); ++ ++ switch (ext_phy_type) { ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8727: ++ cmd->port = PORT_FIBRE; ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101: ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481: ++ cmd->port = PORT_TP; ++ break; ++ ++ case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE: ++ BNX2X_ERR("XGXS PHY Failure detected 0x%x\n", ++ bp->link_params.ext_phy_config); ++ break; ++ ++ default: ++ DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n", ++ bp->link_params.ext_phy_config); ++ break; ++ } ++ } else ++ cmd->port = PORT_TP; ++ ++ cmd->phy_address = bp->mdio.prtad; ++ cmd->transceiver = XCVR_INTERNAL; ++ ++ if (bp->link_params.req_line_speed == SPEED_AUTO_NEG) ++ cmd->autoneg = AUTONEG_ENABLE; ++ else ++ cmd->autoneg = AUTONEG_DISABLE; ++ ++ cmd->maxtxpkt = 0; ++ cmd->maxrxpkt = 0; ++ ++ DP(NETIF_MSG_LINK, "ethtool_cmd: cmd %d\n" ++ DP_LEVEL " supported 0x%x advertising 0x%x speed %d\n" ++ DP_LEVEL " duplex %d port %d phy_address %d transceiver %d\n" ++ DP_LEVEL " autoneg %d maxtxpkt %d maxrxpkt %d\n", ++ cmd->cmd, cmd->supported, cmd->advertising, cmd->speed, ++ cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver, ++ cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt); ++ ++ return 0; ++} ++ ++static int bnx2x_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ u32 advertising; ++ ++ if (IS_E1HMF(bp)) ++ return 0; ++ ++ DP(NETIF_MSG_LINK, "ethtool_cmd: cmd %d\n" ++ DP_LEVEL " supported 0x%x advertising 0x%x speed %d\n" ++ DP_LEVEL " duplex %d port %d phy_address %d transceiver %d\n" ++ DP_LEVEL " autoneg %d maxtxpkt %d maxrxpkt %d\n", ++ cmd->cmd, cmd->supported, cmd->advertising, cmd->speed, ++ cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver, ++ cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt); ++ ++ if (cmd->autoneg == AUTONEG_ENABLE) { ++ if (!(bp->port.supported & SUPPORTED_Autoneg)) { ++ DP(NETIF_MSG_LINK, "Autoneg not supported\n"); ++ return -EINVAL; ++ } ++ ++ /* advertise the requested speed and duplex if supported */ ++ cmd->advertising &= bp->port.supported; ++ ++ bp->link_params.req_line_speed = SPEED_AUTO_NEG; ++ bp->link_params.req_duplex = DUPLEX_FULL; ++ bp->port.advertising |= (ADVERTISED_Autoneg | ++ cmd->advertising); ++ ++ } else { /* forced speed */ ++ /* advertise the requested speed and duplex if supported */ ++ switch (cmd->speed) { ++ case SPEED_10: ++ if (cmd->duplex == DUPLEX_FULL) { ++ if (!(bp->port.supported & ++ SUPPORTED_10baseT_Full)) { ++ DP(NETIF_MSG_LINK, ++ "10M full not supported\n"); ++ return -EINVAL; ++ } ++ ++ advertising = (ADVERTISED_10baseT_Full | ++ ADVERTISED_TP); ++ } else { ++ if (!(bp->port.supported & ++ SUPPORTED_10baseT_Half)) { ++ DP(NETIF_MSG_LINK, ++ "10M half not supported\n"); ++ return -EINVAL; ++ } ++ ++ advertising = (ADVERTISED_10baseT_Half | ++ ADVERTISED_TP); ++ } ++ break; ++ ++ case SPEED_100: ++ if (cmd->duplex == DUPLEX_FULL) { ++ if (!(bp->port.supported & ++ SUPPORTED_100baseT_Full)) { ++ DP(NETIF_MSG_LINK, ++ "100M full not supported\n"); ++ return -EINVAL; ++ } ++ ++ advertising = (ADVERTISED_100baseT_Full | ++ ADVERTISED_TP); ++ } else { ++ if (!(bp->port.supported & ++ SUPPORTED_100baseT_Half)) { ++ DP(NETIF_MSG_LINK, ++ "100M half not supported\n"); ++ return -EINVAL; ++ } ++ ++ advertising = (ADVERTISED_100baseT_Half | ++ ADVERTISED_TP); ++ } ++ break; ++ ++ case SPEED_1000: ++ if (cmd->duplex != DUPLEX_FULL) { ++ DP(NETIF_MSG_LINK, "1G half not supported\n"); ++ return -EINVAL; ++ } ++ ++ if (!(bp->port.supported & SUPPORTED_1000baseT_Full)) { ++ DP(NETIF_MSG_LINK, "1G full not supported\n"); ++ return -EINVAL; ++ } ++ ++ advertising = (ADVERTISED_1000baseT_Full | ++ ADVERTISED_TP); ++ break; ++ ++ case SPEED_2500: ++ if (cmd->duplex != DUPLEX_FULL) { ++ DP(NETIF_MSG_LINK, ++ "2.5G half not supported\n"); ++ return -EINVAL; ++ } ++ ++ if (!(bp->port.supported & SUPPORTED_2500baseX_Full)) { ++ DP(NETIF_MSG_LINK, ++ "2.5G full not supported\n"); ++ return -EINVAL; ++ } ++ ++ advertising = (ADVERTISED_2500baseX_Full | ++ ADVERTISED_TP); ++ break; ++ ++ case SPEED_10000: ++ if (cmd->duplex != DUPLEX_FULL) { ++ DP(NETIF_MSG_LINK, "10G half not supported\n"); ++ return -EINVAL; ++ } ++ ++ if (!(bp->port.supported & SUPPORTED_10000baseT_Full)) { ++ DP(NETIF_MSG_LINK, "10G full not supported\n"); ++ return -EINVAL; ++ } ++ ++ advertising = (ADVERTISED_10000baseT_Full | ++ ADVERTISED_FIBRE); ++ break; ++ ++ default: ++ DP(NETIF_MSG_LINK, "Unsupported speed\n"); ++ return -EINVAL; ++ } ++ ++ bp->link_params.req_line_speed = cmd->speed; ++ bp->link_params.req_duplex = cmd->duplex; ++ bp->port.advertising = advertising; ++ } ++ ++ DP(NETIF_MSG_LINK, "req_line_speed %d\n" ++ DP_LEVEL " req_duplex %d advertising 0x%x\n", ++ bp->link_params.req_line_speed, bp->link_params.req_duplex, ++ bp->port.advertising); ++ ++ if (netif_running(dev)) { ++ bnx2x_stats_handle(bp, STATS_EVENT_STOP); ++ bnx2x_link_set(bp); ++ } ++ ++ return 0; ++} ++ ++#define IS_E1_ONLINE(info) (((info) & RI_E1_ONLINE) == RI_E1_ONLINE) ++#define IS_E1H_ONLINE(info) (((info) & RI_E1H_ONLINE) == RI_E1H_ONLINE) ++ ++static int bnx2x_get_regs_len(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int regdump_len = 0; ++ int i; ++ ++ if (CHIP_IS_E1(bp)) { ++ for (i = 0; i < REGS_COUNT; i++) ++ if (IS_E1_ONLINE(reg_addrs[i].info)) ++ regdump_len += reg_addrs[i].size; ++ ++ for (i = 0; i < WREGS_COUNT_E1; i++) ++ if (IS_E1_ONLINE(wreg_addrs_e1[i].info)) ++ regdump_len += wreg_addrs_e1[i].size * ++ (1 + wreg_addrs_e1[i].read_regs_count); ++ ++ } else { /* E1H */ ++ for (i = 0; i < REGS_COUNT; i++) ++ if (IS_E1H_ONLINE(reg_addrs[i].info)) ++ regdump_len += reg_addrs[i].size; ++ ++ for (i = 0; i < WREGS_COUNT_E1H; i++) ++ if (IS_E1H_ONLINE(wreg_addrs_e1h[i].info)) ++ regdump_len += wreg_addrs_e1h[i].size * ++ (1 + wreg_addrs_e1h[i].read_regs_count); ++ } ++ regdump_len *= 4; ++ regdump_len += sizeof(struct dump_hdr); ++ ++ return regdump_len; ++} ++ ++static void bnx2x_get_regs(struct net_device *dev, ++ struct ethtool_regs *regs, void *_p) ++{ ++ u32 *p = _p, i, j; ++ struct bnx2x *bp = netdev_priv(dev); ++ struct dump_hdr dump_hdr = {0}; ++ ++ regs->version = 0; ++ memset(p, 0, regs->len); ++ ++ if (!netif_running(bp->dev)) ++ return; ++ ++ dump_hdr.hdr_size = (sizeof(struct dump_hdr) / 4) - 1; ++ dump_hdr.dump_sign = dump_sign_all; ++ dump_hdr.xstorm_waitp = REG_RD(bp, XSTORM_WAITP_ADDR); ++ dump_hdr.tstorm_waitp = REG_RD(bp, TSTORM_WAITP_ADDR); ++ dump_hdr.ustorm_waitp = REG_RD(bp, USTORM_WAITP_ADDR); ++ dump_hdr.cstorm_waitp = REG_RD(bp, CSTORM_WAITP_ADDR); ++ dump_hdr.info = CHIP_IS_E1(bp) ? RI_E1_ONLINE : RI_E1H_ONLINE; ++ ++ memcpy(p, &dump_hdr, sizeof(struct dump_hdr)); ++ p += dump_hdr.hdr_size + 1; ++ ++ if (CHIP_IS_E1(bp)) { ++ for (i = 0; i < REGS_COUNT; i++) ++ if (IS_E1_ONLINE(reg_addrs[i].info)) ++ for (j = 0; j < reg_addrs[i].size; j++) ++ *p++ = REG_RD(bp, ++ reg_addrs[i].addr + j*4); ++ ++ } else { /* E1H */ ++ for (i = 0; i < REGS_COUNT; i++) ++ if (IS_E1H_ONLINE(reg_addrs[i].info)) ++ for (j = 0; j < reg_addrs[i].size; j++) ++ *p++ = REG_RD(bp, ++ reg_addrs[i].addr + j*4); ++ } ++} ++ ++#define PHY_FW_VER_LEN 10 ++ ++static void bnx2x_get_drvinfo(struct net_device *dev, ++ struct ethtool_drvinfo *info) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ u8 phy_fw_ver[PHY_FW_VER_LEN]; ++ ++ strcpy(info->driver, DRV_MODULE_NAME); ++ strcpy(info->version, DRV_MODULE_VERSION); ++ ++ phy_fw_ver[0] = '\0'; ++ if (bp->port.pmf) { ++ bnx2x_acquire_phy_lock(bp); ++ bnx2x_get_ext_phy_fw_version(&bp->link_params, ++ (bp->state != BNX2X_STATE_CLOSED), ++ phy_fw_ver, PHY_FW_VER_LEN); ++ bnx2x_release_phy_lock(bp); ++ } ++ ++ snprintf(info->fw_version, 32, "BC:%d.%d.%d%s%s", ++ (bp->common.bc_ver & 0xff0000) >> 16, ++ (bp->common.bc_ver & 0xff00) >> 8, ++ (bp->common.bc_ver & 0xff), ++ ((phy_fw_ver[0] != '\0') ? " PHY:" : ""), phy_fw_ver); ++ strcpy(info->bus_info, pci_name(bp->pdev)); ++ info->n_stats = BNX2X_NUM_STATS; ++ info->testinfo_len = BNX2X_NUM_TESTS; ++ info->eedump_len = bp->common.flash_size; ++ info->regdump_len = bnx2x_get_regs_len(dev); ++} ++ ++static void bnx2x_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ if (bp->flags & NO_WOL_FLAG) { ++ wol->supported = 0; ++ wol->wolopts = 0; ++ } else { ++ wol->supported = WAKE_MAGIC; ++ if (bp->wol) ++ wol->wolopts = WAKE_MAGIC; ++ else ++ wol->wolopts = 0; ++ } ++ memset(&wol->sopass, 0, sizeof(wol->sopass)); ++} ++ ++static int bnx2x_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ if (wol->wolopts & ~WAKE_MAGIC) ++ return -EINVAL; ++ ++ if (wol->wolopts & WAKE_MAGIC) { ++ if (bp->flags & NO_WOL_FLAG) ++ return -EINVAL; ++ ++ bp->wol = 1; ++ } else ++ bp->wol = 0; ++ ++ return 0; ++} ++ ++static u32 bnx2x_get_msglevel(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ return bp->msglevel; ++} ++ ++static void bnx2x_set_msglevel(struct net_device *dev, u32 level) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ if (capable(CAP_NET_ADMIN)) ++ bp->msglevel = level; ++} ++ ++static int bnx2x_nway_reset(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ if (!bp->port.pmf) ++ return 0; ++ ++ if (netif_running(dev)) { ++ bnx2x_stats_handle(bp, STATS_EVENT_STOP); ++ bnx2x_link_set(bp); ++ } ++ ++ return 0; ++} ++ ++static u32 bnx2x_get_link(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ return bp->link_vars.link_up; ++} ++ ++#if (LINUX_VERSION_CODE >= 0x020418) /* BNX2X_UPSTREAM */ ++static int bnx2x_get_eeprom_len(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ return bp->common.flash_size; ++} ++#endif ++ ++static int bnx2x_acquire_nvram_lock(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int count, i; ++ u32 val = 0; ++ ++ /* adjust timeout for emulation/FPGA */ ++ count = NVRAM_TIMEOUT_COUNT; ++ if (CHIP_REV_IS_SLOW(bp)) ++ count *= 100; ++ ++ /* request access to nvram interface */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_SW_ARB, ++ (MCPR_NVM_SW_ARB_ARB_REQ_SET1 << port)); ++ ++ for (i = 0; i < count*10; i++) { ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_SW_ARB); ++ if (val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port)) ++ break; ++ ++ udelay(5); ++ } ++ ++ if (!(val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port))) { ++ DP(BNX2X_MSG_NVM, "cannot get access to nvram interface\n"); ++ return -EBUSY; ++ } ++ ++ return 0; ++} ++ ++static int bnx2x_release_nvram_lock(struct bnx2x *bp) ++{ ++ int port = BP_PORT(bp); ++ int count, i; ++ u32 val = 0; ++ ++ /* adjust timeout for emulation/FPGA */ ++ count = NVRAM_TIMEOUT_COUNT; ++ if (CHIP_REV_IS_SLOW(bp)) ++ count *= 100; ++ ++ /* relinquish nvram interface */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_SW_ARB, ++ (MCPR_NVM_SW_ARB_ARB_REQ_CLR1 << port)); ++ ++ for (i = 0; i < count*10; i++) { ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_SW_ARB); ++ if (!(val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port))) ++ break; ++ ++ udelay(5); ++ } ++ ++ if (val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port)) { ++ DP(BNX2X_MSG_NVM, "cannot free access to nvram interface\n"); ++ return -EBUSY; ++ } ++ ++ return 0; ++} ++ ++static void bnx2x_enable_nvram_access(struct bnx2x *bp) ++{ ++ u32 val; ++ ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE); ++ ++ /* enable both bits, even on read */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE, ++ (val | MCPR_NVM_ACCESS_ENABLE_EN | ++ MCPR_NVM_ACCESS_ENABLE_WR_EN)); ++} ++ ++static void bnx2x_disable_nvram_access(struct bnx2x *bp) ++{ ++ u32 val; ++ ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE); ++ ++ /* disable both bits, even after read */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE, ++ (val & ~(MCPR_NVM_ACCESS_ENABLE_EN | ++ MCPR_NVM_ACCESS_ENABLE_WR_EN))); ++} ++ ++static int bnx2x_nvram_read_dword(struct bnx2x *bp, u32 offset, __be32 *ret_val, ++ u32 cmd_flags) ++{ ++ int count, i, rc; ++ u32 val; ++ ++ /* build the command word */ ++ cmd_flags |= MCPR_NVM_COMMAND_DOIT; ++ ++ /* need to clear DONE bit separately */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, MCPR_NVM_COMMAND_DONE); ++ ++ /* address of the NVRAM to read from */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_ADDR, ++ (offset & MCPR_NVM_ADDR_NVM_ADDR_VALUE)); ++ ++ /* issue a read command */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, cmd_flags); ++ ++ /* adjust timeout for emulation/FPGA */ ++ count = NVRAM_TIMEOUT_COUNT; ++ if (CHIP_REV_IS_SLOW(bp)) ++ count *= 100; ++ ++ /* wait for completion */ ++ *ret_val = 0; ++ rc = -EBUSY; ++ for (i = 0; i < count; i++) { ++ udelay(5); ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_COMMAND); ++ ++ if (val & MCPR_NVM_COMMAND_DONE) { ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_READ); ++ /* we read nvram data in cpu order ++ * but ethtool sees it as an array of bytes ++ * converting to big-endian will do the work */ ++ *ret_val = cpu_to_be32(val); ++ rc = 0; ++ break; ++ } ++ } ++ ++ return rc; ++} ++ ++static int bnx2x_nvram_read(struct bnx2x *bp, u32 offset, u8 *ret_buf, ++ int buf_size) ++{ ++ int rc; ++ u32 cmd_flags; ++ __be32 val; ++ ++ if ((offset & 0x03) || (buf_size & 0x03) || (buf_size == 0)) { ++ DP(BNX2X_MSG_NVM, ++ "Invalid parameter: offset 0x%x buf_size 0x%x\n", ++ offset, buf_size); ++ return -EINVAL; ++ } ++ ++ if (offset + buf_size > bp->common.flash_size) { ++ DP(BNX2X_MSG_NVM, "Invalid parameter: offset (0x%x) +" ++ " buf_size (0x%x) > flash_size (0x%x)\n", ++ offset, buf_size, bp->common.flash_size); ++ return -EINVAL; ++ } ++ ++ /* request access to nvram interface */ ++ rc = bnx2x_acquire_nvram_lock(bp); ++ if (rc) ++ return rc; ++ ++ /* enable access to nvram interface */ ++ bnx2x_enable_nvram_access(bp); ++ ++ /* read the first word(s) */ ++ cmd_flags = MCPR_NVM_COMMAND_FIRST; ++ while ((buf_size > sizeof(u32)) && (rc == 0)) { ++ rc = bnx2x_nvram_read_dword(bp, offset, &val, cmd_flags); ++ memcpy(ret_buf, &val, 4); ++ ++ /* advance to the next dword */ ++ offset += sizeof(u32); ++ ret_buf += sizeof(u32); ++ buf_size -= sizeof(u32); ++ cmd_flags = 0; ++ } ++ ++ if (rc == 0) { ++ cmd_flags |= MCPR_NVM_COMMAND_LAST; ++ rc = bnx2x_nvram_read_dword(bp, offset, &val, cmd_flags); ++ memcpy(ret_buf, &val, 4); ++ } ++ ++ /* disable access to nvram interface */ ++ bnx2x_disable_nvram_access(bp); ++ bnx2x_release_nvram_lock(bp); ++ ++ return rc; ++} ++ ++static int bnx2x_get_eeprom(struct net_device *dev, ++ struct ethtool_eeprom *eeprom, u8 *eebuf) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int rc; ++ ++ if (!netif_running(dev)) ++ return -EAGAIN; ++ ++ DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n" ++ DP_LEVEL " magic 0x%x offset 0x%x (%d) len 0x%x (%d)\n", ++ eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset, ++ eeprom->len, eeprom->len); ++ ++ /* parameters already validated in ethtool_get_eeprom */ ++ ++ rc = bnx2x_nvram_read(bp, eeprom->offset, eebuf, eeprom->len); ++ ++ return rc; ++} ++ ++static int bnx2x_nvram_write_dword(struct bnx2x *bp, u32 offset, u32 val, ++ u32 cmd_flags) ++{ ++ int count, i, rc; ++ ++ /* build the command word */ ++ cmd_flags |= MCPR_NVM_COMMAND_DOIT | MCPR_NVM_COMMAND_WR; ++ ++ /* need to clear DONE bit separately */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, MCPR_NVM_COMMAND_DONE); ++ ++ /* write the data */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_WRITE, val); ++ ++ /* address of the NVRAM to write to */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_ADDR, ++ (offset & MCPR_NVM_ADDR_NVM_ADDR_VALUE)); ++ ++ /* issue the write command */ ++ REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, cmd_flags); ++ ++ /* adjust timeout for emulation/FPGA */ ++ count = NVRAM_TIMEOUT_COUNT; ++ if (CHIP_REV_IS_SLOW(bp)) ++ count *= 100; ++ ++ /* wait for completion */ ++ rc = -EBUSY; ++ for (i = 0; i < count; i++) { ++ udelay(5); ++ val = REG_RD(bp, MCP_REG_MCPR_NVM_COMMAND); ++ if (val & MCPR_NVM_COMMAND_DONE) { ++ rc = 0; ++ break; ++ } ++ } ++ ++ return rc; ++} ++ ++#define BYTE_OFFSET(offset) (8 * (offset & 0x03)) ++ ++static int bnx2x_nvram_write1(struct bnx2x *bp, u32 offset, u8 *data_buf, ++ int buf_size) ++{ ++ int rc; ++ u32 cmd_flags; ++ u32 align_offset; ++ __be32 val; ++ ++ if (offset + buf_size > bp->common.flash_size) { ++ DP(BNX2X_MSG_NVM, "Invalid parameter: offset (0x%x) +" ++ " buf_size (0x%x) > flash_size (0x%x)\n", ++ offset, buf_size, bp->common.flash_size); ++ return -EINVAL; ++ } ++ ++ /* request access to nvram interface */ ++ rc = bnx2x_acquire_nvram_lock(bp); ++ if (rc) ++ return rc; ++ ++ /* enable access to nvram interface */ ++ bnx2x_enable_nvram_access(bp); ++ ++ cmd_flags = (MCPR_NVM_COMMAND_FIRST | MCPR_NVM_COMMAND_LAST); ++ align_offset = (offset & ~0x03); ++ rc = bnx2x_nvram_read_dword(bp, align_offset, &val, cmd_flags); ++ ++ if (rc == 0) { ++ val &= ~(0xff << BYTE_OFFSET(offset)); ++ val |= (*data_buf << BYTE_OFFSET(offset)); ++ ++ /* nvram data is returned as an array of bytes ++ * convert it back to cpu order */ ++ val = be32_to_cpu(val); ++ ++ rc = bnx2x_nvram_write_dword(bp, align_offset, val, ++ cmd_flags); ++ } ++ ++ /* disable access to nvram interface */ ++ bnx2x_disable_nvram_access(bp); ++ bnx2x_release_nvram_lock(bp); ++ ++ return rc; ++} ++ ++static int bnx2x_nvram_write(struct bnx2x *bp, u32 offset, u8 *data_buf, ++ int buf_size) ++{ ++ int rc; ++ u32 cmd_flags; ++ u32 val; ++ u32 written_so_far; ++ ++ if (buf_size == 1) /* ethtool */ ++ return bnx2x_nvram_write1(bp, offset, data_buf, buf_size); ++ ++ if ((offset & 0x03) || (buf_size & 0x03) || (buf_size == 0)) { ++ DP(BNX2X_MSG_NVM, ++ "Invalid parameter: offset 0x%x buf_size 0x%x\n", ++ offset, buf_size); ++ return -EINVAL; ++ } ++ ++ if (offset + buf_size > bp->common.flash_size) { ++ DP(BNX2X_MSG_NVM, "Invalid parameter: offset (0x%x) +" ++ " buf_size (0x%x) > flash_size (0x%x)\n", ++ offset, buf_size, bp->common.flash_size); ++ return -EINVAL; ++ } ++ ++ /* request access to nvram interface */ ++ rc = bnx2x_acquire_nvram_lock(bp); ++ if (rc) ++ return rc; ++ ++ /* enable access to nvram interface */ ++ bnx2x_enable_nvram_access(bp); ++ ++ written_so_far = 0; ++ cmd_flags = MCPR_NVM_COMMAND_FIRST; ++ while ((written_so_far < buf_size) && (rc == 0)) { ++ if (written_so_far == (buf_size - sizeof(u32))) ++ cmd_flags |= MCPR_NVM_COMMAND_LAST; ++ else if (((offset + 4) % NVRAM_PAGE_SIZE) == 0) ++ cmd_flags |= MCPR_NVM_COMMAND_LAST; ++ else if ((offset % NVRAM_PAGE_SIZE) == 0) ++ cmd_flags |= MCPR_NVM_COMMAND_FIRST; ++ ++ memcpy(&val, data_buf, 4); ++ ++ rc = bnx2x_nvram_write_dword(bp, offset, val, cmd_flags); ++ ++ /* advance to the next dword */ ++ offset += sizeof(u32); ++ data_buf += sizeof(u32); ++ written_so_far += sizeof(u32); ++ cmd_flags = 0; ++ } ++ ++ /* disable access to nvram interface */ ++ bnx2x_disable_nvram_access(bp); ++ bnx2x_release_nvram_lock(bp); ++ ++ return rc; ++} ++ ++static int bnx2x_set_eeprom(struct net_device *dev, ++ struct ethtool_eeprom *eeprom, u8 *eebuf) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int port = BP_PORT(bp); ++ int rc = 0; ++ ++ if (!netif_running(dev)) ++ return -EAGAIN; ++ ++ DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n" ++ DP_LEVEL " magic 0x%x offset 0x%x (%d) len 0x%x (%d)\n", ++ eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset, ++ eeprom->len, eeprom->len); ++ ++ /* parameters already validated in ethtool_set_eeprom */ ++ ++ /* PHY eeprom can be accessed only by the PMF */ ++ if ((eeprom->magic >= 0x50485900) && (eeprom->magic <= 0x504859FF) && ++ !bp->port.pmf) ++ return -EINVAL; ++ ++ if (eeprom->magic == 0x50485950) { ++ /* 'PHYP' (0x50485950): prepare phy for FW upgrade */ ++ bnx2x_stats_handle(bp, STATS_EVENT_STOP); ++ ++ bnx2x_acquire_phy_lock(bp); ++ rc |= bnx2x_link_reset(&bp->link_params, ++ &bp->link_vars, 0); ++ if (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101) ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0, ++ MISC_REGISTERS_GPIO_HIGH, port); ++ bnx2x_release_phy_lock(bp); ++ bnx2x_link_report(bp); ++ ++ } else if (eeprom->magic == 0x50485952) { ++ /* 'PHYR' (0x50485952): re-init link after FW upgrade */ ++ if ((bp->state == BNX2X_STATE_OPEN) || ++ (bp->state == BNX2X_STATE_DISABLED)) { ++ bnx2x_acquire_phy_lock(bp); ++ rc |= bnx2x_link_reset(&bp->link_params, ++ &bp->link_vars, 1); ++ ++ rc |= bnx2x_phy_init(&bp->link_params, ++ &bp->link_vars); ++ bnx2x_release_phy_lock(bp); ++ bnx2x_calc_fc_adv(bp); ++ } ++ } else if (eeprom->magic == 0x53985943) { ++ /* 'PHYC' (0x53985943): PHY FW upgrade completed */ ++ if (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config) == ++ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101) { ++ u8 ext_phy_addr = ++ XGXS_EXT_PHY_ADDR(bp->link_params.ext_phy_config); ++ ++ /* DSP Remove Download Mode */ ++ bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0, ++ MISC_REGISTERS_GPIO_LOW, port); ++ ++ bnx2x_acquire_phy_lock(bp); ++ ++ bnx2x_sfx7101_sp_sw_reset(bp, port, ext_phy_addr); ++ ++ /* wait 0.5 sec to allow it to run */ ++ msleep(500); ++ bnx2x_ext_phy_hw_reset(bp, port); ++ msleep(500); ++ bnx2x_release_phy_lock(bp); ++ } ++ } else ++ rc = bnx2x_nvram_write(bp, eeprom->offset, eebuf, eeprom->len); ++ ++ return rc; ++} ++ ++static int bnx2x_get_coalesce(struct net_device *dev, ++ struct ethtool_coalesce *coal) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ memset(coal, 0, sizeof(struct ethtool_coalesce)); ++ ++ coal->rx_coalesce_usecs = bp->rx_ticks; ++ coal->tx_coalesce_usecs = bp->tx_ticks; ++ ++ return 0; ++} ++ ++#define BNX2X_MAX_COALES_TOUT (0xf0*12) /* Maximal coalescing timeout in us */ ++static int bnx2x_set_coalesce(struct net_device *dev, ++ struct ethtool_coalesce *coal) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ bp->rx_ticks = (u16) coal->rx_coalesce_usecs; ++ if (bp->rx_ticks > BNX2X_MAX_COALES_TOUT) ++ bp->rx_ticks = BNX2X_MAX_COALES_TOUT; ++ ++ bp->tx_ticks = (u16) coal->tx_coalesce_usecs; ++ if (bp->tx_ticks > BNX2X_MAX_COALES_TOUT) ++ bp->tx_ticks = BNX2X_MAX_COALES_TOUT; ++ ++ if (netif_running(dev)) ++ bnx2x_update_coalesce(bp); ++ ++ return 0; ++} ++ ++static void bnx2x_get_ringparam(struct net_device *dev, ++ struct ethtool_ringparam *ering) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ ering->rx_max_pending = MAX_RX_AVAIL; ++ ering->rx_mini_max_pending = 0; ++ ering->rx_jumbo_max_pending = 0; ++ ++ ering->rx_pending = bp->rx_ring_size; ++ ering->rx_mini_pending = 0; ++ ering->rx_jumbo_pending = 0; ++ ++ ering->tx_max_pending = MAX_TX_AVAIL; ++ ering->tx_pending = bp->tx_ring_size; ++} ++ ++static int bnx2x_set_ringparam(struct net_device *dev, ++ struct ethtool_ringparam *ering) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int rc = 0; ++ ++ if ((ering->rx_pending > MAX_RX_AVAIL) || ++ (ering->tx_pending > MAX_TX_AVAIL) || ++ (ering->tx_pending <= MAX_SKB_FRAGS + 4)) ++ return -EINVAL; ++ ++ bp->rx_ring_size = ering->rx_pending; ++ bp->tx_ring_size = ering->tx_pending; ++ ++ if (netif_running(dev)) { ++ bnx2x_nic_unload(bp, UNLOAD_NORMAL); ++ rc = bnx2x_nic_load(bp, LOAD_NORMAL); ++ } ++ ++ return rc; ++} ++ ++static void bnx2x_get_pauseparam(struct net_device *dev, ++ struct ethtool_pauseparam *epause) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ epause->autoneg = (bp->link_params.req_flow_ctrl == ++ BNX2X_FLOW_CTRL_AUTO) && ++ (bp->link_params.req_line_speed == SPEED_AUTO_NEG); ++ ++ epause->rx_pause = ((bp->link_vars.flow_ctrl & BNX2X_FLOW_CTRL_RX) == ++ BNX2X_FLOW_CTRL_RX); ++ epause->tx_pause = ((bp->link_vars.flow_ctrl & BNX2X_FLOW_CTRL_TX) == ++ BNX2X_FLOW_CTRL_TX); ++ ++ DP(NETIF_MSG_LINK, "ethtool_pauseparam: cmd %d\n" ++ DP_LEVEL " autoneg %d rx_pause %d tx_pause %d\n", ++ epause->cmd, epause->autoneg, epause->rx_pause, epause->tx_pause); ++} ++ ++static int bnx2x_set_pauseparam(struct net_device *dev, ++ struct ethtool_pauseparam *epause) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ if (IS_E1HMF(bp)) ++ return 0; ++ ++ DP(NETIF_MSG_LINK, "ethtool_pauseparam: cmd %d\n" ++ DP_LEVEL " autoneg %d rx_pause %d tx_pause %d\n", ++ epause->cmd, epause->autoneg, epause->rx_pause, epause->tx_pause); ++ ++ bp->link_params.req_flow_ctrl = BNX2X_FLOW_CTRL_AUTO; ++ ++ if (epause->rx_pause) ++ bp->link_params.req_flow_ctrl |= BNX2X_FLOW_CTRL_RX; ++ ++ if (epause->tx_pause) ++ bp->link_params.req_flow_ctrl |= BNX2X_FLOW_CTRL_TX; ++ ++ if (bp->link_params.req_flow_ctrl == BNX2X_FLOW_CTRL_AUTO) ++ bp->link_params.req_flow_ctrl = BNX2X_FLOW_CTRL_NONE; ++ ++ if (epause->autoneg) { ++ if (!(bp->port.supported & SUPPORTED_Autoneg)) { ++ DP(NETIF_MSG_LINK, "autoneg not supported\n"); ++ return -EINVAL; ++ } ++ ++ if (bp->link_params.req_line_speed == SPEED_AUTO_NEG) ++ bp->link_params.req_flow_ctrl = BNX2X_FLOW_CTRL_AUTO; ++ } ++ ++ DP(NETIF_MSG_LINK, ++ "req_flow_ctrl 0x%x\n", bp->link_params.req_flow_ctrl); ++ ++ if (netif_running(dev)) { ++ bnx2x_stats_handle(bp, STATS_EVENT_STOP); ++ bnx2x_link_set(bp); ++ } ++ ++ return 0; ++} ++ ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++static int bnx2x_set_flags(struct net_device *dev, u32 data) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int changed = 0; ++ int rc = 0; ++ ++ /* TPA requires Rx CSUM offloading */ ++ if ((data & ETH_FLAG_LRO) && bp->rx_csum) { ++ if (!(dev->features & NETIF_F_LRO)) { ++ dev->features |= NETIF_F_LRO; ++ bp->flags |= TPA_ENABLE_FLAG; ++ changed = 1; ++ } ++ ++ } else if (dev->features & NETIF_F_LRO) { ++ dev->features &= ~NETIF_F_LRO; ++ bp->flags &= ~TPA_ENABLE_FLAG; ++ changed = 1; ++ } ++ ++ if (changed && netif_running(dev)) { ++ bnx2x_nic_unload(bp, UNLOAD_NORMAL); ++ rc = bnx2x_nic_load(bp, LOAD_NORMAL); ++ } ++ ++ return rc; ++} ++#endif ++ ++static u32 bnx2x_get_rx_csum(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ return bp->rx_csum; ++} ++ ++static int bnx2x_set_rx_csum(struct net_device *dev, u32 data) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int rc = 0; ++ ++ bp->rx_csum = data; ++ ++ /* Disable TPA, when Rx CSUM is disabled. Otherwise all ++ TPA'ed packets will be discarded due to wrong TCP CSUM */ ++ if (!data) { ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++ u32 flags = ethtool_op_get_flags(dev); ++ ++ rc = bnx2x_set_flags(dev, (flags & ~ETH_FLAG_LRO)); ++#else ++ bp->flags &= ~TPA_ENABLE_FLAG; ++ if (netif_running(dev)) { ++ bnx2x_nic_unload(bp, UNLOAD_NORMAL); ++ rc = bnx2x_nic_load(bp, LOAD_NORMAL); ++ } ++#endif ++ } ++ ++ return rc; ++} ++ ++#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */ ++static int bnx2x_set_tso(struct net_device *dev, u32 data) ++{ ++ if (data) { ++ dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN); ++#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */ ++ dev->features |= NETIF_F_TSO6; ++#endif ++#ifdef BCM_VLAN ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++ dev->vlan_features |= (NETIF_F_TSO | NETIF_F_TSO_ECN); ++ dev->vlan_features |= NETIF_F_TSO6; ++#endif ++#endif ++ } else { ++ dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO_ECN); ++#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */ ++ dev->features &= ~NETIF_F_TSO6; ++#endif ++#ifdef BCM_VLAN ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++ dev->vlan_features &= ~(NETIF_F_TSO | NETIF_F_TSO_ECN); ++ dev->vlan_features &= ~NETIF_F_TSO6; ++#endif ++#endif ++ } ++ ++ return 0; ++} ++#endif ++ ++static const struct { ++ char string[ETH_GSTRING_LEN]; ++} bnx2x_tests_str_arr[BNX2X_NUM_TESTS] = { ++ { "register_test (offline)" }, ++ { "memory_test (offline)" }, ++ { "loopback_test (offline)" }, ++ { "nvram_test (online)" }, ++ { "interrupt_test (online)" }, ++ { "link_test (online)" }, ++ { "idle check (online)" } ++}; ++ ++static int bnx2x_self_test_count(struct net_device *dev) ++{ ++ return BNX2X_NUM_TESTS; ++} ++ ++static int bnx2x_test_registers(struct bnx2x *bp) ++{ ++ int idx, i, rc = -ENODEV; ++ u32 wr_val = 0; ++ int port = BP_PORT(bp); ++ static const struct { ++ u32 offset0; ++ u32 offset1; ++ u32 mask; ++ } reg_tbl[] = { ++/* 0 */ { BRB1_REG_PAUSE_LOW_THRESHOLD_0, 4, 0x000003ff }, ++ { DORQ_REG_DB_ADDR0, 4, 0xffffffff }, ++ { HC_REG_AGG_INT_0, 4, 0x000003ff }, ++ { PBF_REG_MAC_IF0_ENABLE, 4, 0x00000001 }, ++ { PBF_REG_P0_INIT_CRD, 4, 0x000007ff }, ++ { PRS_REG_CID_PORT_0, 4, 0x00ffffff }, ++ { PXP2_REG_PSWRQ_CDU0_L2P, 4, 0x000fffff }, ++ { PXP2_REG_RQ_CDU0_EFIRST_MEM_ADDR, 8, 0x0003ffff }, ++ { PXP2_REG_PSWRQ_TM0_L2P, 4, 0x000fffff }, ++ { PXP2_REG_RQ_USDM0_EFIRST_MEM_ADDR, 8, 0x0003ffff }, ++/* 10 */ { PXP2_REG_PSWRQ_TSDM0_L2P, 4, 0x000fffff }, ++ { QM_REG_CONNNUM_0, 4, 0x000fffff }, ++ { TM_REG_LIN0_MAX_ACTIVE_CID, 4, 0x0003ffff }, ++ { SRC_REG_KEYRSS0_0, 40, 0xffffffff }, ++ { SRC_REG_KEYRSS0_7, 40, 0xffffffff }, ++ { XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 4, 0x00000001 }, ++ { XCM_REG_WU_DA_CNT_CMD00, 4, 0x00000003 }, ++ { XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 4, 0x000000ff }, ++ { NIG_REG_LLH0_T_BIT, 4, 0x00000001 }, ++ { NIG_REG_EMAC0_IN_EN, 4, 0x00000001 }, ++/* 20 */ { NIG_REG_BMAC0_IN_EN, 4, 0x00000001 }, ++ { NIG_REG_XCM0_OUT_EN, 4, 0x00000001 }, ++ { NIG_REG_BRB0_OUT_EN, 4, 0x00000001 }, ++ { NIG_REG_LLH0_XCM_MASK, 4, 0x00000007 }, ++ { NIG_REG_LLH0_ACPI_PAT_6_LEN, 68, 0x000000ff }, ++ { NIG_REG_LLH0_ACPI_PAT_0_CRC, 68, 0xffffffff }, ++ { NIG_REG_LLH0_DEST_MAC_0_0, 160, 0xffffffff }, ++ { NIG_REG_LLH0_DEST_IP_0_1, 160, 0xffffffff }, ++ { NIG_REG_LLH0_IPV4_IPV6_0, 160, 0x00000001 }, ++ { NIG_REG_LLH0_DEST_UDP_0, 160, 0x0000ffff }, ++/* 30 */ { NIG_REG_LLH0_DEST_TCP_0, 160, 0x0000ffff }, ++ { NIG_REG_LLH0_VLAN_ID_0, 160, 0x00000fff }, ++ { NIG_REG_XGXS_SERDES0_MODE_SEL, 4, 0x00000001 }, ++ { NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0, 4, 0x00000001 }, ++ { NIG_REG_STATUS_INTERRUPT_PORT0, 4, 0x07ffffff }, ++ { NIG_REG_XGXS0_CTRL_EXTREMOTEMDIOST, 24, 0x00000001 }, ++ { NIG_REG_SERDES0_CTRL_PHY_ADDR, 16, 0x0000001f }, ++ ++ { 0xffffffff, 0, 0x00000000 } ++ }; ++ ++ if (!netif_running(bp->dev)) ++ return rc; ++ ++ /* Repeat the test twice: ++ First by writing 0x00000000, second by writing 0xffffffff */ ++ for (idx = 0; idx < 2; idx++) { ++ ++ switch (idx) { ++ case 0: ++ wr_val = 0; ++ break; ++ case 1: ++ wr_val = 0xffffffff; ++ break; ++ } ++ ++ for (i = 0; reg_tbl[i].offset0 != 0xffffffff; i++) { ++ u32 offset, mask, save_val, val; ++ ++ offset = reg_tbl[i].offset0 + port*reg_tbl[i].offset1; ++ mask = reg_tbl[i].mask; ++ ++ save_val = REG_RD(bp, offset); ++ ++ REG_WR(bp, offset, wr_val); ++ val = REG_RD(bp, offset); ++ ++ /* Restore the original register's value */ ++ REG_WR(bp, offset, save_val); ++ ++ /* verify that value is as expected value */ ++ if ((val & mask) != (wr_val & mask)) ++ goto test_reg_exit; ++ } ++ } ++ ++ rc = 0; ++ ++test_reg_exit: ++ return rc; ++} ++ ++static int bnx2x_test_memory(struct bnx2x *bp) ++{ ++ int i, j, rc = -ENODEV; ++ u32 val; ++ static const struct { ++ u32 offset; ++ int size; ++ } mem_tbl[] = { ++ { CCM_REG_XX_DESCR_TABLE, CCM_REG_XX_DESCR_TABLE_SIZE }, ++ { CFC_REG_ACTIVITY_COUNTER, CFC_REG_ACTIVITY_COUNTER_SIZE }, ++ { CFC_REG_LINK_LIST, CFC_REG_LINK_LIST_SIZE }, ++ { DMAE_REG_CMD_MEM, DMAE_REG_CMD_MEM_SIZE }, ++ { TCM_REG_XX_DESCR_TABLE, TCM_REG_XX_DESCR_TABLE_SIZE }, ++ { UCM_REG_XX_DESCR_TABLE, UCM_REG_XX_DESCR_TABLE_SIZE }, ++ { XCM_REG_XX_DESCR_TABLE, XCM_REG_XX_DESCR_TABLE_SIZE }, ++ ++ { 0xffffffff, 0 } ++ }; ++ static const struct { ++ char *name; ++ u32 offset; ++ u32 e1_mask; ++ u32 e1h_mask; ++ } prty_tbl[] = { ++ { "CCM_PRTY_STS", CCM_REG_CCM_PRTY_STS, 0x3ffc0, 0 }, ++ { "CFC_PRTY_STS", CFC_REG_CFC_PRTY_STS, 0x2, 0x2 }, ++ { "DMAE_PRTY_STS", DMAE_REG_DMAE_PRTY_STS, 0, 0 }, ++ { "TCM_PRTY_STS", TCM_REG_TCM_PRTY_STS, 0x3ffc0, 0 }, ++ { "UCM_PRTY_STS", UCM_REG_UCM_PRTY_STS, 0x3ffc0, 0 }, ++ { "XCM_PRTY_STS", XCM_REG_XCM_PRTY_STS, 0x3ffc1, 0 }, ++ ++ { NULL, 0xffffffff, 0, 0 } ++ }; ++ ++ if (!netif_running(bp->dev)) ++ return rc; ++ ++ /* Go through all the memories */ ++ for (i = 0; mem_tbl[i].offset != 0xffffffff; i++) ++ for (j = 0; j < mem_tbl[i].size; j++) ++ REG_RD(bp, mem_tbl[i].offset + j*4); ++ ++ /* Check the parity status */ ++ for (i = 0; prty_tbl[i].offset != 0xffffffff; i++) { ++ val = REG_RD(bp, prty_tbl[i].offset); ++ if ((CHIP_IS_E1(bp) && (val & ~(prty_tbl[i].e1_mask))) || ++ (CHIP_IS_E1H(bp) && (val & ~(prty_tbl[i].e1h_mask)))) { ++ DP(NETIF_MSG_HW, ++ "%s is 0x%x\n", prty_tbl[i].name, val); ++ goto test_mem_exit; ++ } ++ } ++ ++ rc = 0; ++ ++test_mem_exit: ++ return rc; ++} ++ ++static void bnx2x_wait_for_link(struct bnx2x *bp, u8 link_up) ++{ ++ int cnt = 1000; ++ ++ if (link_up) ++ while (bnx2x_link_test(bp) && cnt--) ++ msleep(10); ++} ++ ++static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up) ++{ ++ unsigned int pkt_size, num_pkts, i; ++ struct sk_buff *skb; ++ unsigned char *packet; ++ struct bnx2x_fastpath *fp_rx = &bp->fp[0]; ++ struct bnx2x_fastpath *fp_tx = &bp->fp[bp->num_rx_queues]; ++ u16 tx_start_idx, tx_idx; ++ u16 rx_start_idx, rx_idx; ++ u16 pkt_prod, bd_prod; ++ struct sw_tx_bd *tx_buf; ++ struct eth_tx_start_bd *tx_start_bd; ++ struct eth_tx_parse_bd *pbd = NULL; ++ dma_addr_t mapping; ++ union eth_rx_cqe *cqe; ++ u8 cqe_fp_flags; ++ struct sw_rx_bd *rx_buf; ++ u16 len; ++ int rc = -ENODEV; ++ ++ /* check the loopback mode */ ++ switch (loopback_mode) { ++ case BNX2X_PHY_LOOPBACK: ++ if (bp->link_params.loopback_mode != LOOPBACK_XGXS_10) ++ return -EINVAL; ++ break; ++ case BNX2X_MAC_LOOPBACK: ++ bp->link_params.loopback_mode = LOOPBACK_BMAC; ++ bnx2x_phy_init(&bp->link_params, &bp->link_vars); ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ /* prepare the loopback packet */ ++ pkt_size = (((bp->dev->mtu < ETH_MAX_PACKET_SIZE) ? ++ bp->dev->mtu : ETH_MAX_PACKET_SIZE) + ETH_HLEN); ++ skb = netdev_alloc_skb(bp->dev, bp->rx_buf_size); ++ if (!skb) { ++ rc = -ENOMEM; ++ goto test_loopback_exit; ++ } ++ packet = skb_put(skb, pkt_size); ++ memcpy(packet, bp->dev->dev_addr, ETH_ALEN); ++ memset(packet + ETH_ALEN, 0, ETH_ALEN); ++ memset(packet + 2*ETH_ALEN, 0x77, (ETH_HLEN - 2*ETH_ALEN)); ++ for (i = ETH_HLEN; i < pkt_size; i++) ++ packet[i] = (unsigned char) (i & 0xff); ++ ++ /* send the loopback packet */ ++ num_pkts = 0; ++ tx_start_idx = le16_to_cpu(*fp_tx->tx_cons_sb); ++ rx_start_idx = le16_to_cpu(*fp_rx->rx_cons_sb); ++ ++ pkt_prod = fp_tx->tx_pkt_prod++; ++ tx_buf = &fp_tx->tx_buf_ring[TX_BD(pkt_prod)]; ++ tx_buf->first_bd = fp_tx->tx_bd_prod; ++ tx_buf->skb = skb; ++ tx_buf->flags = 0; ++ ++ bd_prod = TX_BD(fp_tx->tx_bd_prod); ++ tx_start_bd = &fp_tx->tx_desc_ring[bd_prod].start_bd; ++ mapping = pci_map_single(bp->pdev, skb->data, ++ skb_headlen(skb), PCI_DMA_TODEVICE); ++ tx_start_bd->addr_hi = cpu_to_le32(U64_HI(mapping)); ++ tx_start_bd->addr_lo = cpu_to_le32(U64_LO(mapping)); ++ tx_start_bd->nbd = cpu_to_le16(2); /* start + pbd */ ++ tx_start_bd->nbytes = cpu_to_le16(skb_headlen(skb)); ++ tx_start_bd->vlan = cpu_to_le16(pkt_prod); ++ tx_start_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_START_BD; ++ tx_start_bd->general_data = ((UNICAST_ADDRESS << ++ ETH_TX_START_BD_ETH_ADDR_TYPE_SHIFT) | 1); ++ ++ /* turn on parsing and get a BD */ ++ bd_prod = TX_BD(NEXT_TX_IDX(bd_prod)); ++ pbd = &fp_tx->tx_desc_ring[bd_prod].parse_bd; ++ ++ memset(pbd, 0, sizeof(struct eth_tx_parse_bd)); ++ ++ wmb(); ++ ++ fp_tx->tx_db.data.prod += 2; ++ barrier(); ++ DOORBELL(bp, fp_tx->index - bp->num_rx_queues, fp_tx->tx_db.raw); ++ ++ mmiowb(); ++ ++ num_pkts++; ++ fp_tx->tx_bd_prod += 2; /* start + pbd */ ++ bp->dev->trans_start = jiffies; ++ ++ udelay(100); ++ ++ tx_idx = le16_to_cpu(*fp_tx->tx_cons_sb); ++ if (tx_idx != tx_start_idx + num_pkts) ++ goto test_loopback_exit; ++ ++ rx_idx = le16_to_cpu(*fp_rx->rx_cons_sb); ++ if (rx_idx != rx_start_idx + num_pkts) ++ goto test_loopback_exit; ++ ++ cqe = &fp_rx->rx_comp_ring[RCQ_BD(fp_rx->rx_comp_cons)]; ++ cqe_fp_flags = cqe->fast_path_cqe.type_error_flags; ++ if (CQE_TYPE(cqe_fp_flags) || (cqe_fp_flags & ETH_RX_ERROR_FALGS)) ++ goto test_loopback_rx_exit; ++ ++ len = le16_to_cpu(cqe->fast_path_cqe.pkt_len); ++ if (len != pkt_size) ++ goto test_loopback_rx_exit; ++ ++ rx_buf = &fp_rx->rx_buf_ring[RX_BD(fp_rx->rx_bd_cons)]; ++ skb = rx_buf->skb; ++ skb_reserve(skb, cqe->fast_path_cqe.placement_offset); ++ for (i = ETH_HLEN; i < pkt_size; i++) ++ if (*(skb->data + i) != (unsigned char) (i & 0xff)) ++ goto test_loopback_rx_exit; ++ ++ rc = 0; ++ ++test_loopback_rx_exit: ++#if (LINUX_VERSION_CODE < 0x02061b) /* ! BNX2X_UPSTREAM */ ++ bp->dev->last_rx = jiffies; ++#endif ++ ++ fp_rx->rx_bd_cons = NEXT_RX_IDX(fp_rx->rx_bd_cons); ++ fp_rx->rx_bd_prod = NEXT_RX_IDX(fp_rx->rx_bd_prod); ++ fp_rx->rx_comp_cons = NEXT_RCQ_IDX(fp_rx->rx_comp_cons); ++ fp_rx->rx_comp_prod = NEXT_RCQ_IDX(fp_rx->rx_comp_prod); ++ ++ /* Update producers */ ++ bnx2x_update_rx_prod(bp, fp_rx, fp_rx->rx_bd_prod, fp_rx->rx_comp_prod, ++ fp_rx->rx_sge_prod); ++ ++test_loopback_exit: ++ bp->link_params.loopback_mode = LOOPBACK_NONE; ++ ++ return rc; ++} ++ ++static int bnx2x_test_loopback(struct bnx2x *bp, u8 link_up) ++{ ++ int rc = 0, res; ++ ++ if (!netif_running(bp->dev)) ++ return BNX2X_LOOPBACK_FAILED; ++ ++ bnx2x_netif_stop(bp, 1); ++ bnx2x_acquire_phy_lock(bp); ++ ++ res = bnx2x_run_loopback(bp, BNX2X_PHY_LOOPBACK, link_up); ++ if (res) { ++ DP(NETIF_MSG_PROBE, " PHY loopback failed (res %d)\n", res); ++ rc |= BNX2X_PHY_LOOPBACK_FAILED; ++ } ++ ++ res = bnx2x_run_loopback(bp, BNX2X_MAC_LOOPBACK, link_up); ++ if (res) { ++ DP(NETIF_MSG_PROBE, " MAC loopback failed (res %d)\n", res); ++ rc |= BNX2X_MAC_LOOPBACK_FAILED; ++ } ++ ++ bnx2x_release_phy_lock(bp); ++ bnx2x_netif_start(bp); ++ ++ return rc; ++} ++ ++#define CRC32_RESIDUAL 0xdebb20e3 ++ ++static int bnx2x_test_nvram(struct bnx2x *bp) ++{ ++ static const struct { ++ int offset; ++ int size; ++ } nvram_tbl[] = { ++ { 0, 0x14 }, /* bootstrap */ ++ { 0x14, 0xec }, /* dir */ ++ { 0x100, 0x350 }, /* manuf_info */ ++ { 0x450, 0xf0 }, /* feature_info */ ++ { 0x640, 0x64 }, /* upgrade_key_info */ ++ { 0x6a4, 0x64 }, ++ { 0x708, 0x70 }, /* manuf_key_info */ ++ { 0x778, 0x70 }, ++ { 0, 0 } ++ }; ++ __be32 buf[0x350 / 4]; ++ u8 *data = (u8 *)buf; ++ int i, rc; ++ u32 magic, crc; ++ ++ rc = bnx2x_nvram_read(bp, 0, data, 4); ++ if (rc) { ++ DP(NETIF_MSG_PROBE, "magic value read (rc %d)\n", rc); ++ goto test_nvram_exit; ++ } ++ ++ magic = be32_to_cpu(buf[0]); ++ if (magic != 0x669955aa) { ++ DP(NETIF_MSG_PROBE, "magic value (0x%08x)\n", magic); ++ rc = -ENODEV; ++ goto test_nvram_exit; ++ } ++ ++ for (i = 0; nvram_tbl[i].size; i++) { ++ ++ rc = bnx2x_nvram_read(bp, nvram_tbl[i].offset, data, ++ nvram_tbl[i].size); ++ if (rc) { ++ DP(NETIF_MSG_PROBE, ++ "nvram_tbl[%d] read data (rc %d)\n", i, rc); ++ goto test_nvram_exit; ++ } ++ ++ crc = ether_crc_le(nvram_tbl[i].size, data); ++ if (crc != CRC32_RESIDUAL) { ++ DP(NETIF_MSG_PROBE, ++ "nvram_tbl[%d] crc value (0x%08x)\n", i, crc); ++ rc = -ENODEV; ++ goto test_nvram_exit; ++ } ++ } ++ ++test_nvram_exit: ++ return rc; ++} ++ ++static int bnx2x_test_intr(struct bnx2x *bp) ++{ ++ struct mac_configuration_cmd *config = bnx2x_sp(bp, mac_config); ++ int i, rc; ++ ++ if (!netif_running(bp->dev)) ++ return -ENODEV; ++ ++ config->hdr.length = 0; ++ if (CHIP_IS_E1(bp)) ++ config->hdr.offset = (BP_PORT(bp) ? 32 : 0); ++ else ++ config->hdr.offset = BP_FUNC(bp); ++ config->hdr.client_id = bp->fp->cl_id; ++ config->hdr.reserved1 = 0; ++ ++ rc = bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mac_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); ++ if (rc == 0) { ++ bp->set_mac_pending++; ++ for (i = 0; i < 10; i++) { ++ if (!bp->set_mac_pending) ++ break; ++ msleep_interruptible(10); ++ } ++ if (i == 10) ++ rc = -ENODEV; ++ } ++ ++ return rc; ++} ++ ++static void bnx2x_self_test(struct net_device *dev, ++ struct ethtool_test *etest, u64 *buf) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ memset(buf, 0, sizeof(u64) * BNX2X_NUM_TESTS); ++ ++ if (!netif_running(dev)) ++ return; ++ ++ /* offline tests are not supported in MF mode */ ++ if (IS_E1HMF(bp)) ++ etest->flags &= ~ETH_TEST_FL_OFFLINE; ++ ++ if (etest->flags & ETH_TEST_FL_OFFLINE) { ++ int port = BP_PORT(bp); ++ u32 val; ++ u8 link_up; ++ ++ /* save current value of input enable for TX port IF */ ++ val = REG_RD(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4); ++ /* disable input for TX port IF */ ++ REG_WR(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4, 0); ++ ++ link_up = bp->link_vars.link_up; ++ bnx2x_nic_unload(bp, UNLOAD_NORMAL); ++ bnx2x_nic_load(bp, LOAD_DIAG); ++ /* wait until link state is restored */ ++ bnx2x_wait_for_link(bp, link_up); ++ ++ if (bnx2x_test_registers(bp) != 0) { ++ buf[0] = 1; ++ etest->flags |= ETH_TEST_FL_FAILED; ++ } ++ if (bnx2x_test_memory(bp) != 0) { ++ buf[1] = 1; ++ etest->flags |= ETH_TEST_FL_FAILED; ++ } ++ buf[2] = bnx2x_test_loopback(bp, link_up); ++ if (buf[2] != 0) ++ etest->flags |= ETH_TEST_FL_FAILED; ++ ++ bnx2x_nic_unload(bp, UNLOAD_NORMAL); ++ ++ /* restore input for TX port IF */ ++ REG_WR(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4, val); ++ ++ bnx2x_nic_load(bp, LOAD_NORMAL); ++ /* wait until link state is restored */ ++ bnx2x_wait_for_link(bp, link_up); ++ } ++ if (bnx2x_test_nvram(bp) != 0) { ++ buf[3] = 1; ++ etest->flags |= ETH_TEST_FL_FAILED; ++ } ++ if (bnx2x_test_intr(bp) != 0) { ++ buf[4] = 1; ++ etest->flags |= ETH_TEST_FL_FAILED; ++ } ++ if (bp->port.pmf) ++ if (bnx2x_link_test(bp) != 0) { ++ buf[5] = 1; ++ etest->flags |= ETH_TEST_FL_FAILED; ++ } ++#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */ ++ /* run the idle check twice */ ++ bnx2x_idle_chk(bp); ++ buf[6] = bnx2x_idle_chk(bp); ++ if (buf[6] != 0) ++ etest->flags |= ETH_TEST_FL_FAILED; ++#endif ++ ++#ifdef BNX2X_EXTRA_DEBUG ++ bnx2x_panic_dump(bp); ++#endif ++} ++ ++static const struct { ++ long offset; ++ int size; ++ u8 string[ETH_GSTRING_LEN]; ++} bnx2x_q_stats_arr[BNX2X_NUM_Q_STATS] = { ++/* 1 */ { Q_STATS_OFFSET32(total_bytes_received_hi), 8, "[%d]: rx_bytes" }, ++ { Q_STATS_OFFSET32(error_bytes_received_hi), ++ 8, "[%d]: rx_error_bytes" }, ++ { Q_STATS_OFFSET32(total_unicast_packets_received_hi), ++ 8, "[%d]: rx_ucast_packets" }, ++ { Q_STATS_OFFSET32(total_multicast_packets_received_hi), ++ 8, "[%d]: rx_mcast_packets" }, ++ { Q_STATS_OFFSET32(total_broadcast_packets_received_hi), ++ 8, "[%d]: rx_bcast_packets" }, ++ { Q_STATS_OFFSET32(no_buff_discard_hi), 8, "[%d]: rx_discards" }, ++ { Q_STATS_OFFSET32(rx_err_discard_pkt), ++ 4, "[%d]: rx_phy_ip_err_discards"}, ++ { Q_STATS_OFFSET32(rx_skb_alloc_failed), ++ 4, "[%d]: rx_skb_alloc_discard" }, ++ { Q_STATS_OFFSET32(hw_csum_err), 4, "[%d]: rx_csum_offload_errors" }, ++ ++/* 10 */{ Q_STATS_OFFSET32(total_bytes_transmitted_hi), 8, "[%d]: tx_bytes" }, ++ { Q_STATS_OFFSET32(total_unicast_packets_transmitted_hi), ++ 8, "[%d]: tx_packets" } ++}; ++ ++static const struct { ++ long offset; ++ int size; ++ u32 flags; ++#define STATS_FLAGS_PORT 1 ++#define STATS_FLAGS_FUNC 2 ++#define STATS_FLAGS_BOTH (STATS_FLAGS_FUNC | STATS_FLAGS_PORT) ++ u8 string[ETH_GSTRING_LEN]; ++} bnx2x_stats_arr[BNX2X_NUM_STATS] = { ++/* 1 */ { STATS_OFFSET32(total_bytes_received_hi), ++ 8, STATS_FLAGS_BOTH, "rx_bytes" }, ++ { STATS_OFFSET32(error_bytes_received_hi), ++ 8, STATS_FLAGS_BOTH, "rx_error_bytes" }, ++ { STATS_OFFSET32(total_unicast_packets_received_hi), ++ 8, STATS_FLAGS_BOTH, "rx_ucast_packets" }, ++ { STATS_OFFSET32(total_multicast_packets_received_hi), ++ 8, STATS_FLAGS_BOTH, "rx_mcast_packets" }, ++ { STATS_OFFSET32(total_broadcast_packets_received_hi), ++ 8, STATS_FLAGS_BOTH, "rx_bcast_packets" }, ++ { STATS_OFFSET32(rx_stat_dot3statsfcserrors_hi), ++ 8, STATS_FLAGS_PORT, "rx_crc_errors" }, ++ { STATS_OFFSET32(rx_stat_dot3statsalignmenterrors_hi), ++ 8, STATS_FLAGS_PORT, "rx_align_errors" }, ++ { STATS_OFFSET32(rx_stat_etherstatsundersizepkts_hi), ++ 8, STATS_FLAGS_PORT, "rx_undersize_packets" }, ++ { STATS_OFFSET32(etherstatsoverrsizepkts_hi), ++ 8, STATS_FLAGS_PORT, "rx_oversize_packets" }, ++/* 10 */{ STATS_OFFSET32(rx_stat_etherstatsfragments_hi), ++ 8, STATS_FLAGS_PORT, "rx_fragments" }, ++ { STATS_OFFSET32(rx_stat_etherstatsjabbers_hi), ++ 8, STATS_FLAGS_PORT, "rx_jabbers" }, ++ { STATS_OFFSET32(no_buff_discard_hi), ++ 8, STATS_FLAGS_BOTH, "rx_discards" }, ++ { STATS_OFFSET32(mac_filter_discard), ++ 4, STATS_FLAGS_PORT, "rx_filtered_packets" }, ++ { STATS_OFFSET32(xxoverflow_discard), ++ 4, STATS_FLAGS_PORT, "rx_fw_discards" }, ++ { STATS_OFFSET32(brb_drop_hi), ++ 8, STATS_FLAGS_PORT, "rx_brb_discard" }, ++ { STATS_OFFSET32(brb_truncate_hi), ++ 8, STATS_FLAGS_PORT, "rx_brb_truncate" }, ++ { STATS_OFFSET32(pause_frames_received_hi), ++ 8, STATS_FLAGS_PORT, "rx_pause_frames" }, ++ { STATS_OFFSET32(rx_stat_maccontrolframesreceived_hi), ++ 8, STATS_FLAGS_PORT, "rx_mac_ctrl_frames" }, ++ { STATS_OFFSET32(nig_timer_max), ++ 4, STATS_FLAGS_PORT, "rx_constant_pause_events" }, ++/* 20 */{ STATS_OFFSET32(rx_err_discard_pkt), ++ 4, STATS_FLAGS_BOTH, "rx_phy_ip_err_discards"}, ++ { STATS_OFFSET32(rx_skb_alloc_failed), ++ 4, STATS_FLAGS_BOTH, "rx_skb_alloc_discard" }, ++ { STATS_OFFSET32(hw_csum_err), ++ 4, STATS_FLAGS_BOTH, "rx_csum_offload_errors" }, ++ ++ { STATS_OFFSET32(total_bytes_transmitted_hi), ++ 8, STATS_FLAGS_BOTH, "tx_bytes" }, ++ { STATS_OFFSET32(tx_stat_ifhcoutbadoctets_hi), ++ 8, STATS_FLAGS_PORT, "tx_error_bytes" }, ++ { STATS_OFFSET32(total_unicast_packets_transmitted_hi), ++ 8, STATS_FLAGS_BOTH, "tx_packets" }, ++ { STATS_OFFSET32(tx_stat_dot3statsinternalmactransmiterrors_hi), ++ 8, STATS_FLAGS_PORT, "tx_mac_errors" }, ++ { STATS_OFFSET32(rx_stat_dot3statscarriersenseerrors_hi), ++ 8, STATS_FLAGS_PORT, "tx_carrier_errors" }, ++ { STATS_OFFSET32(tx_stat_dot3statssinglecollisionframes_hi), ++ 8, STATS_FLAGS_PORT, "tx_single_collisions" }, ++ { STATS_OFFSET32(tx_stat_dot3statsmultiplecollisionframes_hi), ++ 8, STATS_FLAGS_PORT, "tx_multi_collisions" }, ++/* 30 */{ STATS_OFFSET32(tx_stat_dot3statsdeferredtransmissions_hi), ++ 8, STATS_FLAGS_PORT, "tx_deferred" }, ++ { STATS_OFFSET32(tx_stat_dot3statsexcessivecollisions_hi), ++ 8, STATS_FLAGS_PORT, "tx_excess_collisions" }, ++ { STATS_OFFSET32(tx_stat_dot3statslatecollisions_hi), ++ 8, STATS_FLAGS_PORT, "tx_late_collisions" }, ++ { STATS_OFFSET32(tx_stat_etherstatscollisions_hi), ++ 8, STATS_FLAGS_PORT, "tx_total_collisions" }, ++ { STATS_OFFSET32(tx_stat_etherstatspkts64octets_hi), ++ 8, STATS_FLAGS_PORT, "tx_64_byte_packets" }, ++ { STATS_OFFSET32(tx_stat_etherstatspkts65octetsto127octets_hi), ++ 8, STATS_FLAGS_PORT, "tx_65_to_127_byte_packets" }, ++ { STATS_OFFSET32(tx_stat_etherstatspkts128octetsto255octets_hi), ++ 8, STATS_FLAGS_PORT, "tx_128_to_255_byte_packets" }, ++ { STATS_OFFSET32(tx_stat_etherstatspkts256octetsto511octets_hi), ++ 8, STATS_FLAGS_PORT, "tx_256_to_511_byte_packets" }, ++ { STATS_OFFSET32(tx_stat_etherstatspkts512octetsto1023octets_hi), ++ 8, STATS_FLAGS_PORT, "tx_512_to_1023_byte_packets" }, ++ { STATS_OFFSET32(etherstatspkts1024octetsto1522octets_hi), ++ 8, STATS_FLAGS_PORT, "tx_1024_to_1522_byte_packets" }, ++/* 40 */{ STATS_OFFSET32(etherstatspktsover1522octets_hi), ++ 8, STATS_FLAGS_PORT, "tx_1523_to_9022_byte_packets" }, ++ { STATS_OFFSET32(pause_frames_sent_hi), ++ 8, STATS_FLAGS_PORT, "tx_pause_frames" } ++}; ++ ++#define IS_PORT_STAT(i) \ ++ ((bnx2x_stats_arr[i].flags & STATS_FLAGS_BOTH) == STATS_FLAGS_PORT) ++#define IS_FUNC_STAT(i) (bnx2x_stats_arr[i].flags & STATS_FLAGS_FUNC) ++#define IS_E1HMF_MODE_STAT(bp) \ ++ (IS_E1HMF(bp) && !(bp->msglevel & BNX2X_MSG_STATS)) ++ ++static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int i, j, k; ++ ++ switch (stringset) { ++ case ETH_SS_STATS: ++ if (is_multi(bp)) { ++ k = 0; ++ for_each_rx_queue(bp, i) { ++ for (j = 0; j < BNX2X_NUM_Q_STATS; j++) ++ sprintf(buf + (k + j)*ETH_GSTRING_LEN, ++ bnx2x_q_stats_arr[j].string, i); ++ k += BNX2X_NUM_Q_STATS; ++ } ++ if (IS_E1HMF_MODE_STAT(bp)) ++ break; ++ for (j = 0; j < BNX2X_NUM_STATS; j++) ++ strcpy(buf + (k + j)*ETH_GSTRING_LEN, ++ bnx2x_stats_arr[j].string); ++ } else { ++ for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) { ++ if (IS_E1HMF_MODE_STAT(bp) && IS_PORT_STAT(i)) ++ continue; ++ strcpy(buf + j*ETH_GSTRING_LEN, ++ bnx2x_stats_arr[i].string); ++ j++; ++ } ++ } ++ break; ++ ++ case ETH_SS_TEST: ++ memcpy(buf, bnx2x_tests_str_arr, sizeof(bnx2x_tests_str_arr)); ++ break; ++ } ++} ++ ++static int bnx2x_get_stats_count(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int i, num_stats; ++ ++ if (is_multi(bp)) { ++ num_stats = BNX2X_NUM_Q_STATS * bp->num_rx_queues; ++ if (!IS_E1HMF_MODE_STAT(bp)) ++ num_stats += BNX2X_NUM_STATS; ++ } else { ++ if (IS_E1HMF_MODE_STAT(bp)) { ++ num_stats = 0; ++ for (i = 0; i < BNX2X_NUM_STATS; i++) ++ if (IS_FUNC_STAT(i)) ++ num_stats++; ++ } else ++ num_stats = BNX2X_NUM_STATS; ++ } ++ ++ return num_stats; ++} ++ ++static void bnx2x_get_ethtool_stats(struct net_device *dev, ++ struct ethtool_stats *stats, u64 *buf) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ u32 *hw_stats, *offset; ++ int i, j, k; ++ ++ if (is_multi(bp)) { ++ k = 0; ++ for_each_rx_queue(bp, i) { ++ hw_stats = (u32 *)&bp->fp[i].eth_q_stats; ++ for (j = 0; j < BNX2X_NUM_Q_STATS; j++) { ++ if (bnx2x_q_stats_arr[j].size == 0) { ++ /* skip this counter */ ++ buf[k + j] = 0; ++ continue; ++ } ++ offset = (hw_stats + ++ bnx2x_q_stats_arr[j].offset); ++ if (bnx2x_q_stats_arr[j].size == 4) { ++ /* 4-byte counter */ ++ buf[k + j] = (u64) *offset; ++ continue; ++ } ++ /* 8-byte counter */ ++ buf[k + j] = HILO_U64(*offset, *(offset + 1)); ++ } ++ k += BNX2X_NUM_Q_STATS; ++ } ++ if (IS_E1HMF_MODE_STAT(bp)) ++ return; ++ hw_stats = (u32 *)&bp->eth_stats; ++ for (j = 0; j < BNX2X_NUM_STATS; j++) { ++ if (bnx2x_stats_arr[j].size == 0) { ++ /* skip this counter */ ++ buf[k + j] = 0; ++ continue; ++ } ++ offset = (hw_stats + bnx2x_stats_arr[j].offset); ++ if (bnx2x_stats_arr[j].size == 4) { ++ /* 4-byte counter */ ++ buf[k + j] = (u64) *offset; ++ continue; ++ } ++ /* 8-byte counter */ ++ buf[k + j] = HILO_U64(*offset, *(offset + 1)); ++ } ++ } else { ++ hw_stats = (u32 *)&bp->eth_stats; ++ for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) { ++ if (IS_E1HMF_MODE_STAT(bp) && IS_PORT_STAT(i)) ++ continue; ++ if (bnx2x_stats_arr[i].size == 0) { ++ /* skip this counter */ ++ buf[j] = 0; ++ j++; ++ continue; ++ } ++ offset = (hw_stats + bnx2x_stats_arr[i].offset); ++ if (bnx2x_stats_arr[i].size == 4) { ++ /* 4-byte counter */ ++ buf[j] = (u64) *offset; ++ j++; ++ continue; ++ } ++ /* 8-byte counter */ ++ buf[j] = HILO_U64(*offset, *(offset + 1)); ++ j++; ++ } ++ } ++} ++ ++static int bnx2x_phys_id(struct net_device *dev, u32 data) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int port = BP_PORT(bp); ++ int i; ++ ++ if (!netif_running(dev)) ++ return 0; ++ ++ if (!bp->port.pmf) ++ return 0; ++ ++ if (data == 0) ++ data = 2; ++ ++ for (i = 0; i < (data * 2); i++) { ++ if ((i % 2) == 0) ++ bnx2x_set_led(bp, port, LED_MODE_OPER, SPEED_1000, ++ bp->link_params.hw_led_mode, ++ bp->link_params.chip_id); ++ else ++ bnx2x_set_led(bp, port, LED_MODE_OFF, 0, ++ bp->link_params.hw_led_mode, ++ bp->link_params.chip_id); ++ ++ msleep_interruptible(500); ++ if (signal_pending(current)) ++ break; ++ } ++ ++ if (bp->link_vars.link_up) ++ bnx2x_set_led(bp, port, LED_MODE_OPER, ++ bp->link_vars.line_speed, ++ bp->link_params.hw_led_mode, ++ bp->link_params.chip_id); ++ ++ return 0; ++} ++ ++static struct ethtool_ops bnx2x_ethtool_ops = { ++ .get_settings = bnx2x_get_settings, ++ .set_settings = bnx2x_set_settings, ++ .get_drvinfo = bnx2x_get_drvinfo, ++ .get_regs_len = bnx2x_get_regs_len, ++ .get_regs = bnx2x_get_regs, ++ .get_wol = bnx2x_get_wol, ++ .set_wol = bnx2x_set_wol, ++ .get_msglevel = bnx2x_get_msglevel, ++ .set_msglevel = bnx2x_set_msglevel, ++ .nway_reset = bnx2x_nway_reset, ++ .get_link = bnx2x_get_link, ++#if (LINUX_VERSION_CODE >= 0x020418) /* BNX2X_UPSTREAM */ ++ .get_eeprom_len = bnx2x_get_eeprom_len, ++#endif ++ .get_eeprom = bnx2x_get_eeprom, ++ .set_eeprom = bnx2x_set_eeprom, ++ .get_coalesce = bnx2x_get_coalesce, ++ .set_coalesce = bnx2x_set_coalesce, ++ .get_ringparam = bnx2x_get_ringparam, ++ .set_ringparam = bnx2x_set_ringparam, ++ .get_pauseparam = bnx2x_get_pauseparam, ++ .set_pauseparam = bnx2x_set_pauseparam, ++ .get_rx_csum = bnx2x_get_rx_csum, ++ .set_rx_csum = bnx2x_set_rx_csum, ++ .get_tx_csum = ethtool_op_get_tx_csum, ++#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */ ++ .set_tx_csum = ethtool_op_set_tx_hw_csum, ++#else ++ .set_tx_csum = bnx2x_set_tx_hw_csum, ++#endif ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++ .set_flags = bnx2x_set_flags, ++ .get_flags = ethtool_op_get_flags, ++#endif ++ .get_sg = ethtool_op_get_sg, ++ .set_sg = ethtool_op_set_sg, ++#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */ ++ .get_tso = ethtool_op_get_tso, ++ .set_tso = bnx2x_set_tso, ++#endif ++ .self_test_count = bnx2x_self_test_count, ++ .self_test = bnx2x_self_test, ++ .get_strings = bnx2x_get_strings, ++ .phys_id = bnx2x_phys_id, ++ .get_stats_count = bnx2x_get_stats_count, ++ .get_ethtool_stats = bnx2x_get_ethtool_stats, ++#ifdef ETHTOOL_GPERMADDR /* ! BNX2X_UPSTREAM */ ++#if (LINUX_VERSION_CODE < 0x020617) ++ .get_perm_addr = ethtool_op_get_perm_addr ++#endif ++#endif ++}; ++ ++/* end of ethtool_ops */ ++ ++/**************************************************************************** ++* General service functions ++****************************************************************************/ ++ ++static int bnx2x_set_power_state(struct bnx2x *bp, pci_power_t state) ++{ ++ u16 pmcsr; ++ ++ pci_read_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL, &pmcsr); ++ ++ switch (state) { ++ case PCI_D0: ++ pci_write_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL, ++ ((pmcsr & ~PCI_PM_CTRL_STATE_MASK) | ++ PCI_PM_CTRL_PME_STATUS)); ++ ++ if (pmcsr & PCI_PM_CTRL_STATE_MASK) ++ /* delay required during transition out of D3hot */ ++ msleep(20); ++ break; ++ ++ case PCI_D3hot: ++ pmcsr &= ~PCI_PM_CTRL_STATE_MASK; ++ pmcsr |= 3; ++ ++ if (bp->wol) ++ pmcsr |= PCI_PM_CTRL_PME_ENABLE; ++ ++ pci_write_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL, ++ pmcsr); ++ ++ /* No more memory access after this point until ++ * device is brought back to D0. ++ */ ++ break; ++ ++ default: ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++static inline int bnx2x_has_rx_work(struct bnx2x_fastpath *fp) ++{ ++ u16 rx_cons_sb; ++ ++ /* Tell compiler that status block fields can change */ ++ barrier(); ++ rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb); ++ if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT) ++ rx_cons_sb++; ++ return (fp->rx_comp_cons != rx_cons_sb); ++} ++ ++/* ++ * net_device service functions ++ */ ++ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++static int bnx2x_poll(struct napi_struct *napi, int budget) ++#else ++static int bnx2x_poll(struct net_device *dev, int *budget) ++#endif ++{ ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ struct bnx2x_fastpath *fp = container_of(napi, struct bnx2x_fastpath, ++ napi); ++ struct bnx2x *bp = fp->bp; ++ int work_done = 0; ++#else ++ struct bnx2x *bp = netdev_priv(dev); ++ struct bnx2x_fastpath *fp = &bp->fp[0]; ++ int orig_budget = min(*budget, dev->quota); ++ int work_done; ++#endif ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ goto poll_panic; ++#endif ++ ++ prefetch(fp->rx_buf_ring[RX_BD(fp->rx_bd_cons)].skb); ++ prefetch((char *)(fp->rx_buf_ring[RX_BD(fp->rx_bd_cons)].skb) + 256); ++ ++ bnx2x_update_fpsb_idx(fp); ++ ++ if (bnx2x_has_rx_work(fp)) { ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ work_done = bnx2x_rx_int(fp, budget); ++ ++ /* must not complete if we consumed full budget */ ++ if (work_done >= budget) ++ goto poll_again; ++#else ++ work_done = bnx2x_rx_int(fp, orig_budget); ++ ++ *budget -= work_done; ++ dev->quota -= work_done; ++ if (dev->quota <= 0) ++ goto poll_again; ++#endif ++ } ++ ++ /* bnx2x_has_rx_work() reads the status block, thus we need to ++ * ensure that status block indices have been actually read ++ * (bnx2x_update_fpsb_idx) prior to this check (bnx2x_has_rx_work) ++ * so that we won't write the "newer" value of the status block to IGU ++ * (if there was a DMA right after bnx2x_has_rx_work and ++ * if there is no rmb, the memory reading (bnx2x_update_fpsb_idx) ++ * may be postponed to right before bnx2x_ack_sb). In this case ++ * there will never be another interrupt until there is another update ++ * of the status block, while there is still unhandled work. ++ */ ++ rmb(); ++ ++ if (!bnx2x_has_rx_work(fp)) { ++#ifdef BNX2X_STOP_ON_ERROR ++poll_panic: ++#endif ++ napi_complete(napi); ++ ++ bnx2x_ack_sb(bp, fp->sb_id, USTORM_ID, ++ le16_to_cpu(fp->fp_u_idx), IGU_INT_NOP, 1); ++ bnx2x_ack_sb(bp, fp->sb_id, CSTORM_ID, ++ le16_to_cpu(fp->fp_c_idx), IGU_INT_ENABLE, 1); ++#ifndef BNX2X_NEW_NAPI /* ! BNX2X_UPSTREAM */ ++ return 0; ++#endif ++ } ++ ++poll_again: ++#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */ ++ return work_done; ++#else ++ return 1; ++#endif ++} ++ ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++static struct net_device_stats *bnx2x_get_stats(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ return &bp->net_stats; ++} ++#endif ++ ++#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */ ++/* we split the first BD into headers and data BDs ++ * to ease the pain of our fellow microcode engineers ++ * we use one mapping for both BDs ++ * So far this has only been observed to happen ++ * in Other Operating Systems(TM) ++ */ ++static noinline u16 bnx2x_tx_split(struct bnx2x *bp, ++ struct bnx2x_fastpath *fp, ++ struct sw_tx_bd *tx_buf, ++ struct eth_tx_start_bd **tx_bd, u16 hlen, ++ u16 bd_prod, int nbd) ++{ ++ struct eth_tx_start_bd *h_tx_bd = *tx_bd; ++ struct eth_tx_bd *d_tx_bd; ++ dma_addr_t mapping; ++ int old_len = le16_to_cpu(h_tx_bd->nbytes); ++ ++ /* first fix first BD */ ++ h_tx_bd->nbd = cpu_to_le16(nbd); ++ h_tx_bd->nbytes = cpu_to_le16(hlen); ++ ++ DP(NETIF_MSG_TX_QUEUED, "TSO split header size is %d " ++ "(%x:%x) nbd %d\n", h_tx_bd->nbytes, h_tx_bd->addr_hi, ++ h_tx_bd->addr_lo, h_tx_bd->nbd); ++ ++ /* now get a new data BD ++ * (after the pbd) and fill it */ ++ bd_prod = TX_BD(NEXT_TX_IDX(bd_prod)); ++ d_tx_bd = &fp->tx_desc_ring[bd_prod].reg_bd; ++ ++ mapping = HILO_U64(le32_to_cpu(h_tx_bd->addr_hi), ++ le32_to_cpu(h_tx_bd->addr_lo)) + hlen; ++ ++ d_tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping)); ++ d_tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping)); ++ d_tx_bd->nbytes = cpu_to_le16(old_len - hlen); ++ ++ /* this marks the BD as one that has no individual mapping */ ++ tx_buf->flags |= BNX2X_TSO_SPLIT_BD; ++ ++ DP(NETIF_MSG_TX_QUEUED, ++ "TSO split data size is %d (%x:%x)\n", ++ d_tx_bd->nbytes, d_tx_bd->addr_hi, d_tx_bd->addr_lo); ++ ++ /* update tx_bd */ ++ *tx_bd = (struct eth_tx_start_bd *)d_tx_bd; ++ ++ return bd_prod; ++} ++#endif ++ ++static inline u16 bnx2x_csum_fix(unsigned char *t_header, u16 csum, s8 fix) ++{ ++ if (fix > 0) ++ csum = (u16) ~csum_fold(csum_sub(csum, ++ csum_partial(t_header - fix, fix, 0))); ++ ++ else if (fix < 0) ++ csum = (u16) ~csum_fold(csum_add(csum, ++ csum_partial(t_header, -fix, 0))); ++ ++ return swab16(csum); ++} ++ ++static inline u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb) ++{ ++ u32 rc; ++ ++ if (skb->ip_summed != CHECKSUM_PARTIAL) ++ rc = XMIT_PLAIN; ++ ++ else { ++ if (skb->protocol == htons(ETH_P_IPV6)) { ++ rc = XMIT_CSUM_V6; ++ if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP) ++ rc |= XMIT_CSUM_TCP; ++ ++ } else { ++ rc = XMIT_CSUM_V4; ++ if (ip_hdr(skb)->protocol == IPPROTO_TCP) ++ rc |= XMIT_CSUM_TCP; ++ } ++ } ++ ++#ifdef NETIF_F_GSO /* BNX2X_UPSTREAM */ ++ if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4) ++ rc |= XMIT_GSO_V4; ++ ++#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */ ++ else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) ++ rc |= XMIT_GSO_V6; ++#endif ++#elif defined(NETIF_F_TSO) /* ! BNX2X_UPSTREAM */ ++ if ((skb_shinfo(skb)->gso_size) && ++ (skb->len > (bp->dev->mtu + ETH_HLEN))) ++ rc |= XMIT_GSO_V4; ++#endif ++ ++ return rc; ++} ++ ++#if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3) ++/* check if packet requires linearization (packet is too fragmented) ++ no need to check fragmentation if page size > 8K (there will be no ++ violation to FW restrictions) */ ++static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb, ++ u32 xmit_type) ++{ ++ int to_copy = 0; ++ int hlen = 0; ++ int first_bd_sz = 0; ++ ++ /* 3 = 1 (for linear data BD) + 2 (for PBD and last BD) */ ++ if (skb_shinfo(skb)->nr_frags >= (MAX_FETCH_BD - 3)) { ++ ++ if (xmit_type & XMIT_GSO) { ++#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */ ++ unsigned short lso_mss = skb_shinfo(skb)->gso_size; ++ /* Check if LSO packet needs to be copied: ++ 3 = 1 (for headers BD) + 2 (for PBD and last BD) */ ++ int wnd_size = MAX_FETCH_BD - 3; ++ /* Number of windows to check */ ++ int num_wnds = skb_shinfo(skb)->nr_frags - wnd_size; ++ int wnd_idx = 0; ++ int frag_idx = 0; ++ u32 wnd_sum = 0; ++ ++ /* Headers length */ ++ hlen = (int)(skb_transport_header(skb) - skb->data) + ++ tcp_hdrlen(skb); ++ ++ /* Amount of data (w/o headers) on linear part of SKB*/ ++ first_bd_sz = skb_headlen(skb) - hlen; ++ ++ wnd_sum = first_bd_sz; ++ ++ /* Calculate the first sum - it's special */ ++ for (frag_idx = 0; frag_idx < wnd_size - 1; frag_idx++) ++ wnd_sum += ++ skb_shinfo(skb)->frags[frag_idx].size; ++ ++ /* If there was data on linear skb data - check it */ ++ if (first_bd_sz > 0) { ++ if (unlikely(wnd_sum < lso_mss)) { ++ to_copy = 1; ++ goto exit_lbl; ++ } ++ ++ wnd_sum -= first_bd_sz; ++ } ++ ++ /* Others are easier: run through the frag list and ++ check all windows */ ++ for (wnd_idx = 0; wnd_idx <= num_wnds; wnd_idx++) { ++ wnd_sum += ++ skb_shinfo(skb)->frags[wnd_idx + wnd_size - 1].size; ++ ++ if (unlikely(wnd_sum < lso_mss)) { ++ to_copy = 1; ++ break; ++ } ++ wnd_sum -= ++ skb_shinfo(skb)->frags[wnd_idx].size; ++ } ++#endif ++ } else { ++ /* in non-LSO too fragmented packet should always ++ be linearized */ ++ to_copy = 1; ++ } ++ } ++ ++#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */ ++exit_lbl: ++#endif ++ if (unlikely(to_copy)) ++ DP(NETIF_MSG_TX_QUEUED, ++ "Linearization IS REQUIRED for %s packet. " ++ "num_frags %d hlen %d first_bd_sz %d\n", ++ (xmit_type & XMIT_GSO) ? "LSO" : "non-LSO", ++ skb_shinfo(skb)->nr_frags, hlen, first_bd_sz); ++ ++ return to_copy; ++} ++#endif ++ ++#ifdef BNX2X_SAFC /* ! BNX2X_UPSTREAM */ ++static u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int i, fp_index = 0; ++ ++ /* Determine which tx ring we will be placed on */ ++ switch (bp->multi_mode) { ++ case ETH_RSS_MODE_VLAN_PRI: ++ case ETH_RSS_MODE_E1HOV_PRI: ++#ifdef BCM_VLAN ++ if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb)) { ++ i = ((vlan_tx_tag_get(skb) >> 13) & 0x7); ++ fp_index = bp->cos_map[bp->pri_map[i]]; ++ } ++#endif ++ break; ++ ++ case ETH_RSS_MODE_IP_DSCP: ++ if (skb->protocol == htons(ETH_P_IP)) { ++ i = ((ip_hdr(skb)->tos >> 2) & 0x7); ++ fp_index = bp->cos_map[bp->pri_map[i]]; ++ } ++ break; ++ } ++ ++ return fp_index; ++} ++#endif ++ ++/* called with netif_tx_lock ++ * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call ++ * netif_wake_queue() ++ */ ++static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ struct bnx2x_fastpath *fp, *fp_stat; ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ struct netdev_queue *txq; ++#endif ++ struct sw_tx_bd *tx_buf; ++ struct eth_tx_start_bd *tx_start_bd; ++ struct eth_tx_bd *tx_data_bd, *total_pkt_bd = NULL; ++ struct eth_tx_parse_bd *pbd = NULL; ++ u16 pkt_prod, bd_prod; ++ int nbd, fp_index; ++ dma_addr_t mapping; ++ u32 xmit_type = bnx2x_xmit_type(bp, skb); ++ int i; ++ u8 hlen = 0; ++ __le16 pkt_size = 0; ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return NETDEV_TX_BUSY; ++#endif ++ ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) ++ VMK_ASSERT(skb->queue_mapping < BNX2X_NUM_QUEUES(bp)); ++ fp_index = skb->queue_mapping; ++ txq = netdev_get_tx_queue(dev, fp_index); ++#else /* BNX2X_UPSTREAM */ ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ fp_index = skb_get_queue_mapping(skb); ++ txq = netdev_get_tx_queue(dev, fp_index); ++#else ++ fp_index = 0; ++#endif ++#endif ++ ++ fp = &bp->fp[fp_index + bp->num_rx_queues]; ++ fp_stat = &bp->fp[fp_index]; ++ ++ if (unlikely(bnx2x_tx_avail(fp) < (skb_shinfo(skb)->nr_frags + 3))) { ++ fp_stat->eth_q_stats.driver_xoff++; ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ netif_tx_stop_queue(txq); ++#else ++ netif_stop_queue(dev); ++#endif ++ BNX2X_ERR("BUG! Tx ring full when queue awake!\n"); ++ return NETDEV_TX_BUSY; ++ } ++ ++#ifdef NETIF_F_GSO /* BNX2X_UPSTREAM */ ++ DP(NETIF_MSG_TX_QUEUED, "SKB: summed %x protocol %x protocol(%x,%x)" ++ " gso type %x xmit_type %x\n", ++ skb->ip_summed, skb->protocol, ipv6_hdr(skb)->nexthdr, ++ ip_hdr(skb)->protocol, skb_shinfo(skb)->gso_type, xmit_type); ++#endif ++ ++#if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3) ++ /* First, check if we need to linearize the skb (due to FW ++ restrictions). No need to check fragmentation if page size > 8K ++ (there will be no violation to FW restrictions) */ ++ if (bnx2x_pkt_req_lin(bp, skb, xmit_type)) { ++ /* Statistics of linearization */ ++ bp->lin_cnt++; ++#if (LINUX_VERSION_CODE > 0x020611) || defined(SLE_VERSION_CODE) /* BNX2X_UPSTREAM */ ++ if (skb_linearize(skb) != 0) { ++#else ++ if (skb_linearize(skb, GFP_ATOMIC) != 0) { ++#endif ++ DP(NETIF_MSG_TX_QUEUED, "SKB linearization failed - " ++ "silently dropping this SKB\n"); ++ dev_kfree_skb_any(skb); ++ return NETDEV_TX_OK; ++ } ++ } ++#endif ++ ++ /* ++ Please read carefully. First we use one BD which we mark as start, ++ then we have a parsing info BD (used for TSO or xsum), ++ and only then we have the rest of the TSO BDs. ++ (don't forget to mark the last one as last, ++ and to unmap only AFTER you write to the BD ...) ++ And above all, all pdb sizes are in words - NOT DWORDS! ++ */ ++ ++ pkt_prod = fp->tx_pkt_prod++; ++ bd_prod = TX_BD(fp->tx_bd_prod); ++ ++ /* get a tx_buf and first BD */ ++ tx_buf = &fp->tx_buf_ring[TX_BD(pkt_prod)]; ++ tx_start_bd = &fp->tx_desc_ring[bd_prod].start_bd; ++ ++ tx_start_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_START_BD; ++ tx_start_bd->general_data = (UNICAST_ADDRESS << ++ ETH_TX_START_BD_ETH_ADDR_TYPE_SHIFT); ++ /* header nbd */ ++ tx_start_bd->general_data |= (1 << ETH_TX_START_BD_HDR_NBDS_SHIFT); ++ ++ /* remember the first BD of the packet */ ++ tx_buf->first_bd = fp->tx_bd_prod; ++ tx_buf->skb = skb; ++ tx_buf->flags = 0; ++ ++ DP(NETIF_MSG_TX_QUEUED, ++ "sending pkt %u @%p next_idx %u bd %u @%p\n", ++ pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_start_bd); ++ ++#ifdef BCM_VLAN ++ if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb) && ++ (bp->flags & HW_VLAN_TX_FLAG)) { ++ tx_start_bd->vlan = cpu_to_le16(vlan_tx_tag_get(skb)); ++ tx_start_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_VLAN_TAG; ++ } else ++#endif ++ tx_start_bd->vlan = cpu_to_le16(pkt_prod); ++ ++ /* turn on parsing and get a BD */ ++ bd_prod = TX_BD(NEXT_TX_IDX(bd_prod)); ++ pbd = &fp->tx_desc_ring[bd_prod].parse_bd; ++ ++ memset(pbd, 0, sizeof(struct eth_tx_parse_bd)); ++ ++ if (xmit_type & XMIT_CSUM) { ++ hlen = (skb_network_header(skb) - skb->data) / 2; ++ ++ /* for now NS flag is not used in Linux */ ++ pbd->global_data = ++ (hlen | ((skb->protocol == cpu_to_be16(ETH_P_8021Q)) << ++ ETH_TX_PARSE_BD_LLC_SNAP_EN_SHIFT)); ++ ++ pbd->ip_hlen = (skb_transport_header(skb) - ++ skb_network_header(skb)) / 2; ++ ++ hlen += pbd->ip_hlen + tcp_hdrlen(skb) / 2; ++ ++ pbd->total_hlen = cpu_to_le16(hlen); ++ hlen = hlen*2; ++ ++ tx_start_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_L4_CSUM; ++ ++ if (xmit_type & XMIT_CSUM_V4) ++ tx_start_bd->bd_flags.as_bitfield |= ++ ETH_TX_BD_FLAGS_IP_CSUM; ++ else ++ tx_start_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_IPV6; ++ ++ if (xmit_type & XMIT_CSUM_TCP) { ++ pbd->tcp_pseudo_csum = swab16(tcp_hdr(skb)->check); ++ ++ } else { ++ s8 fix = SKB_CS_OFF(skb); /* signed! */ ++ ++ pbd->global_data |= ETH_TX_PARSE_BD_UDP_CS_FLG; ++ ++ DP(NETIF_MSG_TX_QUEUED, ++ "hlen %d fix %d csum before fix %x\n", ++ le16_to_cpu(pbd->total_hlen), fix, SKB_CS(skb)); ++ ++ /* HW bug: fixup the CSUM */ ++ pbd->tcp_pseudo_csum = ++ bnx2x_csum_fix(skb_transport_header(skb), ++ SKB_CS(skb), fix); ++ ++ DP(NETIF_MSG_TX_QUEUED, "csum after fix %x\n", ++ pbd->tcp_pseudo_csum); ++ } ++ } ++ ++ mapping = pci_map_single(bp->pdev, skb->data, ++ skb_headlen(skb), PCI_DMA_TODEVICE); ++ ++ tx_start_bd->addr_hi = cpu_to_le32(U64_HI(mapping)); ++ tx_start_bd->addr_lo = cpu_to_le32(U64_LO(mapping)); ++ nbd = skb_shinfo(skb)->nr_frags + 2; /* start_bd + pbd + frags */ ++ tx_start_bd->nbd = cpu_to_le16(nbd); ++ tx_start_bd->nbytes = cpu_to_le16(skb_headlen(skb)); ++ pkt_size = tx_start_bd->nbytes; ++ ++ DP(NETIF_MSG_TX_QUEUED, "first bd @%p addr (%x:%x) nbd %d" ++ " nbytes %d flags %x vlan %x\n", ++ tx_start_bd, tx_start_bd->addr_hi, tx_start_bd->addr_lo, ++ le16_to_cpu(tx_start_bd->nbd), le16_to_cpu(tx_start_bd->nbytes), ++ tx_start_bd->bd_flags.as_bitfield, le16_to_cpu(tx_start_bd->vlan)); ++ ++#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */ ++ if (xmit_type & XMIT_GSO) { ++ ++ DP(NETIF_MSG_TX_QUEUED, ++ "TSO packet len %d hlen %d total len %d tso size %d\n", ++ skb->len, hlen, skb_headlen(skb), ++ skb_shinfo(skb)->gso_size); ++ ++ tx_start_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_SW_LSO; ++ ++ if (unlikely(skb_headlen(skb) > hlen)) ++ bd_prod = bnx2x_tx_split(bp, fp, tx_buf, &tx_start_bd, ++ hlen, bd_prod, ++nbd); ++ ++ pbd->lso_mss = cpu_to_le16(skb_shinfo(skb)->gso_size); ++ pbd->tcp_send_seq = swab32(tcp_hdr(skb)->seq); ++ pbd->tcp_flags = pbd_tcp_flags(skb); ++ ++ if (xmit_type & XMIT_GSO_V4) { ++ pbd->ip_id = swab16(ip_hdr(skb)->id); ++ pbd->tcp_pseudo_csum = ++ swab16(~csum_tcpudp_magic(ip_hdr(skb)->saddr, ++ ip_hdr(skb)->daddr, ++ 0, IPPROTO_TCP, 0)); ++ ++ } else ++ pbd->tcp_pseudo_csum = ++ swab16(~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, ++ &ipv6_hdr(skb)->daddr, ++ 0, IPPROTO_TCP, 0)); ++ ++ pbd->global_data |= ETH_TX_PARSE_BD_PSEUDO_CS_WITHOUT_LEN; ++ } ++#endif ++ tx_data_bd = (struct eth_tx_bd *)tx_start_bd; ++ ++ for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { ++ skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; ++ ++ bd_prod = TX_BD(NEXT_TX_IDX(bd_prod)); ++ tx_data_bd = &fp->tx_desc_ring[bd_prod].reg_bd; ++ if (total_pkt_bd == NULL) ++ total_pkt_bd = &fp->tx_desc_ring[bd_prod].reg_bd; ++ ++ mapping = pci_map_page(bp->pdev, frag->page, frag->page_offset, ++ frag->size, PCI_DMA_TODEVICE); ++ ++ tx_data_bd->addr_hi = cpu_to_le32(U64_HI(mapping)); ++ tx_data_bd->addr_lo = cpu_to_le32(U64_LO(mapping)); ++ tx_data_bd->nbytes = cpu_to_le16(frag->size); ++ le16_add_cpu(&pkt_size, frag->size); ++ ++ DP(NETIF_MSG_TX_QUEUED, ++ "frag %d bd @%p addr (%x:%x) nbytes %d\n", ++ i, tx_data_bd, tx_data_bd->addr_hi, tx_data_bd->addr_lo, ++ le16_to_cpu(tx_data_bd->nbytes)); ++ } ++ ++ DP(NETIF_MSG_TX_QUEUED, "last bd @%p\n", tx_data_bd); ++ ++ bd_prod = TX_BD(NEXT_TX_IDX(bd_prod)); ++ ++ /* now send a tx doorbell, counting the next BD ++ * if the packet contains or ends with it ++ */ ++ if (TX_BD_POFF(bd_prod) < nbd) ++ nbd++; ++ ++ if (total_pkt_bd != NULL) ++ total_pkt_bd->total_pkt_bytes = pkt_size; ++ ++ if (pbd) ++ DP(NETIF_MSG_TX_QUEUED, ++ "PBD @%p ip_data %x ip_hlen %u ip_id %u lso_mss %u" ++ " tcp_flags %x xsum %x seq %u hlen %u\n", ++ pbd, pbd->global_data, pbd->ip_hlen, pbd->ip_id, ++ pbd->lso_mss, pbd->tcp_flags, pbd->tcp_pseudo_csum, ++ pbd->tcp_send_seq, le16_to_cpu(pbd->total_hlen)); ++ ++ DP(NETIF_MSG_TX_QUEUED, "doorbell: nbd %d bd %u\n", nbd, bd_prod); ++ ++ /* ++ * Make sure that the BD data is updated before updating the producer ++ * since FW might read the BD right after the producer is updated. ++ * This is only applicable for weak-ordered memory model archs such ++ * as IA-64. The following barrier is also mandatory since FW will ++ * assumes packets must have BDs. ++ */ ++ wmb(); ++ ++ fp->tx_db.data.prod += nbd; ++ barrier(); ++ DOORBELL(bp, fp->index - bp->num_rx_queues, fp->tx_db.raw); ++ ++ mmiowb(); ++ ++ fp->tx_bd_prod += nbd; ++#if (LINUX_VERSION_CODE < 0x02061f) /* ! BNX2X_UPSTREAM */ ++ /* In kernels starting from 2.6.31 netdev layer does this */ ++ dev->trans_start = jiffies; ++#endif ++ ++ if (unlikely(bnx2x_tx_avail(fp) < MAX_SKB_FRAGS + 3)) { ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ netif_tx_stop_queue(txq); ++#else ++ netif_stop_queue(dev); ++#endif ++ /* We want bnx2x_tx_int to "see" the updated tx_bd_prod ++ if we put Tx into XOFF state. */ ++ smp_mb(); ++ fp_stat->eth_q_stats.driver_xoff++; ++ if (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3) ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ netif_tx_wake_queue(txq); ++#else ++ netif_wake_queue(dev); ++#endif ++ } ++ fp_stat->tx_pkt++; ++ ++ return NETDEV_TX_OK; ++} ++ ++/* called with rtnl_lock */ ++static int bnx2x_open(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ netif_carrier_off(dev); ++ ++ bnx2x_set_power_state(bp, PCI_D0); ++ ++ return bnx2x_nic_load(bp, LOAD_OPEN); ++} ++ ++/* called with rtnl_lock */ ++static int bnx2x_close(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ /* Unload the driver, release IRQs */ ++ bnx2x_nic_unload(bp, UNLOAD_CLOSE); ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ if (atomic_read(&bp->pdev->enable_cnt) == 1) ++#endif ++ if (!CHIP_REV_IS_SLOW(bp)) ++ bnx2x_set_power_state(bp, PCI_D3hot); ++ ++ return 0; ++} ++ ++/* called with netif_tx_lock from dev_mcast.c */ ++static void bnx2x_set_rx_mode(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ u32 rx_mode = BNX2X_RX_MODE_NORMAL; ++ int port = BP_PORT(bp); ++ ++ if (bp->state != BNX2X_STATE_OPEN) { ++ DP(NETIF_MSG_IFUP, "state is %x, returning\n", bp->state); ++ return; ++ } ++ ++ DP(NETIF_MSG_IFUP, "dev->flags = %x\n", dev->flags); ++ ++ if (dev->flags & IFF_PROMISC) ++ rx_mode = BNX2X_RX_MODE_PROMISC; ++ ++ else if ((dev->flags & IFF_ALLMULTI) || ++ ((dev->mc_count > BNX2X_MAX_MULTICAST) && CHIP_IS_E1(bp))) ++ rx_mode = BNX2X_RX_MODE_ALLMULTI; ++ ++ else { /* some multicasts */ ++ if (CHIP_IS_E1(bp)) { ++ int i, old, offset; ++ struct dev_mc_list *mclist; ++ struct mac_configuration_cmd *config = ++ bnx2x_sp(bp, mcast_config); ++ ++ for (i = 0, mclist = dev->mc_list; ++ mclist && (i < dev->mc_count); ++ i++, mclist = mclist->next) { ++ ++ config->config_table[i]. ++ cam_entry.msb_mac_addr = ++ swab16(*(u16 *)&mclist->dmi_addr[0]); ++ config->config_table[i]. ++ cam_entry.middle_mac_addr = ++ swab16(*(u16 *)&mclist->dmi_addr[2]); ++ config->config_table[i]. ++ cam_entry.lsb_mac_addr = ++ swab16(*(u16 *)&mclist->dmi_addr[4]); ++ config->config_table[i].cam_entry.flags = ++ cpu_to_le16(port); ++ config->config_table[i]. ++ target_table_entry.flags = 0; ++ config->config_table[i].target_table_entry. ++ clients_bit_vector = ++ cpu_to_le32(1 << BP_L_ID(bp)); ++ config->config_table[i]. ++ target_table_entry.vlan_id = 0; ++ ++ DP(NETIF_MSG_IFUP, ++ "setting MCAST[%d] (%04x:%04x:%04x)\n", i, ++ config->config_table[i]. ++ cam_entry.msb_mac_addr, ++ config->config_table[i]. ++ cam_entry.middle_mac_addr, ++ config->config_table[i]. ++ cam_entry.lsb_mac_addr); ++ } ++ old = config->hdr.length; ++ if (old > i) { ++ for (; i < old; i++) { ++ if (CAM_IS_INVALID(config-> ++ config_table[i])) { ++ /* already invalidated */ ++ break; ++ } ++ /* invalidate */ ++ CAM_INVALIDATE(config-> ++ config_table[i]); ++ } ++ } ++ ++ if (CHIP_REV_IS_SLOW(bp)) ++ offset = BNX2X_MAX_EMUL_MULTI*(1 + port); ++ else ++ offset = BNX2X_MAX_MULTICAST*(1 + port); ++ ++ config->hdr.length = i; ++ config->hdr.offset = offset; ++ config->hdr.client_id = bp->fp->cl_id; ++ config->hdr.reserved1 = 0; ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mcast_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mcast_config)), ++ 0); ++ } else { /* E1H */ ++ /* Accept one or more multicasts */ ++ struct dev_mc_list *mclist; ++ u32 mc_filter[MC_HASH_SIZE]; ++ u32 crc, bit, regidx; ++ int i; ++ ++ memset(mc_filter, 0, 4 * MC_HASH_SIZE); ++ ++ for (i = 0, mclist = dev->mc_list; ++ mclist && (i < dev->mc_count); ++ i++, mclist = mclist->next) { ++ ++#if (LINUX_VERSION_CODE >= 0x02061b) /* BNX2X_UPSTREAM */ ++ DP(NETIF_MSG_IFUP, "Adding mcast MAC: %pM\n", ++ mclist->dmi_addr); ++#else ++ DP(NETIF_MSG_IFUP, "Adding mcast MAC: " ++ "%02x:%02x:%02x:%02x:%02x:%02x\n", ++ mclist->dmi_addr[0], mclist->dmi_addr[1], ++ mclist->dmi_addr[2], mclist->dmi_addr[3], ++ mclist->dmi_addr[4], mclist->dmi_addr[5]); ++#endif ++ ++ crc = crc32c_le(0, mclist->dmi_addr, ETH_ALEN); ++ bit = (crc >> 24) & 0xff; ++ regidx = bit >> 5; ++ bit &= 0x1f; ++ mc_filter[regidx] |= (1 << bit); ++ } ++ ++ for (i = 0; i < MC_HASH_SIZE; i++) ++ REG_WR(bp, MC_HASH_OFFSET(bp, i), ++ mc_filter[i]); ++ } ++ } ++ ++ bp->rx_mode = rx_mode; ++ bnx2x_set_storm_rx_mode(bp); ++} ++ ++/* called with rtnl_lock */ ++static int bnx2x_change_mac_addr(struct net_device *dev, void *p) ++{ ++ struct sockaddr *addr = p; ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ if (!is_valid_ether_addr((u8 *)(addr->sa_data))) ++ return -EINVAL; ++ ++ memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); ++ if (netif_running(dev)) { ++ if (CHIP_IS_E1(bp)) ++ bnx2x_set_mac_addr_e1(bp, 1); ++ else ++ bnx2x_set_mac_addr_e1h(bp, 1); ++ } ++ ++ return 0; ++} ++ ++/* called with rtnl_lock */ ++static int bnx2x_mdio_read(struct net_device *netdev, int prtad, ++ int devad, u16 addr) ++{ ++ struct bnx2x *bp = netdev_priv(netdev); ++ u16 value; ++ int rc; ++ u32 phy_type = XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config); ++ ++ DP(NETIF_MSG_LINK, "mdio_read: prtad 0x%x, devad 0x%x, addr 0x%x\n", ++ prtad, devad, addr); ++ ++ if (prtad != bp->mdio.prtad) { ++ DP(NETIF_MSG_LINK, "prtad missmatch (cmd:0x%x != bp:0x%x)\n", ++ prtad, bp->mdio.prtad); ++ return -EINVAL; ++ } ++ ++ /* The HW expects different devad if CL22 is used */ ++ devad = (devad == MDIO_DEVAD_NONE) ? DEFAULT_PHY_DEV_ADDR : devad; ++ ++ bnx2x_acquire_phy_lock(bp); ++ rc = bnx2x_cl45_read(bp, BP_PORT(bp), phy_type, prtad, ++ devad, addr, &value); ++ bnx2x_release_phy_lock(bp); ++ DP(NETIF_MSG_LINK, "mdio_read_val 0x%x rc = 0x%x\n", value, rc); ++ ++ if (!rc) ++ rc = value; ++ return rc; ++} ++ ++/* called with rtnl_lock */ ++static int bnx2x_mdio_write(struct net_device *netdev, int prtad, int devad, ++ u16 addr, u16 value) ++{ ++ struct bnx2x *bp = netdev_priv(netdev); ++ u32 ext_phy_type = XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config); ++ int rc; ++ ++ DP(NETIF_MSG_LINK, "mdio_write: prtad 0x%x, devad 0x%x, addr 0x%x," ++ " value 0x%x\n", prtad, devad, addr, value); ++ ++ if (prtad != bp->mdio.prtad) { ++ DP(NETIF_MSG_LINK, "prtad missmatch (cmd:0x%x != bp:0x%x)\n", ++ prtad, bp->mdio.prtad); ++ return -EINVAL; ++ } ++ ++ /* The HW expects different devad if CL22 is used */ ++ devad = (devad == MDIO_DEVAD_NONE) ? DEFAULT_PHY_DEV_ADDR : devad; ++ ++ bnx2x_acquire_phy_lock(bp); ++ rc = bnx2x_cl45_write(bp, BP_PORT(bp), ext_phy_type, prtad, ++ devad, addr, value); ++ bnx2x_release_phy_lock(bp); ++ return rc; ++} ++ ++/* called with rtnl_lock */ ++static int bnx2x_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ struct mii_ioctl_data *mdio = if_mii(ifr); ++ ++ DP(NETIF_MSG_LINK, "ioctl: phy id 0x%x, reg 0x%x, val_in 0x%x\n", ++ mdio->phy_id, mdio->reg_num, mdio->val_in); ++ ++ if (!netif_running(dev)) ++ return -EAGAIN; ++ ++ return mdio_mii_ioctl(&bp->mdio, mdio, cmd); ++} ++ ++/* called with rtnl_lock */ ++static int bnx2x_change_mtu(struct net_device *dev, int new_mtu) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int rc = 0; ++ ++ if ((new_mtu > ETH_MAX_JUMBO_PACKET_SIZE) || ++ ((new_mtu + ETH_HLEN) < ETH_MIN_PACKET_SIZE)) ++ return -EINVAL; ++ ++ /* This does not race with packet allocation ++ * because the actual alloc size is ++ * only updated as part of load ++ */ ++ dev->mtu = new_mtu; ++ ++ if (netif_running(dev)) { ++ bnx2x_nic_unload(bp, UNLOAD_NORMAL); ++ rc = bnx2x_nic_load(bp, LOAD_NORMAL); ++ } ++ ++ return rc; ++} ++ ++static void bnx2x_tx_timeout(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (!bp->panic) ++ bnx2x_panic(); ++#endif ++ /* This allows the netif to be shutdown gracefully before resetting */ ++ schedule_work(&bp->reset_task); ++} ++ ++#ifdef BCM_VLAN ++/* called with rtnl_lock */ ++static void bnx2x_vlan_rx_register(struct net_device *dev, ++ struct vlan_group *vlgrp) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ bp->vlgrp = vlgrp; ++ ++ /* Set flags according to the required capabilities */ ++ bp->flags &= ~(HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG); ++ ++ if (dev->features & NETIF_F_HW_VLAN_TX) ++ bp->flags |= HW_VLAN_TX_FLAG; ++ ++ if (dev->features & NETIF_F_HW_VLAN_RX) ++ bp->flags |= HW_VLAN_RX_FLAG; ++ ++ if (netif_running(dev)) ++ bnx2x_set_client_config(bp); ++} ++ ++#if (LINUX_VERSION_CODE < 0x020616) /* ! BNX2X_UPSTREAM */ ++static void bnx2x_vlan_rx_kill_vid(struct net_device *dev, uint16_t vid) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ if (bp->vlgrp) ++ vlan_group_set_device(bp->vlgrp, vid, NULL); ++} ++#endif ++#endif ++ ++#if defined(HAVE_POLL_CONTROLLER) || defined(CONFIG_NET_POLL_CONTROLLER) ++static void poll_bnx2x(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ disable_irq(bp->pdev->irq); ++#if (LINUX_VERSION_CODE < 0x020613) && (VMWARE_ESX_DDK_VERSION < 40000) ++ bnx2x_interrupt(bp->pdev->irq, dev, NULL); ++#else /* BNX2X_UPSTREAM */ ++ bnx2x_interrupt(bp->pdev->irq, dev); ++#endif ++ enable_irq(bp->pdev->irq); ++} ++#endif ++ ++#if (LINUX_VERSION_CODE >= 0x02061e) /* BNX2X_UPSTREAM */ ++static const struct net_device_ops bnx2x_netdev_ops = { ++ .ndo_open = bnx2x_open, ++ .ndo_stop = bnx2x_close, ++ .ndo_start_xmit = bnx2x_start_xmit, ++ .ndo_set_multicast_list = bnx2x_set_rx_mode, ++ .ndo_set_mac_address = bnx2x_change_mac_addr, ++ .ndo_validate_addr = eth_validate_addr, ++ .ndo_do_ioctl = bnx2x_ioctl, ++ .ndo_change_mtu = bnx2x_change_mtu, ++ .ndo_tx_timeout = bnx2x_tx_timeout, ++#ifdef BCM_VLAN ++ .ndo_vlan_rx_register = bnx2x_vlan_rx_register, ++#endif ++#if defined(HAVE_POLL_CONTROLLER) || defined(CONFIG_NET_POLL_CONTROLLER) ++ .ndo_poll_controller = poll_bnx2x, ++#endif ++}; ++#endif ++ ++static int __devinit bnx2x_init_dev(struct pci_dev *pdev, ++ struct net_device *dev) ++{ ++ struct bnx2x *bp; ++ int rc; ++ ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ SET_MODULE_OWNER(dev); ++#endif ++#if (LINUX_VERSION_CODE >= 0x020419) /* BNX2X_UPSTREAM */ ++ SET_NETDEV_DEV(dev, &pdev->dev); ++#endif ++ bp = netdev_priv(dev); ++ ++ bp->dev = dev; ++ bp->pdev = pdev; ++ bp->flags = 0; ++ bp->func = PCI_FUNC(pdev->devfn); ++ ++ rc = pci_enable_device(pdev); ++ if (rc) { ++ printk(KERN_ERR PFX "Cannot enable PCI device, aborting\n"); ++ goto err_out; ++ } ++ ++ if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) { ++ printk(KERN_ERR PFX "Cannot find PCI device base address," ++ " aborting\n"); ++ rc = -ENODEV; ++ goto err_out_disable; ++ } ++ ++ if (!(pci_resource_flags(pdev, 2) & IORESOURCE_MEM)) { ++ printk(KERN_ERR PFX "Cannot find second PCI device" ++ " base address, aborting\n"); ++ rc = -ENODEV; ++ goto err_out_disable; ++ } ++ ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ if (atomic_read(&pdev->enable_cnt) == 1) { ++#endif ++ rc = pci_request_regions(pdev, DRV_MODULE_NAME); ++ if (rc) { ++ printk(KERN_ERR PFX "Cannot obtain PCI resources," ++ " aborting\n"); ++ goto err_out_disable; ++ } ++ ++ pci_set_master(pdev); ++#if (LINUX_VERSION_CODE >= 0x02060b) /* BNX2X_UPSTREAM */ ++ pci_save_state(pdev); ++#else ++ pci_save_state(pdev, bp->pci_state); ++#endif ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ } ++#endif ++ ++ bp->pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM); ++ if (bp->pm_cap == 0) { ++ printk(KERN_ERR PFX "Cannot find power management" ++ " capability, aborting\n"); ++ rc = -EIO; ++ goto err_out_release; ++ } ++ ++ bp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP); ++ if (bp->pcie_cap == 0) { ++ printk(KERN_ERR PFX "Cannot find PCI Express capability," ++ " aborting\n"); ++ rc = -EIO; ++ goto err_out_release; ++ } ++ ++ if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) == 0) { ++ bp->flags |= USING_DAC_FLAG; ++ if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)) != 0) { ++ printk(KERN_ERR PFX "pci_set_consistent_dma_mask" ++ " failed, aborting\n"); ++ rc = -EIO; ++ goto err_out_release; ++ } ++ ++ } else if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0) { ++ printk(KERN_ERR PFX "System does not support DMA," ++ " aborting\n"); ++ rc = -EIO; ++ goto err_out_release; ++ } ++ ++ dev->mem_start = pci_resource_start(pdev, 0); ++ dev->base_addr = dev->mem_start; ++ dev->mem_end = pci_resource_end(pdev, 0); ++ ++ dev->irq = pdev->irq; ++ ++#if (LINUX_VERSION_CODE >= 0x02061c) /* BNX2X_UPSTREAM */ ++ bp->regview = pci_ioremap_bar(pdev, 0); ++#else ++ bp->regview = ioremap_nocache(dev->base_addr, ++ pci_resource_len(pdev, 0)); ++#endif ++ if (!bp->regview) { ++ printk(KERN_ERR PFX "Cannot map register space, aborting\n"); ++ rc = -ENOMEM; ++ goto err_out_release; ++ } ++ ++ bp->doorbells = ioremap_nocache(pci_resource_start(pdev, 2), ++ min_t(u64, BNX2X_DB_SIZE, ++ pci_resource_len(pdev, 2))); ++ if (!bp->doorbells) { ++ printk(KERN_ERR PFX "Cannot map doorbell space, aborting\n"); ++ rc = -ENOMEM; ++ goto err_out_unmap; ++ } ++ ++ bnx2x_set_power_state(bp, PCI_D0); ++ ++ /* clean indirect addresses */ ++ pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, ++ PCICFG_VENDOR_ID_OFFSET); ++ REG_WR(bp, PXP2_REG_PGL_ADDR_88_F0 + BP_PORT(bp)*16, 0); ++ REG_WR(bp, PXP2_REG_PGL_ADDR_8C_F0 + BP_PORT(bp)*16, 0); ++ REG_WR(bp, PXP2_REG_PGL_ADDR_90_F0 + BP_PORT(bp)*16, 0); ++ REG_WR(bp, PXP2_REG_PGL_ADDR_94_F0 + BP_PORT(bp)*16, 0); ++ ++#if (LINUX_VERSION_CODE < 0x02061e) /* ! BNX2X_UPSTREAM */ ++#ifndef BNX2X_NEW_NAPI /* ! BNX2X_UPSTREAM */ ++ dev->poll = bnx2x_poll; ++ dev->weight = 128*4; ++#endif ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ dev->get_stats = bnx2x_get_stats; ++#endif ++ dev->hard_start_xmit = bnx2x_start_xmit; ++#endif ++ dev->watchdog_timeo = TX_TIMEOUT; ++ ++#if (LINUX_VERSION_CODE >= 0x02061e) /* BNX2X_UPSTREAM */ ++ dev->netdev_ops = &bnx2x_netdev_ops; ++#endif ++ dev->ethtool_ops = &bnx2x_ethtool_ops; ++#if (LINUX_VERSION_CODE < 0x02061e) /* ! BNX2X_UPSTREAM */ ++ dev->open = bnx2x_open; ++ dev->stop = bnx2x_close; ++ dev->set_multicast_list = bnx2x_set_rx_mode; ++ dev->set_mac_address = bnx2x_change_mac_addr; ++ dev->do_ioctl = bnx2x_ioctl; ++ dev->change_mtu = bnx2x_change_mtu; ++ dev->tx_timeout = bnx2x_tx_timeout; ++#ifdef BCM_VLAN ++ dev->vlan_rx_register = bnx2x_vlan_rx_register; ++#if (LINUX_VERSION_CODE < 0x020616) /* ! BNX2X_UPSTREAM */ ++ dev->vlan_rx_kill_vid = bnx2x_vlan_rx_kill_vid; ++#endif ++#endif ++#if defined(HAVE_POLL_CONTROLLER) || defined(CONFIG_NET_POLL_CONTROLLER) ++ dev->poll_controller = poll_bnx2x; ++#endif ++#endif ++ dev->features |= NETIF_F_SG; ++ dev->features |= NETIF_F_HW_CSUM; ++ if (bp->flags & USING_DAC_FLAG) ++ dev->features |= NETIF_F_HIGHDMA; ++#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */ ++ dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN); ++#endif ++#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */ ++ dev->features |= NETIF_F_TSO6; ++#endif ++#ifdef BCM_VLAN ++ dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX); ++ bp->flags |= (HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG); ++ ++#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */ ++ dev->vlan_features |= NETIF_F_SG; ++ dev->vlan_features |= NETIF_F_HW_CSUM; ++ if (bp->flags & USING_DAC_FLAG) ++ dev->vlan_features |= NETIF_F_HIGHDMA; ++ dev->vlan_features |= (NETIF_F_TSO | NETIF_F_TSO_ECN); ++ dev->vlan_features |= NETIF_F_TSO6; ++#endif ++#endif ++ ++ /* get_port_hwinfo() will set prtad and mmds properly */ ++ bp->mdio.prtad = MDIO_PRTAD_NONE; ++ bp->mdio.mmds = 0; ++ bp->mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22; ++ bp->mdio.dev = dev; ++ bp->mdio.mdio_read = bnx2x_mdio_read; ++ bp->mdio.mdio_write = bnx2x_mdio_write; ++ ++ return 0; ++ ++err_out_unmap: ++ if (bp->regview) { ++ iounmap(bp->regview); ++ bp->regview = NULL; ++ } ++ if (bp->doorbells) { ++ iounmap(bp->doorbells); ++ bp->doorbells = NULL; ++ } ++ ++err_out_release: ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ if (atomic_read(&pdev->enable_cnt) == 1) ++#endif ++ pci_release_regions(pdev); ++ ++err_out_disable: ++ pci_disable_device(pdev); ++ pci_set_drvdata(pdev, NULL); ++ ++err_out: ++ return rc; ++} ++ ++static void __devinit bnx2x_get_pcie_width_speed(struct bnx2x *bp, ++ int *width, int *speed) ++{ ++ u32 val = REG_RD(bp, PCICFG_OFFSET + PCICFG_LINK_CONTROL); ++ ++ *width = (val & PCICFG_LINK_WIDTH) >> PCICFG_LINK_WIDTH_SHIFT; ++ ++ /* return value of 1=2.5GHz 2=5GHz */ ++ *speed = (val & PCICFG_LINK_SPEED) >> PCICFG_LINK_SPEED_SHIFT; ++} ++ ++#if defined(BNX2X_UPSTREAM) && !defined(BNX2X_USE_INIT_VALUES) /* BNX2X_UPSTREAM */ ++static int __devinit bnx2x_check_firmware(struct bnx2x *bp) ++{ ++ const struct firmware *firmware = bp->firmware; ++ struct bnx2x_fw_file_hdr *fw_hdr; ++ struct bnx2x_fw_file_section *sections; ++ u32 offset, len, num_ops; ++ u16 *ops_offsets; ++ int i; ++ const u8 *fw_ver; ++ ++ if (firmware->size < sizeof(struct bnx2x_fw_file_hdr)) ++ return -EINVAL; ++ ++ fw_hdr = (struct bnx2x_fw_file_hdr *)firmware->data; ++ sections = (struct bnx2x_fw_file_section *)fw_hdr; ++ ++ /* Make sure none of the offsets and sizes make us read beyond ++ * the end of the firmware data */ ++ for (i = 0; i < sizeof(*fw_hdr) / sizeof(*sections); i++) { ++ offset = be32_to_cpu(sections[i].offset); ++ len = be32_to_cpu(sections[i].len); ++ if (offset + len > firmware->size) { ++ printk(KERN_ERR PFX "Section %d length is out of " ++ "bounds\n", i); ++ return -EINVAL; ++ } ++ } ++ ++ /* Likewise for the init_ops offsets */ ++ offset = be32_to_cpu(fw_hdr->init_ops_offsets.offset); ++ ops_offsets = (u16 *)(firmware->data + offset); ++ num_ops = be32_to_cpu(fw_hdr->init_ops.len) / sizeof(struct raw_op); ++ ++ for (i = 0; i < be32_to_cpu(fw_hdr->init_ops_offsets.len) / 2; i++) { ++ if (be16_to_cpu(ops_offsets[i]) > num_ops) { ++ printk(KERN_ERR PFX "Section offset %d is out of " ++ "bounds\n", i); ++ return -EINVAL; ++ } ++ } ++ ++ /* Check FW version */ ++ offset = be32_to_cpu(fw_hdr->fw_version.offset); ++ fw_ver = firmware->data + offset; ++ if ((fw_ver[0] != BCM_5710_FW_MAJOR_VERSION) || ++ (fw_ver[1] != BCM_5710_FW_MINOR_VERSION) || ++ (fw_ver[2] != BCM_5710_FW_REVISION_VERSION) || ++ (fw_ver[3] != BCM_5710_FW_ENGINEERING_VERSION)) { ++ printk(KERN_ERR PFX "Bad FW version:%d.%d.%d.%d." ++ " Should be %d.%d.%d.%d\n", ++ fw_ver[0], fw_ver[1], fw_ver[2], ++ fw_ver[3], BCM_5710_FW_MAJOR_VERSION, ++ BCM_5710_FW_MINOR_VERSION, ++ BCM_5710_FW_REVISION_VERSION, ++ BCM_5710_FW_ENGINEERING_VERSION); ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++static inline void be32_to_cpu_n(const u8 *_source, u8 *_target, u32 n) ++{ ++ const __be32 *source = (const __be32 *)_source; ++ u32 *target = (u32 *)_target; ++ u32 i; ++ ++ for (i = 0; i < n/4; i++) ++ target[i] = be32_to_cpu(source[i]); ++} ++ ++/* ++ Ops array is stored in the following format: ++ {op(8bit), offset(24bit, big endian), data(32bit, big endian)} ++ */ ++static inline void bnx2x_prep_ops(const u8 *_source, u8 *_target, u32 n) ++{ ++ const __be32 *source = (const __be32 *)_source; ++ struct raw_op *target = (struct raw_op *)_target; ++ u32 i, j, tmp; ++ ++ for (i = 0, j = 0; i < n/8; i++, j += 2) { ++ tmp = be32_to_cpu(source[j]); ++ target[i].op = (tmp >> 24) & 0xff; ++ target[i].offset = tmp & 0xffffff; ++ target[i].raw_data = be32_to_cpu(source[j+1]); ++ } ++} ++ ++static inline void be16_to_cpu_n(const u8 *_source, u8 *_target, u32 n) ++{ ++ const __be16 *source = (const __be16 *)_source; ++ u16 *target = (u16 *)_target; ++ u32 i; ++ ++ for (i = 0; i < n/2; i++) ++ target[i] = be16_to_cpu(source[i]); ++} ++ ++#define BNX2X_ALLOC_AND_SET(arr, lbl, func) \ ++ do { \ ++ u32 len = be32_to_cpu(fw_hdr->arr.len); \ ++ bp->arr = kmalloc(len, GFP_KERNEL); \ ++ if (!bp->arr) { \ ++ printk(KERN_ERR PFX "Failed to allocate %d bytes " \ ++ "for "#arr"\n", len); \ ++ goto lbl; \ ++ } \ ++ func(bp->firmware->data + be32_to_cpu(fw_hdr->arr.offset), \ ++ (u8 *)bp->arr, len); \ ++ } while (0) ++ ++static int __devinit bnx2x_init_firmware(struct bnx2x *bp, struct device *dev) ++{ ++ char fw_file_name[40] = {0}; ++ struct bnx2x_fw_file_hdr *fw_hdr; ++ int rc, offset; ++ ++ /* Create a FW file name */ ++ if (CHIP_IS_E1(bp)) ++ offset = sprintf(fw_file_name, FW_FILE_PREFIX_E1); ++ else ++ offset = sprintf(fw_file_name, FW_FILE_PREFIX_E1H); ++ ++ sprintf(fw_file_name + offset, "%d.%d.%d.%d.fw", ++ BCM_5710_FW_MAJOR_VERSION, ++ BCM_5710_FW_MINOR_VERSION, ++ BCM_5710_FW_REVISION_VERSION, ++ BCM_5710_FW_ENGINEERING_VERSION); ++ ++ printk(KERN_INFO PFX "Loading %s\n", fw_file_name); ++ ++ rc = request_firmware(&bp->firmware, fw_file_name, dev); ++ if (rc) { ++ printk(KERN_ERR PFX "Can't load firmware file %s\n", ++ fw_file_name); ++ goto request_firmware_exit; ++ } ++ ++ rc = bnx2x_check_firmware(bp); ++ if (rc) { ++ printk(KERN_ERR PFX "Corrupt firmware file %s\n", fw_file_name); ++ goto request_firmware_exit; ++ } ++ ++ fw_hdr = (struct bnx2x_fw_file_hdr *)bp->firmware->data; ++ ++ /* Initialize the pointers to the init arrays */ ++ /* Blob */ ++ BNX2X_ALLOC_AND_SET(init_data, request_firmware_exit, be32_to_cpu_n); ++ ++ /* Opcodes */ ++ BNX2X_ALLOC_AND_SET(init_ops, init_ops_alloc_err, bnx2x_prep_ops); ++ ++ /* Offsets */ ++ BNX2X_ALLOC_AND_SET(init_ops_offsets, init_offsets_alloc_err, ++ be16_to_cpu_n); ++ ++ /* STORMs firmware */ ++ INIT_TSEM_INT_TABLE_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->tsem_int_table_data.offset); ++ INIT_TSEM_PRAM_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->tsem_pram_data.offset); ++ INIT_USEM_INT_TABLE_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->usem_int_table_data.offset); ++ INIT_USEM_PRAM_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->usem_pram_data.offset); ++ INIT_XSEM_INT_TABLE_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->xsem_int_table_data.offset); ++ INIT_XSEM_PRAM_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->xsem_pram_data.offset); ++ INIT_CSEM_INT_TABLE_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->csem_int_table_data.offset); ++ INIT_CSEM_PRAM_DATA(bp) = bp->firmware->data + ++ be32_to_cpu(fw_hdr->csem_pram_data.offset); ++ ++ return 0; ++ ++init_offsets_alloc_err: ++ kfree(bp->init_ops); ++init_ops_alloc_err: ++ kfree(bp->init_data); ++request_firmware_exit: ++ release_firmware(bp->firmware); ++ ++ return rc; ++} ++ ++#else ++ ++static int __devinit bnx2x_init_firmware(struct bnx2x *bp, struct device *dev) ++{ ++ if (CHIP_IS_E1(bp)) ++ bnx2x_init_e1_firmware(bp); ++ ++ else if (CHIP_IS_E1H(bp)) ++ bnx2x_init_e1h_firmware(bp); ++ ++ else { ++ printk(KERN_ERR PFX "Unsupported chip revision\n"); ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++#endif ++ ++static int __devinit bnx2x_init_one(struct pci_dev *pdev, ++ const struct pci_device_id *ent) ++{ ++ struct net_device *dev = NULL; ++ struct bnx2x *bp; ++ int pcie_width, pcie_speed; ++ int rc; ++ ++ /* dev zeroed in init_etherdev */ ++#ifdef BNX2X_MULTI_QUEUE /* BNX2X_UPSTREAM */ ++ dev = alloc_etherdev_mq(sizeof(*bp), MAX_CONTEXT); ++#else ++ dev = alloc_etherdev(sizeof(*bp)); ++#endif ++ if (!dev) { ++ printk(KERN_ERR PFX "Cannot allocate net device\n"); ++ return -ENOMEM; ++ } ++ ++ bp = netdev_priv(dev); ++ bp->msglevel = debug; ++ ++ pci_set_drvdata(pdev, dev); ++ ++ rc = bnx2x_init_dev(pdev, dev); ++ if (rc < 0) { ++ free_netdev(dev); ++ return rc; ++ } ++ ++ rc = bnx2x_init_bp(bp); ++ if (rc) ++ goto init_one_exit; ++ ++ /* Set init arrays */ ++ rc = bnx2x_init_firmware(bp, &pdev->dev); ++ if (rc) { ++ printk(KERN_ERR PFX "Error loading firmware\n"); ++ goto init_one_exit; ++ } ++ ++ rc = register_netdev(dev); ++ if (rc) { ++ dev_err(&pdev->dev, "Cannot register net device\n"); ++ goto init_one_exit; ++ } ++ ++ bnx2x_get_pcie_width_speed(bp, &pcie_width, &pcie_speed); ++ printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx," ++ " IRQ %d, ", dev->name, board_info[ent->driver_data].name, ++ (CHIP_REV(bp) >> 12) + 'A', (CHIP_METAL(bp) >> 4), ++ pcie_width, (pcie_speed == 2) ? "5GHz (Gen2)" : "2.5GHz", ++ dev->base_addr, bp->pdev->irq); ++#if (LINUX_VERSION_CODE >= 0x02061b) /* BNX2X_UPSTREAM */ ++ printk(KERN_CONT "node addr %pM\n", dev->dev_addr); ++#else ++ printk(KERN_CONT "node addr "); ++ { ++ int i; ++ ++ for (i = 0; i < ETH_ALEN; i++) ++ printk(KERN_CONT "%2.2x", dev->dev_addr[i]); ++ } ++ printk(KERN_CONT "\n"); ++#endif ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) /* ! BNX2X_UPSTREAM */ ++ VMKNETDDI_REGISTER_QUEUEOPS(dev, bnx2x_netqueue_ops); ++ printk(KERN_INFO "VMware NetQueue Ops is registered for bnx2x\n"); ++#endif ++ ++ return 0; ++ ++init_one_exit: ++ if (bp->regview) ++ iounmap(bp->regview); ++ ++ if (bp->doorbells) ++ iounmap(bp->doorbells); ++ ++ free_netdev(dev); ++ ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ if (atomic_read(&pdev->enable_cnt) == 1) ++#endif ++ pci_release_regions(pdev); ++ ++ pci_disable_device(pdev); ++ pci_set_drvdata(pdev, NULL); ++ ++ return rc; ++} ++ ++static void __devexit bnx2x_remove_one(struct pci_dev *pdev) ++{ ++ struct net_device *dev = pci_get_drvdata(pdev); ++ struct bnx2x *bp; ++ ++ if (!dev) { ++ printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n"); ++ return; ++ } ++ bp = netdev_priv(dev); ++ ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ flush_scheduled_work(); ++#endif ++ unregister_netdev(dev); ++ ++#if defined(BNX2X_UPSTREAM) && !defined(BNX2X_USE_INIT_VALUES) /* BNX2X_UPSTREAM */ ++ kfree(bp->init_ops_offsets); ++ kfree(bp->init_ops); ++ kfree(bp->init_data); ++ release_firmware(bp->firmware); ++#endif ++ ++ if (bp->regview) ++ iounmap(bp->regview); ++ ++ if (bp->doorbells) ++ iounmap(bp->doorbells); ++ ++ free_netdev(dev); ++ ++#if (LINUX_VERSION_CODE >= 0x020614) /* BNX2X_UPSTREAM */ ++ if (atomic_read(&pdev->enable_cnt) == 1) ++#endif ++ pci_release_regions(pdev); ++ ++ pci_disable_device(pdev); ++ pci_set_drvdata(pdev, NULL); ++} ++ ++static int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state) ++{ ++ struct net_device *dev = pci_get_drvdata(pdev); ++ struct bnx2x *bp; ++ ++ if (!dev) { ++ printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n"); ++ return -ENODEV; ++ } ++ bp = netdev_priv(dev); ++ ++ rtnl_lock(); ++ ++#if (LINUX_VERSION_CODE >= 0x02060b) /* BNX2X_UPSTREAM */ ++ pci_save_state(pdev); ++#else ++ pci_save_state(pdev, bp->pci_state); ++#endif ++ ++ if (!netif_running(dev)) { ++ rtnl_unlock(); ++ return 0; ++ } ++ ++#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */ ++ flush_scheduled_work(); ++#endif ++ netif_device_detach(dev); ++ ++ bnx2x_nic_unload(bp, UNLOAD_CLOSE); ++ ++ bnx2x_set_power_state(bp, pci_choose_state(pdev, state)); ++ ++ rtnl_unlock(); ++ ++ return 0; ++} ++ ++static int bnx2x_resume(struct pci_dev *pdev) ++{ ++ struct net_device *dev = pci_get_drvdata(pdev); ++ struct bnx2x *bp; ++ int rc; ++ ++ if (!dev) { ++ printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n"); ++ return -ENODEV; ++ } ++ bp = netdev_priv(dev); ++ ++ rtnl_lock(); ++ ++#if (LINUX_VERSION_CODE >= 0x02060b) /* BNX2X_UPSTREAM */ ++ pci_restore_state(pdev); ++#else ++ pci_restore_state(pdev, bp->pci_state); ++#endif ++ ++ if (!netif_running(dev)) { ++ rtnl_unlock(); ++ return 0; ++ } ++ ++ bnx2x_set_power_state(bp, PCI_D0); ++ netif_device_attach(dev); ++ ++ rc = bnx2x_nic_load(bp, LOAD_OPEN); ++ ++ rtnl_unlock(); ++ ++ return rc; ++} ++ ++#if (LINUX_VERSION_CODE >= 0x02060b) && !defined(__VMKLNX__) /* BNX2X_UPSTREAM */ ++static int bnx2x_eeh_nic_unload(struct bnx2x *bp) ++{ ++ int i; ++ ++ bp->state = BNX2X_STATE_ERROR; ++ ++ bp->rx_mode = BNX2X_RX_MODE_NONE; ++ ++ bnx2x_netif_stop(bp, 0); ++ ++ del_timer_sync(&bp->timer); ++ bp->stats_state = STATS_STATE_DISABLED; ++ DP(BNX2X_MSG_STATS, "stats_state - DISABLED\n"); ++ ++ /* Release IRQs */ ++ bnx2x_free_irq(bp); ++ ++ if (CHIP_IS_E1(bp)) { ++ struct mac_configuration_cmd *config = ++ bnx2x_sp(bp, mcast_config); ++ ++ for (i = 0; i < config->hdr.length; i++) ++ CAM_INVALIDATE(config->config_table[i]); ++ } ++ ++ /* Free SKBs, SGEs, TPA pool and driver internals */ ++ bnx2x_free_skbs(bp); ++ for_each_rx_queue(bp, i) ++ bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); ++#if defined(BNX2X_NEW_NAPI) && (LINUX_VERSION_CODE >= 0x02061b) /* BNX2X_UPSTREAM */ ++ for_each_rx_queue(bp, i) ++ netif_napi_del(&bnx2x_fp(bp, i, napi)); ++#endif ++ bnx2x_free_mem(bp); ++ ++ bp->state = BNX2X_STATE_CLOSED; ++ ++ netif_carrier_off(bp->dev); ++ ++ return 0; ++} ++ ++static void bnx2x_eeh_recover(struct bnx2x *bp) ++{ ++ u32 val; ++ ++ mutex_init(&bp->port.phy_mutex); ++ ++ bp->common.shmem_base = REG_RD(bp, MISC_REG_SHARED_MEM_ADDR); ++ bp->link_params.shmem_base = bp->common.shmem_base; ++ BNX2X_DEV_INFO("shmem offset is 0x%x\n", bp->common.shmem_base); ++ ++ if (!bp->common.shmem_base || ++ (bp->common.shmem_base < 0xA0000) || ++ (bp->common.shmem_base >= 0xC0000)) { ++ BNX2X_DEV_INFO("MCP not active\n"); ++ bp->flags |= NO_MCP_FLAG; ++ return; ++ } ++ ++ val = SHMEM_RD(bp, validity_map[BP_PORT(bp)]); ++ if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) ++ != (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) ++ BNX2X_ERR("BAD MCP validity signature\n"); ++ ++ if (!BP_NOMCP(bp)) { ++ bp->fw_seq = (SHMEM_RD(bp, func_mb[BP_FUNC(bp)].drv_mb_header) ++ & DRV_MSG_SEQ_NUMBER_MASK); ++ BNX2X_DEV_INFO("fw_seq 0x%08x\n", bp->fw_seq); ++ } ++} ++ ++/** ++ * bnx2x_io_error_detected - called when PCI error is detected ++ * @pdev: Pointer to PCI device ++ * @state: The current pci connection state ++ * ++ * This function is called after a PCI bus error affecting ++ * this device has been detected. ++ */ ++static pci_ers_result_t bnx2x_io_error_detected(struct pci_dev *pdev, ++ pci_channel_state_t state) ++{ ++ struct net_device *dev = pci_get_drvdata(pdev); ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ rtnl_lock(); ++ ++ netif_device_detach(dev); ++ ++ if (netif_running(dev)) ++ bnx2x_eeh_nic_unload(bp); ++ ++ pci_disable_device(pdev); ++ ++ rtnl_unlock(); ++ ++ /* Request a slot reset */ ++ return PCI_ERS_RESULT_NEED_RESET; ++} ++ ++/** ++ * bnx2x_io_slot_reset - called after the PCI bus has been reset ++ * @pdev: Pointer to PCI device ++ * ++ * Restart the card from scratch, as if from a cold-boot. ++ */ ++static pci_ers_result_t bnx2x_io_slot_reset(struct pci_dev *pdev) ++{ ++ struct net_device *dev = pci_get_drvdata(pdev); ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ rtnl_lock(); ++ ++ if (pci_enable_device(pdev)) { ++ dev_err(&pdev->dev, ++ "Cannot re-enable PCI device after reset\n"); ++ rtnl_unlock(); ++ return PCI_ERS_RESULT_DISCONNECT; ++ } ++ ++ pci_set_master(pdev); ++ pci_restore_state(pdev); ++ ++ if (netif_running(dev)) ++ bnx2x_set_power_state(bp, PCI_D0); ++ ++ rtnl_unlock(); ++ ++ return PCI_ERS_RESULT_RECOVERED; ++} ++ ++/** ++ * bnx2x_io_resume - called when traffic can start flowing again ++ * @pdev: Pointer to PCI device ++ * ++ * This callback is called when the error recovery driver tells us that ++ * its OK to resume normal operation. ++ */ ++static void bnx2x_io_resume(struct pci_dev *pdev) ++{ ++ struct net_device *dev = pci_get_drvdata(pdev); ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ rtnl_lock(); ++ ++ bnx2x_eeh_recover(bp); ++ ++ if (netif_running(dev)) ++ bnx2x_nic_load(bp, LOAD_NORMAL); ++ ++ netif_device_attach(dev); ++ ++ rtnl_unlock(); ++} ++ ++static struct pci_error_handlers bnx2x_err_handler = { ++ .error_detected = bnx2x_io_error_detected, ++ .slot_reset = bnx2x_io_slot_reset, ++ .resume = bnx2x_io_resume, ++}; ++#endif ++ ++static struct pci_driver bnx2x_pci_driver = { ++ .name = DRV_MODULE_NAME, ++ .id_table = bnx2x_pci_tbl, ++ .probe = bnx2x_init_one, ++ .remove = __devexit_p(bnx2x_remove_one), ++ .suspend = bnx2x_suspend, ++ .resume = bnx2x_resume, ++#if (LINUX_VERSION_CODE >= 0x02060b) && !defined(__VMKLNX__) /* BNX2X_UPSTREAM */ ++ .err_handler = &bnx2x_err_handler, ++#endif ++}; ++ ++static int __init bnx2x_init(void) ++{ ++ int rc; ++ ++ printk(KERN_INFO "%s", version); ++ ++ bnx2x_wq = create_singlethread_workqueue("bnx2x"); ++ if (bnx2x_wq == NULL) { ++ printk(KERN_ERR PFX "Cannot create workqueue\n"); ++ return -ENOMEM; ++ } ++ ++#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */ ++ rc = pci_register_driver(&bnx2x_pci_driver); ++#else ++ rc = pci_module_init(&bnx2x_pci_driver); ++#endif ++#if (LINUX_VERSION_CODE >= 0x02060a) /* BNX2X_UPSTREAM */ ++ if (rc) { ++ printk(KERN_ERR PFX "Cannot register driver\n"); ++ destroy_workqueue(bnx2x_wq); ++ } ++#endif ++ return rc; ++} ++ ++static void __exit bnx2x_cleanup(void) ++{ ++ pci_unregister_driver(&bnx2x_pci_driver); ++ ++ destroy_workqueue(bnx2x_wq); ++} ++ ++module_init(bnx2x_init); ++module_exit(bnx2x_cleanup); ++ ++#ifdef BCM_CNIC /* ! BNX2X_UPSTREAM */ ++ ++/* count denotes the number of new completions we have seen */ ++static void bnx2x_cnic_sp_post(struct bnx2x *bp, int count) ++{ ++ int func = BP_FUNC(bp); ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return; ++#endif ++ ++ spin_lock_bh(&bp->spq_lock); ++ bp->cnic_spq_pending -= count; ++ ++ for (; bp->cnic_spq_pending < bp->cnic_eth_dev.max_kwqe_pending; ++ bp->cnic_spq_pending++) { ++ ++ if (!bp->cnic_kwq_pending) ++ break; ++ ++ *bp->spq_prod_bd = *bp->cnic_kwq_cons; ++ ++ bp->cnic_kwq_pending--; ++ ++ DP(NETIF_MSG_TIMER, "pending on SPQ %d, on KWQ %d count %d\n", ++ bp->cnic_spq_pending, bp->cnic_kwq_pending, count); ++ ++ if (bp->spq_prod_bd == bp->spq_last_bd) { ++ bp->spq_prod_bd = bp->spq; ++ bp->spq_prod_idx = 0; ++ DP(NETIF_MSG_TIMER, "end of spq\n"); ++ ++ } else { ++ bp->spq_prod_bd++; ++ bp->spq_prod_idx++; ++ } ++ ++ if (bp->cnic_kwq_cons == bp->cnic_kwq_last) ++ bp->cnic_kwq_cons = bp->cnic_kwq; ++ else ++ bp->cnic_kwq_cons++; ++ } ++ ++ REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func), ++ bp->spq_prod_idx); ++ ++ spin_unlock_bh(&bp->spq_lock); ++} ++ ++static int bnx2x_cnic_sp_queue(struct net_device *dev, ++ struct kwqe_16 *kwqes[], u32 count) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ int i; ++ ++#ifdef BNX2X_STOP_ON_ERROR ++ if (unlikely(bp->panic)) ++ return -EIO; ++#endif ++ ++ spin_lock_bh(&bp->spq_lock); ++ ++ for (i = 0; i < count; i++) { ++ struct eth_spe *spe = (struct eth_spe *)kwqes[i]; ++ ++ if (bp->cnic_kwq_pending == MAX_SP_DESC_CNT) ++ break; ++ ++ *bp->cnic_kwq_prod = *spe; ++ ++ bp->cnic_kwq_pending++; ++ ++ DP(NETIF_MSG_TIMER, "L5 SPQE %x %x %x:%x pos %d\n", ++ spe->hdr.conn_and_cmd_data, spe->hdr.type, ++ spe->data.mac_config_addr.hi, ++ spe->data.mac_config_addr.lo, ++ bp->cnic_kwq_pending); ++ ++ if (bp->cnic_kwq_prod == bp->cnic_kwq_last) ++ bp->cnic_kwq_prod = bp->cnic_kwq; ++ else ++ bp->cnic_kwq_prod++; ++ } ++ ++ spin_unlock_bh(&bp->spq_lock); ++ ++ if (bp->cnic_spq_pending < bp->cnic_eth_dev.max_kwqe_pending) ++ bnx2x_cnic_sp_post(bp, 0); ++ ++ return i; ++} ++ ++static int bnx2x_cnic_ctl_send(struct bnx2x *bp, struct cnic_ctl_info *ctl) ++{ ++ struct cnic_ops *c_ops; ++ int rc = 0; ++ ++ rcu_read_lock(); ++ c_ops = rcu_dereference(bp->cnic_ops); ++ if (c_ops) ++ rc = c_ops->cnic_ctl(bp->cnic_data, ctl); ++ rcu_read_unlock(); ++ ++ /* since for now we don't handle send failure just tell the user */ ++ if (rc) ++ BNX2X_ERR("sending cmd %x returned %d\n", ctl->cmd, rc); ++ ++ return rc; ++} ++ ++/* ++ * for commands that have no data ++ */ ++static int bnx2x_cnic_notify(struct bnx2x *bp, int cmd) ++{ ++ struct cnic_ctl_info ctl = {0}; ++ ++ ctl.cmd = cmd; ++ ++ return bnx2x_cnic_ctl_send(bp, &ctl); ++} ++ ++static void bnx2x_cnic_cfc_comp(struct bnx2x *bp, int cid) ++{ ++ struct cnic_ctl_info ctl; ++ ++ /* first we tell CNIC and only then we count this as a completion */ ++ ctl.cmd = CNIC_CTL_COMPLETION_CMD; ++ ctl.data.comp.cid = cid; ++ ++ bnx2x_cnic_ctl_send(bp, &ctl); ++ bnx2x_cnic_sp_post(bp, 1); ++} ++ ++static int bnx2x_drv_ctl(struct net_device *dev, struct drv_ctl_info *ctl) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ ++ switch (ctl->cmd) { ++ case DRV_CTL_CTXTBL_WR_CMD: ++ { ++ u32 index = ctl->data.io.offset; ++ dma_addr_t addr = ctl->data.io.dma_addr; ++ ++ bnx2x_ilt_wr(bp, index, addr); ++ return 0; ++ } ++ break; ++ ++ case DRV_CTL_COMPLETION_CMD: ++ { ++ int count = ctl->data.comp.comp_count; ++ ++ bnx2x_cnic_sp_post(bp, count); ++ return 0; ++ } ++ break; ++ ++ default: ++ BNX2X_ERR("unknown command %x\n", ctl->cmd); ++ return -EINVAL; ++ } ++} ++ ++static void bnx2x_setup_cnic_irq_info(struct bnx2x *bp) ++{ ++ struct cnic_eth_dev *cp = &bp->cnic_eth_dev; ++ ++#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */ ++ if (bp->flags & USING_MSIX_FLAG) { ++ cp->drv_state |= CNIC_DRV_STATE_USING_MSIX; ++ cp->irq_arr[0].irq_flags |= CNIC_IRQ_FL_MSIX; ++ cp->irq_arr[0].vector = bp->msix_table[1].vector; ++ } else { ++#else ++ { ++#endif ++ cp->drv_state &= ~CNIC_DRV_STATE_USING_MSIX; ++ cp->irq_arr[0].irq_flags &= ~CNIC_IRQ_FL_MSIX; ++ } ++ cp->irq_arr[0].status_blk = bp->cnic_sb; ++ cp->irq_arr[0].status_blk_num = CNIC_SB_ID(bp); ++ ++ cp->num_irq = 1; ++} ++ ++static int bnx2x_register_cnic(struct net_device *dev, struct cnic_ops *ops, ++ void *data) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ struct cnic_eth_dev *cp = &bp->cnic_eth_dev; ++ ++ if (ops == NULL) ++ return -EINVAL; ++ ++#if !defined(__VMKLNX__) ++ if (!try_module_get(ops->cnic_owner)) ++ return -EBUSY; ++#endif ++ ++ if (atomic_read(&bp->intr_sem) != 0) ++ return -EBUSY; ++ ++ bp->cnic_kwq = kzalloc(PAGE_SIZE, GFP_KERNEL); ++ if (!bp->cnic_kwq) ++ return -ENOMEM; ++ ++ bp->cnic_kwq_cons = bp->cnic_kwq; ++ bp->cnic_kwq_prod = bp->cnic_kwq; ++ bp->cnic_kwq_last = bp->cnic_kwq + MAX_SP_DESC_CNT; ++ ++ bp->cnic_spq_pending = 0; ++ bp->cnic_kwq_pending = 0; ++ ++ bp->cnic_data = data; ++ rcu_assign_pointer(bp->cnic_ops, ops); ++ ++ cp->num_irq = 0; ++ cp->drv_state = CNIC_DRV_STATE_REGD; ++ ++ bnx2x_init_sb(bp, bp->cnic_sb, bp->cnic_sb_mapping, CNIC_SB_ID(bp)); ++ ++ bnx2x_setup_cnic_irq_info(bp); ++ ++ return 0; ++} ++ ++static int bnx2x_unregister_cnic(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ struct cnic_eth_dev *cp = &bp->cnic_eth_dev; ++ ++ cp->drv_state = 0; ++#if !defined(__VMKLNX__) ++ module_put(bp->cnic_ops->cnic_owner); ++#endif ++ rcu_assign_pointer(bp->cnic_ops, NULL); ++#if !defined(__VMKLNX__) ++ synchronize_rcu(); ++#endif ++ kfree(bp->cnic_kwq); ++ ++ return 0; ++} ++ ++struct cnic_eth_dev *bnx2x_cnic_probe(struct net_device *dev) ++{ ++ struct bnx2x *bp = netdev_priv(dev); ++ struct cnic_eth_dev *cp = &bp->cnic_eth_dev; ++ ++ cp->drv_owner = THIS_MODULE; ++ cp->chip_id = CHIP_ID(bp); ++ cp->pdev = bp->pdev; ++ cp->io_base = bp->regview; ++ cp->max_kwqe_pending = 8; ++ cp->ctx_blk_size = CNIC_CTX_PER_ILT * sizeof(union cdu_context); ++ cp->ctx_tbl_offset = FUNC_ILT_BASE(bp->func) + 1; ++ cp->ctx_tbl_len = CNIC_ILT_LINES; ++ cp->starting_cid = 16; ++ cp->drv_submit_kwqes_16 = bnx2x_cnic_sp_queue; ++ cp->drv_ctl = bnx2x_drv_ctl; ++ cp->drv_register_cnic = bnx2x_register_cnic; ++ cp->drv_unregister_cnic = bnx2x_unregister_cnic; ++ ++ return cp; ++} ++EXPORT_SYMBOL(bnx2x_cnic_probe); ++ ++#endif /* BCM_CNIC */ ++ ++#if defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) /* ! BNX2X_UPSTREAM */ ++ ++static int bnx2x_get_netqueue_features(vmknetddi_queueop_get_features_args_t *args) ++{ ++ args->features = VMKNETDDI_QUEUEOPS_FEATURE_NONE; ++ args->features |= VMKNETDDI_QUEUEOPS_FEATURE_RXQUEUES; ++ args->features |= VMKNETDDI_QUEUEOPS_FEATURE_TXQUEUES; ++ return VMKNETDDI_QUEUEOPS_OK; ++} ++ ++static int bnx2x_get_queue_count(vmknetddi_queueop_get_queue_count_args_t *args) ++{ ++ struct bnx2x *bp = netdev_priv(args->netdev); ++ ++ /* workaround for packets duplicated */ ++ if (is_multi(bp)) { ++ bp->rx_mode = BNX2X_RX_MODE_NORMAL; ++ bnx2x_set_storm_rx_mode(bp); ++ bp->netq_enabled = 1; ++ } ++ if (args->type == VMKNETDDI_QUEUEOPS_QUEUE_TYPE_RX) { ++ args->count = max_t(u16, BNX2X_NUM_QUEUES(bp) - 1, 0); ++ return VMKNETDDI_QUEUEOPS_OK; ++ ++ } else if (args->type == VMKNETDDI_QUEUEOPS_QUEUE_TYPE_TX) { ++ args->count = max_t(u16, BNX2X_NUM_QUEUES(bp) - 1, 0); ++ return VMKNETDDI_QUEUEOPS_OK; ++ ++ } else { ++ printk("bnx2x_get_queue_count: invalid queue type\n"); ++ return VMKNETDDI_QUEUEOPS_ERR; ++ } ++} ++ ++static int bnx2x_get_filter_count(vmknetddi_queueop_get_filter_count_args_t *args) ++{ ++ /* Only support 1 Mac filter per queue */ ++ args->count = 1; ++ return VMKNETDDI_QUEUEOPS_OK; ++} ++ ++static int bnx2x_alloc_rx_queue(struct net_device *netdev, ++ vmknetddi_queueops_queueid_t *p_qid, ++ struct napi_struct **napi_p) ++{ ++ struct bnx2x *bp = netdev_priv(netdev); ++ int i; ++ ++ if (bp->n_rx_queues_allocated >= BNX2X_NUM_QUEUES(bp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ for_each_nondefault_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ if (!BNX2X_IS_NETQ_RX_QUEUE_ALLOCATED(fp)) { ++ fp->netq_flags |= BNX2X_NETQ_RX_QUEUE_ALLOCATED; ++ bp->n_rx_queues_allocated++; ++ *p_qid = VMKNETDDI_QUEUEOPS_MK_RX_QUEUEID(fp->index); ++ *napi_p = &fp->napi; ++ return VMKNETDDI_QUEUEOPS_OK; ++ } ++ } ++ BNX2X_ERR("bnx2x_alloc_rx_queue: no free rx queues found!\n"); ++ return VMKNETDDI_QUEUEOPS_ERR; ++} ++ ++static int bnx2x_alloc_tx_queue(struct net_device *netdev, ++ vmknetddi_queueops_queueid_t *p_qid, ++ u16 *queue_mapping) ++{ ++ struct bnx2x *bp = netdev_priv(netdev); ++ int i; ++ ++ if (bp->n_tx_queues_allocated >= BNX2X_NUM_QUEUES(bp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ for_each_nondefault_queue(bp, i) { ++ struct bnx2x_fastpath *fp = &bp->fp[i]; ++ ++ if (!BNX2X_IS_NETQ_TX_QUEUE_ALLOCATED(fp)) { ++ fp->netq_flags |= BNX2X_NETQ_TX_QUEUE_ALLOCATED; ++ bp->n_tx_queues_allocated++; ++ *p_qid = VMKNETDDI_QUEUEOPS_MK_TX_QUEUEID(fp->index); ++ *queue_mapping = fp->index; ++ return VMKNETDDI_QUEUEOPS_OK; ++ } ++ } ++ BNX2X_ERR("bnx2x_alloc_tx_queue: no free tx queues found!\n"); ++ return VMKNETDDI_QUEUEOPS_ERR; ++} ++ ++static int bnx2x_alloc_queue(vmknetddi_queueop_alloc_queue_args_t *args) ++{ ++ if (args->type == VMKNETDDI_QUEUEOPS_QUEUE_TYPE_TX) ++ return bnx2x_alloc_tx_queue(args->netdev, &args->queueid, ++ &args->queue_mapping); ++ ++ else if (args->type == VMKNETDDI_QUEUEOPS_QUEUE_TYPE_RX) ++ return bnx2x_alloc_rx_queue(args->netdev, &args->queueid, ++ &args->napi); ++ else { ++ printk("bnx2x_alloc_queue: invalid queue type\n"); ++ return VMKNETDDI_QUEUEOPS_ERR; ++ } ++} ++ ++static int bnx2x_free_tx_queue(struct net_device *netdev, ++ vmknetddi_queueops_queueid_t qid) ++{ ++ struct bnx2x *bp = netdev_priv(netdev); ++ u16 index = VMKNETDDI_QUEUEOPS_QUEUEID_VAL(qid); ++ ++ if (index > BNX2X_NUM_QUEUES(bp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ struct bnx2x_fastpath *fp = &bp->fp[index]; ++ ++ if (!BNX2X_IS_NETQ_TX_QUEUE_ALLOCATED(fp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ fp->netq_flags &= ~BNX2X_NETQ_TX_QUEUE_ALLOCATED; ++ bp->n_tx_queues_allocated--; ++ ++ return VMKNETDDI_QUEUEOPS_OK; ++} ++ ++static int bnx2x_free_rx_queue(struct net_device *netdev, ++ vmknetddi_queueops_queueid_t qid) ++{ ++ struct bnx2x *bp = netdev_priv(netdev); ++ u16 index = VMKNETDDI_QUEUEOPS_QUEUEID_VAL(qid); ++ ++ if (index > BNX2X_NUM_QUEUES(bp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ struct bnx2x_fastpath *fp = &bp->fp[index]; ++ ++ if (!BNX2X_IS_NETQ_RX_QUEUE_ALLOCATED(fp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ fp->netq_flags &= ~BNX2X_NETQ_RX_QUEUE_ALLOCATED; ++ bp->n_rx_queues_allocated--; ++ ++ return VMKNETDDI_QUEUEOPS_OK; ++} ++ ++static int bnx2x_free_queue(vmknetddi_queueop_free_queue_args_t *args) ++{ ++ if (VMKNETDDI_QUEUEOPS_IS_TX_QUEUEID(args->queueid)) ++ return bnx2x_free_tx_queue(args->netdev, args->queueid); ++ ++ else if (VMKNETDDI_QUEUEOPS_IS_RX_QUEUEID(args->queueid)) ++ return bnx2x_free_rx_queue(args->netdev, args->queueid); ++ ++ else { ++ printk("bnx2x_free_queue: invalid queue type\n"); ++ return VMKNETDDI_QUEUEOPS_ERR; ++ } ++} ++ ++static int bnx2x_get_queue_vector(vmknetddi_queueop_get_queue_vector_args_t *args) ++{ ++ struct net_device *netdev = args->netdev; ++ struct bnx2x *bp = netdev_priv(netdev); ++ int qid; ++ ++ qid = VMKNETDDI_QUEUEOPS_QUEUEID_VAL(args->queueid); ++ if (qid > BNX2X_NUM_QUEUES(bp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++#ifdef CONFIG_PCI_MSI ++ args->vector = bp->msix_table[qid].vector; ++#endif ++ return VMKNETDDI_QUEUEOPS_OK; ++} ++ ++static int bnx2x_get_default_queue(vmknetddi_queueop_get_default_queue_args_t *args) ++{ ++ struct net_device *netdev = args->netdev; ++ struct bnx2x *bp = netdev_priv(netdev); ++ ++ if (args->type == VMKNETDDI_QUEUEOPS_QUEUE_TYPE_RX) { ++ args->queueid = VMKNETDDI_QUEUEOPS_MK_RX_QUEUEID(0); ++ args->napi = &bp->fp[0].napi; ++ return VMKNETDDI_QUEUEOPS_OK; ++ ++ } else if (args->type == VMKNETDDI_QUEUEOPS_QUEUE_TYPE_TX) { ++ args->queueid = VMKNETDDI_QUEUEOPS_MK_TX_QUEUEID(0); ++ args->queue_mapping = 0; ++ return VMKNETDDI_QUEUEOPS_OK; ++ ++ } else ++ return VMKNETDDI_QUEUEOPS_ERR; ++} ++ ++static void bnx2x_remove_rx_filter_e1h(struct bnx2x *bp, u16 qid) ++{ ++ struct bnx2x_fastpath *fp = &bp->fp[qid]; ++ struct mac_configuration_cmd_e1h *config = ++ (struct mac_configuration_cmd_e1h *)bnx2x_sp(bp, mac_config); ++ ++ /* CAM allocation for E1H ++ * unicasts: by func number ++ * multicast: 20+FUNC*20, 20 each ++ */ ++ config->hdr.length = 1; ++ config->hdr.offset = BP_FUNC(bp) + (qid << (IS_E1HMF(bp) ? 3 : 1)); ++ config->hdr.client_id = bp->fp[0].cl_id; ++ config->hdr.reserved1 = 0; ++ ++ /* primary MAC */ ++ config->config_table[0].msb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[0]); ++ config->config_table[0].middle_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[2]); ++ config->config_table[0].lsb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[4]); ++ config->config_table[0].client_id = BP_L_ID(bp) + qid; ++ config->config_table[0].vlan_id = 0; ++ config->config_table[0].e1hov_id = cpu_to_le16(bp->e1hov); ++ config->config_table[0].flags = MAC_CONFIGURATION_ENTRY_E1H_ACTION_TYPE; ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mac_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); ++ ++ memset(fp->mac_filter_addr, 0, 6); ++ fp->netq_flags &= ~BNX2X_NETQ_RX_QUEUE_ACTIVE; ++} ++ ++static void bnx2x_remove_rx_filter_e1(struct bnx2x *bp, u16 qid) ++{ ++ struct mac_configuration_cmd *config = bnx2x_sp(bp, mac_config); ++ struct bnx2x_fastpath *fp = &bp->fp[qid]; ++ ++ config->hdr.length = 1; ++ config->hdr.offset = (BP_PORT(bp) ? 32 : 0) + qid; ++ config->hdr.client_id = bp->fp[0].cl_id; ++ config->hdr.reserved1 = 0; ++ ++ config->config_table[0].cam_entry.msb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[0]); ++ config->config_table[0].cam_entry.middle_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[2]); ++ config->config_table[0].cam_entry.lsb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[4]); ++ config->config_table[0].cam_entry.flags = cpu_to_le16(BP_PORT(bp)); ++ config->config_table[0].target_table_entry.flags = ++ TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE; ++ config->config_table[0].target_table_entry.client_id = qid; ++ config->config_table[0].target_table_entry.vlan_id = 0; ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mac_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); ++ ++ memset(fp->mac_filter_addr, 0, 6); ++ fp->netq_flags &= ~BNX2X_NETQ_RX_QUEUE_ACTIVE; ++} ++ ++static int bnx2x_remove_rx_filter(vmknetddi_queueop_remove_rx_filter_args_t *args) ++{ ++ struct bnx2x *bp = netdev_priv(args->netdev); ++ u16 qid = VMKNETDDI_QUEUEOPS_QUEUEID_VAL(args->queueid); ++ u16 fid = VMKNETDDI_QUEUEOPS_FILTERID_VAL(args->filterid); ++ struct bnx2x_fastpath *fp = &bp->fp[qid]; ++ ++ if (!VMKNETDDI_QUEUEOPS_IS_RX_QUEUEID(args->queueid)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ if (qid > BNX2X_NUM_QUEUES(bp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ /* Only support one Mac filter per queue */ ++ if ((fid != 0) || !BNX2X_IS_NETQ_RX_QUEUE_ACTIVE(fp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ if (CHIP_IS_E1H(bp)) ++ bnx2x_remove_rx_filter_e1h(bp, qid); ++ else ++ bnx2x_remove_rx_filter_e1(bp, qid); ++ ++ return VMKNETDDI_QUEUEOPS_OK; ++} ++ ++static void bnx2x_apply_rx_filter_e1h(struct bnx2x *bp, u16 queueid) ++{ ++ struct mac_configuration_cmd_e1h *config = ++ (struct mac_configuration_cmd_e1h *)bnx2x_sp(bp, mac_config); ++ struct bnx2x_fastpath *fp = &bp->fp[queueid]; ++ ++ config->hdr.length = 1; ++ config->hdr.offset = BP_FUNC(bp) + (queueid << (IS_E1HMF(bp) ? 3 : 1)); ++ config->hdr.client_id = bp->fp[0].cl_id; ++ config->hdr.reserved1 = 0; ++ ++ config->config_table[0].msb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[0]); ++ config->config_table[0].middle_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[2]); ++ config->config_table[0].lsb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[4]); ++ config->config_table[0].client_id = BP_L_ID(bp) + queueid; ++ config->config_table[0].vlan_id = 0; ++ config->config_table[0].e1hov_id = cpu_to_le16(bp->e1hov); ++ config->config_table[0].flags = BP_PORT(bp); ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mac_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); ++ ++ fp->netq_flags |= BNX2X_NETQ_RX_QUEUE_ACTIVE; ++} ++ ++static void bnx2x_apply_rx_filter_e1(struct bnx2x *bp, u16 queueid) ++{ ++ struct mac_configuration_cmd *config = bnx2x_sp(bp, mac_config); ++ struct bnx2x_fastpath *fp = &bp->fp[queueid]; ++ ++ config->hdr.length = 1; ++ config->hdr.offset = (BP_PORT(bp) ? 32 : 0) + queueid; ++ config->hdr.client_id = bp->fp[0].cl_id; ++ config->hdr.reserved1 = 0; ++ ++ config->config_table[0].cam_entry.msb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[0]); ++ config->config_table[0].cam_entry.middle_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[2]); ++ config->config_table[0].cam_entry.lsb_mac_addr = ++ swab16(*(u16 *)&fp->mac_filter_addr[4]); ++ config->config_table[0].cam_entry.flags = cpu_to_le16(BP_PORT(bp)); ++ config->config_table[0].target_table_entry.flags = 0; ++ config->config_table[0].target_table_entry.client_id = queueid; ++ config->config_table[0].target_table_entry.vlan_id = 0; ++ ++ bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, ++ U64_HI(bnx2x_sp_mapping(bp, mac_config)), ++ U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); ++ ++ fp->netq_flags |= BNX2X_NETQ_RX_QUEUE_ACTIVE; ++} ++ ++static int bnx2x_apply_rx_filter(vmknetddi_queueop_apply_rx_filter_args_t *args) ++{ ++ struct bnx2x *bp = netdev_priv(args->netdev); ++ struct bnx2x_fastpath *fp; ++ u16 queueid = VMKNETDDI_QUEUEOPS_QUEUEID_VAL(args->queueid); ++ u8 *macaddr; ++ ++ if (!VMKNETDDI_QUEUEOPS_IS_RX_QUEUEID(args->queueid)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ if (vmknetddi_queueops_get_filter_class(&args->filter) ++ != VMKNETDDI_QUEUEOPS_FILTER_MACADDR) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ if (queueid > BNX2X_NUM_QUEUES(bp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ fp = &bp->fp[queueid]; ++ ++ if (BNX2X_IS_NETQ_RX_QUEUE_ACTIVE(fp) || ++ !BNX2X_IS_NETQ_RX_QUEUE_ALLOCATED(fp)) ++ return VMKNETDDI_QUEUEOPS_ERR; ++ ++ macaddr = (void *)vmknetddi_queueops_get_filter_macaddr(&args->filter); ++ memcpy(fp->mac_filter_addr, macaddr, 6); ++ if (CHIP_IS_E1H(bp)) ++ bnx2x_apply_rx_filter_e1h(bp, queueid); ++ else ++ bnx2x_apply_rx_filter_e1(bp, queueid); ++ args->filterid = VMKNETDDI_QUEUEOPS_MK_FILTERID(0); ++ ++ return VMKNETDDI_QUEUEOPS_OK; ++} ++ ++static int bnx2x_get_queue_stats(vmknetddi_queueop_get_stats_args_t *args) ++{ ++ return VMKNETDDI_QUEUEOPS_ERR; ++} ++ ++static int bnx2x_get_netqueue_version(vmknetddi_queueop_get_version_args_t *args) ++{ ++ return vmknetddi_queueops_version(args); ++} ++ ++static int bnx2x_netqueue_ops(vmknetddi_queueops_op_t op, void *args) ++{ ++ switch (op) { ++ case VMKNETDDI_QUEUEOPS_OP_GET_VERSION: ++ return bnx2x_get_netqueue_version( ++ (vmknetddi_queueop_get_version_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_GET_FEATURES: ++ return bnx2x_get_netqueue_features( ++ (vmknetddi_queueop_get_features_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_GET_QUEUE_COUNT: ++ return bnx2x_get_queue_count( ++ (vmknetddi_queueop_get_queue_count_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_GET_FILTER_COUNT: ++ return bnx2x_get_filter_count( ++ (vmknetddi_queueop_get_filter_count_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_ALLOC_QUEUE: ++ return bnx2x_alloc_queue( ++ (vmknetddi_queueop_alloc_queue_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_FREE_QUEUE: ++ return bnx2x_free_queue( ++ (vmknetddi_queueop_free_queue_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_GET_QUEUE_VECTOR: ++ return bnx2x_get_queue_vector( ++ (vmknetddi_queueop_get_queue_vector_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_GET_DEFAULT_QUEUE: ++ return bnx2x_get_default_queue( ++ (vmknetddi_queueop_get_default_queue_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_APPLY_RX_FILTER: ++ return bnx2x_apply_rx_filter( ++ (vmknetddi_queueop_apply_rx_filter_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_REMOVE_RX_FILTER: ++ return bnx2x_remove_rx_filter( ++ (vmknetddi_queueop_remove_rx_filter_args_t *)args); ++ break; ++ ++ case VMKNETDDI_QUEUEOPS_OP_GET_STATS: ++ return bnx2x_get_queue_stats( ++ (vmknetddi_queueop_get_stats_args_t *)args); ++ break; ++ ++ default: ++ printk("Unhandled NETQUEUE OP %d\n", op); ++ return VMKNETDDI_QUEUEOPS_ERR; ++ } ++ ++ return VMKNETDDI_QUEUEOPS_ERR; ++} ++ ++#endif /* defined(__VMKLNX__) && defined(__VMKNETDDI_QUEUEOPS__) */ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_reg.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_reg.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_reg.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_reg.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,5350 @@ ++/* bnx2x_reg.h: Broadcom Everest network driver. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ * The registers description starts with the register Access type followed ++ * by size in bits. For example [RW 32]. The access types are: ++ * R - Read only ++ * RC - Clear on read ++ * RW - Read/Write ++ * ST - Statistics register (clear on read) ++ * W - Write only ++ * WB - Wide bus register - the size is over 32 bits and it should be ++ * read/write in consecutive 32 bits accesses ++ * WR - Write Clear (write 1 to clear the bit) ++ * ++ */ ++ ++ ++/* [R 19] Interrupt register #0 read */ ++#define BRB1_REG_BRB1_INT_STS 0x6011c ++/* [RW 4] Parity mask register #0 read/write */ ++#define BRB1_REG_BRB1_PRTY_MASK 0x60138 ++/* [R 4] Parity register #0 read */ ++#define BRB1_REG_BRB1_PRTY_STS 0x6012c ++/* [RW 10] At address BRB1_IND_FREE_LIST_PRS_CRDT initialize free head. At ++ address BRB1_IND_FREE_LIST_PRS_CRDT+1 initialize free tail. At address ++ BRB1_IND_FREE_LIST_PRS_CRDT+2 initialize parser initial credit. */ ++#define BRB1_REG_FREE_LIST_PRS_CRDT 0x60200 ++/* [RW 10] The number of free blocks above which the High_llfc signal to ++ interface #n is de-asserted. */ ++#define BRB1_REG_HIGH_LLFC_HIGH_THRESHOLD_0 0x6014c ++/* [RW 10] The number of free blocks below which the High_llfc signal to ++ interface #n is asserted. */ ++#define BRB1_REG_HIGH_LLFC_LOW_THRESHOLD_0 0x6013c ++/* [RW 23] LL RAM data. */ ++#define BRB1_REG_LL_RAM 0x61000 ++/* [RW 10] The number of free blocks above which the Low_llfc signal to ++ interface #n is de-asserted. */ ++#define BRB1_REG_LOW_LLFC_HIGH_THRESHOLD_0 0x6016c ++/* [RW 10] The number of free blocks below which the Low_llfc signal to ++ interface #n is asserted. */ ++#define BRB1_REG_LOW_LLFC_LOW_THRESHOLD_0 0x6015c ++/* [R 24] The number of full blocks. */ ++#define BRB1_REG_NUM_OF_FULL_BLOCKS 0x60090 ++/* [ST 32] The number of cycles that the write_full signal towards MAC #0 ++ was asserted. */ ++#define BRB1_REG_NUM_OF_FULL_CYCLES_0 0x600c8 ++#define BRB1_REG_NUM_OF_FULL_CYCLES_1 0x600cc ++#define BRB1_REG_NUM_OF_FULL_CYCLES_4 0x600d8 ++/* [ST 32] The number of cycles that the pause signal towards MAC #0 was ++ asserted. */ ++#define BRB1_REG_NUM_OF_PAUSE_CYCLES_0 0x600b8 ++#define BRB1_REG_NUM_OF_PAUSE_CYCLES_1 0x600bc ++/* [RW 10] Write client 0: De-assert pause threshold. */ ++#define BRB1_REG_PAUSE_HIGH_THRESHOLD_0 0x60078 ++#define BRB1_REG_PAUSE_HIGH_THRESHOLD_1 0x6007c ++/* [RW 10] Write client 0: Assert pause threshold. */ ++#define BRB1_REG_PAUSE_LOW_THRESHOLD_0 0x60068 ++#define BRB1_REG_PAUSE_LOW_THRESHOLD_1 0x6006c ++/* [R 24] The number of full blocks occupied by port. */ ++#define BRB1_REG_PORT_NUM_OCC_BLOCKS_0 0x60094 ++/* [RW 1] Reset the design by software. */ ++#define BRB1_REG_SOFT_RESET 0x600dc ++/* [R 5] Used to read the value of the XX protection CAM occupancy counter. */ ++#define CCM_REG_CAM_OCCUP 0xd0188 ++/* [RW 1] CM - CFC Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define CCM_REG_CCM_CFC_IFEN 0xd003c ++/* [RW 1] CM - QM Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define CCM_REG_CCM_CQM_IFEN 0xd000c ++/* [RW 1] If set the Q index; received from the QM is inserted to event ID. ++ Otherwise 0 is inserted. */ ++#define CCM_REG_CCM_CQM_USE_Q 0xd00c0 ++/* [RW 11] Interrupt mask register #0 read/write */ ++#define CCM_REG_CCM_INT_MASK 0xd01e4 ++/* [R 11] Interrupt register #0 read */ ++#define CCM_REG_CCM_INT_STS 0xd01d8 ++/* [R 27] Parity register #0 read */ ++#define CCM_REG_CCM_PRTY_STS 0xd01e8 ++/* [RW 3] The size of AG context region 0 in REG-pairs. Designates the MS ++ REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5). ++ Is used to determine the number of the AG context REG-pairs written back; ++ when the input message Reg1WbFlg isn't set. */ ++#define CCM_REG_CCM_REG0_SZ 0xd00c4 ++/* [RW 1] CM - STORM 0 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define CCM_REG_CCM_STORM0_IFEN 0xd0004 ++/* [RW 1] CM - STORM 1 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define CCM_REG_CCM_STORM1_IFEN 0xd0008 ++/* [RW 1] CDU AG read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define CCM_REG_CDU_AG_RD_IFEN 0xd0030 ++/* [RW 1] CDU AG write Interface enable. If 0 - the request and valid input ++ are disregarded; all other signals are treated as usual; if 1 - normal ++ activity. */ ++#define CCM_REG_CDU_AG_WR_IFEN 0xd002c ++/* [RW 1] CDU STORM read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define CCM_REG_CDU_SM_RD_IFEN 0xd0038 ++/* [RW 1] CDU STORM write Interface enable. If 0 - the request and valid ++ input is disregarded; all other signals are treated as usual; if 1 - ++ normal activity. */ ++#define CCM_REG_CDU_SM_WR_IFEN 0xd0034 ++/* [RW 4] CFC output initial credit. Max credit available - 15.Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 1 at start-up. */ ++#define CCM_REG_CFC_INIT_CRD 0xd0204 ++/* [RW 2] Auxillary counter flag Q number 1. */ ++#define CCM_REG_CNT_AUX1_Q 0xd00c8 ++/* [RW 2] Auxillary counter flag Q number 2. */ ++#define CCM_REG_CNT_AUX2_Q 0xd00cc ++/* [RW 28] The CM header value for QM request (primary). */ ++#define CCM_REG_CQM_CCM_HDR_P 0xd008c ++/* [RW 28] The CM header value for QM request (secondary). */ ++#define CCM_REG_CQM_CCM_HDR_S 0xd0090 ++/* [RW 1] QM - CM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define CCM_REG_CQM_CCM_IFEN 0xd0014 ++/* [RW 6] QM output initial credit. Max credit available - 32. Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 32 at start-up. */ ++#define CCM_REG_CQM_INIT_CRD 0xd020c ++/* [RW 3] The weight of the QM (primary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define CCM_REG_CQM_P_WEIGHT 0xd00b8 ++/* [RW 3] The weight of the QM (secondary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define CCM_REG_CQM_S_WEIGHT 0xd00bc ++/* [RW 1] Input SDM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define CCM_REG_CSDM_IFEN 0xd0018 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the SDM interface is detected. */ ++#define CCM_REG_CSDM_LENGTH_MIS 0xd0170 ++/* [RW 3] The weight of the SDM input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define CCM_REG_CSDM_WEIGHT 0xd00b4 ++/* [RW 28] The CM header for QM formatting in case of an error in the QM ++ inputs. */ ++#define CCM_REG_ERR_CCM_HDR 0xd0094 ++/* [RW 8] The Event ID in case the input message ErrorFlg is set. */ ++#define CCM_REG_ERR_EVNT_ID 0xd0098 ++/* [RW 8] FIC0 output initial credit. Max credit available - 255. Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define CCM_REG_FIC0_INIT_CRD 0xd0210 ++/* [RW 8] FIC1 output initial credit. Max credit available - 255.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define CCM_REG_FIC1_INIT_CRD 0xd0214 ++/* [RW 1] Arbitration between Input Arbiter groups: 0 - fair Round-Robin; 1 ++ - strict priority defined by ~ccm_registers_gr_ag_pr.gr_ag_pr; ++ ~ccm_registers_gr_ld0_pr.gr_ld0_pr and ++ ~ccm_registers_gr_ld1_pr.gr_ld1_pr. Groups are according to channels and ++ outputs to STORM: aggregation; load FIC0; load FIC1 and store. */ ++#define CCM_REG_GR_ARB_TYPE 0xd015c ++/* [RW 2] Load (FIC0) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed; that the Store channel priority is ++ the compliment to 4 of the rest priorities - Aggregation channel; Load ++ (FIC0) channel and Load (FIC1). */ ++#define CCM_REG_GR_LD0_PR 0xd0164 ++/* [RW 2] Load (FIC1) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed; that the Store channel priority is ++ the compliment to 4 of the rest priorities - Aggregation channel; Load ++ (FIC0) channel and Load (FIC1). */ ++#define CCM_REG_GR_LD1_PR 0xd0168 ++/* [RW 2] General flags index. */ ++#define CCM_REG_INV_DONE_Q 0xd0108 ++/* [RW 4] The number of double REG-pairs(128 bits); loaded from the STORM ++ context and sent to STORM; for a specific connection type. The double ++ REG-pairs are used in order to align to STORM context row size of 128 ++ bits. The offset of these data in the STORM context is always 0. Index ++ _(0..15) stands for the connection type (one of 16). */ ++#define CCM_REG_N_SM_CTX_LD_0 0xd004c ++#define CCM_REG_N_SM_CTX_LD_1 0xd0050 ++#define CCM_REG_N_SM_CTX_LD_2 0xd0054 ++#define CCM_REG_N_SM_CTX_LD_3 0xd0058 ++#define CCM_REG_N_SM_CTX_LD_4 0xd005c ++/* [RW 1] Input pbf Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define CCM_REG_PBF_IFEN 0xd0028 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the pbf interface is detected. */ ++#define CCM_REG_PBF_LENGTH_MIS 0xd0180 ++/* [RW 3] The weight of the input pbf in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define CCM_REG_PBF_WEIGHT 0xd00ac ++#define CCM_REG_PHYS_QNUM1_0 0xd0134 ++#define CCM_REG_PHYS_QNUM1_1 0xd0138 ++#define CCM_REG_PHYS_QNUM2_0 0xd013c ++#define CCM_REG_PHYS_QNUM2_1 0xd0140 ++#define CCM_REG_PHYS_QNUM3_0 0xd0144 ++#define CCM_REG_PHYS_QNUM3_1 0xd0148 ++#define CCM_REG_QOS_PHYS_QNUM0_0 0xd0114 ++#define CCM_REG_QOS_PHYS_QNUM0_1 0xd0118 ++#define CCM_REG_QOS_PHYS_QNUM1_0 0xd011c ++#define CCM_REG_QOS_PHYS_QNUM1_1 0xd0120 ++#define CCM_REG_QOS_PHYS_QNUM2_0 0xd0124 ++#define CCM_REG_QOS_PHYS_QNUM2_1 0xd0128 ++#define CCM_REG_QOS_PHYS_QNUM3_0 0xd012c ++#define CCM_REG_QOS_PHYS_QNUM3_1 0xd0130 ++/* [RW 1] STORM - CM Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define CCM_REG_STORM_CCM_IFEN 0xd0010 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the STORM interface is detected. */ ++#define CCM_REG_STORM_LENGTH_MIS 0xd016c ++/* [RW 3] The weight of the STORM input in the WRR (Weighted Round robin) ++ mechanism. 0 stands for weight 8 (the most prioritised); 1 stands for ++ weight 1(least prioritised); 2 stands for weight 2 (more prioritised); ++ tc. */ ++#define CCM_REG_STORM_WEIGHT 0xd009c ++/* [RW 1] Input tsem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define CCM_REG_TSEM_IFEN 0xd001c ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the tsem interface is detected. */ ++#define CCM_REG_TSEM_LENGTH_MIS 0xd0174 ++/* [RW 3] The weight of the input tsem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define CCM_REG_TSEM_WEIGHT 0xd00a0 ++/* [RW 1] Input usem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define CCM_REG_USEM_IFEN 0xd0024 ++/* [RC 1] Set when message length mismatch (relative to last indication) at ++ the usem interface is detected. */ ++#define CCM_REG_USEM_LENGTH_MIS 0xd017c ++/* [RW 3] The weight of the input usem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define CCM_REG_USEM_WEIGHT 0xd00a8 ++/* [RW 1] Input xsem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define CCM_REG_XSEM_IFEN 0xd0020 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the xsem interface is detected. */ ++#define CCM_REG_XSEM_LENGTH_MIS 0xd0178 ++/* [RW 3] The weight of the input xsem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define CCM_REG_XSEM_WEIGHT 0xd00a4 ++/* [RW 19] Indirect access to the descriptor table of the XX protection ++ mechanism. The fields are: [5:0] - message length; [12:6] - message ++ pointer; 18:13] - next pointer. */ ++#define CCM_REG_XX_DESCR_TABLE 0xd0300 ++#define CCM_REG_XX_DESCR_TABLE_SIZE 36 ++/* [R 7] Used to read the value of XX protection Free counter. */ ++#define CCM_REG_XX_FREE 0xd0184 ++/* [RW 6] Initial value for the credit counter; responsible for fulfilling ++ of the Input Stage XX protection buffer by the XX protection pending ++ messages. Max credit available - 127. Write writes the initial credit ++ value; read returns the current value of the credit counter. Must be ++ initialized to maximum XX protected message size - 2 at start-up. */ ++#define CCM_REG_XX_INIT_CRD 0xd0220 ++/* [RW 7] The maximum number of pending messages; which may be stored in XX ++ protection. At read the ~ccm_registers_xx_free.xx_free counter is read. ++ At write comprises the start value of the ~ccm_registers_xx_free.xx_free ++ counter. */ ++#define CCM_REG_XX_MSG_NUM 0xd0224 ++/* [RW 8] The Event ID; sent to the STORM in case of XX overflow. */ ++#define CCM_REG_XX_OVFL_EVNT_ID 0xd0044 ++/* [RW 18] Indirect access to the XX table of the XX protection mechanism. ++ The fields are: [5:0] - tail pointer; 11:6] - Link List size; 17:12] - ++ header pointer. */ ++#define CCM_REG_XX_TABLE 0xd0280 ++#define CDU_REG_CDU_CHK_MASK0 0x101000 ++#define CDU_REG_CDU_CHK_MASK1 0x101004 ++#define CDU_REG_CDU_CONTROL0 0x101008 ++#define CDU_REG_CDU_DEBUG 0x101010 ++#define CDU_REG_CDU_GLOBAL_PARAMS 0x101020 ++/* [RW 7] Interrupt mask register #0 read/write */ ++#define CDU_REG_CDU_INT_MASK 0x10103c ++/* [R 7] Interrupt register #0 read */ ++#define CDU_REG_CDU_INT_STS 0x101030 ++/* [RW 5] Parity mask register #0 read/write */ ++#define CDU_REG_CDU_PRTY_MASK 0x10104c ++/* [R 5] Parity register #0 read */ ++#define CDU_REG_CDU_PRTY_STS 0x101040 ++/* [RC 32] logging of error data in case of a CDU load error: ++ {expected_cid[15:0]; xpected_type[2:0]; xpected_region[2:0]; ctive_error; ++ ype_error; ctual_active; ctual_compressed_context}; */ ++#define CDU_REG_ERROR_DATA 0x101014 ++/* [WB 216] L1TT ram access. each entry has the following format : ++ {mrege_regions[7:0]; ffset12[5:0]...offset0[5:0]; ++ ength12[5:0]...length0[5:0]; d12[3:0]...id0[3:0]} */ ++#define CDU_REG_L1TT 0x101800 ++/* [WB 24] MATT ram access. each entry has the following ++ format:{RegionLength[11:0]; egionOffset[11:0]} */ ++#define CDU_REG_MATT 0x101100 ++/* [RW 1] when this bit is set the CDU operates in e1hmf mode */ ++#define CDU_REG_MF_MODE 0x101050 ++/* [R 1] indication the initializing the activity counter by the hardware ++ was done. */ ++#define CFC_REG_AC_INIT_DONE 0x104078 ++/* [RW 13] activity counter ram access */ ++#define CFC_REG_ACTIVITY_COUNTER 0x104400 ++#define CFC_REG_ACTIVITY_COUNTER_SIZE 256 ++/* [R 1] indication the initializing the cams by the hardware was done. */ ++#define CFC_REG_CAM_INIT_DONE 0x10407c ++/* [RW 2] Interrupt mask register #0 read/write */ ++#define CFC_REG_CFC_INT_MASK 0x104108 ++/* [R 2] Interrupt register #0 read */ ++#define CFC_REG_CFC_INT_STS 0x1040fc ++/* [RC 2] Interrupt register #0 read clear */ ++#define CFC_REG_CFC_INT_STS_CLR 0x104100 ++/* [RW 4] Parity mask register #0 read/write */ ++#define CFC_REG_CFC_PRTY_MASK 0x104118 ++/* [R 4] Parity register #0 read */ ++#define CFC_REG_CFC_PRTY_STS 0x10410c ++/* [RW 21] CID cam access (21:1 - Data; alid - 0) */ ++#define CFC_REG_CID_CAM 0x104800 ++#define CFC_REG_CONTROL0 0x104028 ++#define CFC_REG_DEBUG0 0x104050 ++/* [RW 14] indicates per error (in #cfc_registers_cfc_error_vector.cfc_error ++ vector) whether the cfc should be disabled upon it */ ++#define CFC_REG_DISABLE_ON_ERROR 0x104044 ++/* [RC 14] CFC error vector. when the CFC detects an internal error it will ++ set one of these bits. the bit description can be found in CFC ++ specifications */ ++#define CFC_REG_ERROR_VECTOR 0x10403c ++/* [WB 93] LCID info ram access */ ++#define CFC_REG_INFO_RAM 0x105000 ++#define CFC_REG_INFO_RAM_SIZE 1024 ++#define CFC_REG_INIT_REG 0x10404c ++#define CFC_REG_INTERFACES 0x104058 ++/* [RW 24] {weight_load_client7[2:0] to weight_load_client0[2:0]}. this ++ field allows changing the priorities of the weighted-round-robin arbiter ++ which selects which CFC load client should be served next */ ++#define CFC_REG_LCREQ_WEIGHTS 0x104084 ++/* [RW 16] Link List ram access; data = {prev_lcid; ext_lcid} */ ++#define CFC_REG_LINK_LIST 0x104c00 ++#define CFC_REG_LINK_LIST_SIZE 256 ++/* [R 1] indication the initializing the link list by the hardware was done. */ ++#define CFC_REG_LL_INIT_DONE 0x104074 ++/* [R 9] Number of allocated LCIDs which are at empty state */ ++#define CFC_REG_NUM_LCIDS_ALLOC 0x104020 ++/* [R 9] Number of Arriving LCIDs in Link List Block */ ++#define CFC_REG_NUM_LCIDS_ARRIVING 0x104004 ++/* [R 9] Number of Leaving LCIDs in Link List Block */ ++#define CFC_REG_NUM_LCIDS_LEAVING 0x104018 ++/* [RW 8] The event id for aggregated interrupt 0 */ ++#define CSDM_REG_AGG_INT_EVENT_0 0xc2038 ++#define CSDM_REG_AGG_INT_EVENT_10 0xc2060 ++#define CSDM_REG_AGG_INT_EVENT_11 0xc2064 ++#define CSDM_REG_AGG_INT_EVENT_12 0xc2068 ++#define CSDM_REG_AGG_INT_EVENT_13 0xc206c ++#define CSDM_REG_AGG_INT_EVENT_14 0xc2070 ++#define CSDM_REG_AGG_INT_EVENT_15 0xc2074 ++#define CSDM_REG_AGG_INT_EVENT_16 0xc2078 ++#define CSDM_REG_AGG_INT_EVENT_2 0xc2040 ++#define CSDM_REG_AGG_INT_EVENT_3 0xc2044 ++#define CSDM_REG_AGG_INT_EVENT_4 0xc2048 ++#define CSDM_REG_AGG_INT_EVENT_5 0xc204c ++#define CSDM_REG_AGG_INT_EVENT_6 0xc2050 ++#define CSDM_REG_AGG_INT_EVENT_7 0xc2054 ++#define CSDM_REG_AGG_INT_EVENT_8 0xc2058 ++#define CSDM_REG_AGG_INT_EVENT_9 0xc205c ++/* [RW 1] For each aggregated interrupt index whether the mode is normal (0) ++ or auto-mask-mode (1) */ ++#define CSDM_REG_AGG_INT_MODE_10 0xc21e0 ++#define CSDM_REG_AGG_INT_MODE_11 0xc21e4 ++#define CSDM_REG_AGG_INT_MODE_12 0xc21e8 ++#define CSDM_REG_AGG_INT_MODE_13 0xc21ec ++#define CSDM_REG_AGG_INT_MODE_14 0xc21f0 ++#define CSDM_REG_AGG_INT_MODE_15 0xc21f4 ++#define CSDM_REG_AGG_INT_MODE_16 0xc21f8 ++#define CSDM_REG_AGG_INT_MODE_6 0xc21d0 ++#define CSDM_REG_AGG_INT_MODE_7 0xc21d4 ++#define CSDM_REG_AGG_INT_MODE_8 0xc21d8 ++#define CSDM_REG_AGG_INT_MODE_9 0xc21dc ++/* [RW 13] The start address in the internal RAM for the cfc_rsp lcid */ ++#define CSDM_REG_CFC_RSP_START_ADDR 0xc2008 ++/* [RW 16] The maximum value of the competion counter #0 */ ++#define CSDM_REG_CMP_COUNTER_MAX0 0xc201c ++/* [RW 16] The maximum value of the competion counter #1 */ ++#define CSDM_REG_CMP_COUNTER_MAX1 0xc2020 ++/* [RW 16] The maximum value of the competion counter #2 */ ++#define CSDM_REG_CMP_COUNTER_MAX2 0xc2024 ++/* [RW 16] The maximum value of the competion counter #3 */ ++#define CSDM_REG_CMP_COUNTER_MAX3 0xc2028 ++/* [RW 13] The start address in the internal RAM for the completion ++ counters. */ ++#define CSDM_REG_CMP_COUNTER_START_ADDR 0xc200c ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define CSDM_REG_CSDM_INT_MASK_0 0xc229c ++#define CSDM_REG_CSDM_INT_MASK_1 0xc22ac ++/* [R 32] Interrupt register #0 read */ ++#define CSDM_REG_CSDM_INT_STS_0 0xc2290 ++#define CSDM_REG_CSDM_INT_STS_1 0xc22a0 ++/* [RW 11] Parity mask register #0 read/write */ ++#define CSDM_REG_CSDM_PRTY_MASK 0xc22bc ++/* [R 11] Parity register #0 read */ ++#define CSDM_REG_CSDM_PRTY_STS 0xc22b0 ++#define CSDM_REG_ENABLE_IN1 0xc2238 ++#define CSDM_REG_ENABLE_IN2 0xc223c ++#define CSDM_REG_ENABLE_OUT1 0xc2240 ++#define CSDM_REG_ENABLE_OUT2 0xc2244 ++/* [RW 4] The initial number of messages that can be sent to the pxp control ++ interface without receiving any ACK. */ ++#define CSDM_REG_INIT_CREDIT_PXP_CTRL 0xc24bc ++/* [ST 32] The number of ACK after placement messages received */ ++#define CSDM_REG_NUM_OF_ACK_AFTER_PLACE 0xc227c ++/* [ST 32] The number of packet end messages received from the parser */ ++#define CSDM_REG_NUM_OF_PKT_END_MSG 0xc2274 ++/* [ST 32] The number of requests received from the pxp async if */ ++#define CSDM_REG_NUM_OF_PXP_ASYNC_REQ 0xc2278 ++/* [ST 32] The number of commands received in queue 0 */ ++#define CSDM_REG_NUM_OF_Q0_CMD 0xc2248 ++/* [ST 32] The number of commands received in queue 10 */ ++#define CSDM_REG_NUM_OF_Q10_CMD 0xc226c ++/* [ST 32] The number of commands received in queue 11 */ ++#define CSDM_REG_NUM_OF_Q11_CMD 0xc2270 ++/* [ST 32] The number of commands received in queue 1 */ ++#define CSDM_REG_NUM_OF_Q1_CMD 0xc224c ++/* [ST 32] The number of commands received in queue 3 */ ++#define CSDM_REG_NUM_OF_Q3_CMD 0xc2250 ++/* [ST 32] The number of commands received in queue 4 */ ++#define CSDM_REG_NUM_OF_Q4_CMD 0xc2254 ++/* [ST 32] The number of commands received in queue 5 */ ++#define CSDM_REG_NUM_OF_Q5_CMD 0xc2258 ++/* [ST 32] The number of commands received in queue 6 */ ++#define CSDM_REG_NUM_OF_Q6_CMD 0xc225c ++/* [ST 32] The number of commands received in queue 7 */ ++#define CSDM_REG_NUM_OF_Q7_CMD 0xc2260 ++/* [ST 32] The number of commands received in queue 8 */ ++#define CSDM_REG_NUM_OF_Q8_CMD 0xc2264 ++/* [ST 32] The number of commands received in queue 9 */ ++#define CSDM_REG_NUM_OF_Q9_CMD 0xc2268 ++/* [RW 13] The start address in the internal RAM for queue counters */ ++#define CSDM_REG_Q_COUNTER_START_ADDR 0xc2010 ++/* [R 1] pxp_ctrl rd_data fifo empty in sdm_dma_rsp block */ ++#define CSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY 0xc2548 ++/* [R 1] parser fifo empty in sdm_sync block */ ++#define CSDM_REG_SYNC_PARSER_EMPTY 0xc2550 ++/* [R 1] parser serial fifo empty in sdm_sync block */ ++#define CSDM_REG_SYNC_SYNC_EMPTY 0xc2558 ++/* [RW 32] Tick for timer counter. Applicable only when ++ ~csdm_registers_timer_tick_enable.timer_tick_enable =1 */ ++#define CSDM_REG_TIMER_TICK 0xc2000 ++/* [RW 5] The number of time_slots in the arbitration cycle */ ++#define CSEM_REG_ARB_CYCLE_SIZE 0x200034 ++/* [RW 3] The source that is associated with arbitration element 0. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2 */ ++#define CSEM_REG_ARB_ELEMENT0 0x200020 ++/* [RW 3] The source that is associated with arbitration element 1. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~csem_registers_arb_element0.arb_element0 */ ++#define CSEM_REG_ARB_ELEMENT1 0x200024 ++/* [RW 3] The source that is associated with arbitration element 2. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~csem_registers_arb_element0.arb_element0 ++ and ~csem_registers_arb_element1.arb_element1 */ ++#define CSEM_REG_ARB_ELEMENT2 0x200028 ++/* [RW 3] The source that is associated with arbitration element 3. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2.Could ++ not be equal to register ~csem_registers_arb_element0.arb_element0 and ++ ~csem_registers_arb_element1.arb_element1 and ++ ~csem_registers_arb_element2.arb_element2 */ ++#define CSEM_REG_ARB_ELEMENT3 0x20002c ++/* [RW 3] The source that is associated with arbitration element 4. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~csem_registers_arb_element0.arb_element0 ++ and ~csem_registers_arb_element1.arb_element1 and ++ ~csem_registers_arb_element2.arb_element2 and ++ ~csem_registers_arb_element3.arb_element3 */ ++#define CSEM_REG_ARB_ELEMENT4 0x200030 ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define CSEM_REG_CSEM_INT_MASK_0 0x200110 ++#define CSEM_REG_CSEM_INT_MASK_1 0x200120 ++/* [R 32] Interrupt register #0 read */ ++#define CSEM_REG_CSEM_INT_STS_0 0x200104 ++#define CSEM_REG_CSEM_INT_STS_1 0x200114 ++/* [RW 32] Parity mask register #0 read/write */ ++#define CSEM_REG_CSEM_PRTY_MASK_0 0x200130 ++#define CSEM_REG_CSEM_PRTY_MASK_1 0x200140 ++/* [R 32] Parity register #0 read */ ++#define CSEM_REG_CSEM_PRTY_STS_0 0x200124 ++#define CSEM_REG_CSEM_PRTY_STS_1 0x200134 ++#define CSEM_REG_ENABLE_IN 0x2000a4 ++#define CSEM_REG_ENABLE_OUT 0x2000a8 ++/* [RW 32] This address space contains all registers and memories that are ++ placed in SEM_FAST block. The SEM_FAST registers are described in ++ appendix B. In order to access the sem_fast registers the base address ++ ~fast_memory.fast_memory should be added to eachsem_fast register offset. */ ++#define CSEM_REG_FAST_MEMORY 0x220000 ++/* [RW 1] Disables input messages from FIC0 May be updated during run_time ++ by the microcode */ ++#define CSEM_REG_FIC0_DISABLE 0x200224 ++/* [RW 1] Disables input messages from FIC1 May be updated during run_time ++ by the microcode */ ++#define CSEM_REG_FIC1_DISABLE 0x200234 ++/* [RW 15] Interrupt table Read and write access to it is not possible in ++ the middle of the work */ ++#define CSEM_REG_INT_TABLE 0x200400 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC0 */ ++#define CSEM_REG_MSG_NUM_FIC0 0x200000 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC1 */ ++#define CSEM_REG_MSG_NUM_FIC1 0x200004 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC0 */ ++#define CSEM_REG_MSG_NUM_FOC0 0x200008 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC1 */ ++#define CSEM_REG_MSG_NUM_FOC1 0x20000c ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC2 */ ++#define CSEM_REG_MSG_NUM_FOC2 0x200010 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC3 */ ++#define CSEM_REG_MSG_NUM_FOC3 0x200014 ++/* [RW 1] Disables input messages from the passive buffer May be updated ++ during run_time by the microcode */ ++#define CSEM_REG_PAS_DISABLE 0x20024c ++/* [WB 128] Debug only. Passive buffer memory */ ++#define CSEM_REG_PASSIVE_BUFFER 0x202000 ++/* [WB 46] pram memory. B45 is parity; b[44:0] - data. */ ++#define CSEM_REG_PRAM 0x240000 ++/* [R 16] Valid sleeping threads indication have bit per thread */ ++#define CSEM_REG_SLEEP_THREADS_VALID 0x20026c ++/* [R 1] EXT_STORE FIFO is empty in sem_slow_ls_ext */ ++#define CSEM_REG_SLOW_EXT_STORE_EMPTY 0x2002a0 ++/* [RW 16] List of free threads . There is a bit per thread. */ ++#define CSEM_REG_THREADS_LIST 0x2002e4 ++/* [RW 3] The arbitration scheme of time_slot 0 */ ++#define CSEM_REG_TS_0_AS 0x200038 ++/* [RW 3] The arbitration scheme of time_slot 10 */ ++#define CSEM_REG_TS_10_AS 0x200060 ++/* [RW 3] The arbitration scheme of time_slot 11 */ ++#define CSEM_REG_TS_11_AS 0x200064 ++/* [RW 3] The arbitration scheme of time_slot 12 */ ++#define CSEM_REG_TS_12_AS 0x200068 ++/* [RW 3] The arbitration scheme of time_slot 13 */ ++#define CSEM_REG_TS_13_AS 0x20006c ++/* [RW 3] The arbitration scheme of time_slot 14 */ ++#define CSEM_REG_TS_14_AS 0x200070 ++/* [RW 3] The arbitration scheme of time_slot 15 */ ++#define CSEM_REG_TS_15_AS 0x200074 ++/* [RW 3] The arbitration scheme of time_slot 16 */ ++#define CSEM_REG_TS_16_AS 0x200078 ++/* [RW 3] The arbitration scheme of time_slot 17 */ ++#define CSEM_REG_TS_17_AS 0x20007c ++/* [RW 3] The arbitration scheme of time_slot 18 */ ++#define CSEM_REG_TS_18_AS 0x200080 ++/* [RW 3] The arbitration scheme of time_slot 1 */ ++#define CSEM_REG_TS_1_AS 0x20003c ++/* [RW 3] The arbitration scheme of time_slot 2 */ ++#define CSEM_REG_TS_2_AS 0x200040 ++/* [RW 3] The arbitration scheme of time_slot 3 */ ++#define CSEM_REG_TS_3_AS 0x200044 ++/* [RW 3] The arbitration scheme of time_slot 4 */ ++#define CSEM_REG_TS_4_AS 0x200048 ++/* [RW 3] The arbitration scheme of time_slot 5 */ ++#define CSEM_REG_TS_5_AS 0x20004c ++/* [RW 3] The arbitration scheme of time_slot 6 */ ++#define CSEM_REG_TS_6_AS 0x200050 ++/* [RW 3] The arbitration scheme of time_slot 7 */ ++#define CSEM_REG_TS_7_AS 0x200054 ++/* [RW 3] The arbitration scheme of time_slot 8 */ ++#define CSEM_REG_TS_8_AS 0x200058 ++/* [RW 3] The arbitration scheme of time_slot 9 */ ++#define CSEM_REG_TS_9_AS 0x20005c ++/* [RW 1] Parity mask register #0 read/write */ ++#define DBG_REG_DBG_PRTY_MASK 0xc0a8 ++/* [R 1] Parity register #0 read */ ++#define DBG_REG_DBG_PRTY_STS 0xc09c ++/* [RW 32] Commands memory. The address to command X; row Y is to calculated ++ as 14*X+Y. */ ++#define DMAE_REG_CMD_MEM 0x102400 ++#define DMAE_REG_CMD_MEM_SIZE 224 ++/* [RW 1] If 0 - the CRC-16c initial value is all zeroes; if 1 - the CRC-16c ++ initial value is all ones. */ ++#define DMAE_REG_CRC16C_INIT 0x10201c ++/* [RW 1] If 0 - the CRC-16 T10 initial value is all zeroes; if 1 - the ++ CRC-16 T10 initial value is all ones. */ ++#define DMAE_REG_CRC16T10_INIT 0x102020 ++/* [RW 2] Interrupt mask register #0 read/write */ ++#define DMAE_REG_DMAE_INT_MASK 0x102054 ++/* [RW 4] Parity mask register #0 read/write */ ++#define DMAE_REG_DMAE_PRTY_MASK 0x102064 ++/* [R 4] Parity register #0 read */ ++#define DMAE_REG_DMAE_PRTY_STS 0x102058 ++/* [RW 1] Command 0 go. */ ++#define DMAE_REG_GO_C0 0x102080 ++/* [RW 1] Command 1 go. */ ++#define DMAE_REG_GO_C1 0x102084 ++/* [RW 1] Command 10 go. */ ++#define DMAE_REG_GO_C10 0x102088 ++/* [RW 1] Command 11 go. */ ++#define DMAE_REG_GO_C11 0x10208c ++/* [RW 1] Command 12 go. */ ++#define DMAE_REG_GO_C12 0x102090 ++/* [RW 1] Command 13 go. */ ++#define DMAE_REG_GO_C13 0x102094 ++/* [RW 1] Command 14 go. */ ++#define DMAE_REG_GO_C14 0x102098 ++/* [RW 1] Command 15 go. */ ++#define DMAE_REG_GO_C15 0x10209c ++/* [RW 1] Command 2 go. */ ++#define DMAE_REG_GO_C2 0x1020a0 ++/* [RW 1] Command 3 go. */ ++#define DMAE_REG_GO_C3 0x1020a4 ++/* [RW 1] Command 4 go. */ ++#define DMAE_REG_GO_C4 0x1020a8 ++/* [RW 1] Command 5 go. */ ++#define DMAE_REG_GO_C5 0x1020ac ++/* [RW 1] Command 6 go. */ ++#define DMAE_REG_GO_C6 0x1020b0 ++/* [RW 1] Command 7 go. */ ++#define DMAE_REG_GO_C7 0x1020b4 ++/* [RW 1] Command 8 go. */ ++#define DMAE_REG_GO_C8 0x1020b8 ++/* [RW 1] Command 9 go. */ ++#define DMAE_REG_GO_C9 0x1020bc ++/* [RW 1] DMAE GRC Interface (Target; aster) enable. If 0 - the acknowledge ++ input is disregarded; valid is deasserted; all other signals are treated ++ as usual; if 1 - normal activity. */ ++#define DMAE_REG_GRC_IFEN 0x102008 ++/* [RW 1] DMAE PCI Interface (Request; ead; rite) enable. If 0 - the ++ acknowledge input is disregarded; valid is deasserted; full is asserted; ++ all other signals are treated as usual; if 1 - normal activity. */ ++#define DMAE_REG_PCI_IFEN 0x102004 ++/* [RW 4] DMAE- PCI Request Interface initial credit. Write writes the ++ initial value to the credit counter; related to the address. Read returns ++ the current value of the counter. */ ++#define DMAE_REG_PXP_REQ_INIT_CRD 0x1020c0 ++/* [RW 8] Aggregation command. */ ++#define DORQ_REG_AGG_CMD0 0x170060 ++/* [RW 8] Aggregation command. */ ++#define DORQ_REG_AGG_CMD1 0x170064 ++/* [RW 8] Aggregation command. */ ++#define DORQ_REG_AGG_CMD2 0x170068 ++/* [RW 8] Aggregation command. */ ++#define DORQ_REG_AGG_CMD3 0x17006c ++/* [RW 28] UCM Header. */ ++#define DORQ_REG_CMHEAD_RX 0x170050 ++/* [RW 32] Doorbell address for RBC doorbells (function 0). */ ++#define DORQ_REG_DB_ADDR0 0x17008c ++/* [RW 5] Interrupt mask register #0 read/write */ ++#define DORQ_REG_DORQ_INT_MASK 0x170180 ++/* [R 5] Interrupt register #0 read */ ++#define DORQ_REG_DORQ_INT_STS 0x170174 ++/* [RC 5] Interrupt register #0 read clear */ ++#define DORQ_REG_DORQ_INT_STS_CLR 0x170178 ++/* [RW 2] Parity mask register #0 read/write */ ++#define DORQ_REG_DORQ_PRTY_MASK 0x170190 ++/* [R 2] Parity register #0 read */ ++#define DORQ_REG_DORQ_PRTY_STS 0x170184 ++/* [RW 8] The address to write the DPM CID to STORM. */ ++#define DORQ_REG_DPM_CID_ADDR 0x170044 ++/* [RW 5] The DPM mode CID extraction offset. */ ++#define DORQ_REG_DPM_CID_OFST 0x170030 ++/* [RW 12] The threshold of the DQ FIFO to send the almost full interrupt. */ ++#define DORQ_REG_DQ_FIFO_AFULL_TH 0x17007c ++/* [RW 12] The threshold of the DQ FIFO to send the full interrupt. */ ++#define DORQ_REG_DQ_FIFO_FULL_TH 0x170078 ++/* [R 13] Current value of the DQ FIFO fill level according to following ++ pointer. The range is 0 - 256 FIFO rows; where each row stands for the ++ doorbell. */ ++#define DORQ_REG_DQ_FILL_LVLF 0x1700a4 ++/* [R 1] DQ FIFO full status. Is set; when FIFO filling level is more or ++ equal to full threshold; reset on full clear. */ ++#define DORQ_REG_DQ_FULL_ST 0x1700c0 ++/* [RW 28] The value sent to CM header in the case of CFC load error. */ ++#define DORQ_REG_ERR_CMHEAD 0x170058 ++#define DORQ_REG_IF_EN 0x170004 ++#define DORQ_REG_MODE_ACT 0x170008 ++/* [RW 5] The normal mode CID extraction offset. */ ++#define DORQ_REG_NORM_CID_OFST 0x17002c ++/* [RW 28] TCM Header when only TCP context is loaded. */ ++#define DORQ_REG_NORM_CMHEAD_TX 0x17004c ++/* [RW 3] The number of simultaneous outstanding requests to Context Fetch ++ Interface. */ ++#define DORQ_REG_OUTST_REQ 0x17003c ++#define DORQ_REG_REGN 0x170038 ++/* [R 4] Current value of response A counter credit. Initial credit is ++ configured through write to ~dorq_registers_rsp_init_crd.rsp_init_crd ++ register. */ ++#define DORQ_REG_RSPA_CRD_CNT 0x1700ac ++/* [R 4] Current value of response B counter credit. Initial credit is ++ configured through write to ~dorq_registers_rsp_init_crd.rsp_init_crd ++ register. */ ++#define DORQ_REG_RSPB_CRD_CNT 0x1700b0 ++/* [RW 4] The initial credit at the Doorbell Response Interface. The write ++ writes the same initial credit to the rspa_crd_cnt and rspb_crd_cnt. The ++ read reads this written value. */ ++#define DORQ_REG_RSP_INIT_CRD 0x170048 ++/* [RW 4] Initial activity counter value on the load request; when the ++ shortcut is done. */ ++#define DORQ_REG_SHRT_ACT_CNT 0x170070 ++/* [RW 28] TCM Header when both ULP and TCP context is loaded. */ ++#define DORQ_REG_SHRT_CMHEAD 0x170054 ++#define HC_CONFIG_0_REG_ATTN_BIT_EN_0 (0x1<<4) ++#define HC_CONFIG_0_REG_INT_LINE_EN_0 (0x1<<3) ++#define HC_CONFIG_0_REG_MSI_ATTN_EN_0 (0x1<<7) ++#define HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 (0x1<<2) ++#define HC_CONFIG_0_REG_SINGLE_ISR_EN_0 (0x1<<1) ++#define HC_REG_AGG_INT_0 0x108050 ++#define HC_REG_AGG_INT_1 0x108054 ++#define HC_REG_ATTN_BIT 0x108120 ++#define HC_REG_ATTN_IDX 0x108100 ++#define HC_REG_ATTN_MSG0_ADDR_L 0x108018 ++#define HC_REG_ATTN_MSG1_ADDR_L 0x108020 ++#define HC_REG_ATTN_NUM_P0 0x108038 ++#define HC_REG_ATTN_NUM_P1 0x10803c ++#define HC_REG_COMMAND_REG 0x108180 ++#define HC_REG_CONFIG_0 0x108000 ++#define HC_REG_CONFIG_1 0x108004 ++#define HC_REG_FUNC_NUM_P0 0x1080ac ++#define HC_REG_FUNC_NUM_P1 0x1080b0 ++/* [RW 3] Parity mask register #0 read/write */ ++#define HC_REG_HC_PRTY_MASK 0x1080a0 ++/* [R 3] Parity register #0 read */ ++#define HC_REG_HC_PRTY_STS 0x108094 ++#define HC_REG_INT_MASK 0x108108 ++#define HC_REG_LEADING_EDGE_0 0x108040 ++#define HC_REG_LEADING_EDGE_1 0x108048 ++#define HC_REG_P0_PROD_CONS 0x108200 ++#define HC_REG_P1_PROD_CONS 0x108400 ++#define HC_REG_PBA_COMMAND 0x108140 ++#define HC_REG_PCI_CONFIG_0 0x108010 ++#define HC_REG_PCI_CONFIG_1 0x108014 ++#define HC_REG_STATISTIC_COUNTERS 0x109000 ++#define HC_REG_TRAILING_EDGE_0 0x108044 ++#define HC_REG_TRAILING_EDGE_1 0x10804c ++#define HC_REG_UC_RAM_ADDR_0 0x108028 ++#define HC_REG_UC_RAM_ADDR_1 0x108030 ++#define HC_REG_USTORM_ADDR_FOR_COALESCE 0x108068 ++#define HC_REG_VQID_0 0x108008 ++#define HC_REG_VQID_1 0x10800c ++#define MCP_REG_MCPR_NVM_ACCESS_ENABLE 0x86424 ++#define MCP_REG_MCPR_NVM_ADDR 0x8640c ++#define MCP_REG_MCPR_NVM_CFG4 0x8642c ++#define MCP_REG_MCPR_NVM_COMMAND 0x86400 ++#define MCP_REG_MCPR_NVM_READ 0x86410 ++#define MCP_REG_MCPR_NVM_SW_ARB 0x86420 ++#define MCP_REG_MCPR_NVM_WRITE 0x86408 ++#define MCP_REG_MCPR_SCRATCH 0xa0000 ++/* [R 32] read first 32 bit after inversion of function 0. mapped as ++ follows: [0] NIG attention for function0; [1] NIG attention for ++ function1; [2] GPIO1 mcp; [3] GPIO2 mcp; [4] GPIO3 mcp; [5] GPIO4 mcp; ++ [6] GPIO1 function 1; [7] GPIO2 function 1; [8] GPIO3 function 1; [9] ++ GPIO4 function 1; [10] PCIE glue/PXP VPD event function0; [11] PCIE ++ glue/PXP VPD event function1; [12] PCIE glue/PXP Expansion ROM event0; ++ [13] PCIE glue/PXP Expansion ROM event1; [14] SPIO4; [15] SPIO5; [16] ++ MSI/X indication for mcp; [17] MSI/X indication for function 1; [18] BRB ++ Parity error; [19] BRB Hw interrupt; [20] PRS Parity error; [21] PRS Hw ++ interrupt; [22] SRC Parity error; [23] SRC Hw interrupt; [24] TSDM Parity ++ error; [25] TSDM Hw interrupt; [26] TCM Parity error; [27] TCM Hw ++ interrupt; [28] TSEMI Parity error; [29] TSEMI Hw interrupt; [30] PBF ++ Parity error; [31] PBF Hw interrupt; */ ++#define MISC_REG_AEU_AFTER_INVERT_1_FUNC_0 0xa42c ++#define MISC_REG_AEU_AFTER_INVERT_1_FUNC_1 0xa430 ++/* [R 32] read first 32 bit after inversion of mcp. mapped as follows: [0] ++ NIG attention for function0; [1] NIG attention for function1; [2] GPIO1 ++ mcp; [3] GPIO2 mcp; [4] GPIO3 mcp; [5] GPIO4 mcp; [6] GPIO1 function 1; ++ [7] GPIO2 function 1; [8] GPIO3 function 1; [9] GPIO4 function 1; [10] ++ PCIE glue/PXP VPD event function0; [11] PCIE glue/PXP VPD event ++ function1; [12] PCIE glue/PXP Expansion ROM event0; [13] PCIE glue/PXP ++ Expansion ROM event1; [14] SPIO4; [15] SPIO5; [16] MSI/X indication for ++ mcp; [17] MSI/X indication for function 1; [18] BRB Parity error; [19] ++ BRB Hw interrupt; [20] PRS Parity error; [21] PRS Hw interrupt; [22] SRC ++ Parity error; [23] SRC Hw interrupt; [24] TSDM Parity error; [25] TSDM Hw ++ interrupt; [26] TCM Parity error; [27] TCM Hw interrupt; [28] TSEMI ++ Parity error; [29] TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw ++ interrupt; */ ++#define MISC_REG_AEU_AFTER_INVERT_1_MCP 0xa434 ++/* [R 32] read second 32 bit after inversion of function 0. mapped as ++ follows: [0] PBClient Parity error; [1] PBClient Hw interrupt; [2] QM ++ Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw ++ interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity ++ error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw ++ interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14] ++ NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error; ++ [17] Vaux PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw ++ interrupt; [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM ++ Parity error; [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI ++ Hw interrupt; [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM ++ Parity error; [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw ++ interrupt; */ ++#define MISC_REG_AEU_AFTER_INVERT_2_FUNC_0 0xa438 ++#define MISC_REG_AEU_AFTER_INVERT_2_FUNC_1 0xa43c ++/* [R 32] read second 32 bit after inversion of mcp. mapped as follows: [0] ++ PBClient Parity error; [1] PBClient Hw interrupt; [2] QM Parity error; ++ [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw interrupt; ++ [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity error; [9] ++ XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw interrupt; [12] ++ DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14] NIG Parity ++ error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error; [17] Vaux ++ PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw interrupt; ++ [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM Parity error; ++ [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI Hw interrupt; ++ [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM Parity error; ++ [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw interrupt; */ ++#define MISC_REG_AEU_AFTER_INVERT_2_MCP 0xa440 ++/* [R 32] read third 32 bit after inversion of function 0. mapped as ++ follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP Parity ++ error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity error; [5] ++ PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC Hw ++ interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE Parity ++ error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13] IGU (HC) ++ Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt; [16] ++ pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0; [20] ++ MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0; [23] ++ SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW ++ timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers attn_3 ++ func1; [29] SW timers attn_4 func1; [30] General attn0; [31] General ++ attn1; */ ++#define MISC_REG_AEU_AFTER_INVERT_3_FUNC_0 0xa444 ++#define MISC_REG_AEU_AFTER_INVERT_3_FUNC_1 0xa448 ++/* [R 32] read third 32 bit after inversion of mcp. mapped as follows: [0] ++ CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP Parity error; [3] PXP ++ Hw interrupt; [4] PXPpciClockClient Parity error; [5] PXPpciClockClient ++ Hw interrupt; [6] CFC Parity error; [7] CFC Hw interrupt; [8] CDU Parity ++ error; [9] CDU Hw interrupt; [10] DMAE Parity error; [11] DMAE Hw ++ interrupt; [12] IGU (HC) Parity error; [13] IGU (HC) Hw interrupt; [14] ++ MISC Parity error; [15] MISC Hw interrupt; [16] pxp_misc_mps_attn; [17] ++ Flash event; [18] SMB event; [19] MCP attn0; [20] MCP attn1; [21] SW ++ timers attn_1 func0; [22] SW timers attn_2 func0; [23] SW timers attn_3 ++ func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW timers attn_1 ++ func1; [27] SW timers attn_2 func1; [28] SW timers attn_3 func1; [29] SW ++ timers attn_4 func1; [30] General attn0; [31] General attn1; */ ++#define MISC_REG_AEU_AFTER_INVERT_3_MCP 0xa44c ++/* [R 32] read fourth 32 bit after inversion of function 0. mapped as ++ follows: [0] General attn2; [1] General attn3; [2] General attn4; [3] ++ General attn5; [4] General attn6; [5] General attn7; [6] General attn8; ++ [7] General attn9; [8] General attn10; [9] General attn11; [10] General ++ attn12; [11] General attn13; [12] General attn14; [13] General attn15; ++ [14] General attn16; [15] General attn17; [16] General attn18; [17] ++ General attn19; [18] General attn20; [19] General attn21; [20] Main power ++ interrupt; [21] RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN ++ Latched attn; [24] RBCU Latched attn; [25] RBCP Latched attn; [26] GRC ++ Latched timeout attention; [27] GRC Latched reserved access attention; ++ [28] MCP Latched rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP ++ Latched ump_tx_parity; [31] MCP Latched scpad_parity; */ ++#define MISC_REG_AEU_AFTER_INVERT_4_FUNC_0 0xa450 ++#define MISC_REG_AEU_AFTER_INVERT_4_FUNC_1 0xa454 ++/* [R 32] read fourth 32 bit after inversion of mcp. mapped as follows: [0] ++ General attn2; [1] General attn3; [2] General attn4; [3] General attn5; ++ [4] General attn6; [5] General attn7; [6] General attn8; [7] General ++ attn9; [8] General attn10; [9] General attn11; [10] General attn12; [11] ++ General attn13; [12] General attn14; [13] General attn15; [14] General ++ attn16; [15] General attn17; [16] General attn18; [17] General attn19; ++ [18] General attn20; [19] General attn21; [20] Main power interrupt; [21] ++ RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN Latched attn; [24] ++ RBCU Latched attn; [25] RBCP Latched attn; [26] GRC Latched timeout ++ attention; [27] GRC Latched reserved access attention; [28] MCP Latched ++ rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP Latched ++ ump_tx_parity; [31] MCP Latched scpad_parity; */ ++#define MISC_REG_AEU_AFTER_INVERT_4_MCP 0xa458 ++/* [W 14] write to this register results with the clear of the latched ++ signals; one in d0 clears RBCR latch; one in d1 clears RBCT latch; one in ++ d2 clears RBCN latch; one in d3 clears RBCU latch; one in d4 clears RBCP ++ latch; one in d5 clears GRC Latched timeout attention; one in d6 clears ++ GRC Latched reserved access attention; one in d7 clears Latched ++ rom_parity; one in d8 clears Latched ump_rx_parity; one in d9 clears ++ Latched ump_tx_parity; one in d10 clears Latched scpad_parity (both ++ ports); one in d11 clears pxpv_misc_mps_attn; one in d12 clears ++ pxp_misc_exp_rom_attn0; one in d13 clears pxp_misc_exp_rom_attn1; read ++ from this register return zero */ ++#define MISC_REG_AEU_CLR_LATCH_SIGNAL 0xa45c ++/* [RW 32] first 32b for enabling the output for function 0 output0. mapped ++ as follows: [0] NIG attention for function0; [1] NIG attention for ++ function1; [2] GPIO1 function 0; [3] GPIO2 function 0; [4] GPIO3 function ++ 0; [5] GPIO4 function 0; [6] GPIO1 function 1; [7] GPIO2 function 1; [8] ++ GPIO3 function 1; [9] GPIO4 function 1; [10] PCIE glue/PXP VPD event ++ function0; [11] PCIE glue/PXP VPD event function1; [12] PCIE glue/PXP ++ Expansion ROM event0; [13] PCIE glue/PXP Expansion ROM event1; [14] ++ SPIO4; [15] SPIO5; [16] MSI/X indication for function 0; [17] MSI/X ++ indication for function 1; [18] BRB Parity error; [19] BRB Hw interrupt; ++ [20] PRS Parity error; [21] PRS Hw interrupt; [22] SRC Parity error; [23] ++ SRC Hw interrupt; [24] TSDM Parity error; [25] TSDM Hw interrupt; [26] ++ TCM Parity error; [27] TCM Hw interrupt; [28] TSEMI Parity error; [29] ++ TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */ ++#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0 0xa06c ++#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_1 0xa07c ++#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_2 0xa08c ++#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_3 0xa09c ++#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_5 0xa0bc ++#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_6 0xa0cc ++#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_7 0xa0dc ++/* [RW 32] first 32b for enabling the output for function 1 output0. mapped ++ as follows: [0] NIG attention for function0; [1] NIG attention for ++ function1; [2] GPIO1 function 1; [3] GPIO2 function 1; [4] GPIO3 function ++ 1; [5] GPIO4 function 1; [6] GPIO1 function 1; [7] GPIO2 function 1; [8] ++ GPIO3 function 1; [9] GPIO4 function 1; [10] PCIE glue/PXP VPD event ++ function0; [11] PCIE glue/PXP VPD event function1; [12] PCIE glue/PXP ++ Expansion ROM event0; [13] PCIE glue/PXP Expansion ROM event1; [14] ++ SPIO4; [15] SPIO5; [16] MSI/X indication for function 1; [17] MSI/X ++ indication for function 1; [18] BRB Parity error; [19] BRB Hw interrupt; ++ [20] PRS Parity error; [21] PRS Hw interrupt; [22] SRC Parity error; [23] ++ SRC Hw interrupt; [24] TSDM Parity error; [25] TSDM Hw interrupt; [26] ++ TCM Parity error; [27] TCM Hw interrupt; [28] TSEMI Parity error; [29] ++ TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */ ++#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 0xa10c ++#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_1 0xa11c ++#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_2 0xa12c ++#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_3 0xa13c ++#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_5 0xa15c ++#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_6 0xa16c ++#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_7 0xa17c ++/* [RW 32] first 32b for enabling the output for close the gate nig. mapped ++ as follows: [0] NIG attention for function0; [1] NIG attention for ++ function1; [2] GPIO1 function 0; [3] GPIO2 function 0; [4] GPIO3 function ++ 0; [5] GPIO4 function 0; [6] GPIO1 function 1; [7] GPIO2 function 1; [8] ++ GPIO3 function 1; [9] GPIO4 function 1; [10] PCIE glue/PXP VPD event ++ function0; [11] PCIE glue/PXP VPD event function1; [12] PCIE glue/PXP ++ Expansion ROM event0; [13] PCIE glue/PXP Expansion ROM event1; [14] ++ SPIO4; [15] SPIO5; [16] MSI/X indication for function 0; [17] MSI/X ++ indication for function 1; [18] BRB Parity error; [19] BRB Hw interrupt; ++ [20] PRS Parity error; [21] PRS Hw interrupt; [22] SRC Parity error; [23] ++ SRC Hw interrupt; [24] TSDM Parity error; [25] TSDM Hw interrupt; [26] ++ TCM Parity error; [27] TCM Hw interrupt; [28] TSEMI Parity error; [29] ++ TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */ ++#define MISC_REG_AEU_ENABLE1_NIG_0 0xa0ec ++#define MISC_REG_AEU_ENABLE1_NIG_1 0xa18c ++/* [RW 32] first 32b for enabling the output for close the gate pxp. mapped ++ as follows: [0] NIG attention for function0; [1] NIG attention for ++ function1; [2] GPIO1 function 0; [3] GPIO2 function 0; [4] GPIO3 function ++ 0; [5] GPIO4 function 0; [6] GPIO1 function 1; [7] GPIO2 function 1; [8] ++ GPIO3 function 1; [9] GPIO4 function 1; [10] PCIE glue/PXP VPD event ++ function0; [11] PCIE glue/PXP VPD event function1; [12] PCIE glue/PXP ++ Expansion ROM event0; [13] PCIE glue/PXP Expansion ROM event1; [14] ++ SPIO4; [15] SPIO5; [16] MSI/X indication for function 0; [17] MSI/X ++ indication for function 1; [18] BRB Parity error; [19] BRB Hw interrupt; ++ [20] PRS Parity error; [21] PRS Hw interrupt; [22] SRC Parity error; [23] ++ SRC Hw interrupt; [24] TSDM Parity error; [25] TSDM Hw interrupt; [26] ++ TCM Parity error; [27] TCM Hw interrupt; [28] TSEMI Parity error; [29] ++ TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */ ++#define MISC_REG_AEU_ENABLE1_PXP_0 0xa0fc ++#define MISC_REG_AEU_ENABLE1_PXP_1 0xa19c ++/* [RW 32] second 32b for enabling the output for function 0 output0. mapped ++ as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt; [2] QM ++ Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw ++ interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity ++ error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw ++ interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14] ++ NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error; ++ [17] Vaux PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw ++ interrupt; [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM ++ Parity error; [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI ++ Hw interrupt; [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM ++ Parity error; [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw ++ interrupt; */ ++#define MISC_REG_AEU_ENABLE2_FUNC_0_OUT_0 0xa070 ++#define MISC_REG_AEU_ENABLE2_FUNC_0_OUT_1 0xa080 ++/* [RW 32] second 32b for enabling the output for function 1 output0. mapped ++ as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt; [2] QM ++ Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw ++ interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity ++ error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw ++ interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14] ++ NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error; ++ [17] Vaux PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw ++ interrupt; [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM ++ Parity error; [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI ++ Hw interrupt; [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM ++ Parity error; [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw ++ interrupt; */ ++#define MISC_REG_AEU_ENABLE2_FUNC_1_OUT_0 0xa110 ++#define MISC_REG_AEU_ENABLE2_FUNC_1_OUT_1 0xa120 ++/* [RW 32] second 32b for enabling the output for close the gate nig. mapped ++ as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt; [2] QM ++ Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw ++ interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity ++ error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw ++ interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14] ++ NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error; ++ [17] Vaux PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw ++ interrupt; [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM ++ Parity error; [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI ++ Hw interrupt; [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM ++ Parity error; [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw ++ interrupt; */ ++#define MISC_REG_AEU_ENABLE2_NIG_0 0xa0f0 ++#define MISC_REG_AEU_ENABLE2_NIG_1 0xa190 ++/* [RW 32] second 32b for enabling the output for close the gate pxp. mapped ++ as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt; [2] QM ++ Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw ++ interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity ++ error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw ++ interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14] ++ NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error; ++ [17] Vaux PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw ++ interrupt; [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM ++ Parity error; [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI ++ Hw interrupt; [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM ++ Parity error; [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw ++ interrupt; */ ++#define MISC_REG_AEU_ENABLE2_PXP_0 0xa100 ++#define MISC_REG_AEU_ENABLE2_PXP_1 0xa1a0 ++/* [RW 32] third 32b for enabling the output for function 0 output0. mapped ++ as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP ++ Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity error; ++ [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC Hw ++ interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE Parity ++ error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13] IGU (HC) ++ Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt; [16] ++ pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0; [20] ++ MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0; [23] ++ SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW ++ timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers attn_3 ++ func1; [29] SW timers attn_4 func1; [30] General attn0; [31] General ++ attn1; */ ++#define MISC_REG_AEU_ENABLE3_FUNC_0_OUT_0 0xa074 ++#define MISC_REG_AEU_ENABLE3_FUNC_0_OUT_1 0xa084 ++/* [RW 32] third 32b for enabling the output for function 1 output0. mapped ++ as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP ++ Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity error; ++ [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC Hw ++ interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE Parity ++ error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13] IGU (HC) ++ Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt; [16] ++ pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0; [20] ++ MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0; [23] ++ SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW ++ timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers attn_3 ++ func1; [29] SW timers attn_4 func1; [30] General attn0; [31] General ++ attn1; */ ++#define MISC_REG_AEU_ENABLE3_FUNC_1_OUT_0 0xa114 ++#define MISC_REG_AEU_ENABLE3_FUNC_1_OUT_1 0xa124 ++/* [RW 32] third 32b for enabling the output for close the gate nig. mapped ++ as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP ++ Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity error; ++ [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC Hw ++ interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE Parity ++ error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13] IGU (HC) ++ Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt; [16] ++ pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0; [20] ++ MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0; [23] ++ SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW ++ timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers attn_3 ++ func1; [29] SW timers attn_4 func1; [30] General attn0; [31] General ++ attn1; */ ++#define MISC_REG_AEU_ENABLE3_NIG_0 0xa0f4 ++#define MISC_REG_AEU_ENABLE3_NIG_1 0xa194 ++/* [RW 32] third 32b for enabling the output for close the gate pxp. mapped ++ as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP ++ Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity error; ++ [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC Hw ++ interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE Parity ++ error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13] IGU (HC) ++ Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt; [16] ++ pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0; [20] ++ MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0; [23] ++ SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW ++ timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers attn_3 ++ func1; [29] SW timers attn_4 func1; [30] General attn0; [31] General ++ attn1; */ ++#define MISC_REG_AEU_ENABLE3_PXP_0 0xa104 ++#define MISC_REG_AEU_ENABLE3_PXP_1 0xa1a4 ++/* [RW 32] fourth 32b for enabling the output for function 0 output0.mapped ++ as follows: [0] General attn2; [1] General attn3; [2] General attn4; [3] ++ General attn5; [4] General attn6; [5] General attn7; [6] General attn8; ++ [7] General attn9; [8] General attn10; [9] General attn11; [10] General ++ attn12; [11] General attn13; [12] General attn14; [13] General attn15; ++ [14] General attn16; [15] General attn17; [16] General attn18; [17] ++ General attn19; [18] General attn20; [19] General attn21; [20] Main power ++ interrupt; [21] RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN ++ Latched attn; [24] RBCU Latched attn; [25] RBCP Latched attn; [26] GRC ++ Latched timeout attention; [27] GRC Latched reserved access attention; ++ [28] MCP Latched rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP ++ Latched ump_tx_parity; [31] MCP Latched scpad_parity; */ ++#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_0 0xa078 ++#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_2 0xa098 ++#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_4 0xa0b8 ++#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_5 0xa0c8 ++#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_6 0xa0d8 ++#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_7 0xa0e8 ++/* [RW 32] fourth 32b for enabling the output for function 1 output0.mapped ++ as follows: [0] General attn2; [1] General attn3; [2] General attn4; [3] ++ General attn5; [4] General attn6; [5] General attn7; [6] General attn8; ++ [7] General attn9; [8] General attn10; [9] General attn11; [10] General ++ attn12; [11] General attn13; [12] General attn14; [13] General attn15; ++ [14] General attn16; [15] General attn17; [16] General attn18; [17] ++ General attn19; [18] General attn20; [19] General attn21; [20] Main power ++ interrupt; [21] RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN ++ Latched attn; [24] RBCU Latched attn; [25] RBCP Latched attn; [26] GRC ++ Latched timeout attention; [27] GRC Latched reserved access attention; ++ [28] MCP Latched rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP ++ Latched ump_tx_parity; [31] MCP Latched scpad_parity; */ ++#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_0 0xa118 ++#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_2 0xa138 ++#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_4 0xa158 ++#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_5 0xa168 ++#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_6 0xa178 ++#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_7 0xa188 ++/* [RW 32] fourth 32b for enabling the output for close the gate nig.mapped ++ as follows: [0] General attn2; [1] General attn3; [2] General attn4; [3] ++ General attn5; [4] General attn6; [5] General attn7; [6] General attn8; ++ [7] General attn9; [8] General attn10; [9] General attn11; [10] General ++ attn12; [11] General attn13; [12] General attn14; [13] General attn15; ++ [14] General attn16; [15] General attn17; [16] General attn18; [17] ++ General attn19; [18] General attn20; [19] General attn21; [20] Main power ++ interrupt; [21] RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN ++ Latched attn; [24] RBCU Latched attn; [25] RBCP Latched attn; [26] GRC ++ Latched timeout attention; [27] GRC Latched reserved access attention; ++ [28] MCP Latched rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP ++ Latched ump_tx_parity; [31] MCP Latched scpad_parity; */ ++#define MISC_REG_AEU_ENABLE4_NIG_0 0xa0f8 ++#define MISC_REG_AEU_ENABLE4_NIG_1 0xa198 ++/* [RW 32] fourth 32b for enabling the output for close the gate pxp.mapped ++ as follows: [0] General attn2; [1] General attn3; [2] General attn4; [3] ++ General attn5; [4] General attn6; [5] General attn7; [6] General attn8; ++ [7] General attn9; [8] General attn10; [9] General attn11; [10] General ++ attn12; [11] General attn13; [12] General attn14; [13] General attn15; ++ [14] General attn16; [15] General attn17; [16] General attn18; [17] ++ General attn19; [18] General attn20; [19] General attn21; [20] Main power ++ interrupt; [21] RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN ++ Latched attn; [24] RBCU Latched attn; [25] RBCP Latched attn; [26] GRC ++ Latched timeout attention; [27] GRC Latched reserved access attention; ++ [28] MCP Latched rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP ++ Latched ump_tx_parity; [31] MCP Latched scpad_parity; */ ++#define MISC_REG_AEU_ENABLE4_PXP_0 0xa108 ++#define MISC_REG_AEU_ENABLE4_PXP_1 0xa1a8 ++/* [RW 1] set/clr general attention 0; this will set/clr bit 94 in the aeu ++ 128 bit vector */ ++#define MISC_REG_AEU_GENERAL_ATTN_0 0xa000 ++#define MISC_REG_AEU_GENERAL_ATTN_1 0xa004 ++#define MISC_REG_AEU_GENERAL_ATTN_10 0xa028 ++#define MISC_REG_AEU_GENERAL_ATTN_11 0xa02c ++#define MISC_REG_AEU_GENERAL_ATTN_12 0xa030 ++#define MISC_REG_AEU_GENERAL_ATTN_2 0xa008 ++#define MISC_REG_AEU_GENERAL_ATTN_3 0xa00c ++#define MISC_REG_AEU_GENERAL_ATTN_4 0xa010 ++#define MISC_REG_AEU_GENERAL_ATTN_5 0xa014 ++#define MISC_REG_AEU_GENERAL_ATTN_6 0xa018 ++#define MISC_REG_AEU_GENERAL_ATTN_7 0xa01c ++#define MISC_REG_AEU_GENERAL_ATTN_8 0xa020 ++#define MISC_REG_AEU_GENERAL_ATTN_9 0xa024 ++#define MISC_REG_AEU_GENERAL_MASK 0xa61c ++/* [RW 32] first 32b for inverting the input for function 0; for each bit: ++ 0= do not invert; 1= invert; mapped as follows: [0] NIG attention for ++ function0; [1] NIG attention for function1; [2] GPIO1 mcp; [3] GPIO2 mcp; ++ [4] GPIO3 mcp; [5] GPIO4 mcp; [6] GPIO1 function 1; [7] GPIO2 function 1; ++ [8] GPIO3 function 1; [9] GPIO4 function 1; [10] PCIE glue/PXP VPD event ++ function0; [11] PCIE glue/PXP VPD event function1; [12] PCIE glue/PXP ++ Expansion ROM event0; [13] PCIE glue/PXP Expansion ROM event1; [14] ++ SPIO4; [15] SPIO5; [16] MSI/X indication for mcp; [17] MSI/X indication ++ for function 1; [18] BRB Parity error; [19] BRB Hw interrupt; [20] PRS ++ Parity error; [21] PRS Hw interrupt; [22] SRC Parity error; [23] SRC Hw ++ interrupt; [24] TSDM Parity error; [25] TSDM Hw interrupt; [26] TCM ++ Parity error; [27] TCM Hw interrupt; [28] TSEMI Parity error; [29] TSEMI ++ Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */ ++#define MISC_REG_AEU_INVERTER_1_FUNC_0 0xa22c ++#define MISC_REG_AEU_INVERTER_1_FUNC_1 0xa23c ++/* [RW 32] second 32b for inverting the input for function 0; for each bit: ++ 0= do not invert; 1= invert. mapped as follows: [0] PBClient Parity ++ error; [1] PBClient Hw interrupt; [2] QM Parity error; [3] QM Hw ++ interrupt; [4] Timers Parity error; [5] Timers Hw interrupt; [6] XSDM ++ Parity error; [7] XSDM Hw interrupt; [8] XCM Parity error; [9] XCM Hw ++ interrupt; [10] XSEMI Parity error; [11] XSEMI Hw interrupt; [12] ++ DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14] NIG Parity ++ error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error; [17] Vaux ++ PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw interrupt; ++ [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM Parity error; ++ [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI Hw interrupt; ++ [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM Parity error; ++ [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw interrupt; */ ++#define MISC_REG_AEU_INVERTER_2_FUNC_0 0xa230 ++#define MISC_REG_AEU_INVERTER_2_FUNC_1 0xa240 ++/* [RW 10] [7:0] = mask 8 attention output signals toward IGU function0; ++ [9:8] = raserved. Zero = mask; one = unmask */ ++#define MISC_REG_AEU_MASK_ATTN_FUNC_0 0xa060 ++#define MISC_REG_AEU_MASK_ATTN_FUNC_1 0xa064 ++/* [RW 1] If set a system kill occurred */ ++#define MISC_REG_AEU_SYS_KILL_OCCURRED 0xa610 ++/* [RW 32] Represent the status of the input vector to the AEU when a system ++ kill occurred. The register is reset in por reset. Mapped as follows: [0] ++ NIG attention for function0; [1] NIG attention for function1; [2] GPIO1 ++ mcp; [3] GPIO2 mcp; [4] GPIO3 mcp; [5] GPIO4 mcp; [6] GPIO1 function 1; ++ [7] GPIO2 function 1; [8] GPIO3 function 1; [9] GPIO4 function 1; [10] ++ PCIE glue/PXP VPD event function0; [11] PCIE glue/PXP VPD event ++ function1; [12] PCIE glue/PXP Expansion ROM event0; [13] PCIE glue/PXP ++ Expansion ROM event1; [14] SPIO4; [15] SPIO5; [16] MSI/X indication for ++ mcp; [17] MSI/X indication for function 1; [18] BRB Parity error; [19] ++ BRB Hw interrupt; [20] PRS Parity error; [21] PRS Hw interrupt; [22] SRC ++ Parity error; [23] SRC Hw interrupt; [24] TSDM Parity error; [25] TSDM Hw ++ interrupt; [26] TCM Parity error; [27] TCM Hw interrupt; [28] TSEMI ++ Parity error; [29] TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw ++ interrupt; */ ++#define MISC_REG_AEU_SYS_KILL_STATUS_0 0xa600 ++#define MISC_REG_AEU_SYS_KILL_STATUS_1 0xa604 ++#define MISC_REG_AEU_SYS_KILL_STATUS_2 0xa608 ++#define MISC_REG_AEU_SYS_KILL_STATUS_3 0xa60c ++/* [R 4] This field indicates the type of the device. '0' - 2 Ports; '1' - 1 ++ Port. */ ++#define MISC_REG_BOND_ID 0xa400 ++/* [R 8] These bits indicate the metal revision of the chip. This value ++ starts at 0x00 for each all-layer tape-out and increments by one for each ++ tape-out. */ ++#define MISC_REG_CHIP_METAL 0xa404 ++/* [R 16] These bits indicate the part number for the chip. */ ++#define MISC_REG_CHIP_NUM 0xa408 ++/* [R 4] These bits indicate the base revision of the chip. This value ++ starts at 0x0 for the A0 tape-out and increments by one for each ++ all-layer tape-out. */ ++#define MISC_REG_CHIP_REV 0xa40c ++/* [RW 32] The following driver registers(1...16) represent 16 drivers and ++ 32 clients. Each client can be controlled by one driver only. One in each ++ bit represent that this driver control the appropriate client (Ex: bit 5 ++ is set means this driver control client number 5). addr1 = set; addr0 = ++ clear; read from both addresses will give the same result = status. write ++ to address 1 will set a request to control all the clients that their ++ appropriate bit (in the write command) is set. if the client is free (the ++ appropriate bit in all the other drivers is clear) one will be written to ++ that driver register; if the client isn't free the bit will remain zero. ++ if the appropriate bit is set (the driver request to gain control on a ++ client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW ++ interrupt will be asserted). write to address 0 will set a request to ++ free all the clients that their appropriate bit (in the write command) is ++ set. if the appropriate bit is clear (the driver request to free a client ++ it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will ++ be asserted). */ ++#define MISC_REG_DRIVER_CONTROL_1 0xa510 ++#define MISC_REG_DRIVER_CONTROL_7 0xa3c8 ++/* [RW 1] e1hmf for WOL. If clr WOL signal o the PXP will be send on bit 0 ++ only. */ ++#define MISC_REG_E1HMF_MODE 0xa5f8 ++/* [RW 32] Debug only: spare RW register reset by core reset */ ++#define MISC_REG_GENERIC_CR_0 0xa460 ++/* [RW 32] GPIO. [31-28] FLOAT port 0; [27-24] FLOAT port 0; When any of ++ these bits is written as a '1'; the corresponding SPIO bit will turn off ++ it's drivers and become an input. This is the reset state of all GPIO ++ pins. The read value of these bits will be a '1' if that last command ++ (#SET; #CLR; or #FLOAT) for this bit was a #FLOAT. (reset value 0xff). ++ [23-20] CLR port 1; 19-16] CLR port 0; When any of these bits is written ++ as a '1'; the corresponding GPIO bit will drive low. The read value of ++ these bits will be a '1' if that last command (#SET; #CLR; or #FLOAT) for ++ this bit was a #CLR. (reset value 0). [15-12] SET port 1; 11-8] port 0; ++ SET When any of these bits is written as a '1'; the corresponding GPIO ++ bit will drive high (if it has that capability). The read value of these ++ bits will be a '1' if that last command (#SET; #CLR; or #FLOAT) for this ++ bit was a #SET. (reset value 0). [7-4] VALUE port 1; [3-0] VALUE port 0; ++ RO; These bits indicate the read value of each of the eight GPIO pins. ++ This is the result value of the pin; not the drive value. Writing these ++ bits will have not effect. */ ++#define MISC_REG_GPIO 0xa490 ++/* [RW 8] These bits enable the GPIO_INTs to signals event to the ++ IGU/MCP.according to the following map: [0] p0_gpio_0; [1] p0_gpio_1; [2] ++ p0_gpio_2; [3] p0_gpio_3; [4] p1_gpio_0; [5] p1_gpio_1; [6] p1_gpio_2; ++ [7] p1_gpio_3; */ ++#define MISC_REG_GPIO_EVENT_EN 0xa2bc ++/* [RW 32] GPIO INT. [31-28] OLD_CLR port1; [27-24] OLD_CLR port0; Writing a ++ '1' to these bit clears the corresponding bit in the #OLD_VALUE register. ++ This will acknowledge an interrupt on the falling edge of corresponding ++ GPIO input (reset value 0). [23-16] OLD_SET [23-16] port1; OLD_SET port0; ++ Writing a '1' to these bit sets the corresponding bit in the #OLD_VALUE ++ register. This will acknowledge an interrupt on the rising edge of ++ corresponding SPIO input (reset value 0). [15-12] OLD_VALUE [11-8] port1; ++ OLD_VALUE port0; RO; These bits indicate the old value of the GPIO input ++ value. When the ~INT_STATE bit is set; this bit indicates the OLD value ++ of the pin such that if ~INT_STATE is set and this bit is '0'; then the ++ interrupt is due to a low to high edge. If ~INT_STATE is set and this bit ++ is '1'; then the interrupt is due to a high to low edge (reset value 0). ++ [7-4] INT_STATE port1; [3-0] INT_STATE RO port0; These bits indicate the ++ current GPIO interrupt state for each GPIO pin. This bit is cleared when ++ the appropriate #OLD_SET or #OLD_CLR command bit is written. This bit is ++ set when the GPIO input does not match the current value in #OLD_VALUE ++ (reset value 0). */ ++#define MISC_REG_GPIO_INT 0xa494 ++/* [R 28] this field hold the last information that caused reserved ++ attention. bits [19:0] - address; [22:20] function; [23] reserved; ++ [27:24] the master that caused the attention - according to the following ++ encodeing:1 = pxp; 2 = mcp; 3 = usdm; 4 = tsdm; 5 = xsdm; 6 = csdm; 7 = ++ dbu; 8 = dmae */ ++#define MISC_REG_GRC_RSV_ATTN 0xa3c0 ++/* [R 28] this field hold the last information that caused timeout ++ attention. bits [19:0] - address; [22:20] function; [23] reserved; ++ [27:24] the master that caused the attention - according to the following ++ encodeing:1 = pxp; 2 = mcp; 3 = usdm; 4 = tsdm; 5 = xsdm; 6 = csdm; 7 = ++ dbu; 8 = dmae */ ++#define MISC_REG_GRC_TIMEOUT_ATTN 0xa3c4 ++/* [RW 1] Setting this bit enables a timer in the GRC block to timeout any ++ access that does not finish within ++ ~misc_registers_grc_timout_val.grc_timeout_val cycles. When this bit is ++ cleared; this timeout is disabled. If this timeout occurs; the GRC shall ++ assert it attention output. */ ++#define MISC_REG_GRC_TIMEOUT_EN 0xa280 ++/* [RW 28] 28 LSB of LCPLL first register; reset val = 521. inside order of ++ the bits is: [2:0] OAC reset value 001) CML output buffer bias control; ++ 111 for +40%; 011 for +20%; 001 for 0%; 000 for -20%. [5:3] Icp_ctrl ++ (reset value 001) Charge pump current control; 111 for 720u; 011 for ++ 600u; 001 for 480u and 000 for 360u. [7:6] Bias_ctrl (reset value 00) ++ Global bias control; When bit 7 is high bias current will be 10 0gh; When ++ bit 6 is high bias will be 100w; Valid values are 00; 10; 01. [10:8] ++ Pll_observe (reset value 010) Bits to control observability. bit 10 is ++ for test bias; bit 9 is for test CK; bit 8 is test Vc. [12:11] Vth_ctrl ++ (reset value 00) Comparator threshold control. 00 for 0.6V; 01 for 0.54V ++ and 10 for 0.66V. [13] pllSeqStart (reset value 0) Enables VCO tuning ++ sequencer: 1= sequencer disabled; 0= sequencer enabled (inverted ++ internally). [14] reserved (reset value 0) Reset for VCO sequencer is ++ connected to RESET input directly. [15] capRetry_en (reset value 0) ++ enable retry on cap search failure (inverted). [16] freqMonitor_e (reset ++ value 0) bit to continuously monitor vco freq (inverted). [17] ++ freqDetRestart_en (reset value 0) bit to enable restart when not freq ++ locked (inverted). [18] freqDetRetry_en (reset value 0) bit to enable ++ retry on freq det failure(inverted). [19] pllForceFdone_en (reset value ++ 0) bit to enable pllForceFdone & pllForceFpass into pllSeq. [20] ++ pllForceFdone (reset value 0) bit to force freqDone. [21] pllForceFpass ++ (reset value 0) bit to force freqPass. [22] pllForceDone_en (reset value ++ 0) bit to enable pllForceCapDone. [23] pllForceCapDone (reset value 0) ++ bit to force capDone. [24] pllForceCapPass_en (reset value 0) bit to ++ enable pllForceCapPass. [25] pllForceCapPass (reset value 0) bit to force ++ capPass. [26] capRestart (reset value 0) bit to force cap sequencer to ++ restart. [27] capSelectM_en (reset value 0) bit to enable cap select ++ register bits. */ ++#define MISC_REG_LCPLL_CTRL_1 0xa2a4 ++#define MISC_REG_LCPLL_CTRL_REG_2 0xa2a8 ++/* [RW 4] Interrupt mask register #0 read/write */ ++#define MISC_REG_MISC_INT_MASK 0xa388 ++/* [RW 1] Parity mask register #0 read/write */ ++#define MISC_REG_MISC_PRTY_MASK 0xa398 ++/* [R 1] Parity register #0 read */ ++#define MISC_REG_MISC_PRTY_STS 0xa38c ++#define MISC_REG_NIG_WOL_P0 0xa270 ++#define MISC_REG_NIG_WOL_P1 0xa274 ++/* [R 1] If set indicate that the pcie_rst_b was asserted without perst ++ assertion */ ++#define MISC_REG_PCIE_HOT_RESET 0xa618 ++/* [RW 32] 32 LSB of storm PLL first register; reset val = 0x 071d2911. ++ inside order of the bits is: [0] P1 divider[0] (reset value 1); [1] P1 ++ divider[1] (reset value 0); [2] P1 divider[2] (reset value 0); [3] P1 ++ divider[3] (reset value 0); [4] P2 divider[0] (reset value 1); [5] P2 ++ divider[1] (reset value 0); [6] P2 divider[2] (reset value 0); [7] P2 ++ divider[3] (reset value 0); [8] ph_det_dis (reset value 1); [9] ++ freq_det_dis (reset value 0); [10] Icpx[0] (reset value 0); [11] Icpx[1] ++ (reset value 1); [12] Icpx[2] (reset value 0); [13] Icpx[3] (reset value ++ 1); [14] Icpx[4] (reset value 0); [15] Icpx[5] (reset value 0); [16] ++ Rx[0] (reset value 1); [17] Rx[1] (reset value 0); [18] vc_en (reset ++ value 1); [19] vco_rng[0] (reset value 1); [20] vco_rng[1] (reset value ++ 1); [21] Kvco_xf[0] (reset value 0); [22] Kvco_xf[1] (reset value 0); ++ [23] Kvco_xf[2] (reset value 0); [24] Kvco_xs[0] (reset value 1); [25] ++ Kvco_xs[1] (reset value 1); [26] Kvco_xs[2] (reset value 1); [27] ++ testd_en (reset value 0); [28] testd_sel[0] (reset value 0); [29] ++ testd_sel[1] (reset value 0); [30] testd_sel[2] (reset value 0); [31] ++ testa_en (reset value 0); */ ++#define MISC_REG_PLL_STORM_CTRL_1 0xa294 ++#define MISC_REG_PLL_STORM_CTRL_2 0xa298 ++#define MISC_REG_PLL_STORM_CTRL_3 0xa29c ++#define MISC_REG_PLL_STORM_CTRL_4 0xa2a0 ++/* [RW 32] reset reg#2; rite/read one = the specific block is out of reset; ++ write/read zero = the specific block is in reset; addr 0-wr- the write ++ value will be written to the register; addr 1-set - one will be written ++ to all the bits that have the value of one in the data written (bits that ++ have the value of zero will not be change) ; addr 2-clear - zero will be ++ written to all the bits that have the value of one in the data written ++ (bits that have the value of zero will not be change); addr 3-ignore; ++ read ignore from all addr except addr 00; inside order of the bits is: ++ [0] rst_bmac0; [1] rst_bmac1; [2] rst_emac0; [3] rst_emac1; [4] rst_grc; ++ [5] rst_mcp_n_reset_reg_hard_core; [6] rst_ mcp_n_hard_core_rst_b; [7] ++ rst_ mcp_n_reset_cmn_cpu; [8] rst_ mcp_n_reset_cmn_core; [9] rst_rbcn; ++ [10] rst_dbg; [11] rst_misc_core; [12] rst_dbue (UART); [13] ++ Pci_resetmdio_n; [14] rst_emac0_hard_core; [15] rst_emac1_hard_core; 16] ++ rst_pxp_rq_rd_wr; 31:17] reserved */ ++#define MISC_REG_RESET_REG_2 0xa590 ++/* [RW 20] 20 bit GRC address where the scratch-pad of the MCP that is ++ shared with the driver resides */ ++#define MISC_REG_SHARED_MEM_ADDR 0xa2b4 ++/* [RW 32] SPIO. [31-24] FLOAT When any of these bits is written as a '1'; ++ the corresponding SPIO bit will turn off it's drivers and become an ++ input. This is the reset state of all SPIO pins. The read value of these ++ bits will be a '1' if that last command (#SET; #CL; or #FLOAT) for this ++ bit was a #FLOAT. (reset value 0xff). [23-16] CLR When any of these bits ++ is written as a '1'; the corresponding SPIO bit will drive low. The read ++ value of these bits will be a '1' if that last command (#SET; #CLR; or ++#FLOAT) for this bit was a #CLR. (reset value 0). [15-8] SET When any of ++ these bits is written as a '1'; the corresponding SPIO bit will drive ++ high (if it has that capability). The read value of these bits will be a ++ '1' if that last command (#SET; #CLR; or #FLOAT) for this bit was a #SET. ++ (reset value 0). [7-0] VALUE RO; These bits indicate the read value of ++ each of the eight SPIO pins. This is the result value of the pin; not the ++ drive value. Writing these bits will have not effect. Each 8 bits field ++ is divided as follows: [0] VAUX Enable; when pulsed low; enables supply ++ from VAUX. (This is an output pin only; the FLOAT field is not applicable ++ for this pin); [1] VAUX Disable; when pulsed low; disables supply form ++ VAUX. (This is an output pin only; FLOAT field is not applicable for this ++ pin); [2] SEL_VAUX_B - Control to power switching logic. Drive low to ++ select VAUX supply. (This is an output pin only; it is not controlled by ++ the SET and CLR fields; it is controlled by the Main Power SM; the FLOAT ++ field is not applicable for this pin; only the VALUE fields is relevant - ++ it reflects the output value); [3] port swap [4] spio_4; [5] spio_5; [6] ++ Bit 0 of UMP device ID select; read by UMP firmware; [7] Bit 1 of UMP ++ device ID select; read by UMP firmware. */ ++#define MISC_REG_SPIO 0xa4fc ++/* [RW 8] These bits enable the SPIO_INTs to signals event to the IGU/MC. ++ according to the following map: [3:0] reserved; [4] spio_4 [5] spio_5; ++ [7:0] reserved */ ++#define MISC_REG_SPIO_EVENT_EN 0xa2b8 ++/* [RW 32] SPIO INT. [31-24] OLD_CLR Writing a '1' to these bit clears the ++ corresponding bit in the #OLD_VALUE register. This will acknowledge an ++ interrupt on the falling edge of corresponding SPIO input (reset value ++ 0). [23-16] OLD_SET Writing a '1' to these bit sets the corresponding bit ++ in the #OLD_VALUE register. This will acknowledge an interrupt on the ++ rising edge of corresponding SPIO input (reset value 0). [15-8] OLD_VALUE ++ RO; These bits indicate the old value of the SPIO input value. When the ++ ~INT_STATE bit is set; this bit indicates the OLD value of the pin such ++ that if ~INT_STATE is set and this bit is '0'; then the interrupt is due ++ to a low to high edge. If ~INT_STATE is set and this bit is '1'; then the ++ interrupt is due to a high to low edge (reset value 0). [7-0] INT_STATE ++ RO; These bits indicate the current SPIO interrupt state for each SPIO ++ pin. This bit is cleared when the appropriate #OLD_SET or #OLD_CLR ++ command bit is written. This bit is set when the SPIO input does not ++ match the current value in #OLD_VALUE (reset value 0). */ ++#define MISC_REG_SPIO_INT 0xa500 ++/* [RW 32] reload value for counter 4 if reload; the value will be reload if ++ the counter reached zero and the reload bit ++ (~misc_registers_sw_timer_cfg_4.sw_timer_cfg_4[1] ) is set */ ++#define MISC_REG_SW_TIMER_RELOAD_VAL_4 0xa2fc ++/* [RW 32] the value of the counter for sw timers1-8. there are 8 addresses ++ in this register. addres 0 - timer 1; address - timer 2�address 7 - ++ timer 8 */ ++#define MISC_REG_SW_TIMER_VAL 0xa5c0 ++/* [RW 1] Set by the MCP to remember if one or more of the drivers is/are ++ loaded; 0-prepare; -unprepare */ ++#define MISC_REG_UNPREPARED 0xa424 ++#define NIG_MASK_INTERRUPT_PORT0_REG_MASK_EMAC0_MISC_MI_INT (0x1<<0) ++#define NIG_MASK_INTERRUPT_PORT0_REG_MASK_SERDES0_LINK_STATUS (0x1<<9) ++#define NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK10G (0x1<<15) ++#define NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK_STATUS (0xf<<18) ++/* [RW 1] Input enable for RX_BMAC0 IF */ ++#define NIG_REG_BMAC0_IN_EN 0x100ac ++/* [RW 1] output enable for TX_BMAC0 IF */ ++#define NIG_REG_BMAC0_OUT_EN 0x100e0 ++/* [RW 1] output enable for TX BMAC pause port 0 IF */ ++#define NIG_REG_BMAC0_PAUSE_OUT_EN 0x10110 ++/* [RW 1] output enable for RX_BMAC0_REGS IF */ ++#define NIG_REG_BMAC0_REGS_OUT_EN 0x100e8 ++/* [RW 1] output enable for RX BRB1 port0 IF */ ++#define NIG_REG_BRB0_OUT_EN 0x100f8 ++/* [RW 1] Input enable for TX BRB1 pause port 0 IF */ ++#define NIG_REG_BRB0_PAUSE_IN_EN 0x100c4 ++/* [RW 1] output enable for RX BRB1 port1 IF */ ++#define NIG_REG_BRB1_OUT_EN 0x100fc ++/* [RW 1] Input enable for TX BRB1 pause port 1 IF */ ++#define NIG_REG_BRB1_PAUSE_IN_EN 0x100c8 ++/* [RW 1] output enable for RX BRB1 LP IF */ ++#define NIG_REG_BRB_LB_OUT_EN 0x10100 ++/* [WB_W 82] Debug packet to LP from RBC; Data spelling:[63:0] data; 64] ++ error; [67:65]eop_bvalid; [68]eop; [69]sop; [70]port_id; 71]flush; ++ 72:73]-vnic_num; 81:74]-sideband_info */ ++#define NIG_REG_DEBUG_PACKET_LB 0x10800 ++/* [RW 1] Input enable for TX Debug packet */ ++#define NIG_REG_EGRESS_DEBUG_IN_EN 0x100dc ++/* [RW 1] If 1 - egress drain mode for port0 is active. In this mode all ++ packets from PBFare not forwarded to the MAC and just deleted from FIFO. ++ First packet may be deleted from the middle. And last packet will be ++ always deleted till the end. */ ++#define NIG_REG_EGRESS_DRAIN0_MODE 0x10060 ++/* [RW 1] Output enable to EMAC0 */ ++#define NIG_REG_EGRESS_EMAC0_OUT_EN 0x10120 ++/* [RW 1] MAC configuration for packets of port0. If 1 - all packet outputs ++ to emac for port0; other way to bmac for port0 */ ++#define NIG_REG_EGRESS_EMAC0_PORT 0x10058 ++/* [RW 1] Input enable for TX PBF user packet port0 IF */ ++#define NIG_REG_EGRESS_PBF0_IN_EN 0x100cc ++/* [RW 1] Input enable for TX PBF user packet port1 IF */ ++#define NIG_REG_EGRESS_PBF1_IN_EN 0x100d0 ++/* [RW 1] Input enable for TX UMP management packet port0 IF */ ++#define NIG_REG_EGRESS_UMP0_IN_EN 0x100d4 ++/* [RW 1] Input enable for RX_EMAC0 IF */ ++#define NIG_REG_EMAC0_IN_EN 0x100a4 ++/* [RW 1] output enable for TX EMAC pause port 0 IF */ ++#define NIG_REG_EMAC0_PAUSE_OUT_EN 0x10118 ++/* [R 1] status from emac0. This bit is set when MDINT from either the ++ EXT_MDINT pin or from the Copper PHY is driven low. This condition must ++ be cleared in the attached PHY device that is driving the MINT pin. */ ++#define NIG_REG_EMAC0_STATUS_MISC_MI_INT 0x10494 ++/* [WB 48] This address space contains BMAC0 registers. The BMAC registers ++ are described in appendix A. In order to access the BMAC0 registers; the ++ base address; NIG_REGISTERS_INGRESS_BMAC0_MEM; Offset: 0x10c00; should be ++ added to each BMAC register offset */ ++#define NIG_REG_INGRESS_BMAC0_MEM 0x10c00 ++/* [WB 48] This address space contains BMAC1 registers. The BMAC registers ++ are described in appendix A. In order to access the BMAC0 registers; the ++ base address; NIG_REGISTERS_INGRESS_BMAC1_MEM; Offset: 0x11000; should be ++ added to each BMAC register offset */ ++#define NIG_REG_INGRESS_BMAC1_MEM 0x11000 ++/* [R 1] FIFO empty in EOP descriptor FIFO of LP in NIG_RX_EOP */ ++#define NIG_REG_INGRESS_EOP_LB_EMPTY 0x104e0 ++/* [RW 17] Debug only. RX_EOP_DSCR_lb_FIFO in NIG_RX_EOP. Data ++ packet_length[13:0]; mac_error[14]; trunc_error[15]; parity[16] */ ++#define NIG_REG_INGRESS_EOP_LB_FIFO 0x104e4 ++/* [RW 27] 0 - must be active for Everest A0; 1- for Everest B0 when latch ++ logic for interrupts must be used. Enable per bit of interrupt of ++ ~latch_status.latch_status */ ++#define NIG_REG_LATCH_BC_0 0x16210 ++/* [RW 27] Latch for each interrupt from Unicore.b[0] ++ status_emac0_misc_mi_int; b[1] status_emac0_misc_mi_complete; ++ b[2]status_emac0_misc_cfg_change; b[3]status_emac0_misc_link_status; ++ b[4]status_emac0_misc_link_change; b[5]status_emac0_misc_attn; ++ b[6]status_serdes0_mac_crs; b[7]status_serdes0_autoneg_complete; ++ b[8]status_serdes0_fiber_rxact; b[9]status_serdes0_link_status; ++ b[10]status_serdes0_mr_page_rx; b[11]status_serdes0_cl73_an_complete; ++ b[12]status_serdes0_cl73_mr_page_rx; b[13]status_serdes0_rx_sigdet; ++ b[14]status_xgxs0_remotemdioreq; b[15]status_xgxs0_link10g; ++ b[16]status_xgxs0_autoneg_complete; b[17]status_xgxs0_fiber_rxact; ++ b[21:18]status_xgxs0_link_status; b[22]status_xgxs0_mr_page_rx; ++ b[23]status_xgxs0_cl73_an_complete; b[24]status_xgxs0_cl73_mr_page_rx; ++ b[25]status_xgxs0_rx_sigdet; b[26]status_xgxs0_mac_crs */ ++#define NIG_REG_LATCH_STATUS_0 0x18000 ++/* [RW 1] led 10g for port 0 */ ++#define NIG_REG_LED_10G_P0 0x10320 ++/* [RW 1] led 10g for port 1 */ ++#define NIG_REG_LED_10G_P1 0x10324 ++/* [RW 1] Port0: This bit is set to enable the use of the ++ ~nig_registers_led_control_blink_rate_p0.led_control_blink_rate_p0 field ++ defined below. If this bit is cleared; then the blink rate will be about ++ 8Hz. */ ++#define NIG_REG_LED_CONTROL_BLINK_RATE_ENA_P0 0x10318 ++/* [RW 12] Port0: Specifies the period of each blink cycle (on + off) for ++ Traffic LED in milliseconds. Must be a non-zero value. This 12-bit field ++ is reset to 0x080; giving a default blink period of approximately 8Hz. */ ++#define NIG_REG_LED_CONTROL_BLINK_RATE_P0 0x10310 ++/* [RW 1] Port0: If set along with the ++ ~nig_registers_led_control_override_traffic_p0.led_control_override_traffic_p0 ++ bit and ~nig_registers_led_control_traffic_p0.led_control_traffic_p0 LED ++ bit; the Traffic LED will blink with the blink rate specified in ++ ~nig_registers_led_control_blink_rate_p0.led_control_blink_rate_p0 and ++ ~nig_registers_led_control_blink_rate_ena_p0.led_control_blink_rate_ena_p0 ++ fields. */ ++#define NIG_REG_LED_CONTROL_BLINK_TRAFFIC_P0 0x10308 ++/* [RW 1] Port0: If set overrides hardware control of the Traffic LED. The ++ Traffic LED will then be controlled via bit ~nig_registers_ ++ led_control_traffic_p0.led_control_traffic_p0 and bit ++ ~nig_registers_led_control_blink_traffic_p0.led_control_blink_traffic_p0 */ ++#define NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 0x102f8 ++/* [RW 1] Port0: If set along with the led_control_override_trafic_p0 bit; ++ turns on the Traffic LED. If the led_control_blink_traffic_p0 bit is also ++ set; the LED will blink with blink rate specified in ++ ~nig_registers_led_control_blink_rate_p0.led_control_blink_rate_p0 and ++ ~nig_regsters_led_control_blink_rate_ena_p0.led_control_blink_rate_ena_p0 ++ fields. */ ++#define NIG_REG_LED_CONTROL_TRAFFIC_P0 0x10300 ++/* [RW 4] led mode for port0: 0 MAC; 1-3 PHY1; 4 MAC2; 5-7 PHY4; 8-MAC3; ++ 9-11PHY7; 12 MAC4; 13-15 PHY10; */ ++#define NIG_REG_LED_MODE_P0 0x102f0 ++/* [RW 3] for port0 enable for llfc ppp and pause. b0 - brb1 enable; b1- ++ tsdm enable; b2- usdm enable */ ++#define NIG_REG_LLFC_EGRESS_SRC_ENABLE_0 0x16070 ++#define NIG_REG_LLFC_EGRESS_SRC_ENABLE_1 0x16074 ++/* [RW 1] SAFC enable for port0. This register may get 1 only when ++ ~ppp_enable.ppp_enable = 0 and pause_enable.pause_enable =0 for the same ++ port */ ++#define NIG_REG_LLFC_ENABLE_0 0x16208 ++/* [RW 16] classes are high-priority for port0 */ ++#define NIG_REG_LLFC_HIGH_PRIORITY_CLASSES_0 0x16058 ++/* [RW 16] classes are low-priority for port0 */ ++#define NIG_REG_LLFC_LOW_PRIORITY_CLASSES_0 0x16060 ++/* [RW 1] Output enable of message to LLFC BMAC IF for port0 */ ++#define NIG_REG_LLFC_OUT_EN_0 0x160c8 ++#define NIG_REG_LLH0_ACPI_PAT_0_CRC 0x1015c ++#define NIG_REG_LLH0_ACPI_PAT_6_LEN 0x10154 ++#define NIG_REG_LLH0_BRB1_DRV_MASK 0x10244 ++#define NIG_REG_LLH0_BRB1_DRV_MASK_MF 0x16048 ++/* [RW 1] send to BRB1 if no match on any of RMP rules. */ ++#define NIG_REG_LLH0_BRB1_NOT_MCP 0x1025c ++/* [RW 2] Determine the classification participants. 0: no classification.1: ++ classification upon VLAN id. 2: classification upon MAC address. 3: ++ classification upon both VLAN id & MAC addr. */ ++#define NIG_REG_LLH0_CLS_TYPE 0x16080 ++/* [RW 32] cm header for llh0 */ ++#define NIG_REG_LLH0_CM_HEADER 0x1007c ++#define NIG_REG_LLH0_DEST_IP_0_1 0x101dc ++#define NIG_REG_LLH0_DEST_MAC_0_0 0x101c0 ++/* [RW 16] destination TCP address 1. The LLH will look for this address in ++ all incoming packets. */ ++#define NIG_REG_LLH0_DEST_TCP_0 0x10220 ++/* [RW 16] destination UDP address 1 The LLH will look for this address in ++ all incoming packets. */ ++#define NIG_REG_LLH0_DEST_UDP_0 0x10214 ++#define NIG_REG_LLH0_ERROR_MASK 0x1008c ++/* [RW 8] event id for llh0 */ ++#define NIG_REG_LLH0_EVENT_ID 0x10084 ++#define NIG_REG_LLH0_FUNC_EN 0x160fc ++#define NIG_REG_LLH0_FUNC_VLAN_ID 0x16100 ++/* [RW 1] Determine the IP version to look for in ++ ~nig_registers_llh0_dest_ip_0.llh0_dest_ip_0. 0 - IPv6; 1-IPv4 */ ++#define NIG_REG_LLH0_IPV4_IPV6_0 0x10208 ++/* [RW 1] t bit for llh0 */ ++#define NIG_REG_LLH0_T_BIT 0x10074 ++/* [RW 12] VLAN ID 1. In case of VLAN packet the LLH will look for this ID. */ ++#define NIG_REG_LLH0_VLAN_ID_0 0x1022c ++/* [RW 8] init credit counter for port0 in LLH */ ++#define NIG_REG_LLH0_XCM_INIT_CREDIT 0x10554 ++#define NIG_REG_LLH0_XCM_MASK 0x10130 ++#define NIG_REG_LLH1_BRB1_DRV_MASK 0x10248 ++/* [RW 1] send to BRB1 if no match on any of RMP rules. */ ++#define NIG_REG_LLH1_BRB1_NOT_MCP 0x102dc ++/* [RW 2] Determine the classification participants. 0: no classification.1: ++ classification upon VLAN id. 2: classification upon MAC address. 3: ++ classification upon both VLAN id & MAC addr. */ ++#define NIG_REG_LLH1_CLS_TYPE 0x16084 ++/* [RW 32] cm header for llh1 */ ++#define NIG_REG_LLH1_CM_HEADER 0x10080 ++#define NIG_REG_LLH1_ERROR_MASK 0x10090 ++/* [RW 8] event id for llh1 */ ++#define NIG_REG_LLH1_EVENT_ID 0x10088 ++/* [RW 8] init credit counter for port1 in LLH */ ++#define NIG_REG_LLH1_XCM_INIT_CREDIT 0x10564 ++#define NIG_REG_LLH1_XCM_MASK 0x10134 ++/* [RW 1] When this bit is set; the LLH will expect all packets to be with ++ e1hov */ ++#define NIG_REG_LLH_E1HOV_MODE 0x160d8 ++/* [RW 1] When this bit is set; the LLH will classify the packet before ++ sending it to the BRB or calculating WoL on it. */ ++#define NIG_REG_LLH_MF_MODE 0x16024 ++#define NIG_REG_MASK_INTERRUPT_PORT0 0x10330 ++#define NIG_REG_MASK_INTERRUPT_PORT1 0x10334 ++/* [RW 1] Output signal from NIG to EMAC0. When set enables the EMAC0 block. */ ++#define NIG_REG_NIG_EMAC0_EN 0x1003c ++/* [RW 1] Output signal from NIG to EMAC1. When set enables the EMAC1 block. */ ++#define NIG_REG_NIG_EMAC1_EN 0x10040 ++/* [RW 1] Output signal from NIG to TX_EMAC0. When set indicates to the ++ EMAC0 to strip the CRC from the ingress packets. */ ++#define NIG_REG_NIG_INGRESS_EMAC0_NO_CRC 0x10044 ++/* [R 32] Interrupt register #0 read */ ++#define NIG_REG_NIG_INT_STS_0 0x103b0 ++#define NIG_REG_NIG_INT_STS_1 0x103c0 ++/* [R 32] Parity register #0 read */ ++#define NIG_REG_NIG_PRTY_STS 0x103d0 ++/* [RW 1] Pause enable for port0. This register may get 1 only when ++ ~safc_enable.safc_enable = 0 and ppp_enable.ppp_enable =0 for the same ++ port */ ++#define NIG_REG_PAUSE_ENABLE_0 0x160c0 ++/* [RW 1] Input enable for RX PBF LP IF */ ++#define NIG_REG_PBF_LB_IN_EN 0x100b4 ++/* [RW 1] Value of this register will be transmitted to port swap when ++ ~nig_registers_strap_override.strap_override =1 */ ++#define NIG_REG_PORT_SWAP 0x10394 ++/* [RW 1] output enable for RX parser descriptor IF */ ++#define NIG_REG_PRS_EOP_OUT_EN 0x10104 ++/* [RW 1] Input enable for RX parser request IF */ ++#define NIG_REG_PRS_REQ_IN_EN 0x100b8 ++/* [RW 5] control to serdes - CL45 DEVAD */ ++#define NIG_REG_SERDES0_CTRL_MD_DEVAD 0x10370 ++/* [RW 1] control to serdes; 0 - clause 45; 1 - clause 22 */ ++#define NIG_REG_SERDES0_CTRL_MD_ST 0x1036c ++/* [RW 5] control to serdes - CL22 PHY_ADD and CL45 PRTAD */ ++#define NIG_REG_SERDES0_CTRL_PHY_ADDR 0x10374 ++/* [R 1] status from serdes0 that inputs to interrupt logic of link status */ ++#define NIG_REG_SERDES0_STATUS_LINK_STATUS 0x10578 ++/* [R 32] Rx statistics : In user packets discarded due to BRB backpressure ++ for port0 */ ++#define NIG_REG_STAT0_BRB_DISCARD 0x105f0 ++/* [R 32] Rx statistics : In user packets truncated due to BRB backpressure ++ for port0 */ ++#define NIG_REG_STAT0_BRB_TRUNCATE 0x105f8 ++/* [WB_R 36] Tx statistics : Number of packets from emac0 or bmac0 that ++ between 1024 and 1522 bytes for port0 */ ++#define NIG_REG_STAT0_EGRESS_MAC_PKT0 0x10750 ++/* [WB_R 36] Tx statistics : Number of packets from emac0 or bmac0 that ++ between 1523 bytes and above for port0 */ ++#define NIG_REG_STAT0_EGRESS_MAC_PKT1 0x10760 ++/* [R 32] Rx statistics : In user packets discarded due to BRB backpressure ++ for port1 */ ++#define NIG_REG_STAT1_BRB_DISCARD 0x10628 ++/* [WB_R 36] Tx statistics : Number of packets from emac1 or bmac1 that ++ between 1024 and 1522 bytes for port1 */ ++#define NIG_REG_STAT1_EGRESS_MAC_PKT0 0x107a0 ++/* [WB_R 36] Tx statistics : Number of packets from emac1 or bmac1 that ++ between 1523 bytes and above for port1 */ ++#define NIG_REG_STAT1_EGRESS_MAC_PKT1 0x107b0 ++/* [WB_R 64] Rx statistics : User octets received for LP */ ++#define NIG_REG_STAT2_BRB_OCTET 0x107e0 ++#define NIG_REG_STATUS_INTERRUPT_PORT0 0x10328 ++#define NIG_REG_STATUS_INTERRUPT_PORT1 0x1032c ++/* [RW 1] port swap mux selection. If this register equal to 0 then port ++ swap is equal to SPIO pin that inputs from ifmux_serdes_swap. If 1 then ++ ort swap is equal to ~nig_registers_port_swap.port_swap */ ++#define NIG_REG_STRAP_OVERRIDE 0x10398 ++/* [RW 1] output enable for RX_XCM0 IF */ ++#define NIG_REG_XCM0_OUT_EN 0x100f0 ++/* [RW 1] output enable for RX_XCM1 IF */ ++#define NIG_REG_XCM1_OUT_EN 0x100f4 ++/* [RW 1] control to xgxs - remote PHY in-band MDIO */ ++#define NIG_REG_XGXS0_CTRL_EXTREMOTEMDIOST 0x10348 ++/* [RW 5] control to xgxs - CL45 DEVAD */ ++#define NIG_REG_XGXS0_CTRL_MD_DEVAD 0x1033c ++/* [RW 1] control to xgxs; 0 - clause 45; 1 - clause 22 */ ++#define NIG_REG_XGXS0_CTRL_MD_ST 0x10338 ++/* [RW 5] control to xgxs - CL22 PHY_ADD and CL45 PRTAD */ ++#define NIG_REG_XGXS0_CTRL_PHY_ADDR 0x10340 ++/* [R 1] status from xgxs0 that inputs to interrupt logic of link10g. */ ++#define NIG_REG_XGXS0_STATUS_LINK10G 0x10680 ++/* [R 4] status from xgxs0 that inputs to interrupt logic of link status */ ++#define NIG_REG_XGXS0_STATUS_LINK_STATUS 0x10684 ++/* [RW 2] selection for XGXS lane of port 0 in NIG_MUX block */ ++#define NIG_REG_XGXS_LANE_SEL_P0 0x102e8 ++/* [RW 1] selection for port0 for NIG_MUX block : 0 = SerDes; 1 = XGXS */ ++#define NIG_REG_XGXS_SERDES0_MODE_SEL 0x102e0 ++#define NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_EMAC0_MISC_MI_INT (0x1<<0) ++#define NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_SERDES0_LINK_STATUS (0x1<<9) ++#define NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK10G (0x1<<15) ++#define NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS (0xf<<18) ++#define NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS_SIZE 18 ++/* [RW 1] Disable processing further tasks from port 0 (after ending the ++ current task in process). */ ++#define PBF_REG_DISABLE_NEW_TASK_PROC_P0 0x14005c ++/* [RW 1] Disable processing further tasks from port 1 (after ending the ++ current task in process). */ ++#define PBF_REG_DISABLE_NEW_TASK_PROC_P1 0x140060 ++/* [RW 1] Disable processing further tasks from port 4 (after ending the ++ current task in process). */ ++#define PBF_REG_DISABLE_NEW_TASK_PROC_P4 0x14006c ++#define PBF_REG_IF_ENABLE_REG 0x140044 ++/* [RW 1] Init bit. When set the initial credits are copied to the credit ++ registers (except the port credits). Should be set and then reset after ++ the configuration of the block has ended. */ ++#define PBF_REG_INIT 0x140000 ++/* [RW 1] Init bit for port 0. When set the initial credit of port 0 is ++ copied to the credit register. Should be set and then reset after the ++ configuration of the port has ended. */ ++#define PBF_REG_INIT_P0 0x140004 ++/* [RW 1] Init bit for port 1. When set the initial credit of port 1 is ++ copied to the credit register. Should be set and then reset after the ++ configuration of the port has ended. */ ++#define PBF_REG_INIT_P1 0x140008 ++/* [RW 1] Init bit for port 4. When set the initial credit of port 4 is ++ copied to the credit register. Should be set and then reset after the ++ configuration of the port has ended. */ ++#define PBF_REG_INIT_P4 0x14000c ++/* [RW 1] Enable for mac interface 0. */ ++#define PBF_REG_MAC_IF0_ENABLE 0x140030 ++/* [RW 1] Enable for mac interface 1. */ ++#define PBF_REG_MAC_IF1_ENABLE 0x140034 ++/* [RW 1] Enable for the loopback interface. */ ++#define PBF_REG_MAC_LB_ENABLE 0x140040 ++/* [RW 10] Port 0 threshold used by arbiter in 16 byte lines used when pause ++ not suppoterd. */ ++#define PBF_REG_P0_ARB_THRSH 0x1400e4 ++/* [R 11] Current credit for port 0 in the tx port buffers in 16 byte lines. */ ++#define PBF_REG_P0_CREDIT 0x140200 ++/* [RW 11] Initial credit for port 0 in the tx port buffers in 16 byte ++ lines. */ ++#define PBF_REG_P0_INIT_CRD 0x1400d0 ++/* [RW 1] Indication that pause is enabled for port 0. */ ++#define PBF_REG_P0_PAUSE_ENABLE 0x140014 ++/* [R 8] Number of tasks in port 0 task queue. */ ++#define PBF_REG_P0_TASK_CNT 0x140204 ++/* [R 11] Current credit for port 1 in the tx port buffers in 16 byte lines. */ ++#define PBF_REG_P1_CREDIT 0x140208 ++/* [RW 11] Initial credit for port 1 in the tx port buffers in 16 byte ++ lines. */ ++#define PBF_REG_P1_INIT_CRD 0x1400d4 ++/* [R 8] Number of tasks in port 1 task queue. */ ++#define PBF_REG_P1_TASK_CNT 0x14020c ++/* [R 11] Current credit for port 4 in the tx port buffers in 16 byte lines. */ ++#define PBF_REG_P4_CREDIT 0x140210 ++/* [RW 11] Initial credit for port 4 in the tx port buffers in 16 byte ++ lines. */ ++#define PBF_REG_P4_INIT_CRD 0x1400e0 ++/* [R 8] Number of tasks in port 4 task queue. */ ++#define PBF_REG_P4_TASK_CNT 0x140214 ++/* [RW 5] Interrupt mask register #0 read/write */ ++#define PBF_REG_PBF_INT_MASK 0x1401d4 ++/* [R 5] Interrupt register #0 read */ ++#define PBF_REG_PBF_INT_STS 0x1401c8 ++#define PB_REG_CONTROL 0 ++/* [RW 2] Interrupt mask register #0 read/write */ ++#define PB_REG_PB_INT_MASK 0x28 ++/* [R 2] Interrupt register #0 read */ ++#define PB_REG_PB_INT_STS 0x1c ++/* [RW 4] Parity mask register #0 read/write */ ++#define PB_REG_PB_PRTY_MASK 0x38 ++/* [R 4] Parity register #0 read */ ++#define PB_REG_PB_PRTY_STS 0x2c ++#define PRS_REG_A_PRSU_20 0x40134 ++/* [R 8] debug only: CFC load request current credit. Transaction based. */ ++#define PRS_REG_CFC_LD_CURRENT_CREDIT 0x40164 ++/* [R 8] debug only: CFC search request current credit. Transaction based. */ ++#define PRS_REG_CFC_SEARCH_CURRENT_CREDIT 0x40168 ++/* [RW 6] The initial credit for the search message to the CFC interface. ++ Credit is transaction based. */ ++#define PRS_REG_CFC_SEARCH_INITIAL_CREDIT 0x4011c ++/* [RW 24] CID for port 0 if no match */ ++#define PRS_REG_CID_PORT_0 0x400fc ++/* [RW 32] The CM header for flush message where 'load existed' bit in CFC ++ load response is reset and packet type is 0. Used in packet start message ++ to TCM. */ ++#define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_0 0x400dc ++#define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_1 0x400e0 ++#define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_2 0x400e4 ++#define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_3 0x400e8 ++#define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_4 0x400ec ++#define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_5 0x400f0 ++/* [RW 32] The CM header for flush message where 'load existed' bit in CFC ++ load response is set and packet type is 0. Used in packet start message ++ to TCM. */ ++#define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_0 0x400bc ++#define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_1 0x400c0 ++#define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_2 0x400c4 ++#define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_3 0x400c8 ++#define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_4 0x400cc ++#define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_5 0x400d0 ++/* [RW 32] The CM header for a match and packet type 1 for loopback port. ++ Used in packet start message to TCM. */ ++#define PRS_REG_CM_HDR_LOOPBACK_TYPE_1 0x4009c ++#define PRS_REG_CM_HDR_LOOPBACK_TYPE_2 0x400a0 ++#define PRS_REG_CM_HDR_LOOPBACK_TYPE_3 0x400a4 ++#define PRS_REG_CM_HDR_LOOPBACK_TYPE_4 0x400a8 ++/* [RW 32] The CM header for a match and packet type 0. Used in packet start ++ message to TCM. */ ++#define PRS_REG_CM_HDR_TYPE_0 0x40078 ++#define PRS_REG_CM_HDR_TYPE_1 0x4007c ++#define PRS_REG_CM_HDR_TYPE_2 0x40080 ++#define PRS_REG_CM_HDR_TYPE_3 0x40084 ++#define PRS_REG_CM_HDR_TYPE_4 0x40088 ++/* [RW 32] The CM header in case there was not a match on the connection */ ++#define PRS_REG_CM_NO_MATCH_HDR 0x400b8 ++/* [RW 1] Indicates if in e1hov mode. 0=non-e1hov mode; 1=e1hov mode. */ ++#define PRS_REG_E1HOV_MODE 0x401c8 ++/* [RW 8] The 8-bit event ID for a match and packet type 1. Used in packet ++ start message to TCM. */ ++#define PRS_REG_EVENT_ID_1 0x40054 ++#define PRS_REG_EVENT_ID_2 0x40058 ++#define PRS_REG_EVENT_ID_3 0x4005c ++/* [RW 16] The Ethernet type value for FCoE */ ++#define PRS_REG_FCOE_TYPE 0x401d0 ++/* [RW 8] Context region for flush packet with packet type 0. Used in CFC ++ load request message. */ ++#define PRS_REG_FLUSH_REGIONS_TYPE_0 0x40004 ++#define PRS_REG_FLUSH_REGIONS_TYPE_1 0x40008 ++#define PRS_REG_FLUSH_REGIONS_TYPE_2 0x4000c ++#define PRS_REG_FLUSH_REGIONS_TYPE_3 0x40010 ++#define PRS_REG_FLUSH_REGIONS_TYPE_4 0x40014 ++#define PRS_REG_FLUSH_REGIONS_TYPE_5 0x40018 ++#define PRS_REG_FLUSH_REGIONS_TYPE_6 0x4001c ++#define PRS_REG_FLUSH_REGIONS_TYPE_7 0x40020 ++/* [RW 4] The increment value to send in the CFC load request message */ ++#define PRS_REG_INC_VALUE 0x40048 ++/* [RW 1] If set indicates not to send messages to CFC on received packets */ ++#define PRS_REG_NIC_MODE 0x40138 ++/* [RW 8] The 8-bit event ID for cases where there is no match on the ++ connection. Used in packet start message to TCM. */ ++#define PRS_REG_NO_MATCH_EVENT_ID 0x40070 ++/* [ST 24] The number of input CFC flush packets */ ++#define PRS_REG_NUM_OF_CFC_FLUSH_MESSAGES 0x40128 ++/* [ST 32] The number of cycles the Parser halted its operation since it ++ could not allocate the next serial number */ ++#define PRS_REG_NUM_OF_DEAD_CYCLES 0x40130 ++/* [ST 24] The number of input packets */ ++#define PRS_REG_NUM_OF_PACKETS 0x40124 ++/* [ST 24] The number of input transparent flush packets */ ++#define PRS_REG_NUM_OF_TRANSPARENT_FLUSH_MESSAGES 0x4012c ++/* [RW 8] Context region for received Ethernet packet with a match and ++ packet type 0. Used in CFC load request message */ ++#define PRS_REG_PACKET_REGIONS_TYPE_0 0x40028 ++#define PRS_REG_PACKET_REGIONS_TYPE_1 0x4002c ++#define PRS_REG_PACKET_REGIONS_TYPE_2 0x40030 ++#define PRS_REG_PACKET_REGIONS_TYPE_3 0x40034 ++#define PRS_REG_PACKET_REGIONS_TYPE_4 0x40038 ++#define PRS_REG_PACKET_REGIONS_TYPE_5 0x4003c ++#define PRS_REG_PACKET_REGIONS_TYPE_6 0x40040 ++#define PRS_REG_PACKET_REGIONS_TYPE_7 0x40044 ++/* [R 2] debug only: Number of pending requests for CAC on port 0. */ ++#define PRS_REG_PENDING_BRB_CAC0_RQ 0x40174 ++/* [R 2] debug only: Number of pending requests for header parsing. */ ++#define PRS_REG_PENDING_BRB_PRS_RQ 0x40170 ++/* [R 1] Interrupt register #0 read */ ++#define PRS_REG_PRS_INT_STS 0x40188 ++/* [RW 8] Parity mask register #0 read/write */ ++#define PRS_REG_PRS_PRTY_MASK 0x401a4 ++/* [R 8] Parity register #0 read */ ++#define PRS_REG_PRS_PRTY_STS 0x40198 ++/* [RW 8] Context region for pure acknowledge packets. Used in CFC load ++ request message */ ++#define PRS_REG_PURE_REGIONS 0x40024 ++/* [R 32] debug only: Serial number status lsb 32 bits. '1' indicates this ++ serail number was released by SDM but cannot be used because a previous ++ serial number was not released. */ ++#define PRS_REG_SERIAL_NUM_STATUS_LSB 0x40154 ++/* [R 32] debug only: Serial number status msb 32 bits. '1' indicates this ++ serail number was released by SDM but cannot be used because a previous ++ serial number was not released. */ ++#define PRS_REG_SERIAL_NUM_STATUS_MSB 0x40158 ++/* [R 4] debug only: SRC current credit. Transaction based. */ ++#define PRS_REG_SRC_CURRENT_CREDIT 0x4016c ++/* [R 8] debug only: TCM current credit. Cycle based. */ ++#define PRS_REG_TCM_CURRENT_CREDIT 0x40160 ++/* [R 8] debug only: TSDM current credit. Transaction based. */ ++#define PRS_REG_TSDM_CURRENT_CREDIT 0x4015c ++/* [R 6] Debug only: Number of used entries in the data FIFO */ ++#define PXP2_REG_HST_DATA_FIFO_STATUS 0x12047c ++/* [R 7] Debug only: Number of used entries in the header FIFO */ ++#define PXP2_REG_HST_HEADER_FIFO_STATUS 0x120478 ++#define PXP2_REG_PGL_ADDR_88_F0 0x120534 ++#define PXP2_REG_PGL_ADDR_8C_F0 0x120538 ++#define PXP2_REG_PGL_ADDR_90_F0 0x12053c ++#define PXP2_REG_PGL_ADDR_94_F0 0x120540 ++#define PXP2_REG_PGL_CONTROL0 0x120490 ++#define PXP2_REG_PGL_CONTROL1 0x120514 ++#define PXP2_REG_PGL_DEBUG 0x120520 ++/* [RW 32] third dword data of expansion rom request. this register is ++ special. reading from it provides a vector outstanding read requests. if ++ a bit is zero it means that a read request on the corresponding tag did ++ not finish yet (not all completions have arrived for it) */ ++#define PXP2_REG_PGL_EXP_ROM2 0x120808 ++/* [RW 32] Inbound interrupt table for CSDM: bits[31:16]-mask; ++ its[15:0]-address */ ++#define PXP2_REG_PGL_INT_CSDM_0 0x1204f4 ++#define PXP2_REG_PGL_INT_CSDM_1 0x1204f8 ++#define PXP2_REG_PGL_INT_CSDM_2 0x1204fc ++#define PXP2_REG_PGL_INT_CSDM_3 0x120500 ++#define PXP2_REG_PGL_INT_CSDM_4 0x120504 ++#define PXP2_REG_PGL_INT_CSDM_5 0x120508 ++#define PXP2_REG_PGL_INT_CSDM_6 0x12050c ++#define PXP2_REG_PGL_INT_CSDM_7 0x120510 ++/* [RW 32] Inbound interrupt table for TSDM: bits[31:16]-mask; ++ its[15:0]-address */ ++#define PXP2_REG_PGL_INT_TSDM_0 0x120494 ++#define PXP2_REG_PGL_INT_TSDM_1 0x120498 ++#define PXP2_REG_PGL_INT_TSDM_2 0x12049c ++#define PXP2_REG_PGL_INT_TSDM_3 0x1204a0 ++#define PXP2_REG_PGL_INT_TSDM_4 0x1204a4 ++#define PXP2_REG_PGL_INT_TSDM_5 0x1204a8 ++#define PXP2_REG_PGL_INT_TSDM_6 0x1204ac ++#define PXP2_REG_PGL_INT_TSDM_7 0x1204b0 ++/* [RW 32] Inbound interrupt table for USDM: bits[31:16]-mask; ++ its[15:0]-address */ ++#define PXP2_REG_PGL_INT_USDM_0 0x1204b4 ++#define PXP2_REG_PGL_INT_USDM_1 0x1204b8 ++#define PXP2_REG_PGL_INT_USDM_2 0x1204bc ++#define PXP2_REG_PGL_INT_USDM_3 0x1204c0 ++#define PXP2_REG_PGL_INT_USDM_4 0x1204c4 ++#define PXP2_REG_PGL_INT_USDM_5 0x1204c8 ++#define PXP2_REG_PGL_INT_USDM_6 0x1204cc ++#define PXP2_REG_PGL_INT_USDM_7 0x1204d0 ++/* [RW 32] Inbound interrupt table for XSDM: bits[31:16]-mask; ++ its[15:0]-address */ ++#define PXP2_REG_PGL_INT_XSDM_0 0x1204d4 ++#define PXP2_REG_PGL_INT_XSDM_1 0x1204d8 ++#define PXP2_REG_PGL_INT_XSDM_2 0x1204dc ++#define PXP2_REG_PGL_INT_XSDM_3 0x1204e0 ++#define PXP2_REG_PGL_INT_XSDM_4 0x1204e4 ++#define PXP2_REG_PGL_INT_XSDM_5 0x1204e8 ++#define PXP2_REG_PGL_INT_XSDM_6 0x1204ec ++#define PXP2_REG_PGL_INT_XSDM_7 0x1204f0 ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F0 0x120674 ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F1 0x120678 ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F2 0x12067c ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F3 0x120680 ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F4 0x120684 ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F5 0x120688 ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F6 0x12068c ++/* [RW 3] this field allows one function to pretend being another function ++ when accessing any BAR mapped resource within the device. the value of ++ the field is the number of the function that will be accessed ++ effectively. after software write to this bit it must read it in order to ++ know that the new value is updated */ ++#define PXP2_REG_PGL_PRETEND_FUNC_F7 0x120690 ++/* [R 1] this bit indicates that a read request was blocked because of ++ bus_master_en was deasserted */ ++#define PXP2_REG_PGL_READ_BLOCKED 0x120568 ++#define PXP2_REG_PGL_TAGS_LIMIT 0x1205a8 ++/* [R 18] debug only */ ++#define PXP2_REG_PGL_TXW_CDTS 0x12052c ++/* [R 1] this bit indicates that a write request was blocked because of ++ bus_master_en was deasserted */ ++#define PXP2_REG_PGL_WRITE_BLOCKED 0x120564 ++#define PXP2_REG_PSWRQ_BW_ADD1 0x1201c0 ++#define PXP2_REG_PSWRQ_BW_ADD10 0x1201e4 ++#define PXP2_REG_PSWRQ_BW_ADD11 0x1201e8 ++#define PXP2_REG_PSWRQ_BW_ADD2 0x1201c4 ++#define PXP2_REG_PSWRQ_BW_ADD28 0x120228 ++#define PXP2_REG_PSWRQ_BW_ADD3 0x1201c8 ++#define PXP2_REG_PSWRQ_BW_ADD6 0x1201d4 ++#define PXP2_REG_PSWRQ_BW_ADD7 0x1201d8 ++#define PXP2_REG_PSWRQ_BW_ADD8 0x1201dc ++#define PXP2_REG_PSWRQ_BW_ADD9 0x1201e0 ++#define PXP2_REG_PSWRQ_BW_CREDIT 0x12032c ++#define PXP2_REG_PSWRQ_BW_L1 0x1202b0 ++#define PXP2_REG_PSWRQ_BW_L10 0x1202d4 ++#define PXP2_REG_PSWRQ_BW_L11 0x1202d8 ++#define PXP2_REG_PSWRQ_BW_L2 0x1202b4 ++#define PXP2_REG_PSWRQ_BW_L28 0x120318 ++#define PXP2_REG_PSWRQ_BW_L3 0x1202b8 ++#define PXP2_REG_PSWRQ_BW_L6 0x1202c4 ++#define PXP2_REG_PSWRQ_BW_L7 0x1202c8 ++#define PXP2_REG_PSWRQ_BW_L8 0x1202cc ++#define PXP2_REG_PSWRQ_BW_L9 0x1202d0 ++#define PXP2_REG_PSWRQ_BW_RD 0x120324 ++#define PXP2_REG_PSWRQ_BW_UB1 0x120238 ++#define PXP2_REG_PSWRQ_BW_UB10 0x12025c ++#define PXP2_REG_PSWRQ_BW_UB11 0x120260 ++#define PXP2_REG_PSWRQ_BW_UB2 0x12023c ++#define PXP2_REG_PSWRQ_BW_UB28 0x1202a0 ++#define PXP2_REG_PSWRQ_BW_UB3 0x120240 ++#define PXP2_REG_PSWRQ_BW_UB6 0x12024c ++#define PXP2_REG_PSWRQ_BW_UB7 0x120250 ++#define PXP2_REG_PSWRQ_BW_UB8 0x120254 ++#define PXP2_REG_PSWRQ_BW_UB9 0x120258 ++#define PXP2_REG_PSWRQ_BW_WR 0x120328 ++#define PXP2_REG_PSWRQ_CDU0_L2P 0x120000 ++#define PXP2_REG_PSWRQ_QM0_L2P 0x120038 ++#define PXP2_REG_PSWRQ_SRC0_L2P 0x120054 ++#define PXP2_REG_PSWRQ_TM0_L2P 0x12001c ++#define PXP2_REG_PSWRQ_TSDM0_L2P 0x1200e0 ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define PXP2_REG_PXP2_INT_MASK_0 0x120578 ++/* [R 32] Interrupt register #0 read */ ++#define PXP2_REG_PXP2_INT_STS_0 0x12056c ++#define PXP2_REG_PXP2_INT_STS_1 0x120608 ++/* [RC 32] Interrupt register #0 read clear */ ++#define PXP2_REG_PXP2_INT_STS_CLR_0 0x120570 ++/* [RW 32] Parity mask register #0 read/write */ ++#define PXP2_REG_PXP2_PRTY_MASK_0 0x120588 ++#define PXP2_REG_PXP2_PRTY_MASK_1 0x120598 ++/* [R 32] Parity register #0 read */ ++#define PXP2_REG_PXP2_PRTY_STS_0 0x12057c ++#define PXP2_REG_PXP2_PRTY_STS_1 0x12058c ++/* [R 1] Debug only: The 'almost full' indication from each fifo (gives ++ indication about backpressure) */ ++#define PXP2_REG_RD_ALMOST_FULL_0 0x120424 ++/* [R 8] Debug only: The blocks counter - number of unused block ids */ ++#define PXP2_REG_RD_BLK_CNT 0x120418 ++/* [RW 8] Debug only: Total number of available blocks in Tetris Buffer. ++ Must be bigger than 6. Normally should not be changed. */ ++#define PXP2_REG_RD_BLK_NUM_CFG 0x12040c ++/* [RW 2] CDU byte swapping mode configuration for master read requests */ ++#define PXP2_REG_RD_CDURD_SWAP_MODE 0x120404 ++/* [RW 1] When '1'; inputs to the PSWRD block are ignored */ ++#define PXP2_REG_RD_DISABLE_INPUTS 0x120374 ++/* [R 1] PSWRD internal memories initialization is done */ ++#define PXP2_REG_RD_INIT_DONE 0x120370 ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq10 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ10 0x1203a0 ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq11 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ11 0x1203a4 ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq17 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ17 0x1203bc ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq18 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ18 0x1203c0 ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq19 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ19 0x1203c4 ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq22 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ22 0x1203d0 ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq25 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ25 0x1203dc ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq6 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ6 0x120390 ++/* [RW 8] The maximum number of blocks in Tetris Buffer that can be ++ allocated for vq9 */ ++#define PXP2_REG_RD_MAX_BLKS_VQ9 0x12039c ++/* [RW 2] PBF byte swapping mode configuration for master read requests */ ++#define PXP2_REG_RD_PBF_SWAP_MODE 0x1203f4 ++/* [R 1] Debug only: Indication if delivery ports are idle */ ++#define PXP2_REG_RD_PORT_IS_IDLE_0 0x12041c ++#define PXP2_REG_RD_PORT_IS_IDLE_1 0x120420 ++/* [RW 2] QM byte swapping mode configuration for master read requests */ ++#define PXP2_REG_RD_QM_SWAP_MODE 0x1203f8 ++/* [R 7] Debug only: The SR counter - number of unused sub request ids */ ++#define PXP2_REG_RD_SR_CNT 0x120414 ++/* [RW 2] SRC byte swapping mode configuration for master read requests */ ++#define PXP2_REG_RD_SRC_SWAP_MODE 0x120400 ++/* [RW 7] Debug only: Total number of available PCI read sub-requests. Must ++ be bigger than 1. Normally should not be changed. */ ++#define PXP2_REG_RD_SR_NUM_CFG 0x120408 ++/* [RW 1] Signals the PSWRD block to start initializing internal memories */ ++#define PXP2_REG_RD_START_INIT 0x12036c ++/* [RW 2] TM byte swapping mode configuration for master read requests */ ++#define PXP2_REG_RD_TM_SWAP_MODE 0x1203fc ++/* [RW 10] Bandwidth addition to VQ0 write requests */ ++#define PXP2_REG_RQ_BW_RD_ADD0 0x1201bc ++/* [RW 10] Bandwidth addition to VQ12 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD12 0x1201ec ++/* [RW 10] Bandwidth addition to VQ13 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD13 0x1201f0 ++/* [RW 10] Bandwidth addition to VQ14 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD14 0x1201f4 ++/* [RW 10] Bandwidth addition to VQ15 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD15 0x1201f8 ++/* [RW 10] Bandwidth addition to VQ16 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD16 0x1201fc ++/* [RW 10] Bandwidth addition to VQ17 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD17 0x120200 ++/* [RW 10] Bandwidth addition to VQ18 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD18 0x120204 ++/* [RW 10] Bandwidth addition to VQ19 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD19 0x120208 ++/* [RW 10] Bandwidth addition to VQ20 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD20 0x12020c ++/* [RW 10] Bandwidth addition to VQ22 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD22 0x120210 ++/* [RW 10] Bandwidth addition to VQ23 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD23 0x120214 ++/* [RW 10] Bandwidth addition to VQ24 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD24 0x120218 ++/* [RW 10] Bandwidth addition to VQ25 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD25 0x12021c ++/* [RW 10] Bandwidth addition to VQ26 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD26 0x120220 ++/* [RW 10] Bandwidth addition to VQ27 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD27 0x120224 ++/* [RW 10] Bandwidth addition to VQ4 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD4 0x1201cc ++/* [RW 10] Bandwidth addition to VQ5 read requests */ ++#define PXP2_REG_RQ_BW_RD_ADD5 0x1201d0 ++/* [RW 10] Bandwidth Typical L for VQ0 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L0 0x1202ac ++/* [RW 10] Bandwidth Typical L for VQ12 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L12 0x1202dc ++/* [RW 10] Bandwidth Typical L for VQ13 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L13 0x1202e0 ++/* [RW 10] Bandwidth Typical L for VQ14 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L14 0x1202e4 ++/* [RW 10] Bandwidth Typical L for VQ15 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L15 0x1202e8 ++/* [RW 10] Bandwidth Typical L for VQ16 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L16 0x1202ec ++/* [RW 10] Bandwidth Typical L for VQ17 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L17 0x1202f0 ++/* [RW 10] Bandwidth Typical L for VQ18 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L18 0x1202f4 ++/* [RW 10] Bandwidth Typical L for VQ19 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L19 0x1202f8 ++/* [RW 10] Bandwidth Typical L for VQ20 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L20 0x1202fc ++/* [RW 10] Bandwidth Typical L for VQ22 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L22 0x120300 ++/* [RW 10] Bandwidth Typical L for VQ23 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L23 0x120304 ++/* [RW 10] Bandwidth Typical L for VQ24 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L24 0x120308 ++/* [RW 10] Bandwidth Typical L for VQ25 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L25 0x12030c ++/* [RW 10] Bandwidth Typical L for VQ26 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L26 0x120310 ++/* [RW 10] Bandwidth Typical L for VQ27 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L27 0x120314 ++/* [RW 10] Bandwidth Typical L for VQ4 Read requests */ ++#define PXP2_REG_RQ_BW_RD_L4 0x1202bc ++/* [RW 10] Bandwidth Typical L for VQ5 Read- currently not used */ ++#define PXP2_REG_RQ_BW_RD_L5 0x1202c0 ++/* [RW 7] Bandwidth upper bound for VQ0 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND0 0x120234 ++/* [RW 7] Bandwidth upper bound for VQ12 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND12 0x120264 ++/* [RW 7] Bandwidth upper bound for VQ13 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND13 0x120268 ++/* [RW 7] Bandwidth upper bound for VQ14 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND14 0x12026c ++/* [RW 7] Bandwidth upper bound for VQ15 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND15 0x120270 ++/* [RW 7] Bandwidth upper bound for VQ16 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND16 0x120274 ++/* [RW 7] Bandwidth upper bound for VQ17 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND17 0x120278 ++/* [RW 7] Bandwidth upper bound for VQ18 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND18 0x12027c ++/* [RW 7] Bandwidth upper bound for VQ19 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND19 0x120280 ++/* [RW 7] Bandwidth upper bound for VQ20 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND20 0x120284 ++/* [RW 7] Bandwidth upper bound for VQ22 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND22 0x120288 ++/* [RW 7] Bandwidth upper bound for VQ23 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND23 0x12028c ++/* [RW 7] Bandwidth upper bound for VQ24 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND24 0x120290 ++/* [RW 7] Bandwidth upper bound for VQ25 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND25 0x120294 ++/* [RW 7] Bandwidth upper bound for VQ26 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND26 0x120298 ++/* [RW 7] Bandwidth upper bound for VQ27 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND27 0x12029c ++/* [RW 7] Bandwidth upper bound for VQ4 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND4 0x120244 ++/* [RW 7] Bandwidth upper bound for VQ5 read requests */ ++#define PXP2_REG_RQ_BW_RD_UBOUND5 0x120248 ++/* [RW 10] Bandwidth addition to VQ29 write requests */ ++#define PXP2_REG_RQ_BW_WR_ADD29 0x12022c ++/* [RW 10] Bandwidth addition to VQ30 write requests */ ++#define PXP2_REG_RQ_BW_WR_ADD30 0x120230 ++/* [RW 10] Bandwidth Typical L for VQ29 Write requests */ ++#define PXP2_REG_RQ_BW_WR_L29 0x12031c ++/* [RW 10] Bandwidth Typical L for VQ30 Write requests */ ++#define PXP2_REG_RQ_BW_WR_L30 0x120320 ++/* [RW 7] Bandwidth upper bound for VQ29 */ ++#define PXP2_REG_RQ_BW_WR_UBOUND29 0x1202a4 ++/* [RW 7] Bandwidth upper bound for VQ30 */ ++#define PXP2_REG_RQ_BW_WR_UBOUND30 0x1202a8 ++/* [RW 18] external first_mem_addr field in L2P table for CDU module port 0 */ ++#define PXP2_REG_RQ_CDU0_EFIRST_MEM_ADDR 0x120008 ++/* [RW 2] Endian mode for cdu */ ++#define PXP2_REG_RQ_CDU_ENDIAN_M 0x1201a0 ++#define PXP2_REG_RQ_CDU_FIRST_ILT 0x12061c ++#define PXP2_REG_RQ_CDU_LAST_ILT 0x120620 ++/* [RW 3] page size in L2P table for CDU module; -4k; -8k; -16k; -32k; -64k; ++ -128k */ ++#define PXP2_REG_RQ_CDU_P_SIZE 0x120018 ++/* [R 1] 1' indicates that the requester has finished its internal ++ configuration */ ++#define PXP2_REG_RQ_CFG_DONE 0x1201b4 ++/* [RW 2] Endian mode for debug */ ++#define PXP2_REG_RQ_DBG_ENDIAN_M 0x1201a4 ++/* [RW 1] When '1'; requests will enter input buffers but wont get out ++ towards the glue */ ++#define PXP2_REG_RQ_DISABLE_INPUTS 0x120330 ++/* [RW 1] 1 - SR will be aligned by 64B; 0 - SR will be aligned by 8B */ ++#define PXP2_REG_RQ_DRAM_ALIGN 0x1205b0 ++/* [RW 1] If 1 ILT failiue will not result in ELT access; An interrupt will ++ be asserted */ ++#define PXP2_REG_RQ_ELT_DISABLE 0x12066c ++/* [RW 2] Endian mode for hc */ ++#define PXP2_REG_RQ_HC_ENDIAN_M 0x1201a8 ++/* [RW 1] when '0' ILT logic will work as in A0; otherwise B0; for back ++ compatibility needs; Note that different registers are used per mode */ ++#define PXP2_REG_RQ_ILT_MODE 0x1205b4 ++/* [WB 53] Onchip address table */ ++#define PXP2_REG_RQ_ONCHIP_AT 0x122000 ++/* [WB 53] Onchip address table - B0 */ ++#define PXP2_REG_RQ_ONCHIP_AT_B0 0x128000 ++/* [RW 13] Pending read limiter threshold; in Dwords */ ++#define PXP2_REG_RQ_PDR_LIMIT 0x12033c ++/* [RW 2] Endian mode for qm */ ++#define PXP2_REG_RQ_QM_ENDIAN_M 0x120194 ++#define PXP2_REG_RQ_QM_FIRST_ILT 0x120634 ++#define PXP2_REG_RQ_QM_LAST_ILT 0x120638 ++/* [RW 3] page size in L2P table for QM module; -4k; -8k; -16k; -32k; -64k; ++ -128k */ ++#define PXP2_REG_RQ_QM_P_SIZE 0x120050 ++/* [RW 1] 1' indicates that the RBC has finished configuring the PSWRQ */ ++#define PXP2_REG_RQ_RBC_DONE 0x1201b0 ++/* [RW 3] Max burst size filed for read requests port 0; 000 - 128B; ++ 001:256B; 010: 512B; 11:1K:100:2K; 01:4K */ ++#define PXP2_REG_RQ_RD_MBS0 0x120160 ++/* [RW 3] Max burst size filed for read requests port 1; 000 - 128B; ++ 001:256B; 010: 512B; 11:1K:100:2K; 01:4K */ ++#define PXP2_REG_RQ_RD_MBS1 0x120168 ++/* [RW 2] Endian mode for src */ ++#define PXP2_REG_RQ_SRC_ENDIAN_M 0x12019c ++#define PXP2_REG_RQ_SRC_FIRST_ILT 0x12063c ++#define PXP2_REG_RQ_SRC_LAST_ILT 0x120640 ++/* [RW 3] page size in L2P table for SRC module; -4k; -8k; -16k; -32k; -64k; ++ -128k */ ++#define PXP2_REG_RQ_SRC_P_SIZE 0x12006c ++/* [RW 2] Endian mode for tm */ ++#define PXP2_REG_RQ_TM_ENDIAN_M 0x120198 ++#define PXP2_REG_RQ_TM_FIRST_ILT 0x120644 ++#define PXP2_REG_RQ_TM_LAST_ILT 0x120648 ++/* [RW 3] page size in L2P table for TM module; -4k; -8k; -16k; -32k; -64k; ++ -128k */ ++#define PXP2_REG_RQ_TM_P_SIZE 0x120034 ++/* [R 5] Number of entries in the ufifo; his fifo has l2p completions */ ++#define PXP2_REG_RQ_UFIFO_NUM_OF_ENTRY 0x12080c ++/* [RW 18] external first_mem_addr field in L2P table for USDM module port 0 */ ++#define PXP2_REG_RQ_USDM0_EFIRST_MEM_ADDR 0x120094 ++/* [R 8] Number of entries occupied by vq 0 in pswrq memory */ ++#define PXP2_REG_RQ_VQ0_ENTRY_CNT 0x120810 ++/* [R 8] Number of entries occupied by vq 10 in pswrq memory */ ++#define PXP2_REG_RQ_VQ10_ENTRY_CNT 0x120818 ++/* [R 8] Number of entries occupied by vq 11 in pswrq memory */ ++#define PXP2_REG_RQ_VQ11_ENTRY_CNT 0x120820 ++/* [R 8] Number of entries occupied by vq 12 in pswrq memory */ ++#define PXP2_REG_RQ_VQ12_ENTRY_CNT 0x120828 ++/* [R 8] Number of entries occupied by vq 13 in pswrq memory */ ++#define PXP2_REG_RQ_VQ13_ENTRY_CNT 0x120830 ++/* [R 8] Number of entries occupied by vq 14 in pswrq memory */ ++#define PXP2_REG_RQ_VQ14_ENTRY_CNT 0x120838 ++/* [R 8] Number of entries occupied by vq 15 in pswrq memory */ ++#define PXP2_REG_RQ_VQ15_ENTRY_CNT 0x120840 ++/* [R 8] Number of entries occupied by vq 16 in pswrq memory */ ++#define PXP2_REG_RQ_VQ16_ENTRY_CNT 0x120848 ++/* [R 8] Number of entries occupied by vq 17 in pswrq memory */ ++#define PXP2_REG_RQ_VQ17_ENTRY_CNT 0x120850 ++/* [R 8] Number of entries occupied by vq 18 in pswrq memory */ ++#define PXP2_REG_RQ_VQ18_ENTRY_CNT 0x120858 ++/* [R 8] Number of entries occupied by vq 19 in pswrq memory */ ++#define PXP2_REG_RQ_VQ19_ENTRY_CNT 0x120860 ++/* [R 8] Number of entries occupied by vq 1 in pswrq memory */ ++#define PXP2_REG_RQ_VQ1_ENTRY_CNT 0x120868 ++/* [R 8] Number of entries occupied by vq 20 in pswrq memory */ ++#define PXP2_REG_RQ_VQ20_ENTRY_CNT 0x120870 ++/* [R 8] Number of entries occupied by vq 21 in pswrq memory */ ++#define PXP2_REG_RQ_VQ21_ENTRY_CNT 0x120878 ++/* [R 8] Number of entries occupied by vq 22 in pswrq memory */ ++#define PXP2_REG_RQ_VQ22_ENTRY_CNT 0x120880 ++/* [R 8] Number of entries occupied by vq 23 in pswrq memory */ ++#define PXP2_REG_RQ_VQ23_ENTRY_CNT 0x120888 ++/* [R 8] Number of entries occupied by vq 24 in pswrq memory */ ++#define PXP2_REG_RQ_VQ24_ENTRY_CNT 0x120890 ++/* [R 8] Number of entries occupied by vq 25 in pswrq memory */ ++#define PXP2_REG_RQ_VQ25_ENTRY_CNT 0x120898 ++/* [R 8] Number of entries occupied by vq 26 in pswrq memory */ ++#define PXP2_REG_RQ_VQ26_ENTRY_CNT 0x1208a0 ++/* [R 8] Number of entries occupied by vq 27 in pswrq memory */ ++#define PXP2_REG_RQ_VQ27_ENTRY_CNT 0x1208a8 ++/* [R 8] Number of entries occupied by vq 28 in pswrq memory */ ++#define PXP2_REG_RQ_VQ28_ENTRY_CNT 0x1208b0 ++/* [R 8] Number of entries occupied by vq 29 in pswrq memory */ ++#define PXP2_REG_RQ_VQ29_ENTRY_CNT 0x1208b8 ++/* [R 8] Number of entries occupied by vq 2 in pswrq memory */ ++#define PXP2_REG_RQ_VQ2_ENTRY_CNT 0x1208c0 ++/* [R 8] Number of entries occupied by vq 30 in pswrq memory */ ++#define PXP2_REG_RQ_VQ30_ENTRY_CNT 0x1208c8 ++/* [R 8] Number of entries occupied by vq 31 in pswrq memory */ ++#define PXP2_REG_RQ_VQ31_ENTRY_CNT 0x1208d0 ++/* [R 8] Number of entries occupied by vq 3 in pswrq memory */ ++#define PXP2_REG_RQ_VQ3_ENTRY_CNT 0x1208d8 ++/* [R 8] Number of entries occupied by vq 4 in pswrq memory */ ++#define PXP2_REG_RQ_VQ4_ENTRY_CNT 0x1208e0 ++/* [R 8] Number of entries occupied by vq 5 in pswrq memory */ ++#define PXP2_REG_RQ_VQ5_ENTRY_CNT 0x1208e8 ++/* [R 8] Number of entries occupied by vq 6 in pswrq memory */ ++#define PXP2_REG_RQ_VQ6_ENTRY_CNT 0x1208f0 ++/* [R 8] Number of entries occupied by vq 7 in pswrq memory */ ++#define PXP2_REG_RQ_VQ7_ENTRY_CNT 0x1208f8 ++/* [R 8] Number of entries occupied by vq 8 in pswrq memory */ ++#define PXP2_REG_RQ_VQ8_ENTRY_CNT 0x120900 ++/* [R 8] Number of entries occupied by vq 9 in pswrq memory */ ++#define PXP2_REG_RQ_VQ9_ENTRY_CNT 0x120908 ++/* [RW 3] Max burst size filed for write requests port 0; 000 - 128B; ++ 001:256B; 010: 512B; */ ++#define PXP2_REG_RQ_WR_MBS0 0x12015c ++/* [RW 3] Max burst size filed for write requests port 1; 000 - 128B; ++ 001:256B; 010: 512B; */ ++#define PXP2_REG_RQ_WR_MBS1 0x120164 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_CDU_MPS 0x1205f0 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_CSDM_MPS 0x1205d0 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_DBG_MPS 0x1205e8 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_DMAE_MPS 0x1205ec ++/* [RW 10] if Number of entries in dmae fifo will be higher than this ++ threshold then has_payload indication will be asserted; the default value ++ should be equal to > write MBS size! */ ++#define PXP2_REG_WR_DMAE_TH 0x120368 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_HC_MPS 0x1205c8 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_QM_MPS 0x1205dc ++/* [RW 1] 0 - working in A0 mode; - working in B0 mode */ ++#define PXP2_REG_WR_REV_MODE 0x120670 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_SRC_MPS 0x1205e4 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_TM_MPS 0x1205e0 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_TSDM_MPS 0x1205d4 ++/* [RW 10] if Number of entries in usdmdp fifo will be higher than this ++ threshold then has_payload indication will be asserted; the default value ++ should be equal to > write MBS size! */ ++#define PXP2_REG_WR_USDMDP_TH 0x120348 ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_USDM_MPS 0x1205cc ++/* [RW 2] 0 - 128B; - 256B; - 512B; - 1024B; when the payload in the ++ buffer reaches this number has_payload will be asserted */ ++#define PXP2_REG_WR_XSDM_MPS 0x1205d8 ++/* [R 1] debug only: Indication if PSWHST arbiter is idle */ ++#define PXP_REG_HST_ARB_IS_IDLE 0x103004 ++/* [R 8] debug only: A bit mask for all PSWHST arbiter clients. '1' means ++ this client is waiting for the arbiter. */ ++#define PXP_REG_HST_CLIENTS_WAITING_TO_ARB 0x103008 ++/* [R 1] debug only: '1' means this PSWHST is discarding doorbells. This bit ++ should update accoring to 'hst_discard_doorbells' register when the state ++ machine is idle */ ++#define PXP_REG_HST_DISCARD_DOORBELLS_STATUS 0x1030a0 ++/* [R 6] debug only: A bit mask for all PSWHST internal write clients. '1' ++ means this PSWHST is discarding inputs from this client. Each bit should ++ update accoring to 'hst_discard_internal_writes' register when the state ++ machine is idle. */ ++#define PXP_REG_HST_DISCARD_INTERNAL_WRITES_STATUS 0x10309c ++/* [WB 160] Used for initialization of the inbound interrupts memory */ ++#define PXP_REG_HST_INBOUND_INT 0x103800 ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define PXP_REG_PXP_INT_MASK_0 0x103074 ++#define PXP_REG_PXP_INT_MASK_1 0x103084 ++/* [R 32] Interrupt register #0 read */ ++#define PXP_REG_PXP_INT_STS_0 0x103068 ++#define PXP_REG_PXP_INT_STS_1 0x103078 ++/* [RC 32] Interrupt register #0 read clear */ ++#define PXP_REG_PXP_INT_STS_CLR_0 0x10306c ++/* [RW 26] Parity mask register #0 read/write */ ++#define PXP_REG_PXP_PRTY_MASK 0x103094 ++/* [R 26] Parity register #0 read */ ++#define PXP_REG_PXP_PRTY_STS 0x103088 ++/* [RW 4] The activity counter initial increment value sent in the load ++ request */ ++#define QM_REG_ACTCTRINITVAL_0 0x168040 ++#define QM_REG_ACTCTRINITVAL_1 0x168044 ++#define QM_REG_ACTCTRINITVAL_2 0x168048 ++#define QM_REG_ACTCTRINITVAL_3 0x16804c ++/* [RW 32] The base logical address (in bytes) of each physical queue. The ++ index I represents the physical queue number. The 12 lsbs are ignore and ++ considered zero so practically there are only 20 bits in this register; ++ queues 63-0 */ ++#define QM_REG_BASEADDR 0x168900 ++/* [RW 32] The base logical address (in bytes) of each physical queue. The ++ index I represents the physical queue number. The 12 lsbs are ignore and ++ considered zero so practically there are only 20 bits in this register; ++ queues 127-64 */ ++#define QM_REG_BASEADDR_EXT_A 0x16e100 ++/* [RW 16] The byte credit cost for each task. This value is for both ports */ ++#define QM_REG_BYTECRDCOST 0x168234 ++/* [RW 16] The initial byte credit value for both ports. */ ++#define QM_REG_BYTECRDINITVAL 0x168238 ++/* [RW 32] A bit per physical queue. If the bit is cleared then the physical ++ queue uses port 0 else it uses port 1; queues 31-0 */ ++#define QM_REG_BYTECRDPORT_LSB 0x168228 ++/* [RW 32] A bit per physical queue. If the bit is cleared then the physical ++ queue uses port 0 else it uses port 1; queues 95-64 */ ++#define QM_REG_BYTECRDPORT_LSB_EXT_A 0x16e520 ++/* [RW 32] A bit per physical queue. If the bit is cleared then the physical ++ queue uses port 0 else it uses port 1; queues 63-32 */ ++#define QM_REG_BYTECRDPORT_MSB 0x168224 ++/* [RW 32] A bit per physical queue. If the bit is cleared then the physical ++ queue uses port 0 else it uses port 1; queues 127-96 */ ++#define QM_REG_BYTECRDPORT_MSB_EXT_A 0x16e51c ++/* [RW 16] The byte credit value that if above the QM is considered almost ++ full */ ++#define QM_REG_BYTECREDITAFULLTHR 0x168094 ++/* [RW 4] The initial credit for interface */ ++#define QM_REG_CMINITCRD_0 0x1680cc ++#define QM_REG_CMINITCRD_1 0x1680d0 ++#define QM_REG_CMINITCRD_2 0x1680d4 ++#define QM_REG_CMINITCRD_3 0x1680d8 ++#define QM_REG_CMINITCRD_4 0x1680dc ++#define QM_REG_CMINITCRD_5 0x1680e0 ++#define QM_REG_CMINITCRD_6 0x1680e4 ++#define QM_REG_CMINITCRD_7 0x1680e8 ++/* [RW 8] A mask bit per CM interface. If this bit is 0 then this interface ++ is masked */ ++#define QM_REG_CMINTEN 0x1680ec ++/* [RW 12] A bit vector which indicates which one of the queues are tied to ++ interface 0 */ ++#define QM_REG_CMINTVOQMASK_0 0x1681f4 ++#define QM_REG_CMINTVOQMASK_1 0x1681f8 ++#define QM_REG_CMINTVOQMASK_2 0x1681fc ++#define QM_REG_CMINTVOQMASK_3 0x168200 ++#define QM_REG_CMINTVOQMASK_4 0x168204 ++#define QM_REG_CMINTVOQMASK_5 0x168208 ++#define QM_REG_CMINTVOQMASK_6 0x16820c ++#define QM_REG_CMINTVOQMASK_7 0x168210 ++/* [RW 20] The number of connections divided by 16 which dictates the size ++ of each queue which belongs to even function number. */ ++#define QM_REG_CONNNUM_0 0x168020 ++/* [R 6] Keep the fill level of the fifo from write client 4 */ ++#define QM_REG_CQM_WRC_FIFOLVL 0x168018 ++/* [RW 8] The context regions sent in the CFC load request */ ++#define QM_REG_CTXREG_0 0x168030 ++#define QM_REG_CTXREG_1 0x168034 ++#define QM_REG_CTXREG_2 0x168038 ++#define QM_REG_CTXREG_3 0x16803c ++/* [RW 12] The VOQ mask used to select the VOQs which needs to be full for ++ bypass enable */ ++#define QM_REG_ENBYPVOQMASK 0x16823c ++/* [RW 32] A bit mask per each physical queue. If a bit is set then the ++ physical queue uses the byte credit; queues 31-0 */ ++#define QM_REG_ENBYTECRD_LSB 0x168220 ++/* [RW 32] A bit mask per each physical queue. If a bit is set then the ++ physical queue uses the byte credit; queues 95-64 */ ++#define QM_REG_ENBYTECRD_LSB_EXT_A 0x16e518 ++/* [RW 32] A bit mask per each physical queue. If a bit is set then the ++ physical queue uses the byte credit; queues 63-32 */ ++#define QM_REG_ENBYTECRD_MSB 0x16821c ++/* [RW 32] A bit mask per each physical queue. If a bit is set then the ++ physical queue uses the byte credit; queues 127-96 */ ++#define QM_REG_ENBYTECRD_MSB_EXT_A 0x16e514 ++/* [RW 4] If cleared then the secondary interface will not be served by the ++ RR arbiter */ ++#define QM_REG_ENSEC 0x1680f0 ++/* [RW 32] NA */ ++#define QM_REG_FUNCNUMSEL_LSB 0x168230 ++/* [RW 32] NA */ ++#define QM_REG_FUNCNUMSEL_MSB 0x16822c ++/* [RW 32] A mask register to mask the Almost empty signals which will not ++ be use for the almost empty indication to the HW block; queues 31:0 */ ++#define QM_REG_HWAEMPTYMASK_LSB 0x168218 ++/* [RW 32] A mask register to mask the Almost empty signals which will not ++ be use for the almost empty indication to the HW block; queues 95-64 */ ++#define QM_REG_HWAEMPTYMASK_LSB_EXT_A 0x16e510 ++/* [RW 32] A mask register to mask the Almost empty signals which will not ++ be use for the almost empty indication to the HW block; queues 63:32 */ ++#define QM_REG_HWAEMPTYMASK_MSB 0x168214 ++/* [RW 32] A mask register to mask the Almost empty signals which will not ++ be use for the almost empty indication to the HW block; queues 127-96 */ ++#define QM_REG_HWAEMPTYMASK_MSB_EXT_A 0x16e50c ++/* [RW 4] The number of outstanding request to CFC */ ++#define QM_REG_OUTLDREQ 0x168804 ++/* [RC 1] A flag to indicate that overflow error occurred in one of the ++ queues. */ ++#define QM_REG_OVFERROR 0x16805c ++/* [RC 7] the Q were the qverflow occurs */ ++#define QM_REG_OVFQNUM 0x168058 ++/* [R 16] Pause state for physical queues 15-0 */ ++#define QM_REG_PAUSESTATE0 0x168410 ++/* [R 16] Pause state for physical queues 31-16 */ ++#define QM_REG_PAUSESTATE1 0x168414 ++/* [R 16] Pause state for physical queues 47-32 */ ++#define QM_REG_PAUSESTATE2 0x16e684 ++/* [R 16] Pause state for physical queues 63-48 */ ++#define QM_REG_PAUSESTATE3 0x16e688 ++/* [R 16] Pause state for physical queues 79-64 */ ++#define QM_REG_PAUSESTATE4 0x16e68c ++/* [R 16] Pause state for physical queues 95-80 */ ++#define QM_REG_PAUSESTATE5 0x16e690 ++/* [R 16] Pause state for physical queues 111-96 */ ++#define QM_REG_PAUSESTATE6 0x16e694 ++/* [R 16] Pause state for physical queues 127-112 */ ++#define QM_REG_PAUSESTATE7 0x16e698 ++/* [RW 2] The PCI attributes field used in the PCI request. */ ++#define QM_REG_PCIREQAT 0x168054 ++/* [R 16] The byte credit of port 0 */ ++#define QM_REG_PORT0BYTECRD 0x168300 ++/* [R 16] The byte credit of port 1 */ ++#define QM_REG_PORT1BYTECRD 0x168304 ++/* [RW 3] pci function number of queues 15-0 */ ++#define QM_REG_PQ2PCIFUNC_0 0x16e6bc ++#define QM_REG_PQ2PCIFUNC_1 0x16e6c0 ++#define QM_REG_PQ2PCIFUNC_2 0x16e6c4 ++#define QM_REG_PQ2PCIFUNC_3 0x16e6c8 ++#define QM_REG_PQ2PCIFUNC_4 0x16e6cc ++#define QM_REG_PQ2PCIFUNC_5 0x16e6d0 ++#define QM_REG_PQ2PCIFUNC_6 0x16e6d4 ++#define QM_REG_PQ2PCIFUNC_7 0x16e6d8 ++/* [WB 54] Pointer Table Memory for queues 63-0; The mapping is as follow: ++ ptrtbl[53:30] read pointer; ptrtbl[29:6] write pointer; ptrtbl[5:4] read ++ bank0; ptrtbl[3:2] read bank 1; ptrtbl[1:0] write bank; */ ++#define QM_REG_PTRTBL 0x168a00 ++/* [WB 54] Pointer Table Memory for queues 127-64; The mapping is as follow: ++ ptrtbl[53:30] read pointer; ptrtbl[29:6] write pointer; ptrtbl[5:4] read ++ bank0; ptrtbl[3:2] read bank 1; ptrtbl[1:0] write bank; */ ++#define QM_REG_PTRTBL_EXT_A 0x16e200 ++/* [RW 2] Interrupt mask register #0 read/write */ ++#define QM_REG_QM_INT_MASK 0x168444 ++/* [R 2] Interrupt register #0 read */ ++#define QM_REG_QM_INT_STS 0x168438 ++/* [RW 12] Parity mask register #0 read/write */ ++#define QM_REG_QM_PRTY_MASK 0x168454 ++/* [R 12] Parity register #0 read */ ++#define QM_REG_QM_PRTY_STS 0x168448 ++/* [R 32] Current queues in pipeline: Queues from 32 to 63 */ ++#define QM_REG_QSTATUS_HIGH 0x16802c ++/* [R 32] Current queues in pipeline: Queues from 96 to 127 */ ++#define QM_REG_QSTATUS_HIGH_EXT_A 0x16e408 ++/* [R 32] Current queues in pipeline: Queues from 0 to 31 */ ++#define QM_REG_QSTATUS_LOW 0x168028 ++/* [R 32] Current queues in pipeline: Queues from 64 to 95 */ ++#define QM_REG_QSTATUS_LOW_EXT_A 0x16e404 ++/* [R 24] The number of tasks queued for each queue; queues 63-0 */ ++#define QM_REG_QTASKCTR_0 0x168308 ++/* [R 24] The number of tasks queued for each queue; queues 127-64 */ ++#define QM_REG_QTASKCTR_EXT_A_0 0x16e584 ++/* [RW 4] Queue tied to VOQ */ ++#define QM_REG_QVOQIDX_0 0x1680f4 ++#define QM_REG_QVOQIDX_10 0x16811c ++#define QM_REG_QVOQIDX_100 0x16e49c ++#define QM_REG_QVOQIDX_101 0x16e4a0 ++#define QM_REG_QVOQIDX_102 0x16e4a4 ++#define QM_REG_QVOQIDX_103 0x16e4a8 ++#define QM_REG_QVOQIDX_104 0x16e4ac ++#define QM_REG_QVOQIDX_105 0x16e4b0 ++#define QM_REG_QVOQIDX_106 0x16e4b4 ++#define QM_REG_QVOQIDX_107 0x16e4b8 ++#define QM_REG_QVOQIDX_108 0x16e4bc ++#define QM_REG_QVOQIDX_109 0x16e4c0 ++#define QM_REG_QVOQIDX_11 0x168120 ++#define QM_REG_QVOQIDX_110 0x16e4c4 ++#define QM_REG_QVOQIDX_111 0x16e4c8 ++#define QM_REG_QVOQIDX_112 0x16e4cc ++#define QM_REG_QVOQIDX_113 0x16e4d0 ++#define QM_REG_QVOQIDX_114 0x16e4d4 ++#define QM_REG_QVOQIDX_115 0x16e4d8 ++#define QM_REG_QVOQIDX_116 0x16e4dc ++#define QM_REG_QVOQIDX_117 0x16e4e0 ++#define QM_REG_QVOQIDX_118 0x16e4e4 ++#define QM_REG_QVOQIDX_119 0x16e4e8 ++#define QM_REG_QVOQIDX_12 0x168124 ++#define QM_REG_QVOQIDX_120 0x16e4ec ++#define QM_REG_QVOQIDX_121 0x16e4f0 ++#define QM_REG_QVOQIDX_122 0x16e4f4 ++#define QM_REG_QVOQIDX_123 0x16e4f8 ++#define QM_REG_QVOQIDX_124 0x16e4fc ++#define QM_REG_QVOQIDX_125 0x16e500 ++#define QM_REG_QVOQIDX_126 0x16e504 ++#define QM_REG_QVOQIDX_127 0x16e508 ++#define QM_REG_QVOQIDX_13 0x168128 ++#define QM_REG_QVOQIDX_14 0x16812c ++#define QM_REG_QVOQIDX_15 0x168130 ++#define QM_REG_QVOQIDX_16 0x168134 ++#define QM_REG_QVOQIDX_17 0x168138 ++#define QM_REG_QVOQIDX_21 0x168148 ++#define QM_REG_QVOQIDX_22 0x16814c ++#define QM_REG_QVOQIDX_23 0x168150 ++#define QM_REG_QVOQIDX_24 0x168154 ++#define QM_REG_QVOQIDX_25 0x168158 ++#define QM_REG_QVOQIDX_26 0x16815c ++#define QM_REG_QVOQIDX_27 0x168160 ++#define QM_REG_QVOQIDX_28 0x168164 ++#define QM_REG_QVOQIDX_29 0x168168 ++#define QM_REG_QVOQIDX_30 0x16816c ++#define QM_REG_QVOQIDX_31 0x168170 ++#define QM_REG_QVOQIDX_32 0x168174 ++#define QM_REG_QVOQIDX_33 0x168178 ++#define QM_REG_QVOQIDX_34 0x16817c ++#define QM_REG_QVOQIDX_35 0x168180 ++#define QM_REG_QVOQIDX_36 0x168184 ++#define QM_REG_QVOQIDX_37 0x168188 ++#define QM_REG_QVOQIDX_38 0x16818c ++#define QM_REG_QVOQIDX_39 0x168190 ++#define QM_REG_QVOQIDX_40 0x168194 ++#define QM_REG_QVOQIDX_41 0x168198 ++#define QM_REG_QVOQIDX_42 0x16819c ++#define QM_REG_QVOQIDX_43 0x1681a0 ++#define QM_REG_QVOQIDX_44 0x1681a4 ++#define QM_REG_QVOQIDX_45 0x1681a8 ++#define QM_REG_QVOQIDX_46 0x1681ac ++#define QM_REG_QVOQIDX_47 0x1681b0 ++#define QM_REG_QVOQIDX_48 0x1681b4 ++#define QM_REG_QVOQIDX_49 0x1681b8 ++#define QM_REG_QVOQIDX_5 0x168108 ++#define QM_REG_QVOQIDX_50 0x1681bc ++#define QM_REG_QVOQIDX_51 0x1681c0 ++#define QM_REG_QVOQIDX_52 0x1681c4 ++#define QM_REG_QVOQIDX_53 0x1681c8 ++#define QM_REG_QVOQIDX_54 0x1681cc ++#define QM_REG_QVOQIDX_55 0x1681d0 ++#define QM_REG_QVOQIDX_56 0x1681d4 ++#define QM_REG_QVOQIDX_57 0x1681d8 ++#define QM_REG_QVOQIDX_58 0x1681dc ++#define QM_REG_QVOQIDX_59 0x1681e0 ++#define QM_REG_QVOQIDX_6 0x16810c ++#define QM_REG_QVOQIDX_60 0x1681e4 ++#define QM_REG_QVOQIDX_61 0x1681e8 ++#define QM_REG_QVOQIDX_62 0x1681ec ++#define QM_REG_QVOQIDX_63 0x1681f0 ++#define QM_REG_QVOQIDX_64 0x16e40c ++#define QM_REG_QVOQIDX_65 0x16e410 ++#define QM_REG_QVOQIDX_69 0x16e420 ++#define QM_REG_QVOQIDX_7 0x168110 ++#define QM_REG_QVOQIDX_70 0x16e424 ++#define QM_REG_QVOQIDX_71 0x16e428 ++#define QM_REG_QVOQIDX_72 0x16e42c ++#define QM_REG_QVOQIDX_73 0x16e430 ++#define QM_REG_QVOQIDX_74 0x16e434 ++#define QM_REG_QVOQIDX_75 0x16e438 ++#define QM_REG_QVOQIDX_76 0x16e43c ++#define QM_REG_QVOQIDX_77 0x16e440 ++#define QM_REG_QVOQIDX_78 0x16e444 ++#define QM_REG_QVOQIDX_79 0x16e448 ++#define QM_REG_QVOQIDX_8 0x168114 ++#define QM_REG_QVOQIDX_80 0x16e44c ++#define QM_REG_QVOQIDX_81 0x16e450 ++#define QM_REG_QVOQIDX_85 0x16e460 ++#define QM_REG_QVOQIDX_86 0x16e464 ++#define QM_REG_QVOQIDX_87 0x16e468 ++#define QM_REG_QVOQIDX_88 0x16e46c ++#define QM_REG_QVOQIDX_89 0x16e470 ++#define QM_REG_QVOQIDX_9 0x168118 ++#define QM_REG_QVOQIDX_90 0x16e474 ++#define QM_REG_QVOQIDX_91 0x16e478 ++#define QM_REG_QVOQIDX_92 0x16e47c ++#define QM_REG_QVOQIDX_93 0x16e480 ++#define QM_REG_QVOQIDX_94 0x16e484 ++#define QM_REG_QVOQIDX_95 0x16e488 ++#define QM_REG_QVOQIDX_96 0x16e48c ++#define QM_REG_QVOQIDX_97 0x16e490 ++#define QM_REG_QVOQIDX_98 0x16e494 ++#define QM_REG_QVOQIDX_99 0x16e498 ++/* [RW 1] Initialization bit command */ ++#define QM_REG_SOFT_RESET 0x168428 ++/* [RW 8] The credit cost per every task in the QM. A value per each VOQ */ ++#define QM_REG_TASKCRDCOST_0 0x16809c ++#define QM_REG_TASKCRDCOST_1 0x1680a0 ++#define QM_REG_TASKCRDCOST_2 0x1680a4 ++#define QM_REG_TASKCRDCOST_4 0x1680ac ++#define QM_REG_TASKCRDCOST_5 0x1680b0 ++/* [R 6] Keep the fill level of the fifo from write client 3 */ ++#define QM_REG_TQM_WRC_FIFOLVL 0x168010 ++/* [R 6] Keep the fill level of the fifo from write client 2 */ ++#define QM_REG_UQM_WRC_FIFOLVL 0x168008 ++/* [RC 32] Credit update error register */ ++#define QM_REG_VOQCRDERRREG 0x168408 ++/* [R 16] The credit value for each VOQ */ ++#define QM_REG_VOQCREDIT_0 0x1682d0 ++#define QM_REG_VOQCREDIT_1 0x1682d4 ++#define QM_REG_VOQCREDIT_4 0x1682e0 ++/* [RW 16] The credit value that if above the QM is considered almost full */ ++#define QM_REG_VOQCREDITAFULLTHR 0x168090 ++/* [RW 16] The init and maximum credit for each VoQ */ ++#define QM_REG_VOQINITCREDIT_0 0x168060 ++#define QM_REG_VOQINITCREDIT_1 0x168064 ++#define QM_REG_VOQINITCREDIT_2 0x168068 ++#define QM_REG_VOQINITCREDIT_4 0x168070 ++#define QM_REG_VOQINITCREDIT_5 0x168074 ++/* [RW 1] The port of which VOQ belongs */ ++#define QM_REG_VOQPORT_0 0x1682a0 ++#define QM_REG_VOQPORT_1 0x1682a4 ++#define QM_REG_VOQPORT_2 0x1682a8 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_0_LSB 0x168240 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_0_LSB_EXT_A 0x16e524 ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_0_MSB 0x168244 ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_0_MSB_EXT_A 0x16e528 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_10_LSB 0x168290 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_10_LSB_EXT_A 0x16e574 ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_10_MSB 0x168294 ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_10_MSB_EXT_A 0x16e578 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_11_LSB 0x168298 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_11_LSB_EXT_A 0x16e57c ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_11_MSB 0x16829c ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_11_MSB_EXT_A 0x16e580 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_1_LSB 0x168248 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_1_LSB_EXT_A 0x16e52c ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_1_MSB 0x16824c ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_1_MSB_EXT_A 0x16e530 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_2_LSB 0x168250 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_2_LSB_EXT_A 0x16e534 ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_2_MSB 0x168254 ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_2_MSB_EXT_A 0x16e538 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_3_LSB 0x168258 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_3_LSB_EXT_A 0x16e53c ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_3_MSB_EXT_A 0x16e540 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_4_LSB 0x168260 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_4_LSB_EXT_A 0x16e544 ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_4_MSB 0x168264 ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_4_MSB_EXT_A 0x16e548 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_5_LSB 0x168268 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_5_LSB_EXT_A 0x16e54c ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_5_MSB 0x16826c ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_5_MSB_EXT_A 0x16e550 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_6_LSB 0x168270 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_6_LSB_EXT_A 0x16e554 ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_6_MSB 0x168274 ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_6_MSB_EXT_A 0x16e558 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_7_LSB 0x168278 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_7_LSB_EXT_A 0x16e55c ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_7_MSB 0x16827c ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_7_MSB_EXT_A 0x16e560 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_8_LSB 0x168280 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_8_LSB_EXT_A 0x16e564 ++/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */ ++#define QM_REG_VOQQMASK_8_MSB 0x168284 ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_8_MSB_EXT_A 0x16e568 ++/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */ ++#define QM_REG_VOQQMASK_9_LSB 0x168288 ++/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */ ++#define QM_REG_VOQQMASK_9_LSB_EXT_A 0x16e56c ++/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */ ++#define QM_REG_VOQQMASK_9_MSB_EXT_A 0x16e570 ++/* [RW 32] Wrr weights */ ++#define QM_REG_WRRWEIGHTS_0 0x16880c ++#define QM_REG_WRRWEIGHTS_1 0x168810 ++#define QM_REG_WRRWEIGHTS_10 0x168814 ++#define QM_REG_WRRWEIGHTS_11 0x168818 ++#define QM_REG_WRRWEIGHTS_12 0x16881c ++#define QM_REG_WRRWEIGHTS_13 0x168820 ++#define QM_REG_WRRWEIGHTS_14 0x168824 ++#define QM_REG_WRRWEIGHTS_15 0x168828 ++#define QM_REG_WRRWEIGHTS_16 0x16e000 ++#define QM_REG_WRRWEIGHTS_17 0x16e004 ++#define QM_REG_WRRWEIGHTS_18 0x16e008 ++#define QM_REG_WRRWEIGHTS_19 0x16e00c ++#define QM_REG_WRRWEIGHTS_2 0x16882c ++#define QM_REG_WRRWEIGHTS_20 0x16e010 ++#define QM_REG_WRRWEIGHTS_21 0x16e014 ++#define QM_REG_WRRWEIGHTS_22 0x16e018 ++#define QM_REG_WRRWEIGHTS_23 0x16e01c ++#define QM_REG_WRRWEIGHTS_24 0x16e020 ++#define QM_REG_WRRWEIGHTS_25 0x16e024 ++#define QM_REG_WRRWEIGHTS_26 0x16e028 ++#define QM_REG_WRRWEIGHTS_27 0x16e02c ++#define QM_REG_WRRWEIGHTS_28 0x16e030 ++#define QM_REG_WRRWEIGHTS_29 0x16e034 ++#define QM_REG_WRRWEIGHTS_3 0x168830 ++#define QM_REG_WRRWEIGHTS_30 0x16e038 ++#define QM_REG_WRRWEIGHTS_31 0x16e03c ++#define QM_REG_WRRWEIGHTS_4 0x168834 ++#define QM_REG_WRRWEIGHTS_5 0x168838 ++#define QM_REG_WRRWEIGHTS_6 0x16883c ++#define QM_REG_WRRWEIGHTS_7 0x168840 ++#define QM_REG_WRRWEIGHTS_8 0x168844 ++#define QM_REG_WRRWEIGHTS_9 0x168848 ++/* [R 6] Keep the fill level of the fifo from write client 1 */ ++#define QM_REG_XQM_WRC_FIFOLVL 0x168000 ++#define SRC_REG_COUNTFREE0 0x40500 ++/* [RW 1] If clr the searcher is compatible to E1 A0 - support only two ++ ports. If set the searcher support 8 functions. */ ++#define SRC_REG_E1HMF_ENABLE 0x404cc ++#define SRC_REG_FIRSTFREE0 0x40510 ++#define SRC_REG_KEYRSS0_0 0x40408 ++#define SRC_REG_KEYRSS0_7 0x40424 ++#define SRC_REG_KEYRSS1_9 0x40454 ++#define SRC_REG_KEYSEARCH_0 0x40458 ++#define SRC_REG_KEYSEARCH_1 0x4045c ++#define SRC_REG_KEYSEARCH_2 0x40460 ++#define SRC_REG_KEYSEARCH_3 0x40464 ++#define SRC_REG_KEYSEARCH_4 0x40468 ++#define SRC_REG_KEYSEARCH_5 0x4046c ++#define SRC_REG_KEYSEARCH_6 0x40470 ++#define SRC_REG_KEYSEARCH_7 0x40474 ++#define SRC_REG_KEYSEARCH_8 0x40478 ++#define SRC_REG_KEYSEARCH_9 0x4047c ++#define SRC_REG_LASTFREE0 0x40530 ++#define SRC_REG_NUMBER_HASH_BITS0 0x40400 ++/* [RW 1] Reset internal state machines. */ ++#define SRC_REG_SOFT_RST 0x4049c ++/* [R 3] Interrupt register #0 read */ ++#define SRC_REG_SRC_INT_STS 0x404ac ++/* [RW 3] Parity mask register #0 read/write */ ++#define SRC_REG_SRC_PRTY_MASK 0x404c8 ++/* [R 3] Parity register #0 read */ ++#define SRC_REG_SRC_PRTY_STS 0x404bc ++/* [R 4] Used to read the value of the XX protection CAM occupancy counter. */ ++#define TCM_REG_CAM_OCCUP 0x5017c ++/* [RW 1] CDU AG read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define TCM_REG_CDU_AG_RD_IFEN 0x50034 ++/* [RW 1] CDU AG write Interface enable. If 0 - the request and valid input ++ are disregarded; all other signals are treated as usual; if 1 - normal ++ activity. */ ++#define TCM_REG_CDU_AG_WR_IFEN 0x50030 ++/* [RW 1] CDU STORM read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define TCM_REG_CDU_SM_RD_IFEN 0x5003c ++/* [RW 1] CDU STORM write Interface enable. If 0 - the request and valid ++ input is disregarded; all other signals are treated as usual; if 1 - ++ normal activity. */ ++#define TCM_REG_CDU_SM_WR_IFEN 0x50038 ++/* [RW 4] CFC output initial credit. Max credit available - 15.Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 1 at start-up. */ ++#define TCM_REG_CFC_INIT_CRD 0x50204 ++/* [RW 3] The weight of the CP input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_CP_WEIGHT 0x500c0 ++/* [RW 1] Input csem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define TCM_REG_CSEM_IFEN 0x5002c ++/* [RC 1] Message length mismatch (relative to last indication) at the In#9 ++ interface. */ ++#define TCM_REG_CSEM_LENGTH_MIS 0x50174 ++/* [RW 3] The weight of the input csem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_CSEM_WEIGHT 0x500bc ++/* [RW 8] The Event ID in case of ErrorFlg is set in the input message. */ ++#define TCM_REG_ERR_EVNT_ID 0x500a0 ++/* [RW 28] The CM erroneous header for QM and Timers formatting. */ ++#define TCM_REG_ERR_TCM_HDR 0x5009c ++/* [RW 8] The Event ID for Timers expiration. */ ++#define TCM_REG_EXPR_EVNT_ID 0x500a4 ++/* [RW 8] FIC0 output initial credit. Max credit available - 255.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define TCM_REG_FIC0_INIT_CRD 0x5020c ++/* [RW 8] FIC1 output initial credit. Max credit available - 255.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define TCM_REG_FIC1_INIT_CRD 0x50210 ++/* [RW 1] Arbitration between Input Arbiter groups: 0 - fair Round-Robin; 1 ++ - strict priority defined by ~tcm_registers_gr_ag_pr.gr_ag_pr; ++ ~tcm_registers_gr_ld0_pr.gr_ld0_pr and ++ ~tcm_registers_gr_ld1_pr.gr_ld1_pr. */ ++#define TCM_REG_GR_ARB_TYPE 0x50114 ++/* [RW 2] Load (FIC0) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed that the Store channel is the ++ compliment of the other 3 groups. */ ++#define TCM_REG_GR_LD0_PR 0x5011c ++/* [RW 2] Load (FIC1) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed that the Store channel is the ++ compliment of the other 3 groups. */ ++#define TCM_REG_GR_LD1_PR 0x50120 ++/* [RW 4] The number of double REG-pairs; loaded from the STORM context and ++ sent to STORM; for a specific connection type. The double REG-pairs are ++ used to align to STORM context row size of 128 bits. The offset of these ++ data in the STORM context is always 0. Index _i stands for the connection ++ type (one of 16). */ ++#define TCM_REG_N_SM_CTX_LD_0 0x50050 ++#define TCM_REG_N_SM_CTX_LD_1 0x50054 ++#define TCM_REG_N_SM_CTX_LD_2 0x50058 ++#define TCM_REG_N_SM_CTX_LD_3 0x5005c ++#define TCM_REG_N_SM_CTX_LD_4 0x50060 ++#define TCM_REG_N_SM_CTX_LD_5 0x50064 ++/* [RW 1] Input pbf Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_PBF_IFEN 0x50024 ++/* [RC 1] Message length mismatch (relative to last indication) at the In#7 ++ interface. */ ++#define TCM_REG_PBF_LENGTH_MIS 0x5016c ++/* [RW 3] The weight of the input pbf in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_PBF_WEIGHT 0x500b4 ++#define TCM_REG_PHYS_QNUM0_0 0x500e0 ++#define TCM_REG_PHYS_QNUM0_1 0x500e4 ++#define TCM_REG_PHYS_QNUM1_0 0x500e8 ++#define TCM_REG_PHYS_QNUM1_1 0x500ec ++#define TCM_REG_PHYS_QNUM2_0 0x500f0 ++#define TCM_REG_PHYS_QNUM2_1 0x500f4 ++#define TCM_REG_PHYS_QNUM3_0 0x500f8 ++#define TCM_REG_PHYS_QNUM3_1 0x500fc ++/* [RW 1] Input prs Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_PRS_IFEN 0x50020 ++/* [RC 1] Message length mismatch (relative to last indication) at the In#6 ++ interface. */ ++#define TCM_REG_PRS_LENGTH_MIS 0x50168 ++/* [RW 3] The weight of the input prs in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_PRS_WEIGHT 0x500b0 ++/* [RW 8] The Event ID for Timers formatting in case of stop done. */ ++#define TCM_REG_STOP_EVNT_ID 0x500a8 ++/* [RC 1] Message length mismatch (relative to last indication) at the STORM ++ interface. */ ++#define TCM_REG_STORM_LENGTH_MIS 0x50160 ++/* [RW 1] STORM - CM Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define TCM_REG_STORM_TCM_IFEN 0x50010 ++/* [RW 3] The weight of the STORM input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_STORM_WEIGHT 0x500ac ++/* [RW 1] CM - CFC Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_TCM_CFC_IFEN 0x50040 ++/* [RW 11] Interrupt mask register #0 read/write */ ++#define TCM_REG_TCM_INT_MASK 0x501dc ++/* [R 11] Interrupt register #0 read */ ++#define TCM_REG_TCM_INT_STS 0x501d0 ++/* [R 27] Parity register #0 read */ ++#define TCM_REG_TCM_PRTY_STS 0x501e0 ++/* [RW 3] The size of AG context region 0 in REG-pairs. Designates the MS ++ REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5). ++ Is used to determine the number of the AG context REG-pairs written back; ++ when the input message Reg1WbFlg isn't set. */ ++#define TCM_REG_TCM_REG0_SZ 0x500d8 ++/* [RW 1] CM - STORM 0 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_TCM_STORM0_IFEN 0x50004 ++/* [RW 1] CM - STORM 1 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_TCM_STORM1_IFEN 0x50008 ++/* [RW 1] CM - QM Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_TCM_TQM_IFEN 0x5000c ++/* [RW 1] If set the Q index; received from the QM is inserted to event ID. */ ++#define TCM_REG_TCM_TQM_USE_Q 0x500d4 ++/* [RW 28] The CM header for Timers expiration command. */ ++#define TCM_REG_TM_TCM_HDR 0x50098 ++/* [RW 1] Timers - CM Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define TCM_REG_TM_TCM_IFEN 0x5001c ++/* [RW 3] The weight of the Timers input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_TM_WEIGHT 0x500d0 ++/* [RW 6] QM output initial credit. Max credit available - 32.Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 32 at start-up. */ ++#define TCM_REG_TQM_INIT_CRD 0x5021c ++/* [RW 3] The weight of the QM (primary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_TQM_P_WEIGHT 0x500c8 ++/* [RW 3] The weight of the QM (secondary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_TQM_S_WEIGHT 0x500cc ++/* [RW 28] The CM header value for QM request (primary). */ ++#define TCM_REG_TQM_TCM_HDR_P 0x50090 ++/* [RW 28] The CM header value for QM request (secondary). */ ++#define TCM_REG_TQM_TCM_HDR_S 0x50094 ++/* [RW 1] QM - CM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_TQM_TCM_IFEN 0x50014 ++/* [RW 1] Input SDM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define TCM_REG_TSDM_IFEN 0x50018 ++/* [RC 1] Message length mismatch (relative to last indication) at the SDM ++ interface. */ ++#define TCM_REG_TSDM_LENGTH_MIS 0x50164 ++/* [RW 3] The weight of the SDM input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_TSDM_WEIGHT 0x500c4 ++/* [RW 1] Input usem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define TCM_REG_USEM_IFEN 0x50028 ++/* [RC 1] Message length mismatch (relative to last indication) at the In#8 ++ interface. */ ++#define TCM_REG_USEM_LENGTH_MIS 0x50170 ++/* [RW 3] The weight of the input usem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define TCM_REG_USEM_WEIGHT 0x500b8 ++/* [RW 21] Indirect access to the descriptor table of the XX protection ++ mechanism. The fields are: [5:0] - length of the message; 15:6] - message ++ pointer; 20:16] - next pointer. */ ++#define TCM_REG_XX_DESCR_TABLE 0x50280 ++#define TCM_REG_XX_DESCR_TABLE_SIZE 32 ++/* [R 6] Use to read the value of XX protection Free counter. */ ++#define TCM_REG_XX_FREE 0x50178 ++/* [RW 6] Initial value for the credit counter; responsible for fulfilling ++ of the Input Stage XX protection buffer by the XX protection pending ++ messages. Max credit available - 127.Write writes the initial credit ++ value; read returns the current value of the credit counter. Must be ++ initialized to 19 at start-up. */ ++#define TCM_REG_XX_INIT_CRD 0x50220 ++/* [RW 6] Maximum link list size (messages locked) per connection in the XX ++ protection. */ ++#define TCM_REG_XX_MAX_LL_SZ 0x50044 ++/* [RW 6] The maximum number of pending messages; which may be stored in XX ++ protection. ~tcm_registers_xx_free.xx_free is read on read. */ ++#define TCM_REG_XX_MSG_NUM 0x50224 ++/* [RW 8] The Event ID; sent to the STORM in case of XX overflow. */ ++#define TCM_REG_XX_OVFL_EVNT_ID 0x50048 ++/* [RW 16] Indirect access to the XX table of the XX protection mechanism. ++ The fields are:[4:0] - tail pointer; [10:5] - Link List size; 15:11] - ++ header pointer. */ ++#define TCM_REG_XX_TABLE 0x50240 ++/* [RW 4] Load value for for cfc ac credit cnt. */ ++#define TM_REG_CFC_AC_CRDCNT_VAL 0x164208 ++/* [RW 4] Load value for cfc cld credit cnt. */ ++#define TM_REG_CFC_CLD_CRDCNT_VAL 0x164210 ++/* [RW 8] Client0 context region. */ ++#define TM_REG_CL0_CONT_REGION 0x164030 ++/* [RW 8] Client1 context region. */ ++#define TM_REG_CL1_CONT_REGION 0x164034 ++/* [RW 8] Client2 context region. */ ++#define TM_REG_CL2_CONT_REGION 0x164038 ++/* [RW 2] Client in High priority client number. */ ++#define TM_REG_CLIN_PRIOR0_CLIENT 0x164024 ++/* [RW 4] Load value for clout0 cred cnt. */ ++#define TM_REG_CLOUT_CRDCNT0_VAL 0x164220 ++/* [RW 4] Load value for clout1 cred cnt. */ ++#define TM_REG_CLOUT_CRDCNT1_VAL 0x164228 ++/* [RW 4] Load value for clout2 cred cnt. */ ++#define TM_REG_CLOUT_CRDCNT2_VAL 0x164230 ++/* [RW 1] Enable client0 input. */ ++#define TM_REG_EN_CL0_INPUT 0x164008 ++/* [RW 1] Enable client1 input. */ ++#define TM_REG_EN_CL1_INPUT 0x16400c ++/* [RW 1] Enable client2 input. */ ++#define TM_REG_EN_CL2_INPUT 0x164010 ++#define TM_REG_EN_LINEAR0_TIMER 0x164014 ++/* [RW 1] Enable real time counter. */ ++#define TM_REG_EN_REAL_TIME_CNT 0x1640d8 ++/* [RW 1] Enable for Timers state machines. */ ++#define TM_REG_EN_TIMERS 0x164000 ++/* [RW 4] Load value for expiration credit cnt. CFC max number of ++ outstanding load requests for timers (expiration) context loading. */ ++#define TM_REG_EXP_CRDCNT_VAL 0x164238 ++/* [RW 32] Linear0 logic address. */ ++#define TM_REG_LIN0_LOGIC_ADDR 0x164240 ++/* [RW 18] Linear0 Max active cid (in banks of 32 entries). */ ++#define TM_REG_LIN0_MAX_ACTIVE_CID 0x164048 ++/* [WB 64] Linear0 phy address. */ ++#define TM_REG_LIN0_PHY_ADDR 0x164270 ++/* [RW 1] Linear0 physical address valid. */ ++#define TM_REG_LIN0_PHY_ADDR_VALID 0x164248 ++#define TM_REG_LIN0_SCAN_ON 0x1640d0 ++/* [RW 24] Linear0 array scan timeout. */ ++#define TM_REG_LIN0_SCAN_TIME 0x16403c ++/* [RW 32] Linear1 logic address. */ ++#define TM_REG_LIN1_LOGIC_ADDR 0x164250 ++/* [WB 64] Linear1 phy address. */ ++#define TM_REG_LIN1_PHY_ADDR 0x164280 ++/* [RW 1] Linear1 physical address valid. */ ++#define TM_REG_LIN1_PHY_ADDR_VALID 0x164258 ++/* [RW 6] Linear timer set_clear fifo threshold. */ ++#define TM_REG_LIN_SETCLR_FIFO_ALFULL_THR 0x164070 ++/* [RW 2] Load value for pci arbiter credit cnt. */ ++#define TM_REG_PCIARB_CRDCNT_VAL 0x164260 ++/* [RW 20] The amount of hardware cycles for each timer tick. */ ++#define TM_REG_TIMER_TICK_SIZE 0x16401c ++/* [RW 8] Timers Context region. */ ++#define TM_REG_TM_CONTEXT_REGION 0x164044 ++/* [RW 1] Interrupt mask register #0 read/write */ ++#define TM_REG_TM_INT_MASK 0x1640fc ++/* [R 1] Interrupt register #0 read */ ++#define TM_REG_TM_INT_STS 0x1640f0 ++/* [RW 8] The event id for aggregated interrupt 0 */ ++#define TSDM_REG_AGG_INT_EVENT_0 0x42038 ++#define TSDM_REG_AGG_INT_EVENT_1 0x4203c ++#define TSDM_REG_AGG_INT_EVENT_2 0x42040 ++#define TSDM_REG_AGG_INT_EVENT_3 0x42044 ++#define TSDM_REG_AGG_INT_EVENT_4 0x42048 ++/* [RW 1] The T bit for aggregated interrupt 0 */ ++#define TSDM_REG_AGG_INT_T_0 0x420b8 ++#define TSDM_REG_AGG_INT_T_1 0x420bc ++/* [RW 13] The start address in the internal RAM for the cfc_rsp lcid */ ++#define TSDM_REG_CFC_RSP_START_ADDR 0x42008 ++/* [RW 16] The maximum value of the competion counter #0 */ ++#define TSDM_REG_CMP_COUNTER_MAX0 0x4201c ++/* [RW 16] The maximum value of the competion counter #1 */ ++#define TSDM_REG_CMP_COUNTER_MAX1 0x42020 ++/* [RW 16] The maximum value of the competion counter #2 */ ++#define TSDM_REG_CMP_COUNTER_MAX2 0x42024 ++/* [RW 16] The maximum value of the competion counter #3 */ ++#define TSDM_REG_CMP_COUNTER_MAX3 0x42028 ++/* [RW 13] The start address in the internal RAM for the completion ++ counters. */ ++#define TSDM_REG_CMP_COUNTER_START_ADDR 0x4200c ++#define TSDM_REG_ENABLE_IN1 0x42238 ++#define TSDM_REG_ENABLE_IN2 0x4223c ++#define TSDM_REG_ENABLE_OUT1 0x42240 ++#define TSDM_REG_ENABLE_OUT2 0x42244 ++/* [RW 4] The initial number of messages that can be sent to the pxp control ++ interface without receiving any ACK. */ ++#define TSDM_REG_INIT_CREDIT_PXP_CTRL 0x424bc ++/* [ST 32] The number of ACK after placement messages received */ ++#define TSDM_REG_NUM_OF_ACK_AFTER_PLACE 0x4227c ++/* [ST 32] The number of packet end messages received from the parser */ ++#define TSDM_REG_NUM_OF_PKT_END_MSG 0x42274 ++/* [ST 32] The number of requests received from the pxp async if */ ++#define TSDM_REG_NUM_OF_PXP_ASYNC_REQ 0x42278 ++/* [ST 32] The number of commands received in queue 0 */ ++#define TSDM_REG_NUM_OF_Q0_CMD 0x42248 ++/* [ST 32] The number of commands received in queue 10 */ ++#define TSDM_REG_NUM_OF_Q10_CMD 0x4226c ++/* [ST 32] The number of commands received in queue 11 */ ++#define TSDM_REG_NUM_OF_Q11_CMD 0x42270 ++/* [ST 32] The number of commands received in queue 1 */ ++#define TSDM_REG_NUM_OF_Q1_CMD 0x4224c ++/* [ST 32] The number of commands received in queue 3 */ ++#define TSDM_REG_NUM_OF_Q3_CMD 0x42250 ++/* [ST 32] The number of commands received in queue 4 */ ++#define TSDM_REG_NUM_OF_Q4_CMD 0x42254 ++/* [ST 32] The number of commands received in queue 5 */ ++#define TSDM_REG_NUM_OF_Q5_CMD 0x42258 ++/* [ST 32] The number of commands received in queue 6 */ ++#define TSDM_REG_NUM_OF_Q6_CMD 0x4225c ++/* [ST 32] The number of commands received in queue 7 */ ++#define TSDM_REG_NUM_OF_Q7_CMD 0x42260 ++/* [ST 32] The number of commands received in queue 8 */ ++#define TSDM_REG_NUM_OF_Q8_CMD 0x42264 ++/* [ST 32] The number of commands received in queue 9 */ ++#define TSDM_REG_NUM_OF_Q9_CMD 0x42268 ++/* [RW 13] The start address in the internal RAM for the packet end message */ ++#define TSDM_REG_PCK_END_MSG_START_ADDR 0x42014 ++/* [RW 13] The start address in the internal RAM for queue counters */ ++#define TSDM_REG_Q_COUNTER_START_ADDR 0x42010 ++/* [R 1] pxp_ctrl rd_data fifo empty in sdm_dma_rsp block */ ++#define TSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY 0x42548 ++/* [R 1] parser fifo empty in sdm_sync block */ ++#define TSDM_REG_SYNC_PARSER_EMPTY 0x42550 ++/* [R 1] parser serial fifo empty in sdm_sync block */ ++#define TSDM_REG_SYNC_SYNC_EMPTY 0x42558 ++/* [RW 32] Tick for timer counter. Applicable only when ++ ~tsdm_registers_timer_tick_enable.timer_tick_enable =1 */ ++#define TSDM_REG_TIMER_TICK 0x42000 ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define TSDM_REG_TSDM_INT_MASK_0 0x4229c ++#define TSDM_REG_TSDM_INT_MASK_1 0x422ac ++/* [R 32] Interrupt register #0 read */ ++#define TSDM_REG_TSDM_INT_STS_0 0x42290 ++#define TSDM_REG_TSDM_INT_STS_1 0x422a0 ++/* [RW 11] Parity mask register #0 read/write */ ++#define TSDM_REG_TSDM_PRTY_MASK 0x422bc ++/* [R 11] Parity register #0 read */ ++#define TSDM_REG_TSDM_PRTY_STS 0x422b0 ++/* [RW 5] The number of time_slots in the arbitration cycle */ ++#define TSEM_REG_ARB_CYCLE_SIZE 0x180034 ++/* [RW 3] The source that is associated with arbitration element 0. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2 */ ++#define TSEM_REG_ARB_ELEMENT0 0x180020 ++/* [RW 3] The source that is associated with arbitration element 1. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~tsem_registers_arb_element0.arb_element0 */ ++#define TSEM_REG_ARB_ELEMENT1 0x180024 ++/* [RW 3] The source that is associated with arbitration element 2. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~tsem_registers_arb_element0.arb_element0 ++ and ~tsem_registers_arb_element1.arb_element1 */ ++#define TSEM_REG_ARB_ELEMENT2 0x180028 ++/* [RW 3] The source that is associated with arbitration element 3. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2.Could ++ not be equal to register ~tsem_registers_arb_element0.arb_element0 and ++ ~tsem_registers_arb_element1.arb_element1 and ++ ~tsem_registers_arb_element2.arb_element2 */ ++#define TSEM_REG_ARB_ELEMENT3 0x18002c ++/* [RW 3] The source that is associated with arbitration element 4. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~tsem_registers_arb_element0.arb_element0 ++ and ~tsem_registers_arb_element1.arb_element1 and ++ ~tsem_registers_arb_element2.arb_element2 and ++ ~tsem_registers_arb_element3.arb_element3 */ ++#define TSEM_REG_ARB_ELEMENT4 0x180030 ++#define TSEM_REG_ENABLE_IN 0x1800a4 ++#define TSEM_REG_ENABLE_OUT 0x1800a8 ++/* [RW 32] This address space contains all registers and memories that are ++ placed in SEM_FAST block. The SEM_FAST registers are described in ++ appendix B. In order to access the sem_fast registers the base address ++ ~fast_memory.fast_memory should be added to eachsem_fast register offset. */ ++#define TSEM_REG_FAST_MEMORY 0x1a0000 ++/* [RW 1] Disables input messages from FIC0 May be updated during run_time ++ by the microcode */ ++#define TSEM_REG_FIC0_DISABLE 0x180224 ++/* [RW 1] Disables input messages from FIC1 May be updated during run_time ++ by the microcode */ ++#define TSEM_REG_FIC1_DISABLE 0x180234 ++/* [RW 15] Interrupt table Read and write access to it is not possible in ++ the middle of the work */ ++#define TSEM_REG_INT_TABLE 0x180400 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC0 */ ++#define TSEM_REG_MSG_NUM_FIC0 0x180000 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC1 */ ++#define TSEM_REG_MSG_NUM_FIC1 0x180004 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC0 */ ++#define TSEM_REG_MSG_NUM_FOC0 0x180008 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC1 */ ++#define TSEM_REG_MSG_NUM_FOC1 0x18000c ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC2 */ ++#define TSEM_REG_MSG_NUM_FOC2 0x180010 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC3 */ ++#define TSEM_REG_MSG_NUM_FOC3 0x180014 ++/* [RW 1] Disables input messages from the passive buffer May be updated ++ during run_time by the microcode */ ++#define TSEM_REG_PAS_DISABLE 0x18024c ++/* [WB 128] Debug only. Passive buffer memory */ ++#define TSEM_REG_PASSIVE_BUFFER 0x181000 ++/* [WB 46] pram memory. B45 is parity; b[44:0] - data. */ ++#define TSEM_REG_PRAM 0x1c0000 ++/* [R 8] Valid sleeping threads indication have bit per thread */ ++#define TSEM_REG_SLEEP_THREADS_VALID 0x18026c ++/* [R 1] EXT_STORE FIFO is empty in sem_slow_ls_ext */ ++#define TSEM_REG_SLOW_EXT_STORE_EMPTY 0x1802a0 ++/* [RW 8] List of free threads . There is a bit per thread. */ ++#define TSEM_REG_THREADS_LIST 0x1802e4 ++/* [RW 3] The arbitration scheme of time_slot 0 */ ++#define TSEM_REG_TS_0_AS 0x180038 ++/* [RW 3] The arbitration scheme of time_slot 10 */ ++#define TSEM_REG_TS_10_AS 0x180060 ++/* [RW 3] The arbitration scheme of time_slot 11 */ ++#define TSEM_REG_TS_11_AS 0x180064 ++/* [RW 3] The arbitration scheme of time_slot 12 */ ++#define TSEM_REG_TS_12_AS 0x180068 ++/* [RW 3] The arbitration scheme of time_slot 13 */ ++#define TSEM_REG_TS_13_AS 0x18006c ++/* [RW 3] The arbitration scheme of time_slot 14 */ ++#define TSEM_REG_TS_14_AS 0x180070 ++/* [RW 3] The arbitration scheme of time_slot 15 */ ++#define TSEM_REG_TS_15_AS 0x180074 ++/* [RW 3] The arbitration scheme of time_slot 16 */ ++#define TSEM_REG_TS_16_AS 0x180078 ++/* [RW 3] The arbitration scheme of time_slot 17 */ ++#define TSEM_REG_TS_17_AS 0x18007c ++/* [RW 3] The arbitration scheme of time_slot 18 */ ++#define TSEM_REG_TS_18_AS 0x180080 ++/* [RW 3] The arbitration scheme of time_slot 1 */ ++#define TSEM_REG_TS_1_AS 0x18003c ++/* [RW 3] The arbitration scheme of time_slot 2 */ ++#define TSEM_REG_TS_2_AS 0x180040 ++/* [RW 3] The arbitration scheme of time_slot 3 */ ++#define TSEM_REG_TS_3_AS 0x180044 ++/* [RW 3] The arbitration scheme of time_slot 4 */ ++#define TSEM_REG_TS_4_AS 0x180048 ++/* [RW 3] The arbitration scheme of time_slot 5 */ ++#define TSEM_REG_TS_5_AS 0x18004c ++/* [RW 3] The arbitration scheme of time_slot 6 */ ++#define TSEM_REG_TS_6_AS 0x180050 ++/* [RW 3] The arbitration scheme of time_slot 7 */ ++#define TSEM_REG_TS_7_AS 0x180054 ++/* [RW 3] The arbitration scheme of time_slot 8 */ ++#define TSEM_REG_TS_8_AS 0x180058 ++/* [RW 3] The arbitration scheme of time_slot 9 */ ++#define TSEM_REG_TS_9_AS 0x18005c ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define TSEM_REG_TSEM_INT_MASK_0 0x180100 ++#define TSEM_REG_TSEM_INT_MASK_1 0x180110 ++/* [R 32] Interrupt register #0 read */ ++#define TSEM_REG_TSEM_INT_STS_0 0x1800f4 ++#define TSEM_REG_TSEM_INT_STS_1 0x180104 ++/* [RW 32] Parity mask register #0 read/write */ ++#define TSEM_REG_TSEM_PRTY_MASK_0 0x180120 ++#define TSEM_REG_TSEM_PRTY_MASK_1 0x180130 ++/* [R 32] Parity register #0 read */ ++#define TSEM_REG_TSEM_PRTY_STS_0 0x180114 ++#define TSEM_REG_TSEM_PRTY_STS_1 0x180124 ++/* [R 5] Used to read the XX protection CAM occupancy counter. */ ++#define UCM_REG_CAM_OCCUP 0xe0170 ++/* [RW 1] CDU AG read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define UCM_REG_CDU_AG_RD_IFEN 0xe0038 ++/* [RW 1] CDU AG write Interface enable. If 0 - the request and valid input ++ are disregarded; all other signals are treated as usual; if 1 - normal ++ activity. */ ++#define UCM_REG_CDU_AG_WR_IFEN 0xe0034 ++/* [RW 1] CDU STORM read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define UCM_REG_CDU_SM_RD_IFEN 0xe0040 ++/* [RW 1] CDU STORM write Interface enable. If 0 - the request and valid ++ input is disregarded; all other signals are treated as usual; if 1 - ++ normal activity. */ ++#define UCM_REG_CDU_SM_WR_IFEN 0xe003c ++/* [RW 4] CFC output initial credit. Max credit available - 15.Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 1 at start-up. */ ++#define UCM_REG_CFC_INIT_CRD 0xe0204 ++/* [RW 3] The weight of the CP input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_CP_WEIGHT 0xe00c4 ++/* [RW 1] Input csem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define UCM_REG_CSEM_IFEN 0xe0028 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the csem interface is detected. */ ++#define UCM_REG_CSEM_LENGTH_MIS 0xe0160 ++/* [RW 3] The weight of the input csem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_CSEM_WEIGHT 0xe00b8 ++/* [RW 1] Input dorq Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define UCM_REG_DORQ_IFEN 0xe0030 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the dorq interface is detected. */ ++#define UCM_REG_DORQ_LENGTH_MIS 0xe0168 ++/* [RW 3] The weight of the input dorq in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_DORQ_WEIGHT 0xe00c0 ++/* [RW 8] The Event ID in case ErrorFlg input message bit is set. */ ++#define UCM_REG_ERR_EVNT_ID 0xe00a4 ++/* [RW 28] The CM erroneous header for QM and Timers formatting. */ ++#define UCM_REG_ERR_UCM_HDR 0xe00a0 ++/* [RW 8] The Event ID for Timers expiration. */ ++#define UCM_REG_EXPR_EVNT_ID 0xe00a8 ++/* [RW 8] FIC0 output initial credit. Max credit available - 255.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define UCM_REG_FIC0_INIT_CRD 0xe020c ++/* [RW 8] FIC1 output initial credit. Max credit available - 255.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define UCM_REG_FIC1_INIT_CRD 0xe0210 ++/* [RW 1] Arbitration between Input Arbiter groups: 0 - fair Round-Robin; 1 ++ - strict priority defined by ~ucm_registers_gr_ag_pr.gr_ag_pr; ++ ~ucm_registers_gr_ld0_pr.gr_ld0_pr and ++ ~ucm_registers_gr_ld1_pr.gr_ld1_pr. */ ++#define UCM_REG_GR_ARB_TYPE 0xe0144 ++/* [RW 2] Load (FIC0) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed that the Store channel group is ++ compliment to the others. */ ++#define UCM_REG_GR_LD0_PR 0xe014c ++/* [RW 2] Load (FIC1) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed that the Store channel group is ++ compliment to the others. */ ++#define UCM_REG_GR_LD1_PR 0xe0150 ++/* [RW 2] The queue index for invalidate counter flag decision. */ ++#define UCM_REG_INV_CFLG_Q 0xe00e4 ++/* [RW 5] The number of double REG-pairs; loaded from the STORM context and ++ sent to STORM; for a specific connection type. the double REG-pairs are ++ used in order to align to STORM context row size of 128 bits. The offset ++ of these data in the STORM context is always 0. Index _i stands for the ++ connection type (one of 16). */ ++#define UCM_REG_N_SM_CTX_LD_0 0xe0054 ++#define UCM_REG_N_SM_CTX_LD_1 0xe0058 ++#define UCM_REG_N_SM_CTX_LD_2 0xe005c ++#define UCM_REG_N_SM_CTX_LD_3 0xe0060 ++#define UCM_REG_N_SM_CTX_LD_4 0xe0064 ++#define UCM_REG_N_SM_CTX_LD_5 0xe0068 ++#define UCM_REG_PHYS_QNUM0_0 0xe0110 ++#define UCM_REG_PHYS_QNUM0_1 0xe0114 ++#define UCM_REG_PHYS_QNUM1_0 0xe0118 ++#define UCM_REG_PHYS_QNUM1_1 0xe011c ++#define UCM_REG_PHYS_QNUM2_0 0xe0120 ++#define UCM_REG_PHYS_QNUM2_1 0xe0124 ++#define UCM_REG_PHYS_QNUM3_0 0xe0128 ++#define UCM_REG_PHYS_QNUM3_1 0xe012c ++/* [RW 8] The Event ID for Timers formatting in case of stop done. */ ++#define UCM_REG_STOP_EVNT_ID 0xe00ac ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the STORM interface is detected. */ ++#define UCM_REG_STORM_LENGTH_MIS 0xe0154 ++/* [RW 1] STORM - CM Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define UCM_REG_STORM_UCM_IFEN 0xe0010 ++/* [RW 3] The weight of the STORM input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_STORM_WEIGHT 0xe00b0 ++/* [RW 4] Timers output initial credit. Max credit available - 15.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 4 at start-up. */ ++#define UCM_REG_TM_INIT_CRD 0xe021c ++/* [RW 28] The CM header for Timers expiration command. */ ++#define UCM_REG_TM_UCM_HDR 0xe009c ++/* [RW 1] Timers - CM Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define UCM_REG_TM_UCM_IFEN 0xe001c ++/* [RW 3] The weight of the Timers input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_TM_WEIGHT 0xe00d4 ++/* [RW 1] Input tsem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define UCM_REG_TSEM_IFEN 0xe0024 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the tsem interface is detected. */ ++#define UCM_REG_TSEM_LENGTH_MIS 0xe015c ++/* [RW 3] The weight of the input tsem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_TSEM_WEIGHT 0xe00b4 ++/* [RW 1] CM - CFC Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define UCM_REG_UCM_CFC_IFEN 0xe0044 ++/* [RW 11] Interrupt mask register #0 read/write */ ++#define UCM_REG_UCM_INT_MASK 0xe01d4 ++/* [R 11] Interrupt register #0 read */ ++#define UCM_REG_UCM_INT_STS 0xe01c8 ++/* [R 27] Parity register #0 read */ ++#define UCM_REG_UCM_PRTY_STS 0xe01d8 ++/* [RW 2] The size of AG context region 0 in REG-pairs. Designates the MS ++ REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5). ++ Is used to determine the number of the AG context REG-pairs written back; ++ when the Reg1WbFlg isn't set. */ ++#define UCM_REG_UCM_REG0_SZ 0xe00dc ++/* [RW 1] CM - STORM 0 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define UCM_REG_UCM_STORM0_IFEN 0xe0004 ++/* [RW 1] CM - STORM 1 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define UCM_REG_UCM_STORM1_IFEN 0xe0008 ++/* [RW 1] CM - Timers Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define UCM_REG_UCM_TM_IFEN 0xe0020 ++/* [RW 1] CM - QM Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define UCM_REG_UCM_UQM_IFEN 0xe000c ++/* [RW 1] If set the Q index; received from the QM is inserted to event ID. */ ++#define UCM_REG_UCM_UQM_USE_Q 0xe00d8 ++/* [RW 6] QM output initial credit. Max credit available - 32.Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 32 at start-up. */ ++#define UCM_REG_UQM_INIT_CRD 0xe0220 ++/* [RW 3] The weight of the QM (primary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_UQM_P_WEIGHT 0xe00cc ++/* [RW 3] The weight of the QM (secondary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_UQM_S_WEIGHT 0xe00d0 ++/* [RW 28] The CM header value for QM request (primary). */ ++#define UCM_REG_UQM_UCM_HDR_P 0xe0094 ++/* [RW 28] The CM header value for QM request (secondary). */ ++#define UCM_REG_UQM_UCM_HDR_S 0xe0098 ++/* [RW 1] QM - CM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define UCM_REG_UQM_UCM_IFEN 0xe0014 ++/* [RW 1] Input SDM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define UCM_REG_USDM_IFEN 0xe0018 ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the SDM interface is detected. */ ++#define UCM_REG_USDM_LENGTH_MIS 0xe0158 ++/* [RW 3] The weight of the SDM input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_USDM_WEIGHT 0xe00c8 ++/* [RW 1] Input xsem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define UCM_REG_XSEM_IFEN 0xe002c ++/* [RC 1] Set when the message length mismatch (relative to last indication) ++ at the xsem interface isdetected. */ ++#define UCM_REG_XSEM_LENGTH_MIS 0xe0164 ++/* [RW 3] The weight of the input xsem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define UCM_REG_XSEM_WEIGHT 0xe00bc ++/* [RW 20] Indirect access to the descriptor table of the XX protection ++ mechanism. The fields are:[5:0] - message length; 14:6] - message ++ pointer; 19:15] - next pointer. */ ++#define UCM_REG_XX_DESCR_TABLE 0xe0280 ++#define UCM_REG_XX_DESCR_TABLE_SIZE 32 ++/* [R 6] Use to read the XX protection Free counter. */ ++#define UCM_REG_XX_FREE 0xe016c ++/* [RW 6] Initial value for the credit counter; responsible for fulfilling ++ of the Input Stage XX protection buffer by the XX protection pending ++ messages. Write writes the initial credit value; read returns the current ++ value of the credit counter. Must be initialized to 12 at start-up. */ ++#define UCM_REG_XX_INIT_CRD 0xe0224 ++/* [RW 6] The maximum number of pending messages; which may be stored in XX ++ protection. ~ucm_registers_xx_free.xx_free read on read. */ ++#define UCM_REG_XX_MSG_NUM 0xe0228 ++/* [RW 8] The Event ID; sent to the STORM in case of XX overflow. */ ++#define UCM_REG_XX_OVFL_EVNT_ID 0xe004c ++/* [RW 16] Indirect access to the XX table of the XX protection mechanism. ++ The fields are: [4:0] - tail pointer; 10:5] - Link List size; 15:11] - ++ header pointer. */ ++#define UCM_REG_XX_TABLE 0xe0300 ++/* [RW 8] The event id for aggregated interrupt 0 */ ++#define USDM_REG_AGG_INT_EVENT_0 0xc4038 ++#define USDM_REG_AGG_INT_EVENT_1 0xc403c ++#define USDM_REG_AGG_INT_EVENT_2 0xc4040 ++#define USDM_REG_AGG_INT_EVENT_4 0xc4048 ++#define USDM_REG_AGG_INT_EVENT_5 0xc404c ++#define USDM_REG_AGG_INT_EVENT_6 0xc4050 ++/* [RW 1] For each aggregated interrupt index whether the mode is normal (0) ++ or auto-mask-mode (1) */ ++#define USDM_REG_AGG_INT_MODE_0 0xc41b8 ++#define USDM_REG_AGG_INT_MODE_1 0xc41bc ++#define USDM_REG_AGG_INT_MODE_4 0xc41c8 ++#define USDM_REG_AGG_INT_MODE_5 0xc41cc ++#define USDM_REG_AGG_INT_MODE_6 0xc41d0 ++/* [RW 1] The T bit for aggregated interrupt 5 */ ++#define USDM_REG_AGG_INT_T_5 0xc40cc ++#define USDM_REG_AGG_INT_T_6 0xc40d0 ++/* [RW 13] The start address in the internal RAM for the cfc_rsp lcid */ ++#define USDM_REG_CFC_RSP_START_ADDR 0xc4008 ++/* [RW 16] The maximum value of the competion counter #0 */ ++#define USDM_REG_CMP_COUNTER_MAX0 0xc401c ++/* [RW 16] The maximum value of the competion counter #1 */ ++#define USDM_REG_CMP_COUNTER_MAX1 0xc4020 ++/* [RW 16] The maximum value of the competion counter #2 */ ++#define USDM_REG_CMP_COUNTER_MAX2 0xc4024 ++/* [RW 16] The maximum value of the competion counter #3 */ ++#define USDM_REG_CMP_COUNTER_MAX3 0xc4028 ++/* [RW 13] The start address in the internal RAM for the completion ++ counters. */ ++#define USDM_REG_CMP_COUNTER_START_ADDR 0xc400c ++#define USDM_REG_ENABLE_IN1 0xc4238 ++#define USDM_REG_ENABLE_IN2 0xc423c ++#define USDM_REG_ENABLE_OUT1 0xc4240 ++#define USDM_REG_ENABLE_OUT2 0xc4244 ++/* [RW 4] The initial number of messages that can be sent to the pxp control ++ interface without receiving any ACK. */ ++#define USDM_REG_INIT_CREDIT_PXP_CTRL 0xc44c0 ++/* [ST 32] The number of ACK after placement messages received */ ++#define USDM_REG_NUM_OF_ACK_AFTER_PLACE 0xc4280 ++/* [ST 32] The number of packet end messages received from the parser */ ++#define USDM_REG_NUM_OF_PKT_END_MSG 0xc4278 ++/* [ST 32] The number of requests received from the pxp async if */ ++#define USDM_REG_NUM_OF_PXP_ASYNC_REQ 0xc427c ++/* [ST 32] The number of commands received in queue 0 */ ++#define USDM_REG_NUM_OF_Q0_CMD 0xc4248 ++/* [ST 32] The number of commands received in queue 10 */ ++#define USDM_REG_NUM_OF_Q10_CMD 0xc4270 ++/* [ST 32] The number of commands received in queue 11 */ ++#define USDM_REG_NUM_OF_Q11_CMD 0xc4274 ++/* [ST 32] The number of commands received in queue 1 */ ++#define USDM_REG_NUM_OF_Q1_CMD 0xc424c ++/* [ST 32] The number of commands received in queue 2 */ ++#define USDM_REG_NUM_OF_Q2_CMD 0xc4250 ++/* [ST 32] The number of commands received in queue 3 */ ++#define USDM_REG_NUM_OF_Q3_CMD 0xc4254 ++/* [ST 32] The number of commands received in queue 4 */ ++#define USDM_REG_NUM_OF_Q4_CMD 0xc4258 ++/* [ST 32] The number of commands received in queue 5 */ ++#define USDM_REG_NUM_OF_Q5_CMD 0xc425c ++/* [ST 32] The number of commands received in queue 6 */ ++#define USDM_REG_NUM_OF_Q6_CMD 0xc4260 ++/* [ST 32] The number of commands received in queue 7 */ ++#define USDM_REG_NUM_OF_Q7_CMD 0xc4264 ++/* [ST 32] The number of commands received in queue 8 */ ++#define USDM_REG_NUM_OF_Q8_CMD 0xc4268 ++/* [ST 32] The number of commands received in queue 9 */ ++#define USDM_REG_NUM_OF_Q9_CMD 0xc426c ++/* [RW 13] The start address in the internal RAM for the packet end message */ ++#define USDM_REG_PCK_END_MSG_START_ADDR 0xc4014 ++/* [RW 13] The start address in the internal RAM for queue counters */ ++#define USDM_REG_Q_COUNTER_START_ADDR 0xc4010 ++/* [R 1] pxp_ctrl rd_data fifo empty in sdm_dma_rsp block */ ++#define USDM_REG_RSP_PXP_CTRL_RDATA_EMPTY 0xc4550 ++/* [R 1] parser fifo empty in sdm_sync block */ ++#define USDM_REG_SYNC_PARSER_EMPTY 0xc4558 ++/* [R 1] parser serial fifo empty in sdm_sync block */ ++#define USDM_REG_SYNC_SYNC_EMPTY 0xc4560 ++/* [RW 32] Tick for timer counter. Applicable only when ++ ~usdm_registers_timer_tick_enable.timer_tick_enable =1 */ ++#define USDM_REG_TIMER_TICK 0xc4000 ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define USDM_REG_USDM_INT_MASK_0 0xc42a0 ++#define USDM_REG_USDM_INT_MASK_1 0xc42b0 ++/* [R 32] Interrupt register #0 read */ ++#define USDM_REG_USDM_INT_STS_0 0xc4294 ++#define USDM_REG_USDM_INT_STS_1 0xc42a4 ++/* [RW 11] Parity mask register #0 read/write */ ++#define USDM_REG_USDM_PRTY_MASK 0xc42c0 ++/* [R 11] Parity register #0 read */ ++#define USDM_REG_USDM_PRTY_STS 0xc42b4 ++/* [RW 5] The number of time_slots in the arbitration cycle */ ++#define USEM_REG_ARB_CYCLE_SIZE 0x300034 ++/* [RW 3] The source that is associated with arbitration element 0. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2 */ ++#define USEM_REG_ARB_ELEMENT0 0x300020 ++/* [RW 3] The source that is associated with arbitration element 1. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~usem_registers_arb_element0.arb_element0 */ ++#define USEM_REG_ARB_ELEMENT1 0x300024 ++/* [RW 3] The source that is associated with arbitration element 2. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~usem_registers_arb_element0.arb_element0 ++ and ~usem_registers_arb_element1.arb_element1 */ ++#define USEM_REG_ARB_ELEMENT2 0x300028 ++/* [RW 3] The source that is associated with arbitration element 3. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2.Could ++ not be equal to register ~usem_registers_arb_element0.arb_element0 and ++ ~usem_registers_arb_element1.arb_element1 and ++ ~usem_registers_arb_element2.arb_element2 */ ++#define USEM_REG_ARB_ELEMENT3 0x30002c ++/* [RW 3] The source that is associated with arbitration element 4. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~usem_registers_arb_element0.arb_element0 ++ and ~usem_registers_arb_element1.arb_element1 and ++ ~usem_registers_arb_element2.arb_element2 and ++ ~usem_registers_arb_element3.arb_element3 */ ++#define USEM_REG_ARB_ELEMENT4 0x300030 ++#define USEM_REG_ENABLE_IN 0x3000a4 ++#define USEM_REG_ENABLE_OUT 0x3000a8 ++/* [RW 32] This address space contains all registers and memories that are ++ placed in SEM_FAST block. The SEM_FAST registers are described in ++ appendix B. In order to access the sem_fast registers the base address ++ ~fast_memory.fast_memory should be added to eachsem_fast register offset. */ ++#define USEM_REG_FAST_MEMORY 0x320000 ++/* [RW 1] Disables input messages from FIC0 May be updated during run_time ++ by the microcode */ ++#define USEM_REG_FIC0_DISABLE 0x300224 ++/* [RW 1] Disables input messages from FIC1 May be updated during run_time ++ by the microcode */ ++#define USEM_REG_FIC1_DISABLE 0x300234 ++/* [RW 15] Interrupt table Read and write access to it is not possible in ++ the middle of the work */ ++#define USEM_REG_INT_TABLE 0x300400 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC0 */ ++#define USEM_REG_MSG_NUM_FIC0 0x300000 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC1 */ ++#define USEM_REG_MSG_NUM_FIC1 0x300004 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC0 */ ++#define USEM_REG_MSG_NUM_FOC0 0x300008 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC1 */ ++#define USEM_REG_MSG_NUM_FOC1 0x30000c ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC2 */ ++#define USEM_REG_MSG_NUM_FOC2 0x300010 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC3 */ ++#define USEM_REG_MSG_NUM_FOC3 0x300014 ++/* [RW 1] Disables input messages from the passive buffer May be updated ++ during run_time by the microcode */ ++#define USEM_REG_PAS_DISABLE 0x30024c ++/* [WB 128] Debug only. Passive buffer memory */ ++#define USEM_REG_PASSIVE_BUFFER 0x302000 ++/* [WB 46] pram memory. B45 is parity; b[44:0] - data. */ ++#define USEM_REG_PRAM 0x340000 ++/* [R 16] Valid sleeping threads indication have bit per thread */ ++#define USEM_REG_SLEEP_THREADS_VALID 0x30026c ++/* [R 1] EXT_STORE FIFO is empty in sem_slow_ls_ext */ ++#define USEM_REG_SLOW_EXT_STORE_EMPTY 0x3002a0 ++/* [RW 16] List of free threads . There is a bit per thread. */ ++#define USEM_REG_THREADS_LIST 0x3002e4 ++/* [RW 3] The arbitration scheme of time_slot 0 */ ++#define USEM_REG_TS_0_AS 0x300038 ++/* [RW 3] The arbitration scheme of time_slot 10 */ ++#define USEM_REG_TS_10_AS 0x300060 ++/* [RW 3] The arbitration scheme of time_slot 11 */ ++#define USEM_REG_TS_11_AS 0x300064 ++/* [RW 3] The arbitration scheme of time_slot 12 */ ++#define USEM_REG_TS_12_AS 0x300068 ++/* [RW 3] The arbitration scheme of time_slot 13 */ ++#define USEM_REG_TS_13_AS 0x30006c ++/* [RW 3] The arbitration scheme of time_slot 14 */ ++#define USEM_REG_TS_14_AS 0x300070 ++/* [RW 3] The arbitration scheme of time_slot 15 */ ++#define USEM_REG_TS_15_AS 0x300074 ++/* [RW 3] The arbitration scheme of time_slot 16 */ ++#define USEM_REG_TS_16_AS 0x300078 ++/* [RW 3] The arbitration scheme of time_slot 17 */ ++#define USEM_REG_TS_17_AS 0x30007c ++/* [RW 3] The arbitration scheme of time_slot 18 */ ++#define USEM_REG_TS_18_AS 0x300080 ++/* [RW 3] The arbitration scheme of time_slot 1 */ ++#define USEM_REG_TS_1_AS 0x30003c ++/* [RW 3] The arbitration scheme of time_slot 2 */ ++#define USEM_REG_TS_2_AS 0x300040 ++/* [RW 3] The arbitration scheme of time_slot 3 */ ++#define USEM_REG_TS_3_AS 0x300044 ++/* [RW 3] The arbitration scheme of time_slot 4 */ ++#define USEM_REG_TS_4_AS 0x300048 ++/* [RW 3] The arbitration scheme of time_slot 5 */ ++#define USEM_REG_TS_5_AS 0x30004c ++/* [RW 3] The arbitration scheme of time_slot 6 */ ++#define USEM_REG_TS_6_AS 0x300050 ++/* [RW 3] The arbitration scheme of time_slot 7 */ ++#define USEM_REG_TS_7_AS 0x300054 ++/* [RW 3] The arbitration scheme of time_slot 8 */ ++#define USEM_REG_TS_8_AS 0x300058 ++/* [RW 3] The arbitration scheme of time_slot 9 */ ++#define USEM_REG_TS_9_AS 0x30005c ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define USEM_REG_USEM_INT_MASK_0 0x300110 ++#define USEM_REG_USEM_INT_MASK_1 0x300120 ++/* [R 32] Interrupt register #0 read */ ++#define USEM_REG_USEM_INT_STS_0 0x300104 ++#define USEM_REG_USEM_INT_STS_1 0x300114 ++/* [RW 32] Parity mask register #0 read/write */ ++#define USEM_REG_USEM_PRTY_MASK_0 0x300130 ++#define USEM_REG_USEM_PRTY_MASK_1 0x300140 ++/* [R 32] Parity register #0 read */ ++#define USEM_REG_USEM_PRTY_STS_0 0x300124 ++#define USEM_REG_USEM_PRTY_STS_1 0x300134 ++/* [RW 2] The queue index for registration on Aux1 counter flag. */ ++#define XCM_REG_AUX1_Q 0x20134 ++/* [RW 2] Per each decision rule the queue index to register to. */ ++#define XCM_REG_AUX_CNT_FLG_Q_19 0x201b0 ++/* [R 5] Used to read the XX protection CAM occupancy counter. */ ++#define XCM_REG_CAM_OCCUP 0x20244 ++/* [RW 1] CDU AG read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define XCM_REG_CDU_AG_RD_IFEN 0x20044 ++/* [RW 1] CDU AG write Interface enable. If 0 - the request and valid input ++ are disregarded; all other signals are treated as usual; if 1 - normal ++ activity. */ ++#define XCM_REG_CDU_AG_WR_IFEN 0x20040 ++/* [RW 1] CDU STORM read Interface enable. If 0 - the request input is ++ disregarded; valid output is deasserted; all other signals are treated as ++ usual; if 1 - normal activity. */ ++#define XCM_REG_CDU_SM_RD_IFEN 0x2004c ++/* [RW 1] CDU STORM write Interface enable. If 0 - the request and valid ++ input is disregarded; all other signals are treated as usual; if 1 - ++ normal activity. */ ++#define XCM_REG_CDU_SM_WR_IFEN 0x20048 ++/* [RW 4] CFC output initial credit. Max credit available - 15.Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 1 at start-up. */ ++#define XCM_REG_CFC_INIT_CRD 0x20404 ++/* [RW 3] The weight of the CP input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_CP_WEIGHT 0x200dc ++/* [RW 1] Input csem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_CSEM_IFEN 0x20028 ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the csem interface. */ ++#define XCM_REG_CSEM_LENGTH_MIS 0x20228 ++/* [RW 3] The weight of the input csem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_CSEM_WEIGHT 0x200c4 ++/* [RW 1] Input dorq Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_DORQ_IFEN 0x20030 ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the dorq interface. */ ++#define XCM_REG_DORQ_LENGTH_MIS 0x20230 ++/* [RW 3] The weight of the input dorq in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_DORQ_WEIGHT 0x200cc ++/* [RW 8] The Event ID in case the ErrorFlg input message bit is set. */ ++#define XCM_REG_ERR_EVNT_ID 0x200b0 ++/* [RW 28] The CM erroneous header for QM and Timers formatting. */ ++#define XCM_REG_ERR_XCM_HDR 0x200ac ++/* [RW 8] The Event ID for Timers expiration. */ ++#define XCM_REG_EXPR_EVNT_ID 0x200b4 ++/* [RW 8] FIC0 output initial credit. Max credit available - 255.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define XCM_REG_FIC0_INIT_CRD 0x2040c ++/* [RW 8] FIC1 output initial credit. Max credit available - 255.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 64 at start-up. */ ++#define XCM_REG_FIC1_INIT_CRD 0x20410 ++#define XCM_REG_GLB_DEL_ACK_MAX_CNT_0 0x20118 ++#define XCM_REG_GLB_DEL_ACK_MAX_CNT_1 0x2011c ++#define XCM_REG_GLB_DEL_ACK_TMR_VAL_0 0x20108 ++#define XCM_REG_GLB_DEL_ACK_TMR_VAL_1 0x2010c ++/* [RW 1] Arbitratiojn between Input Arbiter groups: 0 - fair Round-Robin; 1 ++ - strict priority defined by ~xcm_registers_gr_ag_pr.gr_ag_pr; ++ ~xcm_registers_gr_ld0_pr.gr_ld0_pr and ++ ~xcm_registers_gr_ld1_pr.gr_ld1_pr. */ ++#define XCM_REG_GR_ARB_TYPE 0x2020c ++/* [RW 2] Load (FIC0) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed that the Channel group is the ++ compliment of the other 3 groups. */ ++#define XCM_REG_GR_LD0_PR 0x20214 ++/* [RW 2] Load (FIC1) channel group priority. The lowest priority is 0; the ++ highest priority is 3. It is supposed that the Channel group is the ++ compliment of the other 3 groups. */ ++#define XCM_REG_GR_LD1_PR 0x20218 ++/* [RW 1] Input nig0 Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_NIG0_IFEN 0x20038 ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the nig0 interface. */ ++#define XCM_REG_NIG0_LENGTH_MIS 0x20238 ++/* [RW 3] The weight of the input nig0 in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_NIG0_WEIGHT 0x200d4 ++/* [RW 1] Input nig1 Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_NIG1_IFEN 0x2003c ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the nig1 interface. */ ++#define XCM_REG_NIG1_LENGTH_MIS 0x2023c ++/* [RW 5] The number of double REG-pairs; loaded from the STORM context and ++ sent to STORM; for a specific connection type. The double REG-pairs are ++ used in order to align to STORM context row size of 128 bits. The offset ++ of these data in the STORM context is always 0. Index _i stands for the ++ connection type (one of 16). */ ++#define XCM_REG_N_SM_CTX_LD_0 0x20060 ++#define XCM_REG_N_SM_CTX_LD_1 0x20064 ++#define XCM_REG_N_SM_CTX_LD_2 0x20068 ++#define XCM_REG_N_SM_CTX_LD_3 0x2006c ++#define XCM_REG_N_SM_CTX_LD_4 0x20070 ++#define XCM_REG_N_SM_CTX_LD_5 0x20074 ++/* [RW 1] Input pbf Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define XCM_REG_PBF_IFEN 0x20034 ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the pbf interface. */ ++#define XCM_REG_PBF_LENGTH_MIS 0x20234 ++/* [RW 3] The weight of the input pbf in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_PBF_WEIGHT 0x200d0 ++#define XCM_REG_PHYS_QNUM3_0 0x20100 ++#define XCM_REG_PHYS_QNUM3_1 0x20104 ++/* [RW 8] The Event ID for Timers formatting in case of stop done. */ ++#define XCM_REG_STOP_EVNT_ID 0x200b8 ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the STORM interface. */ ++#define XCM_REG_STORM_LENGTH_MIS 0x2021c ++/* [RW 3] The weight of the STORM input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_STORM_WEIGHT 0x200bc ++/* [RW 1] STORM - CM Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_STORM_XCM_IFEN 0x20010 ++/* [RW 4] Timers output initial credit. Max credit available - 15.Write ++ writes the initial credit value; read returns the current value of the ++ credit counter. Must be initialized to 4 at start-up. */ ++#define XCM_REG_TM_INIT_CRD 0x2041c ++/* [RW 3] The weight of the Timers input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_TM_WEIGHT 0x200ec ++/* [RW 28] The CM header for Timers expiration command. */ ++#define XCM_REG_TM_XCM_HDR 0x200a8 ++/* [RW 1] Timers - CM Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_TM_XCM_IFEN 0x2001c ++/* [RW 1] Input tsem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_TSEM_IFEN 0x20024 ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the tsem interface. */ ++#define XCM_REG_TSEM_LENGTH_MIS 0x20224 ++/* [RW 3] The weight of the input tsem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_TSEM_WEIGHT 0x200c0 ++/* [RW 2] The queue index for registration on UNA greater NXT decision rule. */ ++#define XCM_REG_UNA_GT_NXT_Q 0x20120 ++/* [RW 1] Input usem Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_USEM_IFEN 0x2002c ++/* [RC 1] Message length mismatch (relative to last indication) at the usem ++ interface. */ ++#define XCM_REG_USEM_LENGTH_MIS 0x2022c ++/* [RW 3] The weight of the input usem in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_USEM_WEIGHT 0x200c8 ++#define XCM_REG_WU_DA_CNT_CMD00 0x201d4 ++#define XCM_REG_WU_DA_CNT_CMD01 0x201d8 ++#define XCM_REG_WU_DA_CNT_CMD10 0x201dc ++#define XCM_REG_WU_DA_CNT_CMD11 0x201e0 ++#define XCM_REG_WU_DA_CNT_UPD_VAL00 0x201e4 ++#define XCM_REG_WU_DA_CNT_UPD_VAL01 0x201e8 ++#define XCM_REG_WU_DA_CNT_UPD_VAL10 0x201ec ++#define XCM_REG_WU_DA_CNT_UPD_VAL11 0x201f0 ++#define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00 0x201c4 ++#define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01 0x201c8 ++#define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10 0x201cc ++#define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11 0x201d0 ++/* [RW 1] CM - CFC Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define XCM_REG_XCM_CFC_IFEN 0x20050 ++/* [RW 14] Interrupt mask register #0 read/write */ ++#define XCM_REG_XCM_INT_MASK 0x202b4 ++/* [R 14] Interrupt register #0 read */ ++#define XCM_REG_XCM_INT_STS 0x202a8 ++/* [R 30] Parity register #0 read */ ++#define XCM_REG_XCM_PRTY_STS 0x202b8 ++/* [RW 4] The size of AG context region 0 in REG-pairs. Designates the MS ++ REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5). ++ Is used to determine the number of the AG context REG-pairs written back; ++ when the Reg1WbFlg isn't set. */ ++#define XCM_REG_XCM_REG0_SZ 0x200f4 ++/* [RW 1] CM - STORM 0 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define XCM_REG_XCM_STORM0_IFEN 0x20004 ++/* [RW 1] CM - STORM 1 Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define XCM_REG_XCM_STORM1_IFEN 0x20008 ++/* [RW 1] CM - Timers Interface enable. If 0 - the valid input is ++ disregarded; acknowledge output is deasserted; all other signals are ++ treated as usual; if 1 - normal activity. */ ++#define XCM_REG_XCM_TM_IFEN 0x20020 ++/* [RW 1] CM - QM Interface enable. If 0 - the acknowledge input is ++ disregarded; valid is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define XCM_REG_XCM_XQM_IFEN 0x2000c ++/* [RW 1] If set the Q index; received from the QM is inserted to event ID. */ ++#define XCM_REG_XCM_XQM_USE_Q 0x200f0 ++/* [RW 4] The value by which CFC updates the activity counter at QM bypass. */ ++#define XCM_REG_XQM_BYP_ACT_UPD 0x200fc ++/* [RW 6] QM output initial credit. Max credit available - 32.Write writes ++ the initial credit value; read returns the current value of the credit ++ counter. Must be initialized to 32 at start-up. */ ++#define XCM_REG_XQM_INIT_CRD 0x20420 ++/* [RW 3] The weight of the QM (primary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_XQM_P_WEIGHT 0x200e4 ++/* [RW 3] The weight of the QM (secondary) input in the WRR mechanism. 0 ++ stands for weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_XQM_S_WEIGHT 0x200e8 ++/* [RW 28] The CM header value for QM request (primary). */ ++#define XCM_REG_XQM_XCM_HDR_P 0x200a0 ++/* [RW 28] The CM header value for QM request (secondary). */ ++#define XCM_REG_XQM_XCM_HDR_S 0x200a4 ++/* [RW 1] QM - CM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define XCM_REG_XQM_XCM_IFEN 0x20014 ++/* [RW 1] Input SDM Interface enable. If 0 - the valid input is disregarded; ++ acknowledge output is deasserted; all other signals are treated as usual; ++ if 1 - normal activity. */ ++#define XCM_REG_XSDM_IFEN 0x20018 ++/* [RC 1] Set at message length mismatch (relative to last indication) at ++ the SDM interface. */ ++#define XCM_REG_XSDM_LENGTH_MIS 0x20220 ++/* [RW 3] The weight of the SDM input in the WRR mechanism. 0 stands for ++ weight 8 (the most prioritised); 1 stands for weight 1(least ++ prioritised); 2 stands for weight 2; tc. */ ++#define XCM_REG_XSDM_WEIGHT 0x200e0 ++/* [RW 17] Indirect access to the descriptor table of the XX protection ++ mechanism. The fields are: [5:0] - message length; 11:6] - message ++ pointer; 16:12] - next pointer. */ ++#define XCM_REG_XX_DESCR_TABLE 0x20480 ++#define XCM_REG_XX_DESCR_TABLE_SIZE 32 ++/* [R 6] Used to read the XX protection Free counter. */ ++#define XCM_REG_XX_FREE 0x20240 ++/* [RW 6] Initial value for the credit counter; responsible for fulfilling ++ of the Input Stage XX protection buffer by the XX protection pending ++ messages. Max credit available - 3.Write writes the initial credit value; ++ read returns the current value of the credit counter. Must be initialized ++ to 2 at start-up. */ ++#define XCM_REG_XX_INIT_CRD 0x20424 ++/* [RW 6] The maximum number of pending messages; which may be stored in XX ++ protection. ~xcm_registers_xx_free.xx_free read on read. */ ++#define XCM_REG_XX_MSG_NUM 0x20428 ++/* [RW 8] The Event ID; sent to the STORM in case of XX overflow. */ ++#define XCM_REG_XX_OVFL_EVNT_ID 0x20058 ++/* [RW 16] Indirect access to the XX table of the XX protection mechanism. ++ The fields are:[4:0] - tail pointer; 9:5] - Link List size; 14:10] - ++ header pointer. */ ++#define XCM_REG_XX_TABLE 0x20500 ++/* [RW 8] The event id for aggregated interrupt 0 */ ++#define XSDM_REG_AGG_INT_EVENT_0 0x166038 ++#define XSDM_REG_AGG_INT_EVENT_1 0x16603c ++#define XSDM_REG_AGG_INT_EVENT_10 0x166060 ++#define XSDM_REG_AGG_INT_EVENT_11 0x166064 ++#define XSDM_REG_AGG_INT_EVENT_12 0x166068 ++#define XSDM_REG_AGG_INT_EVENT_13 0x16606c ++#define XSDM_REG_AGG_INT_EVENT_14 0x166070 ++#define XSDM_REG_AGG_INT_EVENT_2 0x166040 ++#define XSDM_REG_AGG_INT_EVENT_3 0x166044 ++#define XSDM_REG_AGG_INT_EVENT_4 0x166048 ++#define XSDM_REG_AGG_INT_EVENT_5 0x16604c ++#define XSDM_REG_AGG_INT_EVENT_6 0x166050 ++#define XSDM_REG_AGG_INT_EVENT_7 0x166054 ++#define XSDM_REG_AGG_INT_EVENT_8 0x166058 ++#define XSDM_REG_AGG_INT_EVENT_9 0x16605c ++/* [RW 1] For each aggregated interrupt index whether the mode is normal (0) ++ or auto-mask-mode (1) */ ++#define XSDM_REG_AGG_INT_MODE_0 0x1661b8 ++#define XSDM_REG_AGG_INT_MODE_1 0x1661bc ++/* [RW 13] The start address in the internal RAM for the cfc_rsp lcid */ ++#define XSDM_REG_CFC_RSP_START_ADDR 0x166008 ++/* [RW 16] The maximum value of the competion counter #0 */ ++#define XSDM_REG_CMP_COUNTER_MAX0 0x16601c ++/* [RW 16] The maximum value of the competion counter #1 */ ++#define XSDM_REG_CMP_COUNTER_MAX1 0x166020 ++/* [RW 16] The maximum value of the competion counter #2 */ ++#define XSDM_REG_CMP_COUNTER_MAX2 0x166024 ++/* [RW 16] The maximum value of the competion counter #3 */ ++#define XSDM_REG_CMP_COUNTER_MAX3 0x166028 ++/* [RW 13] The start address in the internal RAM for the completion ++ counters. */ ++#define XSDM_REG_CMP_COUNTER_START_ADDR 0x16600c ++#define XSDM_REG_ENABLE_IN1 0x166238 ++#define XSDM_REG_ENABLE_IN2 0x16623c ++#define XSDM_REG_ENABLE_OUT1 0x166240 ++#define XSDM_REG_ENABLE_OUT2 0x166244 ++/* [RW 4] The initial number of messages that can be sent to the pxp control ++ interface without receiving any ACK. */ ++#define XSDM_REG_INIT_CREDIT_PXP_CTRL 0x1664bc ++/* [ST 32] The number of ACK after placement messages received */ ++#define XSDM_REG_NUM_OF_ACK_AFTER_PLACE 0x16627c ++/* [ST 32] The number of packet end messages received from the parser */ ++#define XSDM_REG_NUM_OF_PKT_END_MSG 0x166274 ++/* [ST 32] The number of requests received from the pxp async if */ ++#define XSDM_REG_NUM_OF_PXP_ASYNC_REQ 0x166278 ++/* [ST 32] The number of commands received in queue 0 */ ++#define XSDM_REG_NUM_OF_Q0_CMD 0x166248 ++/* [ST 32] The number of commands received in queue 10 */ ++#define XSDM_REG_NUM_OF_Q10_CMD 0x16626c ++/* [ST 32] The number of commands received in queue 11 */ ++#define XSDM_REG_NUM_OF_Q11_CMD 0x166270 ++/* [ST 32] The number of commands received in queue 1 */ ++#define XSDM_REG_NUM_OF_Q1_CMD 0x16624c ++/* [ST 32] The number of commands received in queue 3 */ ++#define XSDM_REG_NUM_OF_Q3_CMD 0x166250 ++/* [ST 32] The number of commands received in queue 4 */ ++#define XSDM_REG_NUM_OF_Q4_CMD 0x166254 ++/* [ST 32] The number of commands received in queue 5 */ ++#define XSDM_REG_NUM_OF_Q5_CMD 0x166258 ++/* [ST 32] The number of commands received in queue 6 */ ++#define XSDM_REG_NUM_OF_Q6_CMD 0x16625c ++/* [ST 32] The number of commands received in queue 7 */ ++#define XSDM_REG_NUM_OF_Q7_CMD 0x166260 ++/* [ST 32] The number of commands received in queue 8 */ ++#define XSDM_REG_NUM_OF_Q8_CMD 0x166264 ++/* [ST 32] The number of commands received in queue 9 */ ++#define XSDM_REG_NUM_OF_Q9_CMD 0x166268 ++/* [RW 13] The start address in the internal RAM for queue counters */ ++#define XSDM_REG_Q_COUNTER_START_ADDR 0x166010 ++/* [R 1] pxp_ctrl rd_data fifo empty in sdm_dma_rsp block */ ++#define XSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY 0x166548 ++/* [R 1] parser fifo empty in sdm_sync block */ ++#define XSDM_REG_SYNC_PARSER_EMPTY 0x166550 ++/* [R 1] parser serial fifo empty in sdm_sync block */ ++#define XSDM_REG_SYNC_SYNC_EMPTY 0x166558 ++/* [RW 32] Tick for timer counter. Applicable only when ++ ~xsdm_registers_timer_tick_enable.timer_tick_enable =1 */ ++#define XSDM_REG_TIMER_TICK 0x166000 ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define XSDM_REG_XSDM_INT_MASK_0 0x16629c ++#define XSDM_REG_XSDM_INT_MASK_1 0x1662ac ++/* [R 32] Interrupt register #0 read */ ++#define XSDM_REG_XSDM_INT_STS_0 0x166290 ++#define XSDM_REG_XSDM_INT_STS_1 0x1662a0 ++/* [RW 11] Parity mask register #0 read/write */ ++#define XSDM_REG_XSDM_PRTY_MASK 0x1662bc ++/* [R 11] Parity register #0 read */ ++#define XSDM_REG_XSDM_PRTY_STS 0x1662b0 ++/* [RW 5] The number of time_slots in the arbitration cycle */ ++#define XSEM_REG_ARB_CYCLE_SIZE 0x280034 ++/* [RW 3] The source that is associated with arbitration element 0. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2 */ ++#define XSEM_REG_ARB_ELEMENT0 0x280020 ++/* [RW 3] The source that is associated with arbitration element 1. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~xsem_registers_arb_element0.arb_element0 */ ++#define XSEM_REG_ARB_ELEMENT1 0x280024 ++/* [RW 3] The source that is associated with arbitration element 2. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~xsem_registers_arb_element0.arb_element0 ++ and ~xsem_registers_arb_element1.arb_element1 */ ++#define XSEM_REG_ARB_ELEMENT2 0x280028 ++/* [RW 3] The source that is associated with arbitration element 3. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2.Could ++ not be equal to register ~xsem_registers_arb_element0.arb_element0 and ++ ~xsem_registers_arb_element1.arb_element1 and ++ ~xsem_registers_arb_element2.arb_element2 */ ++#define XSEM_REG_ARB_ELEMENT3 0x28002c ++/* [RW 3] The source that is associated with arbitration element 4. Source ++ decoding is: 0- foc0; 1-fic1; 2-sleeping thread with priority 0; 3- ++ sleeping thread with priority 1; 4- sleeping thread with priority 2. ++ Could not be equal to register ~xsem_registers_arb_element0.arb_element0 ++ and ~xsem_registers_arb_element1.arb_element1 and ++ ~xsem_registers_arb_element2.arb_element2 and ++ ~xsem_registers_arb_element3.arb_element3 */ ++#define XSEM_REG_ARB_ELEMENT4 0x280030 ++#define XSEM_REG_ENABLE_IN 0x2800a4 ++#define XSEM_REG_ENABLE_OUT 0x2800a8 ++/* [RW 32] This address space contains all registers and memories that are ++ placed in SEM_FAST block. The SEM_FAST registers are described in ++ appendix B. In order to access the sem_fast registers the base address ++ ~fast_memory.fast_memory should be added to eachsem_fast register offset. */ ++#define XSEM_REG_FAST_MEMORY 0x2a0000 ++/* [RW 1] Disables input messages from FIC0 May be updated during run_time ++ by the microcode */ ++#define XSEM_REG_FIC0_DISABLE 0x280224 ++/* [RW 1] Disables input messages from FIC1 May be updated during run_time ++ by the microcode */ ++#define XSEM_REG_FIC1_DISABLE 0x280234 ++/* [RW 15] Interrupt table Read and write access to it is not possible in ++ the middle of the work */ ++#define XSEM_REG_INT_TABLE 0x280400 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC0 */ ++#define XSEM_REG_MSG_NUM_FIC0 0x280000 ++/* [ST 24] Statistics register. The number of messages that entered through ++ FIC1 */ ++#define XSEM_REG_MSG_NUM_FIC1 0x280004 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC0 */ ++#define XSEM_REG_MSG_NUM_FOC0 0x280008 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC1 */ ++#define XSEM_REG_MSG_NUM_FOC1 0x28000c ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC2 */ ++#define XSEM_REG_MSG_NUM_FOC2 0x280010 ++/* [ST 24] Statistics register. The number of messages that were sent to ++ FOC3 */ ++#define XSEM_REG_MSG_NUM_FOC3 0x280014 ++/* [RW 1] Disables input messages from the passive buffer May be updated ++ during run_time by the microcode */ ++#define XSEM_REG_PAS_DISABLE 0x28024c ++/* [WB 128] Debug only. Passive buffer memory */ ++#define XSEM_REG_PASSIVE_BUFFER 0x282000 ++/* [WB 46] pram memory. B45 is parity; b[44:0] - data. */ ++#define XSEM_REG_PRAM 0x2c0000 ++/* [R 16] Valid sleeping threads indication have bit per thread */ ++#define XSEM_REG_SLEEP_THREADS_VALID 0x28026c ++/* [R 1] EXT_STORE FIFO is empty in sem_slow_ls_ext */ ++#define XSEM_REG_SLOW_EXT_STORE_EMPTY 0x2802a0 ++/* [RW 16] List of free threads . There is a bit per thread. */ ++#define XSEM_REG_THREADS_LIST 0x2802e4 ++/* [RW 3] The arbitration scheme of time_slot 0 */ ++#define XSEM_REG_TS_0_AS 0x280038 ++/* [RW 3] The arbitration scheme of time_slot 10 */ ++#define XSEM_REG_TS_10_AS 0x280060 ++/* [RW 3] The arbitration scheme of time_slot 11 */ ++#define XSEM_REG_TS_11_AS 0x280064 ++/* [RW 3] The arbitration scheme of time_slot 12 */ ++#define XSEM_REG_TS_12_AS 0x280068 ++/* [RW 3] The arbitration scheme of time_slot 13 */ ++#define XSEM_REG_TS_13_AS 0x28006c ++/* [RW 3] The arbitration scheme of time_slot 14 */ ++#define XSEM_REG_TS_14_AS 0x280070 ++/* [RW 3] The arbitration scheme of time_slot 15 */ ++#define XSEM_REG_TS_15_AS 0x280074 ++/* [RW 3] The arbitration scheme of time_slot 16 */ ++#define XSEM_REG_TS_16_AS 0x280078 ++/* [RW 3] The arbitration scheme of time_slot 17 */ ++#define XSEM_REG_TS_17_AS 0x28007c ++/* [RW 3] The arbitration scheme of time_slot 18 */ ++#define XSEM_REG_TS_18_AS 0x280080 ++/* [RW 3] The arbitration scheme of time_slot 1 */ ++#define XSEM_REG_TS_1_AS 0x28003c ++/* [RW 3] The arbitration scheme of time_slot 2 */ ++#define XSEM_REG_TS_2_AS 0x280040 ++/* [RW 3] The arbitration scheme of time_slot 3 */ ++#define XSEM_REG_TS_3_AS 0x280044 ++/* [RW 3] The arbitration scheme of time_slot 4 */ ++#define XSEM_REG_TS_4_AS 0x280048 ++/* [RW 3] The arbitration scheme of time_slot 5 */ ++#define XSEM_REG_TS_5_AS 0x28004c ++/* [RW 3] The arbitration scheme of time_slot 6 */ ++#define XSEM_REG_TS_6_AS 0x280050 ++/* [RW 3] The arbitration scheme of time_slot 7 */ ++#define XSEM_REG_TS_7_AS 0x280054 ++/* [RW 3] The arbitration scheme of time_slot 8 */ ++#define XSEM_REG_TS_8_AS 0x280058 ++/* [RW 3] The arbitration scheme of time_slot 9 */ ++#define XSEM_REG_TS_9_AS 0x28005c ++/* [RW 32] Interrupt mask register #0 read/write */ ++#define XSEM_REG_XSEM_INT_MASK_0 0x280110 ++#define XSEM_REG_XSEM_INT_MASK_1 0x280120 ++/* [R 32] Interrupt register #0 read */ ++#define XSEM_REG_XSEM_INT_STS_0 0x280104 ++#define XSEM_REG_XSEM_INT_STS_1 0x280114 ++/* [RW 32] Parity mask register #0 read/write */ ++#define XSEM_REG_XSEM_PRTY_MASK_0 0x280130 ++#define XSEM_REG_XSEM_PRTY_MASK_1 0x280140 ++/* [R 32] Parity register #0 read */ ++#define XSEM_REG_XSEM_PRTY_STS_0 0x280124 ++#define XSEM_REG_XSEM_PRTY_STS_1 0x280134 ++#define MCPR_NVM_ACCESS_ENABLE_EN (1L<<0) ++#define MCPR_NVM_ACCESS_ENABLE_WR_EN (1L<<1) ++#define MCPR_NVM_ADDR_NVM_ADDR_VALUE (0xffffffL<<0) ++#define MCPR_NVM_CFG4_FLASH_SIZE (0x7L<<0) ++#define MCPR_NVM_COMMAND_DOIT (1L<<4) ++#define MCPR_NVM_COMMAND_DONE (1L<<3) ++#define MCPR_NVM_COMMAND_FIRST (1L<<7) ++#define MCPR_NVM_COMMAND_LAST (1L<<8) ++#define MCPR_NVM_COMMAND_WR (1L<<5) ++#define MCPR_NVM_SW_ARB_ARB_ARB1 (1L<<9) ++#define MCPR_NVM_SW_ARB_ARB_REQ_CLR1 (1L<<5) ++#define MCPR_NVM_SW_ARB_ARB_REQ_SET1 (1L<<1) ++#define BIGMAC_REGISTER_BMAC_CONTROL (0x00<<3) ++#define BIGMAC_REGISTER_BMAC_XGXS_CONTROL (0x01<<3) ++#define BIGMAC_REGISTER_CNT_MAX_SIZE (0x05<<3) ++#define BIGMAC_REGISTER_RX_CONTROL (0x21<<3) ++#define BIGMAC_REGISTER_RX_LLFC_MSG_FLDS (0x46<<3) ++#define BIGMAC_REGISTER_RX_MAX_SIZE (0x23<<3) ++#define BIGMAC_REGISTER_RX_STAT_GR64 (0x26<<3) ++#define BIGMAC_REGISTER_RX_STAT_GRIPJ (0x42<<3) ++#define BIGMAC_REGISTER_TX_CONTROL (0x07<<3) ++#define BIGMAC_REGISTER_TX_MAX_SIZE (0x09<<3) ++#define BIGMAC_REGISTER_TX_PAUSE_THRESHOLD (0x0A<<3) ++#define BIGMAC_REGISTER_TX_SOURCE_ADDR (0x08<<3) ++#define BIGMAC_REGISTER_TX_STAT_GTBYT (0x20<<3) ++#define BIGMAC_REGISTER_TX_STAT_GTPKT (0x0C<<3) ++#define BIGMAC2_REGISTER_BMAC_CONTROL (0x00<<3) ++#define BIGMAC2_REGISTER_BMAC_XGXS_CONTROL (0x01<<3) ++#define BIGMAC2_REGISTER_PFC_CONTROL (0x06<<3) ++#define BIGMAC2_REGISTER_RX_CONTROL (0x3A<<3) ++#define BIGMAC2_REGISTER_RX_LLFC_MSG_FLDS (0x62<<3) ++#define BIGMAC2_REGISTER_RX_MAX_SIZE (0x3C<<3) ++#define BIGMAC2_REGISTER_TX_CONTROL (0x1C<<3) ++#define BIGMAC2_REGISTER_TX_MAX_SIZE (0x1E<<3) ++#define BIGMAC2_REGISTER_TX_SOURCE_ADDR (0x1D<<3) ++#define EMAC_LED_1000MB_OVERRIDE (1L<<1) ++#define EMAC_LED_100MB_OVERRIDE (1L<<2) ++#define EMAC_LED_10MB_OVERRIDE (1L<<3) ++#define EMAC_LED_2500MB_OVERRIDE (1L<<12) ++#define EMAC_LED_OVERRIDE (1L<<0) ++#define EMAC_LED_TRAFFIC (1L<<6) ++#define EMAC_MDIO_COMM_COMMAND_ADDRESS (0L<<26) ++#define EMAC_MDIO_COMM_COMMAND_READ_45 (3L<<26) ++#define EMAC_MDIO_COMM_COMMAND_WRITE_45 (1L<<26) ++#define EMAC_MDIO_COMM_DATA (0xffffL<<0) ++#define EMAC_MDIO_COMM_START_BUSY (1L<<29) ++#define EMAC_MDIO_MODE_AUTO_POLL (1L<<4) ++#define EMAC_MDIO_MODE_CLAUSE_45 (1<<31) ++#define EMAC_MDIO_MODE_CLOCK_CNT (0x3fL<<16) ++#define EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT 16 ++#define EMAC_MODE_25G_MODE (1L<<5) ++#define EMAC_MODE_HALF_DUPLEX (1L<<1) ++#define EMAC_MODE_PORT_GMII (2L<<2) ++#define EMAC_MODE_PORT_MII (1L<<2) ++#define EMAC_MODE_PORT_MII_10M (3L<<2) ++#define EMAC_MODE_RESET (1L<<0) ++#define EMAC_REG_EMAC_LED 0xc ++#define EMAC_REG_EMAC_MAC_MATCH 0x10 ++#define EMAC_REG_EMAC_MDIO_COMM 0xac ++#define EMAC_REG_EMAC_MDIO_MODE 0xb4 ++#define EMAC_REG_EMAC_MODE 0x0 ++#define EMAC_REG_EMAC_RX_MODE 0xc8 ++#define EMAC_REG_EMAC_RX_MTU_SIZE 0x9c ++#define EMAC_REG_EMAC_RX_STAT_AC 0x180 ++#define EMAC_REG_EMAC_RX_STAT_AC_28 0x1f4 ++#define EMAC_REG_EMAC_RX_STAT_AC_COUNT 23 ++#define EMAC_REG_EMAC_TX_MODE 0xbc ++#define EMAC_REG_EMAC_TX_STAT_AC 0x280 ++#define EMAC_REG_EMAC_TX_STAT_AC_COUNT 22 ++#define EMAC_RX_MODE_FLOW_EN (1L<<2) ++#define EMAC_RX_MODE_KEEP_VLAN_TAG (1L<<10) ++#define EMAC_RX_MODE_PROMISCUOUS (1L<<8) ++#define EMAC_RX_MODE_RESET (1L<<0) ++#define EMAC_RX_MTU_SIZE_JUMBO_ENA (1<<31) ++#define EMAC_TX_MODE_EXT_PAUSE_EN (1L<<3) ++#define EMAC_TX_MODE_FLOW_EN (1L<<4) ++#define EMAC_TX_MODE_RESET (1L<<0) ++#define MISC_REGISTERS_GPIO_0 0 ++#define MISC_REGISTERS_GPIO_1 1 ++#define MISC_REGISTERS_GPIO_2 2 ++#define MISC_REGISTERS_GPIO_3 3 ++#define MISC_REGISTERS_GPIO_CLR_POS 16 ++#define MISC_REGISTERS_GPIO_FLOAT (0xffL<<24) ++#define MISC_REGISTERS_GPIO_FLOAT_POS 24 ++#define MISC_REGISTERS_GPIO_HIGH 1 ++#define MISC_REGISTERS_GPIO_INPUT_HI_Z 2 ++#define MISC_REGISTERS_GPIO_INT_CLR_POS 24 ++#define MISC_REGISTERS_GPIO_INT_OUTPUT_CLR 0 ++#define MISC_REGISTERS_GPIO_INT_OUTPUT_SET 1 ++#define MISC_REGISTERS_GPIO_INT_SET_POS 16 ++#define MISC_REGISTERS_GPIO_LOW 0 ++#define MISC_REGISTERS_GPIO_OUTPUT_HIGH 1 ++#define MISC_REGISTERS_GPIO_OUTPUT_LOW 0 ++#define MISC_REGISTERS_GPIO_PORT_SHIFT 4 ++#define MISC_REGISTERS_GPIO_SET_POS 8 ++#define MISC_REGISTERS_RESET_REG_1_CLEAR 0x588 ++#define MISC_REGISTERS_RESET_REG_1_RST_NIG (0x1<<7) ++#define MISC_REGISTERS_RESET_REG_1_SET 0x584 ++#define MISC_REGISTERS_RESET_REG_2_CLEAR 0x598 ++#define MISC_REGISTERS_RESET_REG_2_RST_BMAC0 (0x1<<0) ++#define MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE (0x1<<14) ++#define MISC_REGISTERS_RESET_REG_2_SET 0x594 ++#define MISC_REGISTERS_RESET_REG_3_CLEAR 0x5a8 ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_IDDQ (0x1<<1) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN (0x1<<2) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN_SD (0x1<<3) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_RSTB_HW (0x1<<0) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_IDDQ (0x1<<5) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN (0x1<<6) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN_SD (0x1<<7) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_RSTB_HW (0x1<<4) ++#define MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_TXD_FIFO_RSTB (0x1<<8) ++#define MISC_REGISTERS_RESET_REG_3_SET 0x5a4 ++#define MISC_REGISTERS_SPIO_4 4 ++#define MISC_REGISTERS_SPIO_5 5 ++#define MISC_REGISTERS_SPIO_7 7 ++#define MISC_REGISTERS_SPIO_CLR_POS 16 ++#define MISC_REGISTERS_SPIO_FLOAT (0xffL<<24) ++#define MISC_REGISTERS_SPIO_FLOAT_POS 24 ++#define MISC_REGISTERS_SPIO_INPUT_HI_Z 2 ++#define MISC_REGISTERS_SPIO_INT_OLD_SET_POS 16 ++#define MISC_REGISTERS_SPIO_OUTPUT_HIGH 1 ++#define MISC_REGISTERS_SPIO_OUTPUT_LOW 0 ++#define MISC_REGISTERS_SPIO_SET_POS 8 ++#define HW_LOCK_MAX_RESOURCE_VALUE 31 ++#define HW_LOCK_RESOURCE_GPIO 1 ++#define HW_LOCK_RESOURCE_MDIO 0 ++#define HW_LOCK_RESOURCE_PORT0_ATT_MASK 3 ++#define HW_LOCK_RESOURCE_SPIO 2 ++#define HW_LOCK_RESOURCE_UNDI 5 ++#define PRS_FLAG_OVERETH_IPV4 1 ++#define AEU_INPUTS_ATTN_BITS_BRB_PARITY_ERROR (1UL<<18) ++#define AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT (1UL<<31) ++#define AEU_INPUTS_ATTN_BITS_CDU_HW_INTERRUPT (1UL<<9) ++#define AEU_INPUTS_ATTN_BITS_CDU_PARITY_ERROR (1UL<<8) ++#define AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT (1UL<<7) ++#define AEU_INPUTS_ATTN_BITS_CFC_PARITY_ERROR (1UL<<6) ++#define AEU_INPUTS_ATTN_BITS_CSDM_HW_INTERRUPT (1UL<<29) ++#define AEU_INPUTS_ATTN_BITS_CSDM_PARITY_ERROR (1UL<<28) ++#define AEU_INPUTS_ATTN_BITS_CSEMI_HW_INTERRUPT (1UL<<1) ++#define AEU_INPUTS_ATTN_BITS_CSEMI_PARITY_ERROR (1UL<<0) ++#define AEU_INPUTS_ATTN_BITS_DEBUG_PARITY_ERROR (1UL<<18) ++#define AEU_INPUTS_ATTN_BITS_DMAE_HW_INTERRUPT (1UL<<11) ++#define AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT (1UL<<13) ++#define AEU_INPUTS_ATTN_BITS_DOORBELLQ_PARITY_ERROR (1UL<<12) ++#define AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_0 (1UL<<5) ++#define AEU_INPUTS_ATTN_BITS_GPIO3_FUNCTION_1 (1UL<<9) ++#define AEU_INPUTS_ATTN_BITS_IGU_PARITY_ERROR (1UL<<12) ++#define AEU_INPUTS_ATTN_BITS_MISC_HW_INTERRUPT (1UL<<15) ++#define AEU_INPUTS_ATTN_BITS_MISC_PARITY_ERROR (1UL<<14) ++#define AEU_INPUTS_ATTN_BITS_PARSER_PARITY_ERROR (1UL<<20) ++#define AEU_INPUTS_ATTN_BITS_PBCLIENT_PARITY_ERROR (1UL<<0) ++#define AEU_INPUTS_ATTN_BITS_PBF_HW_INTERRUPT (1UL<<31) ++#define AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT (1UL<<3) ++#define AEU_INPUTS_ATTN_BITS_PXP_PARITY_ERROR (1UL<<2) ++#define AEU_INPUTS_ATTN_BITS_PXPPCICLOCKCLIENT_HW_INTERRUPT (1UL<<5) ++#define AEU_INPUTS_ATTN_BITS_PXPPCICLOCKCLIENT_PARITY_ERROR (1UL<<4) ++#define AEU_INPUTS_ATTN_BITS_QM_HW_INTERRUPT (1UL<<3) ++#define AEU_INPUTS_ATTN_BITS_QM_PARITY_ERROR (1UL<<2) ++#define AEU_INPUTS_ATTN_BITS_SEARCHER_PARITY_ERROR (1UL<<22) ++#define AEU_INPUTS_ATTN_BITS_SPIO5 (1UL<<15) ++#define AEU_INPUTS_ATTN_BITS_TCM_HW_INTERRUPT (1UL<<27) ++#define AEU_INPUTS_ATTN_BITS_TIMERS_HW_INTERRUPT (1UL<<5) ++#define AEU_INPUTS_ATTN_BITS_TSDM_HW_INTERRUPT (1UL<<25) ++#define AEU_INPUTS_ATTN_BITS_TSDM_PARITY_ERROR (1UL<<24) ++#define AEU_INPUTS_ATTN_BITS_TSEMI_HW_INTERRUPT (1UL<<29) ++#define AEU_INPUTS_ATTN_BITS_TSEMI_PARITY_ERROR (1UL<<28) ++#define AEU_INPUTS_ATTN_BITS_UCM_HW_INTERRUPT (1UL<<23) ++#define AEU_INPUTS_ATTN_BITS_UPB_HW_INTERRUPT (1UL<<27) ++#define AEU_INPUTS_ATTN_BITS_UPB_PARITY_ERROR (1UL<<26) ++#define AEU_INPUTS_ATTN_BITS_USDM_HW_INTERRUPT (1UL<<21) ++#define AEU_INPUTS_ATTN_BITS_USDM_PARITY_ERROR (1UL<<20) ++#define AEU_INPUTS_ATTN_BITS_USEMI_HW_INTERRUPT (1UL<<25) ++#define AEU_INPUTS_ATTN_BITS_USEMI_PARITY_ERROR (1UL<<24) ++#define AEU_INPUTS_ATTN_BITS_VAUX_PCI_CORE_PARITY_ERROR (1UL<<16) ++#define AEU_INPUTS_ATTN_BITS_XCM_HW_INTERRUPT (1UL<<9) ++#define AEU_INPUTS_ATTN_BITS_XSDM_HW_INTERRUPT (1UL<<7) ++#define AEU_INPUTS_ATTN_BITS_XSDM_PARITY_ERROR (1UL<<6) ++#define AEU_INPUTS_ATTN_BITS_XSEMI_HW_INTERRUPT (1UL<<11) ++#define AEU_INPUTS_ATTN_BITS_XSEMI_PARITY_ERROR (1UL<<10) ++#define RESERVED_GENERAL_ATTENTION_BIT_0 0 ++ ++#define EVEREST_GEN_ATTN_IN_USE_MASK 0x3ffe0 ++#define EVEREST_LATCHED_ATTN_IN_USE_MASK 0xffe00000 ++ ++#define RESERVED_GENERAL_ATTENTION_BIT_6 6 ++#define RESERVED_GENERAL_ATTENTION_BIT_7 7 ++#define RESERVED_GENERAL_ATTENTION_BIT_8 8 ++#define RESERVED_GENERAL_ATTENTION_BIT_9 9 ++#define RESERVED_GENERAL_ATTENTION_BIT_10 10 ++#define RESERVED_GENERAL_ATTENTION_BIT_11 11 ++#define RESERVED_GENERAL_ATTENTION_BIT_12 12 ++#define RESERVED_GENERAL_ATTENTION_BIT_13 13 ++#define RESERVED_GENERAL_ATTENTION_BIT_14 14 ++#define RESERVED_GENERAL_ATTENTION_BIT_15 15 ++#define RESERVED_GENERAL_ATTENTION_BIT_16 16 ++#define RESERVED_GENERAL_ATTENTION_BIT_17 17 ++#define RESERVED_GENERAL_ATTENTION_BIT_18 18 ++#define RESERVED_GENERAL_ATTENTION_BIT_19 19 ++#define RESERVED_GENERAL_ATTENTION_BIT_20 20 ++#define RESERVED_GENERAL_ATTENTION_BIT_21 21 ++ ++/* storm asserts attention bits */ ++#define TSTORM_FATAL_ASSERT_ATTENTION_BIT RESERVED_GENERAL_ATTENTION_BIT_7 ++#define USTORM_FATAL_ASSERT_ATTENTION_BIT RESERVED_GENERAL_ATTENTION_BIT_8 ++#define CSTORM_FATAL_ASSERT_ATTENTION_BIT RESERVED_GENERAL_ATTENTION_BIT_9 ++#define XSTORM_FATAL_ASSERT_ATTENTION_BIT RESERVED_GENERAL_ATTENTION_BIT_10 ++ ++/* mcp error attention bit */ ++#define MCP_FATAL_ASSERT_ATTENTION_BIT RESERVED_GENERAL_ATTENTION_BIT_11 ++ ++/*E1H NIG status sync attention mapped to group 4-7*/ ++#define LINK_SYNC_ATTENTION_BIT_FUNC_0 RESERVED_GENERAL_ATTENTION_BIT_12 ++#define LINK_SYNC_ATTENTION_BIT_FUNC_1 RESERVED_GENERAL_ATTENTION_BIT_13 ++#define LINK_SYNC_ATTENTION_BIT_FUNC_2 RESERVED_GENERAL_ATTENTION_BIT_14 ++#define LINK_SYNC_ATTENTION_BIT_FUNC_3 RESERVED_GENERAL_ATTENTION_BIT_15 ++#define LINK_SYNC_ATTENTION_BIT_FUNC_4 RESERVED_GENERAL_ATTENTION_BIT_16 ++#define LINK_SYNC_ATTENTION_BIT_FUNC_5 RESERVED_GENERAL_ATTENTION_BIT_17 ++#define LINK_SYNC_ATTENTION_BIT_FUNC_6 RESERVED_GENERAL_ATTENTION_BIT_18 ++#define LINK_SYNC_ATTENTION_BIT_FUNC_7 RESERVED_GENERAL_ATTENTION_BIT_19 ++ ++ ++#define LATCHED_ATTN_RBCR 23 ++#define LATCHED_ATTN_RBCT 24 ++#define LATCHED_ATTN_RBCN 25 ++#define LATCHED_ATTN_RBCU 26 ++#define LATCHED_ATTN_RBCP 27 ++#define LATCHED_ATTN_TIMEOUT_GRC 28 ++#define LATCHED_ATTN_RSVD_GRC 29 ++#define LATCHED_ATTN_ROM_PARITY_MCP 30 ++#define LATCHED_ATTN_UM_RX_PARITY_MCP 31 ++#define LATCHED_ATTN_UM_TX_PARITY_MCP 32 ++#define LATCHED_ATTN_SCPAD_PARITY_MCP 33 ++ ++#define GENERAL_ATTEN_WORD(atten_name) ((94 + atten_name) / 32) ++#define GENERAL_ATTEN_OFFSET(atten_name)\ ++ (1UL << ((94 + atten_name) % 32)) ++/* ++ * This file defines GRC base address for every block. ++ * This file is included by chipsim, asm microcode and cpp microcode. ++ * These values are used in Design.xml on regBase attribute ++ * Use the base with the generated offsets of specific registers. ++ */ ++ ++#define GRCBASE_PXPCS 0x000000 ++#define GRCBASE_PCICONFIG 0x002000 ++#define GRCBASE_PCIREG 0x002400 ++#define GRCBASE_EMAC0 0x008000 ++#define GRCBASE_EMAC1 0x008400 ++#define GRCBASE_DBU 0x008800 ++#define GRCBASE_MISC 0x00A000 ++#define GRCBASE_DBG 0x00C000 ++#define GRCBASE_NIG 0x010000 ++#define GRCBASE_XCM 0x020000 ++#define GRCBASE_PRS 0x040000 ++#define GRCBASE_SRCH 0x040400 ++#define GRCBASE_TSDM 0x042000 ++#define GRCBASE_TCM 0x050000 ++#define GRCBASE_BRB1 0x060000 ++#define GRCBASE_MCP 0x080000 ++#define GRCBASE_UPB 0x0C1000 ++#define GRCBASE_CSDM 0x0C2000 ++#define GRCBASE_USDM 0x0C4000 ++#define GRCBASE_CCM 0x0D0000 ++#define GRCBASE_UCM 0x0E0000 ++#define GRCBASE_CDU 0x101000 ++#define GRCBASE_DMAE 0x102000 ++#define GRCBASE_PXP 0x103000 ++#define GRCBASE_CFC 0x104000 ++#define GRCBASE_HC 0x108000 ++#define GRCBASE_PXP2 0x120000 ++#define GRCBASE_PBF 0x140000 ++#define GRCBASE_XPB 0x161000 ++#define GRCBASE_TIMERS 0x164000 ++#define GRCBASE_XSDM 0x166000 ++#define GRCBASE_QM 0x168000 ++#define GRCBASE_DQ 0x170000 ++#define GRCBASE_TSEM 0x180000 ++#define GRCBASE_CSEM 0x200000 ++#define GRCBASE_XSEM 0x280000 ++#define GRCBASE_USEM 0x300000 ++#define GRCBASE_MISC_AEU GRCBASE_MISC ++ ++ ++/* offset of configuration space in the pci core register */ ++#define PCICFG_OFFSET 0x2000 ++#define PCICFG_VENDOR_ID_OFFSET 0x00 ++#define PCICFG_DEVICE_ID_OFFSET 0x02 ++#define PCICFG_COMMAND_OFFSET 0x04 ++#define PCICFG_COMMAND_IO_SPACE (1<<0) ++#define PCICFG_COMMAND_MEM_SPACE (1<<1) ++#define PCICFG_COMMAND_BUS_MASTER (1<<2) ++#define PCICFG_COMMAND_SPECIAL_CYCLES (1<<3) ++#define PCICFG_COMMAND_MWI_CYCLES (1<<4) ++#define PCICFG_COMMAND_VGA_SNOOP (1<<5) ++#define PCICFG_COMMAND_PERR_ENA (1<<6) ++#define PCICFG_COMMAND_STEPPING (1<<7) ++#define PCICFG_COMMAND_SERR_ENA (1<<8) ++#define PCICFG_COMMAND_FAST_B2B (1<<9) ++#define PCICFG_COMMAND_INT_DISABLE (1<<10) ++#define PCICFG_COMMAND_RESERVED (0x1f<<11) ++#define PCICFG_STATUS_OFFSET 0x06 ++#define PCICFG_REVESION_ID_OFFSET 0x08 ++#define PCICFG_CACHE_LINE_SIZE 0x0c ++#define PCICFG_LATENCY_TIMER 0x0d ++#define PCICFG_BAR_1_LOW 0x10 ++#define PCICFG_BAR_1_HIGH 0x14 ++#define PCICFG_BAR_2_LOW 0x18 ++#define PCICFG_BAR_2_HIGH 0x1c ++#define PCICFG_SUBSYSTEM_VENDOR_ID_OFFSET 0x2c ++#define PCICFG_SUBSYSTEM_ID_OFFSET 0x2e ++#define PCICFG_INT_LINE 0x3c ++#define PCICFG_INT_PIN 0x3d ++#define PCICFG_PM_CAPABILITY 0x48 ++#define PCICFG_PM_CAPABILITY_VERSION (0x3<<16) ++#define PCICFG_PM_CAPABILITY_CLOCK (1<<19) ++#define PCICFG_PM_CAPABILITY_RESERVED (1<<20) ++#define PCICFG_PM_CAPABILITY_DSI (1<<21) ++#define PCICFG_PM_CAPABILITY_AUX_CURRENT (0x7<<22) ++#define PCICFG_PM_CAPABILITY_D1_SUPPORT (1<<25) ++#define PCICFG_PM_CAPABILITY_D2_SUPPORT (1<<26) ++#define PCICFG_PM_CAPABILITY_PME_IN_D0 (1<<27) ++#define PCICFG_PM_CAPABILITY_PME_IN_D1 (1<<28) ++#define PCICFG_PM_CAPABILITY_PME_IN_D2 (1<<29) ++#define PCICFG_PM_CAPABILITY_PME_IN_D3_HOT (1<<30) ++#define PCICFG_PM_CAPABILITY_PME_IN_D3_COLD (1<<31) ++#define PCICFG_PM_CSR_OFFSET 0x4c ++#define PCICFG_PM_CSR_STATE (0x3<<0) ++#define PCICFG_PM_CSR_PME_ENABLE (1<<8) ++#define PCICFG_PM_CSR_PME_STATUS (1<<15) ++#define PCICFG_MSI_CAP_ID_OFFSET 0x58 ++#define PCICFG_MSI_CONTROL_ENABLE (0x1<<16) ++#define PCICFG_MSI_CONTROL_MCAP (0x7<<17) ++#define PCICFG_MSI_CONTROL_MENA (0x7<<20) ++#define PCICFG_MSI_CONTROL_64_BIT_ADDR_CAP (0x1<<23) ++#define PCICFG_MSI_CONTROL_MSI_PVMASK_CAPABLE (0x1<<24) ++#define PCICFG_GRC_ADDRESS 0x78 ++#define PCICFG_GRC_DATA 0x80 ++#define PCICFG_MSIX_CAP_ID_OFFSET 0xa0 ++#define PCICFG_MSIX_CONTROL_TABLE_SIZE (0x7ff<<16) ++#define PCICFG_MSIX_CONTROL_RESERVED (0x7<<27) ++#define PCICFG_MSIX_CONTROL_FUNC_MASK (0x1<<30) ++#define PCICFG_MSIX_CONTROL_MSIX_ENABLE (0x1<<31) ++ ++#define PCICFG_DEVICE_CONTROL 0xb4 ++#define PCICFG_DEVICE_STATUS 0xb6 ++#define PCICFG_DEVICE_STATUS_CORR_ERR_DET (1<<0) ++#define PCICFG_DEVICE_STATUS_NON_FATAL_ERR_DET (1<<1) ++#define PCICFG_DEVICE_STATUS_FATAL_ERR_DET (1<<2) ++#define PCICFG_DEVICE_STATUS_UNSUP_REQ_DET (1<<3) ++#define PCICFG_DEVICE_STATUS_AUX_PWR_DET (1<<4) ++#define PCICFG_DEVICE_STATUS_NO_PEND (1<<5) ++#define PCICFG_LINK_CONTROL 0xbc ++ ++ ++#define BAR_USTRORM_INTMEM 0x400000 ++#define BAR_CSTRORM_INTMEM 0x410000 ++#define BAR_XSTRORM_INTMEM 0x420000 ++#define BAR_TSTRORM_INTMEM 0x430000 ++ ++/* for accessing the IGU in case of status block ACK */ ++#define BAR_IGU_INTMEM 0x440000 ++ ++#define BAR_DOORBELL_OFFSET 0x800000 ++ ++#define BAR_ME_REGISTER 0x450000 ++#define ME_REG_PF_NUM (7L<<0) /* Relative PF Num */ ++#define ME_REG_PF_NUM_SHIFT 0 ++#define ME_REG_ABS_PF_NUM (7L<<16) /* Absolute PF Num */ ++#define ME_REG_ABS_PF_NUM_SHIFT 16 ++ ++ ++/* config_2 offset */ ++#define GRC_CONFIG_2_SIZE_REG 0x408 ++#define PCI_CONFIG_2_BAR1_SIZE (0xfL<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_DISABLED (0L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_64K (1L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_128K (2L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_256K (3L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_512K (4L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_1M (5L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_2M (6L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_4M (7L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_8M (8L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_16M (9L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_32M (10L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_64M (11L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_128M (12L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_256M (13L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_512M (14L<<0) ++#define PCI_CONFIG_2_BAR1_SIZE_1G (15L<<0) ++#define PCI_CONFIG_2_BAR1_64ENA (1L<<4) ++#define PCI_CONFIG_2_EXP_ROM_RETRY (1L<<5) ++#define PCI_CONFIG_2_CFG_CYCLE_RETRY (1L<<6) ++#define PCI_CONFIG_2_FIRST_CFG_DONE (1L<<7) ++#define PCI_CONFIG_2_EXP_ROM_SIZE (0xffL<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_DISABLED (0L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_2K (1L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_4K (2L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_8K (3L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_16K (4L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_32K (5L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_64K (6L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_128K (7L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_256K (8L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_512K (9L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_1M (10L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_2M (11L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_4M (12L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_8M (13L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_16M (14L<<8) ++#define PCI_CONFIG_2_EXP_ROM_SIZE_32M (15L<<8) ++#define PCI_CONFIG_2_BAR_PREFETCH (1L<<16) ++#define PCI_CONFIG_2_RESERVED0 (0x7fffL<<17) ++ ++/* config_3 offset */ ++#define GRC_CONFIG_3_SIZE_REG 0x40c ++#define PCI_CONFIG_3_STICKY_BYTE (0xffL<<0) ++#define PCI_CONFIG_3_FORCE_PME (1L<<24) ++#define PCI_CONFIG_3_PME_STATUS (1L<<25) ++#define PCI_CONFIG_3_PME_ENABLE (1L<<26) ++#define PCI_CONFIG_3_PM_STATE (0x3L<<27) ++#define PCI_CONFIG_3_VAUX_PRESET (1L<<30) ++#define PCI_CONFIG_3_PCI_POWER (1L<<31) ++ ++#define GRC_BAR2_CONFIG 0x4e0 ++#define PCI_CONFIG_2_BAR2_SIZE (0xfL<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_DISABLED (0L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_64K (1L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_128K (2L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_256K (3L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_512K (4L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_1M (5L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_2M (6L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_4M (7L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_8M (8L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_16M (9L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_32M (10L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_64M (11L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_128M (12L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_256M (13L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_512M (14L<<0) ++#define PCI_CONFIG_2_BAR2_SIZE_1G (15L<<0) ++#define PCI_CONFIG_2_BAR2_64ENA (1L<<4) ++ ++#define PCI_PM_DATA_A 0x410 ++#define PCI_PM_DATA_B 0x414 ++#define PCI_ID_VAL1 0x434 ++#define PCI_ID_VAL2 0x438 ++ ++ ++#define MDIO_REG_BANK_CL73_IEEEB0 0x0 ++#define MDIO_CL73_IEEEB0_CL73_AN_CONTROL 0x0 ++#define MDIO_CL73_IEEEB0_CL73_AN_CONTROL_RESTART_AN 0x0200 ++#define MDIO_CL73_IEEEB0_CL73_AN_CONTROL_AN_EN 0x1000 ++#define MDIO_CL73_IEEEB0_CL73_AN_CONTROL_MAIN_RST 0x8000 ++ ++#define MDIO_REG_BANK_CL73_IEEEB1 0x10 ++#define MDIO_CL73_IEEEB1_AN_ADV2 0x01 ++#define MDIO_CL73_IEEEB1_AN_ADV2_ADVR_1000M 0x0000 ++#define MDIO_CL73_IEEEB1_AN_ADV2_ADVR_1000M_KX 0x0020 ++#define MDIO_CL73_IEEEB1_AN_ADV2_ADVR_10G_KX4 0x0040 ++#define MDIO_CL73_IEEEB1_AN_ADV2_ADVR_10G_KR 0x0080 ++ ++#define MDIO_REG_BANK_RX0 0x80b0 ++#define MDIO_RX0_RX_EQ_BOOST 0x1c ++#define MDIO_RX0_RX_EQ_BOOST_EQUALIZER_CTRL_MASK 0x7 ++#define MDIO_RX0_RX_EQ_BOOST_OFFSET_CTRL 0x10 ++ ++#define MDIO_REG_BANK_RX1 0x80c0 ++#define MDIO_RX1_RX_EQ_BOOST 0x1c ++#define MDIO_RX1_RX_EQ_BOOST_EQUALIZER_CTRL_MASK 0x7 ++#define MDIO_RX1_RX_EQ_BOOST_OFFSET_CTRL 0x10 ++ ++#define MDIO_REG_BANK_RX2 0x80d0 ++#define MDIO_RX2_RX_EQ_BOOST 0x1c ++#define MDIO_RX2_RX_EQ_BOOST_EQUALIZER_CTRL_MASK 0x7 ++#define MDIO_RX2_RX_EQ_BOOST_OFFSET_CTRL 0x10 ++ ++#define MDIO_REG_BANK_RX3 0x80e0 ++#define MDIO_RX3_RX_EQ_BOOST 0x1c ++#define MDIO_RX3_RX_EQ_BOOST_EQUALIZER_CTRL_MASK 0x7 ++#define MDIO_RX3_RX_EQ_BOOST_OFFSET_CTRL 0x10 ++ ++#define MDIO_REG_BANK_RX_ALL 0x80f0 ++#define MDIO_RX_ALL_RX_EQ_BOOST 0x1c ++#define MDIO_RX_ALL_RX_EQ_BOOST_EQUALIZER_CTRL_MASK 0x7 ++#define MDIO_RX_ALL_RX_EQ_BOOST_OFFSET_CTRL 0x10 ++ ++#define MDIO_REG_BANK_TX0 0x8060 ++#define MDIO_TX0_TX_DRIVER 0x17 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK 0xf000 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT 12 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_MASK 0x0f00 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_SHIFT 8 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_MASK 0x00f0 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_SHIFT 4 ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_MASK 0x000e ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT 1 ++#define MDIO_TX0_TX_DRIVER_ICBUF1T 1 ++ ++#define MDIO_REG_BANK_TX1 0x8070 ++#define MDIO_TX1_TX_DRIVER 0x17 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK 0xf000 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT 12 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_MASK 0x0f00 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_SHIFT 8 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_MASK 0x00f0 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_SHIFT 4 ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_MASK 0x000e ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT 1 ++#define MDIO_TX0_TX_DRIVER_ICBUF1T 1 ++ ++#define MDIO_REG_BANK_TX2 0x8080 ++#define MDIO_TX2_TX_DRIVER 0x17 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK 0xf000 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT 12 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_MASK 0x0f00 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_SHIFT 8 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_MASK 0x00f0 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_SHIFT 4 ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_MASK 0x000e ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT 1 ++#define MDIO_TX0_TX_DRIVER_ICBUF1T 1 ++ ++#define MDIO_REG_BANK_TX3 0x8090 ++#define MDIO_TX3_TX_DRIVER 0x17 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK 0xf000 ++#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT 12 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_MASK 0x0f00 ++#define MDIO_TX0_TX_DRIVER_IDRIVER_SHIFT 8 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_MASK 0x00f0 ++#define MDIO_TX0_TX_DRIVER_IPREDRIVER_SHIFT 4 ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_MASK 0x000e ++#define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT 1 ++#define MDIO_TX0_TX_DRIVER_ICBUF1T 1 ++ ++#define MDIO_REG_BANK_XGXS_BLOCK0 0x8000 ++#define MDIO_BLOCK0_XGXS_CONTROL 0x10 ++ ++#define MDIO_REG_BANK_XGXS_BLOCK1 0x8010 ++#define MDIO_BLOCK1_LANE_CTRL0 0x15 ++#define MDIO_BLOCK1_LANE_CTRL1 0x16 ++#define MDIO_BLOCK1_LANE_CTRL2 0x17 ++#define MDIO_BLOCK1_LANE_PRBS 0x19 ++ ++#define MDIO_REG_BANK_XGXS_BLOCK2 0x8100 ++#define MDIO_XGXS_BLOCK2_RX_LN_SWAP 0x10 ++#define MDIO_XGXS_BLOCK2_RX_LN_SWAP_ENABLE 0x8000 ++#define MDIO_XGXS_BLOCK2_RX_LN_SWAP_FORCE_ENABLE 0x4000 ++#define MDIO_XGXS_BLOCK2_TX_LN_SWAP 0x11 ++#define MDIO_XGXS_BLOCK2_TX_LN_SWAP_ENABLE 0x8000 ++#define MDIO_XGXS_BLOCK2_UNICORE_MODE_10G 0x14 ++#define MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_CX4_XGXS 0x0001 ++#define MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_HIGIG_XGXS 0x0010 ++#define MDIO_XGXS_BLOCK2_TEST_MODE_LANE 0x15 ++ ++#define MDIO_REG_BANK_GP_STATUS 0x8120 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1 0x1B ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_AUTONEG_COMPLETE 0x0001 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL37_AUTONEG_COMPLETE 0x0002 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS 0x0004 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_DUPLEX_STATUS 0x0008 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_MR_LP_NP_AN_ABLE 0x0010 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_LP_NP_BAM_ABLE 0x0020 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_TXSIDE 0x0040 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_RXSIDE 0x0080 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_MASK 0x3f00 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10M 0x0000 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_100M 0x0100 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G 0x0200 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_2_5G 0x0300 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_5G 0x0400 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_6G 0x0500 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_HIG 0x0600 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_CX4 0x0700 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12G_HIG 0x0800 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12_5G 0x0900 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_13G 0x0A00 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_15G 0x0B00 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_16G 0x0C00 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G_KX 0x0D00 ++#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_KX4 0x0E00 ++ ++ ++#define MDIO_REG_BANK_10G_PARALLEL_DETECT 0x8130 ++#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL 0x11 ++#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL_PARDET10G_EN 0x1 ++#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK 0x13 ++#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK_CNT (0xb71<<1) ++ ++#define MDIO_REG_BANK_SERDES_DIGITAL 0x8300 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1 0x10 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_FIBER_MODE 0x0001 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_TBI_IF 0x0002 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_SIGNAL_DETECT_EN 0x0004 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_INVERT_SIGNAL_DETECT 0x0008 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET 0x0010 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_MSTR_MODE 0x0020 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2 0x11 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN 0x0001 ++#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_AN_FST_TMR 0x0040 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1 0x14 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_DUPLEX 0x0004 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_MASK 0x0018 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_SHIFT 3 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_2_5G 0x0018 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_1G 0x0010 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_100M 0x0008 ++#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_10M 0x0000 ++#define MDIO_SERDES_DIGITAL_MISC1 0x18 ++#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_MASK 0xE000 ++#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_25M 0x0000 ++#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_100M 0x2000 ++#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_125M 0x4000 ++#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_156_25M 0x6000 ++#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_187_5M 0x8000 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL 0x0010 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK 0x000f ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_2_5G 0x0000 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_5G 0x0001 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_6G 0x0002 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_HIG 0x0003 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_CX4 0x0004 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_12G 0x0005 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_12_5G 0x0006 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_13G 0x0007 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_15G 0x0008 ++#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_16G 0x0009 ++ ++#define MDIO_REG_BANK_OVER_1G 0x8320 ++#define MDIO_OVER_1G_DIGCTL_3_4 0x14 ++#define MDIO_OVER_1G_DIGCTL_3_4_MP_ID_MASK 0xffe0 ++#define MDIO_OVER_1G_DIGCTL_3_4_MP_ID_SHIFT 5 ++#define MDIO_OVER_1G_UP1 0x19 ++#define MDIO_OVER_1G_UP1_2_5G 0x0001 ++#define MDIO_OVER_1G_UP1_5G 0x0002 ++#define MDIO_OVER_1G_UP1_6G 0x0004 ++#define MDIO_OVER_1G_UP1_10G 0x0010 ++#define MDIO_OVER_1G_UP1_10GH 0x0008 ++#define MDIO_OVER_1G_UP1_12G 0x0020 ++#define MDIO_OVER_1G_UP1_12_5G 0x0040 ++#define MDIO_OVER_1G_UP1_13G 0x0080 ++#define MDIO_OVER_1G_UP1_15G 0x0100 ++#define MDIO_OVER_1G_UP1_16G 0x0200 ++#define MDIO_OVER_1G_UP2 0x1A ++#define MDIO_OVER_1G_UP2_IPREDRIVER_MASK 0x0007 ++#define MDIO_OVER_1G_UP2_IDRIVER_MASK 0x0038 ++#define MDIO_OVER_1G_UP2_PREEMPHASIS_MASK 0x03C0 ++#define MDIO_OVER_1G_UP3 0x1B ++#define MDIO_OVER_1G_UP3_HIGIG2 0x0001 ++#define MDIO_OVER_1G_LP_UP1 0x1C ++#define MDIO_OVER_1G_LP_UP2 0x1D ++#define MDIO_OVER_1G_LP_UP2_MR_ADV_OVER_1G_MASK 0x03ff ++#define MDIO_OVER_1G_LP_UP2_PREEMPHASIS_MASK 0x0780 ++#define MDIO_OVER_1G_LP_UP2_PREEMPHASIS_SHIFT 7 ++#define MDIO_OVER_1G_LP_UP3 0x1E ++ ++#define MDIO_REG_BANK_BAM_NEXT_PAGE 0x8350 ++#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL 0x10 ++#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE 0x0001 ++#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN 0x0002 ++ ++#define MDIO_REG_BANK_CL73_USERB0 0x8370 ++#define MDIO_CL73_USERB0_CL73_BAM_CTRL1 0x12 ++#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_EN 0x8000 ++#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_STATION_MNGR_EN 0x4000 ++#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_NP_AFTER_BP_EN 0x2000 ++#define MDIO_CL73_USERB0_CL73_BAM_CTRL3 0x14 ++#define MDIO_CL73_USERB0_CL73_BAM_CTRL3_USE_CL73_HCD_MR 0x0001 ++ ++#define MDIO_REG_BANK_AER_BLOCK 0xFFD0 ++#define MDIO_AER_BLOCK_AER_REG 0x1E ++ ++#define MDIO_REG_BANK_COMBO_IEEE0 0xFFE0 ++#define MDIO_COMBO_IEEE0_MII_CONTROL 0x10 ++#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_MASK 0x2040 ++#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_10 0x0000 ++#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_100 0x2000 ++#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_1000 0x0040 ++#define MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX 0x0100 ++#define MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN 0x0200 ++#define MDIO_COMBO_IEEO_MII_CONTROL_AN_EN 0x1000 ++#define MDIO_COMBO_IEEO_MII_CONTROL_LOOPBACK 0x4000 ++#define MDIO_COMBO_IEEO_MII_CONTROL_RESET 0x8000 ++#define MDIO_COMBO_IEEE0_MII_STATUS 0x11 ++#define MDIO_COMBO_IEEE0_MII_STATUS_LINK_PASS 0x0004 ++#define MDIO_COMBO_IEEE0_MII_STATUS_AUTONEG_COMPLETE 0x0020 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV 0x14 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_FULL_DUPLEX 0x0020 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_HALF_DUPLEX 0x0040 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK 0x0180 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE 0x0000 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC 0x0080 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC 0x0100 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH 0x0180 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_NEXT_PAGE 0x8000 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1 0x15 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_NEXT_PAGE 0x8000 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_ACK 0x4000 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_MASK 0x0180 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_NONE 0x0000 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_BOTH 0x0180 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_HALF_DUP_CAP 0x0040 ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_FULL_DUP_CAP 0x0020 ++/*WhenthelinkpartnerisinSGMIImode(bit0=1),then ++bit15=link,bit12=duplex,bits11:10=speed,bit14=acknowledge. ++Theotherbitsarereservedandshouldbezero*/ ++#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_SGMII_MODE 0x0001 ++ ++ ++#define MDIO_PMA_DEVAD 0x1 ++/*ieee*/ ++#define MDIO_PMA_REG_CTRL 0x0 ++#define MDIO_PMA_REG_STATUS 0x1 ++#define MDIO_PMA_REG_10G_CTRL2 0x7 ++#define MDIO_PMA_REG_RX_SD 0xa ++/*bcm*/ ++#define MDIO_PMA_REG_BCM_CTRL 0x0096 ++#define MDIO_PMA_REG_FEC_CTRL 0x00ab ++#define MDIO_PMA_REG_RX_ALARM_CTRL 0x9000 ++#define MDIO_PMA_REG_LASI_CTRL 0x9002 ++#define MDIO_PMA_REG_RX_ALARM 0x9003 ++#define MDIO_PMA_REG_TX_ALARM 0x9004 ++#define MDIO_PMA_REG_LASI_STATUS 0x9005 ++#define MDIO_PMA_REG_PHY_IDENTIFIER 0xc800 ++#define MDIO_PMA_REG_DIGITAL_CTRL 0xc808 ++#define MDIO_PMA_REG_DIGITAL_STATUS 0xc809 ++#define MDIO_PMA_REG_TX_POWER_DOWN 0xca02 ++#define MDIO_PMA_REG_CMU_PLL_BYPASS 0xca09 ++#define MDIO_PMA_REG_MISC_CTRL 0xca0a ++#define MDIO_PMA_REG_GEN_CTRL 0xca10 ++#define MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP 0x0188 ++#define MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET 0x018a ++#define MDIO_PMA_REG_M8051_MSGIN_REG 0xca12 ++#define MDIO_PMA_REG_M8051_MSGOUT_REG 0xca13 ++#define MDIO_PMA_REG_ROM_VER1 0xca19 ++#define MDIO_PMA_REG_ROM_VER2 0xca1a ++#define MDIO_PMA_REG_EDC_FFE_MAIN 0xca1b ++#define MDIO_PMA_REG_PLL_BANDWIDTH 0xca1d ++#define MDIO_PMA_REG_PLL_CTRL 0xca1e ++#define MDIO_PMA_REG_MISC_CTRL0 0xca23 ++#define MDIO_PMA_REG_LRM_MODE 0xca3f ++#define MDIO_PMA_REG_CDR_BANDWIDTH 0xca46 ++#define MDIO_PMA_REG_MISC_CTRL1 0xca85 ++ ++#define MDIO_PMA_REG_SFP_TWO_WIRE_CTRL 0x8000 ++#define MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK 0x000c ++#define MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_IDLE 0x0000 ++#define MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE 0x0004 ++#define MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_IN_PROGRESS 0x0008 ++#define MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_FAILED 0x000c ++#define MDIO_PMA_REG_SFP_TWO_WIRE_BYTE_CNT 0x8002 ++#define MDIO_PMA_REG_SFP_TWO_WIRE_MEM_ADDR 0x8003 ++#define MDIO_PMA_REG_8726_TWO_WIRE_DATA_BUF 0xc820 ++#define MDIO_PMA_REG_8726_TWO_WIRE_DATA_MASK 0xff ++#define MDIO_PMA_REG_8726_TX_CTRL1 0xca01 ++#define MDIO_PMA_REG_8726_TX_CTRL2 0xca05 ++ ++#define MDIO_PMA_REG_8727_TWO_WIRE_SLAVE_ADDR 0x8005 ++#define MDIO_PMA_REG_8727_TWO_WIRE_DATA_BUF 0x8007 ++#define MDIO_PMA_REG_8727_TWO_WIRE_DATA_MASK 0xff ++#define MDIO_PMA_REG_8727_MISC_CTRL 0x8309 ++#define MDIO_PMA_REG_8727_TX_CTRL1 0xca02 ++#define MDIO_PMA_REG_8727_TX_CTRL2 0xca05 ++#define MDIO_PMA_REG_8727_PCS_OPT_CTRL 0xc808 ++#define MDIO_PMA_REG_8727_GPIO_CTRL 0xc80e ++ ++#define MDIO_PMA_REG_8073_CHIP_REV 0xc801 ++#define MDIO_PMA_REG_8073_SPEED_LINK_STATUS 0xc820 ++#define MDIO_PMA_REG_8073_XAUI_WA 0xc841 ++ ++#define MDIO_PMA_REG_7101_RESET 0xc000 ++#define MDIO_PMA_REG_7107_LED_CNTL 0xc007 ++#define MDIO_PMA_REG_7101_VER1 0xc026 ++#define MDIO_PMA_REG_7101_VER2 0xc027 ++ ++#define MDIO_PMA_REG_8481_PMD_SIGNAL 0xa811 ++#define MDIO_PMA_REG_8481_SIGNAL_MASK 0xa835 ++#define MDIO_PMA_REG_8481_LINK_SIGNAL 0xa83b ++ ++ ++#define MDIO_WIS_DEVAD 0x2 ++/*bcm*/ ++#define MDIO_WIS_REG_LASI_CNTL 0x9002 ++#define MDIO_WIS_REG_LASI_STATUS 0x9005 ++ ++#define MDIO_PCS_DEVAD 0x3 ++#define MDIO_PCS_REG_STATUS 0x0020 ++#define MDIO_PCS_REG_LASI_STATUS 0x9005 ++#define MDIO_PCS_REG_7101_DSP_ACCESS 0xD000 ++#define MDIO_PCS_REG_7101_SPI_MUX 0xD008 ++#define MDIO_PCS_REG_7101_SPI_CTRL_ADDR 0xE12A ++#define MDIO_PCS_REG_7101_SPI_RESET_BIT (5) ++#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR 0xE02A ++#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR_WRITE_ENABLE_CMD (6) ++#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR_BULK_ERASE_CMD (0xC7) ++#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR_PAGE_PROGRAM_CMD (2) ++#define MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR 0xE028 ++ ++ ++#define MDIO_XS_DEVAD 0x4 ++#define MDIO_XS_PLL_SEQUENCER 0x8000 ++#define MDIO_XS_SFX7101_XGXS_TEST1 0xc00a ++ ++#define MDIO_XS_8706_REG_BANK_RX0 0x80bc ++#define MDIO_XS_8706_REG_BANK_RX1 0x80cc ++#define MDIO_XS_8706_REG_BANK_RX2 0x80dc ++#define MDIO_XS_8706_REG_BANK_RX3 0x80ec ++#define MDIO_XS_8706_REG_BANK_RXA 0x80fc ++ ++#define MDIO_AN_DEVAD 0x7 ++/*ieee*/ ++#define MDIO_AN_REG_CTRL 0x0000 ++#define MDIO_AN_REG_STATUS 0x0001 ++#define MDIO_AN_REG_STATUS_AN_COMPLETE 0x0020 ++#define MDIO_AN_REG_ADV_PAUSE 0x0010 ++#define MDIO_AN_REG_ADV_PAUSE_PAUSE 0x0400 ++#define MDIO_AN_REG_ADV_PAUSE_ASYMMETRIC 0x0800 ++#define MDIO_AN_REG_ADV_PAUSE_BOTH 0x0C00 ++#define MDIO_AN_REG_ADV_PAUSE_MASK 0x0C00 ++#define MDIO_AN_REG_ADV 0x0011 ++#define MDIO_AN_REG_ADV2 0x0012 ++#define MDIO_AN_REG_LP_AUTO_NEG 0x0013 ++#define MDIO_AN_REG_MASTER_STATUS 0x0021 ++/*bcm*/ ++#define MDIO_AN_REG_LINK_STATUS 0x8304 ++#define MDIO_AN_REG_CL37_CL73 0x8370 ++#define MDIO_AN_REG_CL37_AN 0xffe0 ++#define MDIO_AN_REG_CL37_FC_LD 0xffe4 ++#define MDIO_AN_REG_CL37_FC_LP 0xffe5 ++ ++#define MDIO_AN_REG_8073_2_5G 0x8329 ++ ++#define MDIO_AN_REG_8481_LEGACY_MII_CTRL 0xffe0 ++#define MDIO_AN_REG_8481_LEGACY_AN_ADV 0xffe4 ++#define MDIO_AN_REG_8481_1000T_CTRL 0xffe9 ++#define MDIO_AN_REG_8481_EXPANSION_REG_RD_RW 0xfff5 ++#define MDIO_AN_REG_8481_EXPANSION_REG_ACCESS 0xfff7 ++#define MDIO_AN_REG_8481_LEGACY_SHADOW 0xfffc ++ ++#define IGU_FUNC_BASE 0x0400 ++ ++#define IGU_ADDR_MSIX 0x0000 ++#define IGU_ADDR_INT_ACK 0x0200 ++#define IGU_ADDR_PROD_UPD 0x0201 ++#define IGU_ADDR_ATTN_BITS_UPD 0x0202 ++#define IGU_ADDR_ATTN_BITS_SET 0x0203 ++#define IGU_ADDR_ATTN_BITS_CLR 0x0204 ++#define IGU_ADDR_COALESCE_NOW 0x0205 ++#define IGU_ADDR_SIMD_MASK 0x0206 ++#define IGU_ADDR_SIMD_NOMASK 0x0207 ++#define IGU_ADDR_MSI_CTL 0x0210 ++#define IGU_ADDR_MSI_ADDR_LO 0x0211 ++#define IGU_ADDR_MSI_ADDR_HI 0x0212 ++#define IGU_ADDR_MSI_DATA 0x0213 ++ ++#define IGU_INT_ENABLE 0 ++#define IGU_INT_DISABLE 1 ++#define IGU_INT_NOP 2 ++#define IGU_INT_NOP2 3 ++ ++#define COMMAND_REG_INT_ACK 0x0 ++#define COMMAND_REG_PROD_UPD 0x4 ++#define COMMAND_REG_ATTN_BITS_UPD 0x8 ++#define COMMAND_REG_ATTN_BITS_SET 0xc ++#define COMMAND_REG_ATTN_BITS_CLR 0x10 ++#define COMMAND_REG_COALESCE_NOW 0x14 ++#define COMMAND_REG_SIMD_MASK 0x18 ++#define COMMAND_REG_SIMD_NOMASK 0x1c ++ ++ ++#define IGU_MEM_BASE 0x0000 ++ ++#define IGU_MEM_MSIX_BASE 0x0000 ++#define IGU_MEM_MSIX_UPPER 0x007f ++#define IGU_MEM_MSIX_RESERVED_UPPER 0x01ff ++ ++#define IGU_MEM_PBA_MSIX_BASE 0x0200 ++#define IGU_MEM_PBA_MSIX_UPPER 0x0200 ++ ++#define IGU_CMD_BACKWARD_COMP_PROD_UPD 0x0201 ++#define IGU_MEM_PBA_MSIX_RESERVED_UPPER 0x03ff ++ ++#define IGU_CMD_INT_ACK_BASE 0x0400 ++#define IGU_CMD_INT_ACK_UPPER\ ++ (IGU_CMD_INT_ACK_BASE + MAX_SB_PER_PORT * NUM_OF_PORTS_PER_PATH - 1) ++#define IGU_CMD_INT_ACK_RESERVED_UPPER 0x04ff ++ ++#define IGU_CMD_E2_PROD_UPD_BASE 0x0500 ++#define IGU_CMD_E2_PROD_UPD_UPPER\ ++ (IGU_CMD_E2_PROD_UPD_BASE + MAX_SB_PER_PORT * NUM_OF_PORTS_PER_PATH - 1) ++#define IGU_CMD_E2_PROD_UPD_RESERVED_UPPER 0x059f ++ ++#define IGU_CMD_ATTN_BIT_UPD_UPPER 0x05a0 ++#define IGU_CMD_ATTN_BIT_SET_UPPER 0x05a1 ++#define IGU_CMD_ATTN_BIT_CLR_UPPER 0x05a2 ++ ++#define IGU_REG_SISR_MDPC_WMASK_UPPER 0x05a3 ++#define IGU_REG_SISR_MDPC_WMASK_LSB_UPPER 0x05a4 ++#define IGU_REG_SISR_MDPC_WMASK_MSB_UPPER 0x05a5 ++#define IGU_REG_SISR_MDPC_WOMASK_UPPER 0x05a6 ++ ++#define IGU_REG_RESERVED_UPPER 0x05ff ++ ++ ++#define CDU_REGION_NUMBER_XCM_AG 2 ++#define CDU_REGION_NUMBER_UCM_AG 4 ++ ++ ++/** ++ * String-to-compress [31:8] = CID (all 24 bits) ++ * String-to-compress [7:4] = Region ++ * String-to-compress [3:0] = Type ++ */ ++#define CDU_VALID_DATA(_cid, _region, _type)\ ++ (((_cid) << 8) | (((_region)&0xf)<<4) | (((_type)&0xf))) ++#define CDU_CRC8(_cid, _region, _type)\ ++ (calc_crc8(CDU_VALID_DATA(_cid, _region, _type), 0xff)) ++#define CDU_RSRVD_VALUE_TYPE_A(_cid, _region, _type)\ ++ (0x80 | ((CDU_CRC8(_cid, _region, _type)) & 0x7f)) ++#define CDU_RSRVD_VALUE_TYPE_B(_crc, _type)\ ++ (0x80 | ((_type)&0xf << 3) | ((CDU_CRC8(_cid, _region, _type)) & 0x7)) ++#define CDU_RSRVD_INVALIDATE_CONTEXT_VALUE(_val) ((_val) & ~0x80) ++ ++/****************************************************************************** ++ * Description: ++ * Calculates crc 8 on a word value: polynomial 0-1-2-8 ++ * Code was translated from Verilog. ++ * Return: ++ *****************************************************************************/ ++static inline u8 calc_crc8(u32 data, u8 crc) ++{ ++ u8 D[32]; ++ u8 NewCRC[8]; ++ u8 C[8]; ++ u8 crc_res; ++ u8 i; ++ ++ /* split the data into 31 bits */ ++ for (i = 0; i < 32; i++) { ++ D[i] = (u8)(data & 1); ++ data = data >> 1; ++ } ++ ++ /* split the crc into 8 bits */ ++ for (i = 0; i < 8; i++ ) { ++ C[i] = crc & 1; ++ crc = crc >> 1; ++ } ++ ++ NewCRC[0] = D[31] ^ D[30] ^ D[28] ^ D[23] ^ D[21] ^ D[19] ^ D[18] ^ ++ D[16] ^ D[14] ^ D[12] ^ D[8] ^ D[7] ^ D[6] ^ D[0] ^ C[4] ^ ++ C[6] ^ C[7]; ++ NewCRC[1] = D[30] ^ D[29] ^ D[28] ^ D[24] ^ D[23] ^ D[22] ^ D[21] ^ ++ D[20] ^ D[18] ^ D[17] ^ D[16] ^ D[15] ^ D[14] ^ D[13] ^ ++ D[12] ^ D[9] ^ D[6] ^ D[1] ^ D[0] ^ C[0] ^ C[4] ^ C[5] ^ C[6]; ++ NewCRC[2] = D[29] ^ D[28] ^ D[25] ^ D[24] ^ D[22] ^ D[17] ^ D[15] ^ ++ D[13] ^ D[12] ^ D[10] ^ D[8] ^ D[6] ^ D[2] ^ D[1] ^ D[0] ^ ++ C[0] ^ C[1] ^ C[4] ^ C[5]; ++ NewCRC[3] = D[30] ^ D[29] ^ D[26] ^ D[25] ^ D[23] ^ D[18] ^ D[16] ^ ++ D[14] ^ D[13] ^ D[11] ^ D[9] ^ D[7] ^ D[3] ^ D[2] ^ D[1] ^ ++ C[1] ^ C[2] ^ C[5] ^ C[6]; ++ NewCRC[4] = D[31] ^ D[30] ^ D[27] ^ D[26] ^ D[24] ^ D[19] ^ D[17] ^ ++ D[15] ^ D[14] ^ D[12] ^ D[10] ^ D[8] ^ D[4] ^ D[3] ^ D[2] ^ ++ C[0] ^ C[2] ^ C[3] ^ C[6] ^ C[7]; ++ NewCRC[5] = D[31] ^ D[28] ^ D[27] ^ D[25] ^ D[20] ^ D[18] ^ D[16] ^ ++ D[15] ^ D[13] ^ D[11] ^ D[9] ^ D[5] ^ D[4] ^ D[3] ^ C[1] ^ ++ C[3] ^ C[4] ^ C[7]; ++ NewCRC[6] = D[29] ^ D[28] ^ D[26] ^ D[21] ^ D[19] ^ D[17] ^ D[16] ^ ++ D[14] ^ D[12] ^ D[10] ^ D[6] ^ D[5] ^ D[4] ^ C[2] ^ C[4] ^ C[5]; ++ NewCRC[7] = D[30] ^ D[29] ^ D[27] ^ D[22] ^ D[20] ^ D[18] ^ D[17] ^ ++ D[15] ^ D[13] ^ D[11] ^ D[7] ^ D[6] ^ D[5] ^ C[3] ^ C[5] ^ C[6]; ++ ++ crc_res = 0; ++ for (i = 0; i < 8; i++) { ++ crc_res |= (NewCRC[i] << i); ++ } ++ ++ return crc_res; ++} ++ ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_self_test.h linux-2.6.22-800/drivers/net/bnx2x/bnx2x_self_test.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/bnx2x_self_test.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/bnx2x_self_test.h 2009-07-23 13:39:51.000000000 -0400 +@@ -0,0 +1,1004 @@ ++/* bnx2x_self_test.h: Broadcom Everest network driver. ++ * ++ * Copyright (c) 2007-2009 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ * Maintained by: Eilon Greenstein ++ * Written by: Yitchak Gertner ++ */ ++ ++/* self test */ ++ ++static int idle_chk_errors; ++static int idle_chk_warnings; ++ ++ ++#define IDLE_CHK_E1 0x1 ++#define IDLE_CHK_E1H 0x2 ++ ++#define IDLE_CHK_ERROR 1 ++#define IDLE_CHK_ERROR_NO_TRAFFIC 2 ++#define IDLE_CHK_WARNING 3 ++ ++ ++#define CHIP_MASK_CHK(chip_mask) \ ++ (((((chip_mask) & IDLE_CHK_E1) && is_e1) || \ ++ (((chip_mask) & IDLE_CHK_E1H) && is_e1h)) ? 1 : 0) ++ ++#define CONDITION_CHK(condition, severity, fail_msg, arg_list...) \ ++ do { \ ++ if (condition) { \ ++ switch (severity) { \ ++ case IDLE_CHK_ERROR: \ ++ BNX2X_DBG_ERR("ERROR " fail_msg, ##arg_list); \ ++ idle_chk_errors++; \ ++ break; \ ++ case IDLE_CHK_ERROR_NO_TRAFFIC: \ ++ BNX2X_DBG_ERR("INFO " fail_msg, ##arg_list); \ ++ break; \ ++ case IDLE_CHK_WARNING: \ ++ BNX2X_DBG_ERR("WARNING " fail_msg, \ ++ ##arg_list); \ ++ idle_chk_warnings++; \ ++ break; \ ++ } \ ++ } \ ++ } while (0); ++ ++ ++static void bnx2x_idle_chk6(struct bnx2x *bp, u32 chip_mask, u32 offset, ++ int loop, int inc, int severity) ++{ ++ int is_e1 = CHIP_IS_E1(bp); ++ int is_e1h = CHIP_IS_E1H(bp); ++ int i; ++ u32 val1, val2; ++ u32 rd_ptr, wr_ptr, rd_bank, wr_bank; ++ ++ if (!CHIP_MASK_CHK(chip_mask)) ++ return; ++ ++ for (i = 0; i < loop; i++) { ++ val1 = REG_RD(bp, offset + i*inc); ++ val2 = REG_RD(bp, offset + i*inc + 4); ++ rd_ptr = ((val1 & 0x3FFFFFC0) >> 6); ++ wr_ptr = ((((val1 & 0xC0000000) >> 30) & 0x3) | ++ ((val2 & 0x3FFFFF) << 2)); ++ CONDITION_CHK((rd_ptr != wr_ptr), severity, ++ "QM: PTRTBL entry %d - rd_ptr is not" ++ " equal to wr_ptr. Values are 0x%x 0x%x\n", ++ i, rd_ptr, wr_ptr); ++ rd_bank = ((val1 & 0x30) >> 4); ++ wr_bank = (val1 & 0x03); ++ CONDITION_CHK((rd_bank != wr_bank), severity, ++ "QM: PTRTBL entry %d - rd_bank is not" ++ " equal to wr_bank. Values are 0x%x 0x%x\n", ++ i, rd_bank, wr_bank); ++ } ++} ++ ++static int bnx2x_idle_chk(struct bnx2x *bp) ++{ ++ ++/* read one reg and check the condition */ ++#define IDLE_CHK_1(chip_mask, offset, condition, severity, fail_msg) \ ++ do { \ ++ if (CHIP_MASK_CHK(chip_mask)) { \ ++ val = REG_RD(bp, offset); \ ++ CONDITION_CHK(condition, severity, \ ++ fail_msg ". Value is 0x%x\n", val); \ ++ } \ ++ } while (0); ++ ++/* loop to read one reg and check the condition */ ++#define IDLE_CHK_2(chip_mask, offset, loop, inc, condition, severity, \ ++ fail_msg) \ ++ do { \ ++ if (CHIP_MASK_CHK(chip_mask)) \ ++ for (i = 0; i < (loop); i++) { \ ++ val = REG_RD(bp, offset + i*(inc)); \ ++ CONDITION_CHK(condition, severity, \ ++ fail_msg ". Value is 0x%x\n", \ ++ i, val); \ ++ } \ ++ } while (0); ++ ++/* read two regs and check the condition */ ++#define IDLE_CHK_3(chip_mask, offset1, offset2, condition, severity, \ ++ fail_msg) \ ++ do { \ ++ if (CHIP_MASK_CHK(chip_mask)) { \ ++ val1 = REG_RD(bp, offset1); \ ++ val2 = REG_RD(bp, offset2); \ ++ CONDITION_CHK(condition, severity, \ ++ fail_msg ". Values are 0x%x 0x%x\n", \ ++ val1, val2); \ ++ } \ ++ } while (0); ++ ++/* loop to read two regs and check the condition */ ++#define IDLE_CHK_4(chip_mask, offset1, offset2, loop, inc, condition, \ ++ severity, fail_msg) \ ++ do { \ ++ if (CHIP_MASK_CHK(chip_mask)) \ ++ for (i = 0; i < (loop); i++) { \ ++ val1 = REG_RD(bp, offset1 + i*(inc)); \ ++ val2 = (REG_RD(bp, offset2 + i*(inc)) >> 1); \ ++ CONDITION_CHK(condition, severity, fail_msg \ ++ " - LCID %d CID_CAM 0x%x" \ ++ " Value is 0x%x\n", \ ++ i, val2, val1); \ ++ } \ ++ } while (0); ++ ++/* read one reg and check according to another reg */ ++#define IDLE_CHK_5(chip_mask, offset, offset1, offset2, condition, severity, \ ++ fail_msg) \ ++ do { \ ++ if (CHIP_MASK_CHK(chip_mask)) \ ++ if (!REG_RD(bp, offset)) \ ++ IDLE_CHK_3(chip_mask, offset1, offset2, \ ++ condition, severity, fail_msg); \ ++ } while (0); ++ ++/* read wide-bus reg and check sub-fields */ ++#define IDLE_CHK_6(chip_mask, offset, loop, inc, severity) \ ++ bnx2x_idle_chk6(bp, chip_mask, offset, loop, inc, severity) ++ ++/* loop to read wide-bus reg and check according to another reg */ ++#define IDLE_CHK_7(chip_mask, offset, offset1, offset2, loop, inc, condition, \ ++ severity, fail_msg) \ ++ do { \ ++ if (CHIP_MASK_CHK(chip_mask)) \ ++ for (i = 0; i < (loop); i++) { \ ++ if (REG_RD(bp, offset + i*4) == 1) { \ ++ val1 = REG_RD(bp, offset1 + i*(inc)); \ ++ val1 = REG_RD(bp, offset1 + i*(inc) + \ ++ 4); \ ++ val1 = ((REG_RD(bp, offset1 + i*(inc) \ ++ + 8) & 0x00000078) >> 3); \ ++ val2 = (REG_RD(bp, offset2 + i*4)>>1); \ ++ CONDITION_CHK(condition, severity, \ ++ fail_msg " - LCID %d " \ ++ "CID_CAM 0x%x" \ ++ " Value is 0x%x\n", \ ++ i, val2, val1); \ ++ } \ ++ } \ ++ } while (0); ++ ++ ++ int is_e1 = CHIP_IS_E1(bp); ++ int is_e1h = CHIP_IS_E1H(bp); ++ int i; ++ u32 val, val1, val2; ++ ++ idle_chk_errors = 0; ++ idle_chk_warnings = 0; ++ ++ if (!netif_running(bp->dev)) ++ return idle_chk_errors; ++ ++ IDLE_CHK_1(0x7, 0x2114, ((val & 0x0ff010) != 0), IDLE_CHK_ERROR, ++ "PCIE: ucorr_err_status is not 0"); ++ IDLE_CHK_1(0x7, 0x2114, ((val & 0x100000) != 0), IDLE_CHK_WARNING, ++ "PCIE: ucorr_err_status - Unsupported request error"); ++ IDLE_CHK_1(0x7, 0x2120, ++ (((val & 0x31c1) != 0x2000) && ((val & 0x31c1) != 0)), ++ IDLE_CHK_WARNING, "PCIE: corr_err_status is not 0x2000"); ++ IDLE_CHK_1(0x7, 0x2814, ((val & ~0x40100) != 0), IDLE_CHK_ERROR, ++ "PCIE: attentions register is not 0x40100"); ++ IDLE_CHK_1(0x6, 0x281c, ((val & ~0x40040100) != 0), IDLE_CHK_ERROR, ++ "PCIE: attentions register is not 0x40040100"); ++ IDLE_CHK_1(0x6, 0x2820, ((val & ~0x40040100) != 0), IDLE_CHK_ERROR, ++ "PCIE: attentions register is not 0x40040100"); ++ IDLE_CHK_1(0x1, PXP2_REG_PGL_EXP_ROM2, (val != 0xffffffff), ++ IDLE_CHK_WARNING, ++ "PXP2: There are outstanding read requests. Not all" ++ " completions have arrived for read requests on tags that" ++ " are marked with 0"); ++ IDLE_CHK_2(0x7, 0x212c, 4, 4, ((val != 0) && (idle_chk_errors > 0)), ++ IDLE_CHK_WARNING, "PCIE: error packet header %d is not 0"); ++ ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ0_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ0 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ1_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ1 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ2_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ2 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ3_ENTRY_CNT, (val > 2), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ3 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ4_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ4 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ5_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ5 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ6_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ6 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ7_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ7 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ8_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ8 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ9_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ9 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ10_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ10 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ11_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ11 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ12_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ12 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ13_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ13 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ14_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ14 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ15_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ15 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ16_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ16 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ17_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ17 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ18_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ18 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ19_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ19 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ20_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ20 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ21_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ21 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ22_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ22 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ23_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ23 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ24_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ24 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ25_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ25 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ26_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ26 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ27_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ27 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ28_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ28 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ29_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ29 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ30_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ30 is not empty"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ31_ENTRY_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ31 is not empty"); ++ ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_UFIFO_NUM_OF_ENTRY, (val != 0), ++ IDLE_CHK_ERROR, "PXP2: rq_ufifo_num_of_entry is not 0"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_RBC_DONE, (val != 1), IDLE_CHK_ERROR, ++ "PXP2: rq_rbc_done is not 1"); ++ IDLE_CHK_1(0x7, PXP2_REG_RQ_CFG_DONE, (val != 1), IDLE_CHK_ERROR, ++ "PXP2: rq_cfg_done is not 1"); ++ IDLE_CHK_1(0x7, PXP2_REG_PSWRQ_BW_CREDIT, (val != 0x1b), ++ IDLE_CHK_ERROR, ++ "PXP2: rq_read_credit and rq_write_credit are not 3"); ++ IDLE_CHK_1(0x7, PXP2_REG_RD_START_INIT, (val != 1), IDLE_CHK_ERROR, ++ "PXP2: rd_start_init is not 1"); ++ IDLE_CHK_1(0x7, PXP2_REG_RD_INIT_DONE, (val != 1), IDLE_CHK_ERROR, ++ "PXP2: rd_init_done is not 1"); ++ ++ IDLE_CHK_3(0x7, PXP2_REG_RD_SR_CNT, PXP2_REG_RD_SR_NUM_CFG, ++ (val1 != (val2-1)), IDLE_CHK_WARNING, ++ "PXP2: rd_sr_cnt is not equal to rd_sr_num_cfg"); ++ IDLE_CHK_3(0x7, PXP2_REG_RD_BLK_CNT, PXP2_REG_RD_BLK_NUM_CFG, ++ (val1 != val2), IDLE_CHK_WARNING, ++ "PXP2: rd_blk_cnt is not equal to rd_blk_num_cfg"); ++ ++ IDLE_CHK_3(0x7, PXP2_REG_RD_SR_CNT, PXP2_REG_RD_SR_NUM_CFG, ++ (val1 < (val2-3)), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PXP2: There are more than two unused SRs"); ++ IDLE_CHK_3(0x7, PXP2_REG_RD_BLK_CNT, PXP2_REG_RD_BLK_NUM_CFG, ++ (val1 < (val2-2)), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PXP2: There are more than two unused blocks"); ++ ++ IDLE_CHK_1(0x7, PXP2_REG_RD_PORT_IS_IDLE_0, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PXP2: P0 All delivery ports are not idle"); ++ IDLE_CHK_1(0x7, PXP2_REG_RD_PORT_IS_IDLE_1, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PXP2: P1 All delivery ports are not idle"); ++ ++ IDLE_CHK_2(0x7, PXP2_REG_RD_ALMOST_FULL_0, 11, 4, (val != 0), ++ IDLE_CHK_ERROR, "PXP2: rd_almost_full_%d is not 0"); ++ ++ IDLE_CHK_1(0x7, PXP2_REG_RD_DISABLE_INPUTS, (val != 0), ++ IDLE_CHK_ERROR, "PXP2: PSWRD inputs are disabled"); ++ IDLE_CHK_1(0x7, PXP2_REG_HST_HEADER_FIFO_STATUS, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PXP2: HST header FIFO status is not 0"); ++ IDLE_CHK_1(0x7, PXP2_REG_HST_DATA_FIFO_STATUS, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PXP2: HST data FIFO status is not 0"); ++ IDLE_CHK_1(0x7, PXP2_REG_PGL_WRITE_BLOCKED, (val != 0), ++ IDLE_CHK_ERROR, "PXP2: pgl_write_blocked is not 0"); ++ IDLE_CHK_1(0x7, PXP2_REG_PGL_READ_BLOCKED, (val != 0), IDLE_CHK_ERROR, ++ "PXP2: pgl_read_blocked is not 0"); ++ IDLE_CHK_1(0x7, PXP2_REG_PGL_TXW_CDTS, (((val >> 17) & 1) != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PXP2: There is data which is ready"); ++ ++ IDLE_CHK_1(0x7, PXP_REG_HST_ARB_IS_IDLE, (val != 1), IDLE_CHK_WARNING, ++ "PXP: HST arbiter is not idle"); ++ IDLE_CHK_1(0x7, PXP_REG_HST_CLIENTS_WAITING_TO_ARB, (val != 0), ++ IDLE_CHK_WARNING, ++ "PXP: HST one of the clients is waiting for delivery"); ++ IDLE_CHK_1(0x6, PXP_REG_HST_DISCARD_INTERNAL_WRITES_STATUS, ++ (val != 0), IDLE_CHK_WARNING, ++ "PXP: HST Close the gates: Discarding internal writes"); ++ IDLE_CHK_1(0x6, PXP_REG_HST_DISCARD_DOORBELLS_STATUS, (val != 0), ++ IDLE_CHK_WARNING, ++ "PXP: HST Close the gates: Discarding doorbells"); ++ ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C0, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 0 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C1, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 1 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C2, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 2 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C3, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 3 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C4, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 4 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C5, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 5 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C6, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 6 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C7, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 7 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C8, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 8 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C9, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DMAE: command 9 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C10, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 10 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C11, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 11 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C12, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 12 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C13, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 13 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C14, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 14 go is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_GO_C15, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 15 go is not 0"); ++ ++ IDLE_CHK_1(0x7, CFC_REG_ERROR_VECTOR, (val != 0), IDLE_CHK_ERROR, ++ "CFC: error vector is not 0"); ++ IDLE_CHK_1(0x7, CFC_REG_NUM_LCIDS_ARRIVING, (val != 0), ++ IDLE_CHK_ERROR, "CFC: number of arriving LCIDs is not 0"); ++ IDLE_CHK_1(0x7, CFC_REG_NUM_LCIDS_ALLOC, (val != 0), IDLE_CHK_ERROR, ++ "CFC: number of alloc LCIDs is not 0"); ++ IDLE_CHK_1(0x7, CFC_REG_NUM_LCIDS_LEAVING, (val != 0), IDLE_CHK_ERROR, ++ "CFC: number of leaving LCIDs is not 0"); ++ ++ IDLE_CHK_4(0x7, CFC_REG_ACTIVITY_COUNTER, CFC_REG_CID_CAM, ++ (CFC_REG_ACTIVITY_COUNTER_SIZE >> 2), 4, (val1 > 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "CFC: AC > 1"); ++ IDLE_CHK_7(0x7, CFC_REG_ACTIVITY_COUNTER, CFC_REG_INFO_RAM, ++ CFC_REG_CID_CAM, (CFC_REG_INFO_RAM_SIZE >> 4), 16, ++ (val1 == 3), IDLE_CHK_WARNING, ++ "CFC: AC is 1, connType is 3"); ++ IDLE_CHK_7(0x7, CFC_REG_ACTIVITY_COUNTER, CFC_REG_INFO_RAM, ++ CFC_REG_CID_CAM, (CFC_REG_INFO_RAM_SIZE >> 4), 16, ++ ((val1 != 0) && (val1 != 3)), IDLE_CHK_ERROR, ++ "CFC: AC is 1, connType is not 0 nor 3"); ++ ++ IDLE_CHK_2(0x7, QM_REG_QTASKCTR_0, 64, 4, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "QM: Q_%d, queue is not empty"); ++ ++ IDLE_CHK_3(0x7, QM_REG_VOQCREDIT_0, QM_REG_VOQINITCREDIT_0, ++ (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "QM: VOQ_0, VOQ credit is not equal to initial credit"); ++ IDLE_CHK_3(0x7, QM_REG_VOQCREDIT_1, QM_REG_VOQINITCREDIT_1, ++ (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "QM: VOQ_1, VOQ credit is not equal to initial credit"); ++ IDLE_CHK_3(0x7, QM_REG_VOQCREDIT_4, QM_REG_VOQINITCREDIT_4, ++ (val1 != val2), IDLE_CHK_ERROR, ++ "QM: VOQ_4, VOQ credit is not equal to initial credit"); ++ ++ IDLE_CHK_3(0x3, QM_REG_PORT0BYTECRD, QM_REG_BYTECRDINITVAL, ++ (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "QM: P0 Byte credit is not equal to initial credit"); ++ IDLE_CHK_3(0x3, QM_REG_PORT1BYTECRD, QM_REG_BYTECRDINITVAL, ++ (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, ++ "QM: P1 Byte credit is not equal to initial credit"); ++ ++ IDLE_CHK_1(0x7, CCM_REG_CAM_OCCUP, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "CCM: XX protection CAM is not empty"); ++ IDLE_CHK_1(0x7, TCM_REG_CAM_OCCUP, (val != 0), IDLE_CHK_ERROR, ++ "TCM: XX protection CAM is not empty"); ++ IDLE_CHK_1(0x7, UCM_REG_CAM_OCCUP, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "UCM: XX protection CAM is not empty"); ++ IDLE_CHK_1(0x7, XCM_REG_CAM_OCCUP, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XCM: XX protection CAM is not empty"); ++ ++ IDLE_CHK_1(0x7, BRB1_REG_NUM_OF_FULL_BLOCKS, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "BRB1: BRB is not empty"); ++ ++ IDLE_CHK_1(0x7, CSEM_REG_SLEEP_THREADS_VALID, (val != 0), ++ IDLE_CHK_ERROR, "CSEM: There are sleeping threads"); ++ IDLE_CHK_1(0x7, TSEM_REG_SLEEP_THREADS_VALID, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "TSEM: There are sleeping threads"); ++ IDLE_CHK_1(0x7, USEM_REG_SLEEP_THREADS_VALID, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "USEM: There are sleeping threads"); ++ IDLE_CHK_1(0x7, XSEM_REG_SLEEP_THREADS_VALID, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XSEM: There are sleeping threads"); ++ ++ IDLE_CHK_1(0x7, CSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), ++ IDLE_CHK_ERROR, "CSEM: External store FIFO is not empty"); ++ IDLE_CHK_1(0x7, TSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "TSEM: External store FIFO is not empty"); ++ IDLE_CHK_1(0x7, USEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "USEM: External store FIFO is not empty"); ++ IDLE_CHK_1(0x7, XSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XSEM: External store FIFO is not empty"); ++ ++ IDLE_CHK_1(0x7, CSDM_REG_SYNC_PARSER_EMPTY, (val != 1), ++ IDLE_CHK_ERROR, "CSDM: Parser serial FIFO is not empty"); ++ IDLE_CHK_1(0x7, TSDM_REG_SYNC_PARSER_EMPTY, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "TSDM: Parser serial FIFO is not empty"); ++ IDLE_CHK_1(0x7, USDM_REG_SYNC_PARSER_EMPTY, (val != 1), ++ IDLE_CHK_ERROR, "USDM: Parser serial FIFO is not empty"); ++ IDLE_CHK_1(0x7, XSDM_REG_SYNC_PARSER_EMPTY, (val != 1), ++ IDLE_CHK_ERROR, "XSDM: Parser serial FIFO is not empty"); ++ ++ IDLE_CHK_1(0x7, CSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, ++ "CSDM: Parser SYNC serial FIFO is not empty"); ++ IDLE_CHK_1(0x7, TSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, ++ "TSDM: Parser SYNC serial FIFO is not empty"); ++ IDLE_CHK_1(0x7, USDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, ++ "USDM: Parser SYNC serial FIFO is not empty"); ++ IDLE_CHK_1(0x7, XSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, ++ "XSDM: Parser SYNC serial FIFO is not empty"); ++ ++ IDLE_CHK_1(0x7, CSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), ++ IDLE_CHK_ERROR, ++ "CSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" ++ " block"); ++ IDLE_CHK_1(0x7, TSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), ++ IDLE_CHK_ERROR, ++ "TSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" ++ " block"); ++ IDLE_CHK_1(0x7, USDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "USDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" ++ " block"); ++ IDLE_CHK_1(0x7, XSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" ++ " block"); ++ ++ IDLE_CHK_1(0x7, DORQ_REG_DQ_FILL_LVLF, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "DQ: DORQ queue is not empty"); ++ ++ IDLE_CHK_1(0x7, CFC_REG_CFC_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "CFC: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, CDU_REG_CDU_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "CDU: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, CCM_REG_CCM_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "CCM: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, TCM_REG_TCM_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "TCM: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, UCM_REG_UCM_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "UCM: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, XCM_REG_XCM_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, PBF_REG_PBF_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "PBF: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, TM_REG_TM_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "TIMERS: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, DORQ_REG_DORQ_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "DQ: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, SRC_REG_SRC_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "SRCH: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, PRS_REG_PRS_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "PRS: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, BRB1_REG_BRB1_INT_STS, ((val & ~0xfc00) != 0), ++ IDLE_CHK_ERROR, "BRB1: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, GRCBASE_XPB + PB_REG_PB_INT_STS, (val != 0), ++ IDLE_CHK_ERROR, "XPB: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, GRCBASE_UPB + PB_REG_PB_INT_STS, (val != 0), ++ IDLE_CHK_ERROR, "UPB: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, PXP2_REG_PXP2_INT_STS_0, (val != 0), IDLE_CHK_WARNING, ++ "PXP2: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x6, PXP2_REG_PXP2_INT_STS_1, (val != 0), IDLE_CHK_WARNING, ++ "PXP2: interrupt status 1 is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_QM_INT_STS, (val != 0), IDLE_CHK_ERROR, ++ "QM: interrupt status is not 0"); ++ IDLE_CHK_1(0x7, PXP_REG_PXP_INT_STS_0, (val != 0), IDLE_CHK_ERROR, ++ "PXP: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, PXP_REG_PXP_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "PXP: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, DORQ_REG_RSPA_CRD_CNT, (val != 2), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "DQ: Credit to XCM is not full"); ++ IDLE_CHK_1(0x7, DORQ_REG_RSPB_CRD_CNT, (val != 2), IDLE_CHK_ERROR, ++ "DQ: Credit to UCM is not full"); ++ ++ IDLE_CHK_1(0x3, QM_REG_VOQCRDERRREG, (val != 0), IDLE_CHK_ERROR, ++ "QM: Credit error register is not 0 (byte or credit" ++ " overflow/underflow)"); ++ IDLE_CHK_1(0x7, DORQ_REG_DQ_FULL_ST, (val != 0), IDLE_CHK_ERROR, ++ "DQ: DORQ queue is full"); ++ ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_1_FUNC_0, ++ ((val & ~0xcffc) != 0), IDLE_CHK_WARNING, ++ "AEU: P0 AFTER_INVERT_1 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_2_FUNC_0, (val != 0), ++ IDLE_CHK_ERROR, "AEU: P0 AFTER_INVERT_2 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_3_FUNC_0, ++ ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR, ++ "AEU: P0 AFTER_INVERT_3 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_4_FUNC_0, ++ ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR, ++ "AEU: P0 AFTER_INVERT_4 is not 0"); ++ ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_1_FUNC_1, ++ ((val & ~0xcffc) != 0), IDLE_CHK_WARNING, ++ "AEU: P1 AFTER_INVERT_1 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_2_FUNC_1, (val != 0), ++ IDLE_CHK_ERROR, "AEU: P1 AFTER_INVERT_2 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_3_FUNC_1, ++ ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR, ++ "AEU: P1 AFTER_INVERT_3 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_4_FUNC_1, ++ ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR, ++ "AEU: P1 AFTER_INVERT_4 is not 0"); ++ ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_1_MCP, ++ ((val & ~0xcffc) != 0), IDLE_CHK_WARNING, ++ "AEU: MCP AFTER_INVERT_1 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_2_MCP, (val != 0), ++ IDLE_CHK_ERROR, "AEU: MCP AFTER_INVERT_2 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_3_MCP, ++ ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR, ++ "AEU: MCP AFTER_INVERT_3 is not 0"); ++ IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_4_MCP, ++ ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR, ++ "AEU: MCP AFTER_INVERT_4 is not 0"); ++ ++ IDLE_CHK_5(0x7, PBF_REG_DISABLE_NEW_TASK_PROC_P0, PBF_REG_P0_CREDIT, ++ PBF_REG_P0_INIT_CRD, (val1 != val2), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PBF: P0 credit is not equal to init_crd"); ++ IDLE_CHK_5(0x7, PBF_REG_DISABLE_NEW_TASK_PROC_P1, PBF_REG_P1_CREDIT, ++ PBF_REG_P1_INIT_CRD, (val1 != val2), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PBF: P1 credit is not equal to init_crd"); ++ IDLE_CHK_3(0x7, PBF_REG_P4_CREDIT, PBF_REG_P4_INIT_CRD, ++ (val1 != val2), IDLE_CHK_ERROR, ++ "PBF: P4 credit is not equal to init_crd"); ++ ++ IDLE_CHK_1(0x7, PBF_REG_P0_TASK_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PBF: P0 task_cnt is not 0"); ++ IDLE_CHK_1(0x7, PBF_REG_P1_TASK_CNT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "PBF: P1 task_cnt is not 0"); ++ IDLE_CHK_1(0x7, PBF_REG_P4_TASK_CNT, (val != 0), IDLE_CHK_ERROR, ++ "PBF: P4 task_cnt is not 0"); ++ ++ IDLE_CHK_1(0x7, XCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR, ++ "XCM: CFC_INIT_CRD is not 1"); ++ IDLE_CHK_1(0x7, UCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR, ++ "UCM: CFC_INIT_CRD is not 1"); ++ IDLE_CHK_1(0x7, TCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR, ++ "TCM: CFC_INIT_CRD is not 1"); ++ IDLE_CHK_1(0x7, CCM_REG_CFC_INIT_CRD, (val != 1), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: CFC_INIT_CRD is not 1"); ++ ++ IDLE_CHK_1(0x7, XCM_REG_XQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR, ++ "XCM: XQM_INIT_CRD is not 32"); ++ IDLE_CHK_1(0x7, UCM_REG_UQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR, ++ "UCM: UQM_INIT_CRD is not 32"); ++ IDLE_CHK_1(0x7, TCM_REG_TQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR, ++ "TCM: TQM_INIT_CRD is not 32"); ++ IDLE_CHK_1(0x7, CCM_REG_CQM_INIT_CRD, (val != 32), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: CQM_INIT_CRD is not 32"); ++ ++ IDLE_CHK_1(0x7, XCM_REG_TM_INIT_CRD, (val != 4), IDLE_CHK_ERROR, ++ "XCM: TM_INIT_CRD is not 4"); ++ IDLE_CHK_1(0x7, UCM_REG_TM_INIT_CRD, (val != 4), IDLE_CHK_ERROR, ++ "UCM: TM_INIT_CRD is not 4"); ++ ++ IDLE_CHK_1(0x7, XCM_REG_FIC0_INIT_CRD, (val != 64), IDLE_CHK_WARNING, ++ "XCM: FIC0_INIT_CRD is not 64"); ++ IDLE_CHK_1(0x7, UCM_REG_FIC0_INIT_CRD, (val != 64), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "UCM: FIC0_INIT_CRD is not 64"); ++ IDLE_CHK_1(0x7, TCM_REG_FIC0_INIT_CRD, (val != 64), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "TCM: FIC0_INIT_CRD is not 64"); ++ IDLE_CHK_1(0x7, CCM_REG_FIC0_INIT_CRD, (val != 64), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: FIC0_INIT_CRD is not 64"); ++ ++ IDLE_CHK_1(0x7, XCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, ++ "XCM: FIC1_INIT_CRD is not 64"); ++ IDLE_CHK_1(0x7, UCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, ++ "UCM: FIC1_INIT_CRD is not 64"); ++ IDLE_CHK_1(0x7, TCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, ++ "TCM: FIC1_INIT_CRD is not 64"); ++ IDLE_CHK_1(0x7, CCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, ++ "CCM: FIC1_INIT_CRD is not 64"); ++ ++ IDLE_CHK_1(0x1, XCM_REG_XX_FREE, (val != 31), IDLE_CHK_ERROR, ++ "XCM: XX_FREE is not 31"); ++ IDLE_CHK_1(0x6, XCM_REG_XX_FREE, (val != 32), IDLE_CHK_ERROR, ++ "XCM: XX_FREE is not 32"); ++ IDLE_CHK_1(0x7, UCM_REG_XX_FREE, (val != 27), ++ IDLE_CHK_ERROR_NO_TRAFFIC, "UCM: XX_FREE is not 27"); ++ IDLE_CHK_1(0x7, TCM_REG_XX_FREE, (val != 32), IDLE_CHK_ERROR, ++ "TCM: XX_FREE is not 32"); ++ IDLE_CHK_1(0x7, CCM_REG_XX_FREE, (val != 24), IDLE_CHK_ERROR, ++ "CCM: XX_FREE is not 24"); ++ ++ IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x18000, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XSEM: FOC0 credit less than initial credit"); ++ IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x18040, (val != 24), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XSEM: FOC1 credit less than initial credit"); ++ IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x18080, (val != 12), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XSEM: FOC2 credit less than initial credit"); ++ IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x180C0, (val != 102), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "XSEM: FOC3 credit less than initial credit"); ++ ++ IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x18000, (val != 26), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "USEM: FOC0 credit less than initial credit"); ++ IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x18040, (val != 78), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "USEM: FOC1 credit less than initial credit"); ++ IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x18080, (val != 16), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "USEM: FOC2 credit less than initial credit"); ++ IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x180C0, (val != 32), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "USEM: FOC3 credit less than initial credit"); ++ ++ IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x18000, (val != 52), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "TSEM: FOC0 credit less than initial credit"); ++ IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x18040, (val != 24), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "TSEM: FOC1 credit less than initial credit"); ++ IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x18080, (val != 12), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "TSEM: FOC2 credit less than initial credit"); ++ IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x180C0, (val != 32), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "TSEM: FOC3 credit less than initial credit"); ++ ++ IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x18000, (val != 16), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "CSEM: FOC0 credit less than initial credit"); ++ IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x18040, (val != 18), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "CSEM: FOC1 credit less than initial credit"); ++ IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x18080, (val != 48), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "CSEM: FOC2 credit less than initial credit"); ++ IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x180C0, (val != 14), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "CSEM: FOC3 credit less than initial credit"); ++ ++ IDLE_CHK_1(0x7, PRS_REG_TSDM_CURRENT_CREDIT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PRS: TSDM current credit is not 0"); ++ IDLE_CHK_1(0x7, PRS_REG_TCM_CURRENT_CREDIT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PRS: TCM current credit is not 0"); ++ IDLE_CHK_1(0x7, PRS_REG_CFC_LD_CURRENT_CREDIT, (val != 0), ++ IDLE_CHK_ERROR, "PRS: CFC_LD current credit is not 0"); ++ IDLE_CHK_1(0x7, PRS_REG_CFC_SEARCH_CURRENT_CREDIT, (val != 0), ++ IDLE_CHK_ERROR, "PRS: CFC_SEARCH current credit is not 0"); ++ IDLE_CHK_1(0x7, PRS_REG_SRC_CURRENT_CREDIT, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PRS: SRCH current credit is not 0"); ++ ++ IDLE_CHK_1(0x7, PRS_REG_PENDING_BRB_PRS_RQ, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PRS: PENDING_BRB_PRS_RQ is not 0"); ++ IDLE_CHK_2(0x7, PRS_REG_PENDING_BRB_CAC0_RQ, 5, 4, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PRS: PENDING_BRB_CAC%d_RQ is not 0"); ++ ++ IDLE_CHK_1(0x7, PRS_REG_SERIAL_NUM_STATUS_LSB, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PRS: SERIAL_NUM_STATUS_LSB is not 0"); ++ IDLE_CHK_1(0x7, PRS_REG_SERIAL_NUM_STATUS_MSB, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "PRS: SERIAL_NUM_STATUS_MSB is not 0"); ++ ++ IDLE_CHK_1(0x7, CDU_REG_ERROR_DATA, (val != 0), IDLE_CHK_ERROR, ++ "CDU: ERROR_DATA is not 0"); ++ ++ IDLE_CHK_1(0x7, CCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "CCM: STORM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, CCM_REG_CSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "CCM: CSDM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, CCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "CCM: TSEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, CCM_REG_XSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "CCM: XSEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, CCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "CCM: USEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, CCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "CCM: PBF declared message length unequal to actual"); ++ ++ IDLE_CHK_1(0x7, TCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "TCM: STORM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, TCM_REG_TSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "TCM: TSDM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, TCM_REG_PRS_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "TCM: PRS declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, TCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "TCM: PBF declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, TCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "TCM: USEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, TCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "TCM: CSEM declared message length unequal to actual"); ++ ++ IDLE_CHK_1(0x7, UCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "UCM: STORM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, UCM_REG_USDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "UCM: USDM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, UCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "UCM: TSEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, UCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "UCM: CSEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, UCM_REG_XSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "UCM: XSEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, UCM_REG_DORQ_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "UCM: DORQ declared message length unequal to actual"); ++ ++ IDLE_CHK_1(0x7, XCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: STORM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_XSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: XSDM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: TSEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: CSEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: USEM declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_DORQ_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: DORQ declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: PBF declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_NIG0_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: NIG0 declared message length unequal to actual"); ++ IDLE_CHK_1(0x7, XCM_REG_NIG1_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, ++ "XCM: NIG1 declared message length unequal to actual"); ++ ++ IDLE_CHK_1(0x7, QM_REG_XQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, ++ "QM: XQM wrc_fifolvl is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_UQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, ++ "QM: UQM wrc_fifolvl is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_TQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, ++ "QM: TQM wrc_fifolvl is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_CQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, ++ "QM: CQM wrc_fifolvl is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_QSTATUS_LOW, (val != 0), IDLE_CHK_ERROR, ++ "QM: QSTATUS_LOW is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_QSTATUS_HIGH, (val != 0), IDLE_CHK_ERROR, ++ "QM: QSTATUS_HIGH is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_PAUSESTATE0, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE0 is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_PAUSESTATE1, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE1 is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_OVFQNUM, (val != 0), IDLE_CHK_ERROR, ++ "QM: OVFQNUM is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_OVFERROR, (val != 0), IDLE_CHK_ERROR, ++ "QM: OVFERROR is not 0"); ++ ++ IDLE_CHK_6(0x7, QM_REG_PTRTBL, 64, 8, IDLE_CHK_ERROR_NO_TRAFFIC); ++ ++ IDLE_CHK_1(0x7, BRB1_REG_BRB1_PRTY_STS, ((val & ~0x8) != 0), ++ IDLE_CHK_WARNING, "BRB1: parity status is not 0"); ++ IDLE_CHK_1(0x7, CDU_REG_CDU_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "CDU: parity status is not 0"); ++ IDLE_CHK_1(0x7, CFC_REG_CFC_PRTY_STS, ((val & ~0x2) != 0), ++ IDLE_CHK_WARNING, "CFC: parity status is not 0"); ++ IDLE_CHK_1(0x7, CSDM_REG_CSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "CSDM: parity status is not 0"); ++ IDLE_CHK_1(0x7, DBG_REG_DBG_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "DBG: parity status is not 0"); ++ IDLE_CHK_1(0x7, DMAE_REG_DMAE_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "DMAE: parity status is not 0"); ++ IDLE_CHK_1(0x7, DORQ_REG_DORQ_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "DQ: parity status is not 0"); ++ IDLE_CHK_1(0x1, TCM_REG_TCM_PRTY_STS, ((val & ~0x3ffc0) != 0), ++ IDLE_CHK_WARNING, "TCM: parity status is not 0"); ++ IDLE_CHK_1(0x6, TCM_REG_TCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "TCM: parity status is not 0"); ++ IDLE_CHK_1(0x1, CCM_REG_CCM_PRTY_STS, ((val & ~0x3ffc0) != 0), ++ IDLE_CHK_WARNING, "CCM: parity status is not 0"); ++ IDLE_CHK_1(0x6, CCM_REG_CCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "CCM: parity status is not 0"); ++ IDLE_CHK_1(0x1, UCM_REG_UCM_PRTY_STS, ((val & ~0x3ffc0) != 0), ++ IDLE_CHK_WARNING, "UCM: parity status is not 0"); ++ IDLE_CHK_1(0x6, UCM_REG_UCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "UCM: parity status is not 0"); ++ IDLE_CHK_1(0x1, XCM_REG_XCM_PRTY_STS, ((val & ~0x3ffc0) != 0), ++ IDLE_CHK_WARNING, "XCM: parity status is not 0"); ++ IDLE_CHK_1(0x6, XCM_REG_XCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "XCM: parity status is not 0"); ++ IDLE_CHK_1(0x1, HC_REG_HC_PRTY_STS, ((val & ~0x1) != 0), ++ IDLE_CHK_WARNING, "HC: parity status is not 0"); ++ IDLE_CHK_1(0x1, MISC_REG_MISC_PRTY_STS, ((val & ~0x1) != 0), ++ IDLE_CHK_WARNING, "MISC: parity status is not 0"); ++ IDLE_CHK_1(0x7, PRS_REG_PRS_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "PRS: parity status is not 0"); ++ IDLE_CHK_1(0x7, PXP_REG_PXP_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "PXP: parity status is not 0"); ++ IDLE_CHK_1(0x7, QM_REG_QM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "QM: parity status is not 0"); ++ IDLE_CHK_1(0x1, SRC_REG_SRC_PRTY_STS, ((val & ~0x4) != 0), ++ IDLE_CHK_WARNING, "SRCH: parity status is not 0"); ++ IDLE_CHK_1(0x7, TSDM_REG_TSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "TSDM: parity status is not 0"); ++ IDLE_CHK_1(0x7, USDM_REG_USDM_PRTY_STS, ((val & ~0x20) != 0), ++ IDLE_CHK_WARNING, "USDM: parity status is not 0"); ++ IDLE_CHK_1(0x7, XSDM_REG_XSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "XSDM: parity status is not 0"); ++ IDLE_CHK_1(0x7, GRCBASE_XPB + PB_REG_PB_PRTY_STS, (val != 0), ++ IDLE_CHK_WARNING, "XPB: parity status is not 0"); ++ IDLE_CHK_1(0x7, GRCBASE_UPB + PB_REG_PB_PRTY_STS, (val != 0), ++ IDLE_CHK_WARNING, "UPB: parity status is not 0"); ++ ++ IDLE_CHK_1(0x7, CSEM_REG_CSEM_PRTY_STS_0, (val != 0), ++ IDLE_CHK_WARNING, "CSEM: parity status 0 is not 0"); ++ IDLE_CHK_1(0x1, PXP2_REG_PXP2_PRTY_STS_0, ((val & ~0xfff40020) != 0), ++ IDLE_CHK_WARNING, "PXP2: parity status 0 is not 0"); ++ IDLE_CHK_1(0x6, PXP2_REG_PXP2_PRTY_STS_0, ((val & ~0x20) != 0), ++ IDLE_CHK_WARNING, "PXP2: parity status 0 is not 0"); ++ IDLE_CHK_1(0x7, TSEM_REG_TSEM_PRTY_STS_0, (val != 0), ++ IDLE_CHK_WARNING, "TSEM: parity status 0 is not 0"); ++ IDLE_CHK_1(0x7, USEM_REG_USEM_PRTY_STS_0, (val != 0), ++ IDLE_CHK_WARNING, "USEM: parity status 0 is not 0"); ++ IDLE_CHK_1(0x7, XSEM_REG_XSEM_PRTY_STS_0, (val != 0), ++ IDLE_CHK_WARNING, "XSEM: parity status 0 is not 0"); ++ ++ IDLE_CHK_1(0x7, CSEM_REG_CSEM_PRTY_STS_1, (val != 0), ++ IDLE_CHK_WARNING, "CSEM: parity status 1 is not 0"); ++ IDLE_CHK_1(0x1, PXP2_REG_PXP2_PRTY_STS_1, ((val & ~0x20) != 0), ++ IDLE_CHK_WARNING, "PXP2: parity status 1 is not 0"); ++ IDLE_CHK_1(0x6, PXP2_REG_PXP2_PRTY_STS_1, (val != 0), ++ IDLE_CHK_WARNING, "PXP2: parity status 1 is not 0"); ++ IDLE_CHK_1(0x7, TSEM_REG_TSEM_PRTY_STS_1, (val != 0), ++ IDLE_CHK_WARNING, "TSEM: parity status 1 is not 0"); ++ IDLE_CHK_1(0x7, USEM_REG_USEM_PRTY_STS_1, (val != 0), ++ IDLE_CHK_WARNING, "USEM: parity status 1 is not 0"); ++ IDLE_CHK_1(0x7, XSEM_REG_XSEM_PRTY_STS_1, (val != 0), ++ IDLE_CHK_WARNING, "XSEM: parity status 1 is not 0"); ++ ++ IDLE_CHK_2(0x2, QM_REG_QTASKCTR_EXT_A_0, 64, 4, (val != 0), ++ IDLE_CHK_ERROR_NO_TRAFFIC, ++ "QM: Q_EXT_A_%d, queue is not empty"); ++ IDLE_CHK_1(0x2, QM_REG_QSTATUS_LOW_EXT_A, (val != 0), IDLE_CHK_ERROR, ++ "QM: QSTATUS_LOW_EXT_A is not 0"); ++ IDLE_CHK_1(0x2, QM_REG_QSTATUS_HIGH_EXT_A, (val != 0), IDLE_CHK_ERROR, ++ "QM: QSTATUS_HIGH_EXT_A is not 0"); ++ IDLE_CHK_1(0x6, QM_REG_PAUSESTATE2, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE2 is not 0"); ++ IDLE_CHK_1(0x6, QM_REG_PAUSESTATE3, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE3 is not 0"); ++ IDLE_CHK_1(0x2, QM_REG_PAUSESTATE4, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE4 is not 0"); ++ IDLE_CHK_1(0x2, QM_REG_PAUSESTATE5, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE5 is not 0"); ++ IDLE_CHK_1(0x2, QM_REG_PAUSESTATE6, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE6 is not 0"); ++ IDLE_CHK_1(0x2, QM_REG_PAUSESTATE7, (val != 0), IDLE_CHK_ERROR, ++ "QM: PAUSESTATE7 is not 0"); ++ IDLE_CHK_6(0x2, QM_REG_PTRTBL_EXT_A, 64, 8, ++ IDLE_CHK_ERROR_NO_TRAFFIC); ++ ++ IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_OCCURRED, (val != 0), ++ IDLE_CHK_ERROR, "MISC: system kill occurd;"); ++ IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_0, (val != 0), ++ IDLE_CHK_ERROR, ++ "MISC: system kill occurd; status_0 register"); ++ IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_1, (val != 0), ++ IDLE_CHK_ERROR, ++ "MISC: system kill occurd; status_1 register"); ++ IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_2, (val != 0), ++ IDLE_CHK_ERROR, ++ "MISC: system kill occurd; status_2 register"); ++ IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_3, (val != 0), ++ IDLE_CHK_ERROR, ++ "MISC: system kill occurd; status_3 register"); ++ IDLE_CHK_1(0x6, MISC_REG_PCIE_HOT_RESET, (val != 0), IDLE_CHK_WARNING, ++ "MISC: pcie_rst_b was asserted without perst assertion"); ++ ++ IDLE_CHK_1(0x7, NIG_REG_NIG_INT_STS_0, ((val & ~0x300) != 0), ++ IDLE_CHK_ERROR, "NIG: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, NIG_REG_NIG_INT_STS_0, (val == 0x300), ++ IDLE_CHK_WARNING, ++ "NIG: Access to BMAC while not active. If tested on FPGA," ++ " ignore this warning."); ++ IDLE_CHK_1(0x7, NIG_REG_NIG_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "NIG: interrupt status 1 is not 0"); ++ IDLE_CHK_1(0x6, NIG_REG_NIG_PRTY_STS, ((val & ~0xffc00000) != 0), ++ IDLE_CHK_WARNING, "NIG: parity status is not 0"); ++ ++ IDLE_CHK_1(0x7, TSEM_REG_TSEM_INT_STS_0, ((val & ~0x10000000) != 0), ++ IDLE_CHK_ERROR, "TSEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, TSEM_REG_TSEM_INT_STS_0, (val == 0x10000000), ++ IDLE_CHK_WARNING, "TSEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, TSEM_REG_TSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "TSEM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, CSEM_REG_CSEM_INT_STS_0, ((val & ~0x10000000) != 0), ++ IDLE_CHK_ERROR, "CSEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, CSEM_REG_CSEM_INT_STS_0, (val == 0x10000000), ++ IDLE_CHK_WARNING, "CSEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, CSEM_REG_CSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "CSEM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, USEM_REG_USEM_INT_STS_0, ((val & ~0x10000000) != 0), ++ IDLE_CHK_ERROR, "USEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, USEM_REG_USEM_INT_STS_0, (val == 0x10000000), ++ IDLE_CHK_WARNING, "USEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, USEM_REG_USEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "USEM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, XSEM_REG_XSEM_INT_STS_0, ((val & ~0x10000000) != 0), ++ IDLE_CHK_ERROR, "XSEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, XSEM_REG_XSEM_INT_STS_0, (val == 0x10000000), ++ IDLE_CHK_WARNING, "XSEM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, XSEM_REG_XSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "XSEM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, TSDM_REG_TSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, ++ "TSDM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, TSDM_REG_TSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "TSDM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, CSDM_REG_CSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, ++ "CSDM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, CSDM_REG_CSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "CSDM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, USDM_REG_USDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, ++ "USDM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, USDM_REG_USDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "USDM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x7, XSDM_REG_XSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, ++ "XSDM: interrupt status 0 is not 0"); ++ IDLE_CHK_1(0x7, XSDM_REG_XSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, ++ "XSDM: interrupt status 1 is not 0"); ++ ++ IDLE_CHK_1(0x6, HC_REG_HC_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "HC: parity status is not 0"); ++ IDLE_CHK_1(0x6, MISC_REG_MISC_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "MISC: parity status is not 0"); ++ IDLE_CHK_1(0x6, SRC_REG_SRC_PRTY_STS, (val != 0), IDLE_CHK_WARNING, ++ "SRCH: parity status is not 0"); ++ ++ if (idle_chk_errors == 0) { ++ BNX2X_DBG_ERR("completed successfully (with %d warnings)\n", ++ idle_chk_warnings); ++ } else { ++ BNX2X_DBG_ERR("failed (with %d errors, %d warnings)\n", ++ idle_chk_errors, idle_chk_warnings); ++ } ++ return idle_chk_errors; ++} ++ +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/cnic_drv.h linux-2.6.22-800/drivers/net/bnx2x/cnic_drv.h +--- linux-2.6.22-800.orig/drivers/net/bnx2x/cnic_drv.h 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/cnic_drv.h 2010-03-10 20:21:45.957168894 -0500 +@@ -0,0 +1,125 @@ ++/* cnic_drv.h: Broadcom CNIC core network driver. ++ * ++ * Copyright (c) 2008 Broadcom Corporation ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation. ++ * ++ */ ++ ++ ++#ifndef CNIC_DRV_H ++#define CNIC_DRV_H ++ ++#if !defined(__iomem) ++#define __iomem ++#endif ++ ++struct kwqe; ++struct kcqe; ++struct kwqe_16; ++ ++#define MAX_CNIC_CTL_DATA 64 ++#define MAX_DRV_CTL_DATA 64 ++ ++#define CNIC_CTL_STOP_CMD 1 ++#define CNIC_CTL_START_CMD 2 ++#define CNIC_CTL_COMPLETION_CMD 3 ++ ++#define DRV_CTL_IO_WR_CMD 0x101 ++#define DRV_CTL_IO_RD_CMD 0x102 ++#define DRV_CTL_CTX_WR_CMD 0x103 ++#define DRV_CTL_CTXTBL_WR_CMD 0x104 ++#define DRV_CTL_COMPLETION_CMD 0x105 ++ ++struct cnic_ctl_completion { ++ u32 cid; ++}; ++ ++struct drv_ctl_completion { ++ u32 comp_count; ++}; ++ ++struct cnic_ctl_info { ++ int cmd; ++ union { ++ struct cnic_ctl_completion comp; ++ char bytes[MAX_CNIC_CTL_DATA]; ++ } data; ++}; ++ ++struct drv_ctl_io { ++ u32 cid_addr; ++ u32 offset; ++ u32 data; ++ dma_addr_t dma_addr; ++}; ++ ++struct drv_ctl_info { ++ int cmd; ++ union { ++ struct drv_ctl_completion comp; ++ struct drv_ctl_io io; ++ char bytes[MAX_DRV_CTL_DATA]; ++ } data; ++}; ++ ++struct cnic_ops { ++ struct module *cnic_owner; ++ /* Calls to these functions are protected by RCU. When ++ * unregistering, we wait for any calls to complete before ++ * continuing. ++ */ ++ int (*cnic_handler)(void *, void *); ++ int (*cnic_ctl)(void *, struct cnic_ctl_info *); ++ unsigned long reserved[2]; ++}; ++ ++#define MAX_CNIC_VEC 8 ++ ++struct cnic_irq { ++ unsigned int vector; ++ void *status_blk; ++ u32 status_blk_num; ++ u32 irq_flags; ++#define CNIC_IRQ_FL_MSIX 0x00000001 ++}; ++ ++struct cnic_eth_dev { ++ struct module *drv_owner; ++ u32 drv_state; ++#define CNIC_DRV_STATE_REGD 0x00000001 ++#define CNIC_DRV_STATE_USING_MSIX 0x00000002 ++ u32 chip_id; ++ u32 max_kwqe_pending; ++ struct pci_dev *pdev; ++ void __iomem *io_base; ++ ++ u32 ctx_tbl_offset; ++ u32 ctx_tbl_len; ++ int ctx_blk_size; ++ u32 starting_cid; ++ u32 max_iscsi_conn; ++ u32 max_fcoe_conn; ++ u32 max_rdma_conn; ++ u32 reserved0[2]; ++ ++ int num_irq; ++ struct cnic_irq irq_arr[MAX_CNIC_VEC]; ++ int (*drv_register_cnic)(struct net_device *, ++ struct cnic_ops *, void *); ++ int (*drv_unregister_cnic)(struct net_device *); ++ int (*drv_submit_kwqes_32)(struct net_device *, ++ struct kwqe *[], u32); ++ int (*drv_submit_kwqes_16)(struct net_device *, ++ struct kwqe_16 *[], u32); ++ int (*drv_ctl)(struct net_device *, struct drv_ctl_info *); ++ unsigned long reserved1[2]; ++}; ++ ++#ifdef __VMKLNX__ ++extern struct cnic_eth_dev *bnx2_cnic_probe(struct net_device *); ++#endif ++ ++#endif +diff -Nur linux-2.6.22-800.orig/drivers/net/bnx2x/Makefile linux-2.6.22-800/drivers/net/bnx2x/Makefile +--- linux-2.6.22-800.orig/drivers/net/bnx2x/Makefile 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.22-800/drivers/net/bnx2x/Makefile 2010-03-10 20:15:31.481644462 -0500 +@@ -0,0 +1,2 @@ ++obj-$(CONFIG_BNX2X) += bnx2x.o ++bnx2x-objs = bnx2x_main.o bnx2x_link.o bnx2x_init_values_e1.o bnx2x_init_values_e1h.o +diff -Nur linux-2.6.22-800.orig/drivers/net/Kconfig linux-2.6.22-800/drivers/net/Kconfig +--- linux-2.6.22-800.orig/drivers/net/Kconfig 2010-03-10 20:24:54.609427151 -0500 ++++ linux-2.6.22-800/drivers/net/Kconfig 2010-03-10 20:10:25.803847904 -0500 +@@ -2293,6 +2293,16 @@ + To compile this driver as a module, choose M here: the module + will be called bnx2. This is recommended. + ++config BNX2X ++ tristate "Broadcom NetXtremeII 10Gb support" ++ depends on PCI ++ select ZLIB_INFLATE ++ select LIBCRC32C ++ help ++ This driver supports Broadcom NetXtremeII 10 gigabit Ethernet cards. ++ To compile this driver as a module, choose M here: the module ++ will be called bnx2x. This is recommended. ++ + config SPIDER_NET + tristate "Spider Gigabit Ethernet driver" + depends on PCI && (PPC_IBM_CELL_BLADE || PPC_CELLEB) +diff -Nur linux-2.6.22-800.orig/drivers/net/Makefile linux-2.6.22-800/drivers/net/Makefile +--- linux-2.6.22-800.orig/drivers/net/Makefile 2010-03-10 20:25:05.164385046 -0500 ++++ linux-2.6.22-800/drivers/net/Makefile 2010-03-10 20:11:00.502710298 -0500 +@@ -60,6 +60,7 @@ + obj-$(CONFIG_FEALNX) += fealnx.o + obj-$(CONFIG_TIGON3) += tg3.o + obj-$(CONFIG_BNX2) += bnx2.o ++obj-$(CONFIG_BNX2X) += bnx2x/ + spidernet-y += spider_net.o spider_net_ethtool.o + obj-$(CONFIG_SPIDER_NET) += spidernet.o sungem_phy.o + obj-$(CONFIG_TC35815) += tc35815.o diff --git a/planetlab-2.6.22-i686.config b/planetlab-2.6.22-i686.config index 5e4b5be1b..f4d2221c0 100644 --- a/planetlab-2.6.22-i686.config +++ b/planetlab-2.6.22-i686.config @@ -1166,6 +1166,7 @@ CONFIG_SKY2=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m +CONFIG_BNX2X=m CONFIG_QLA3XXX=m CONFIG_ATL1=m CONFIG_NETDEV_10000=y diff --git a/planetlab-2.6.22-x86_64.config b/planetlab-2.6.22-x86_64.config index 0b285885d..eae54921e 100644 --- a/planetlab-2.6.22-x86_64.config +++ b/planetlab-2.6.22-x86_64.config @@ -1036,6 +1036,7 @@ CONFIG_SKY2=m CONFIG_VIA_VELOCITY=m CONFIG_TIGON3=m CONFIG_BNX2=m +CONFIG_BNX2X=m CONFIG_QLA3XXX=m CONFIG_ATL1=m CONFIG_NETDEV_10000=y